【誤訳訂正書】
【提出日】平成16年1月27日(2004.1.27)
【誤訳訂正１】
【訂正対象書類名】明細書
【訂正対象項目名】発明の詳細な説明
【訂正方法】変更
【訂正の内容】
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
【０００２】
本願発明は一般にはコンピューターネットワーク、特に、通信方式イーサネット  プロトコルやワイド  エリア  ネットワーク（WANs）に、また非同期転送モード（ATMs）プロトコルにサポートされているようなローカル  エリア  ネットワーク（LANs）の切替可能な接続に関係するものである。
【従来の技術と発明の解決しようとする課題】
【０００３】
（発明の背景）
既存のデータコミュニケーション切替の問題点は、異なった型式のデータフローを区別することが出来ないことにあった。従って、切替や結節は過剰優先順位の低い電子メールやファイル転送のデータ交通量によっての混雑を招くおそれがあった。この切替の招く混雑は、よりリアルタイムであることを要する、また、インターネット電話法やビデオ会議や  など発達によってより重要となってきているビデオやオーディオストリーミングの交通を中断させてしまうおそれがある。
【０００４】
ネットワーク接続においての大きな問題の一つは、特有なネットワークにおいての異なったデータのプロセスシステム間での通信に利用される多種の異なったネットワーク  プロトコルがそのようなネットワーク間での通信を困難にしていることである。他の大きな問題点は多くのネットワーク  プロトコルはコンピューターシステムやノードをｊくわえる時に、相当なパラメーターのコンフィギュレーションを要することであり、典型的にはそれがネットワーク専門の人であってもミスをおかすため、デバイスアドレスの手入力で行われた場合である。この問題はネットワークボウンダリーをまたいでの接続である時には悪化する。
【課題を解決するための手段】
【０００５】
以上の課題を解決するため、本願発明では、レシーブフィジカルパスとトランスミットフィジカルパスとの間でデータパケットのフローをフレキシブルに接続するための方法であって、
(a)該レシーブフィジカルパスにデータパケットを受領するステップと、
(b)該データパケットが以前に受領したデータパケットでイニシエートされたフローの一部であるか否かを決定し、(i)一部でなければ、新フローの一部として受領されたデータバイトの数のカウントに提供されたデータバイトの数を追加し、(ii)一部であれば、前記以前にイニシエートされたフローの一部として以前にカウントされたデータバイトの数のカウントに提供されたデータバイトの数を追加するステップと、
(c)前記追加ステップの結果として受領されたデータバイトの数のカウントが所定のしきい値を超えるか否かを決定し、(i)超えなければ、トランスミッションのために第１品質のサービスセクエンスを適用し、(ii)超えれば、トランスミッションのために第２品質のサービスセクエンスを適用するステップと、
(d)前記適用された品質のサービスセクエンスに従って前記フローの一部であるデータパケットをトランスミットするステップと、
を含んでいることを特徴とする方法を提案した。
【発明の実施の形態】
【０００６】
本明細書は、以下のように編成されている。
１．ＢｌａｚｅＰａｔｈ（商標）／ＢｌａｚｅＦｉｒｅ（商標）アーキテクチャ／チップ・セット
２．ヘッダの「カノニカル化」およびパケットの「カノニカル化」
３．ＢｌａｚｅＷｉｒｅ（商標）高速ＭＡＣバス
４．データ・フロー・イン
５．キュー・ポインタ管理およびオペレーション
６．リライ・エンジン・オペレーション／フロー整合（ＦａｓｔＰａｔｈ（商標））
７．送信スケジューリング
８．インターフェースへのダウンロード／送信クレジット・ループ
９．超高速ＲＡＭＢＵＳ（登録商標）オペレーション
１０．背景エンジン／初期化／監視
１１．マルチメディア・データ・フローのスケジューリング
【０００７】
１．ＢｌａｚｅＰａｔｈ（商標）／ＢｌａｚｅＦｉｒｅ（商標）アーキテクチャ／チップ・セット
本発明のアーキテキクチャは、ＢｌａｚｅＰａｔｈ（商標）と呼ばれ、アプリケーション層フロー切替え、または、特定のフローにおけるメンバシップを特徴付けるパケットのアプリケーション・ヘッダの情報に基づいて行われた決定による、多数の仮想キューの１つまたは複数に入来するデータ・パケットを（高速データ・バッファに対するポインタによって）仮想的に割り付けることによって実施される接続を備える。システムのスループットまたは帯域幅を改善するために、好ましい実施形態である、ＡｐｐＳｗｉｔｃｈ（商標）アプリケーション・フロー・スイッチは、フローの初期パケットにより決定し、情報のヘッダのハッシュ・バージョンを整合させて、フローの後のパケットを識別する。入来するフローのヘッダ情報を「カノニカル化」し、長いフレームをより小さい内部セルに分割することによって（ただし論理的には接続されているように保つ）、システムは、独立した「フレームのセル」になる。
【０００８】
図１を参照すると、好ましい実施形態において、アーキテクチャが、ＢｌａｚｅＷｉｒｅ（商標）ＭＡＣバス６０によって接続されているＢｌａｚｅＦｉｒｅ（商標）のチップセットにおいて実施されている。アーキテクチャは、１００ＭＨｚで動作する２８７ｋゲートのキュー・マネジャ（「ＱＭ」）ＡＳＩＣ３０の周囲に集中している。このキュー・マネジャは、入来するパケットが一時的に格納されるＱＭ３０に接続されている高速データ・バッファ３５および３６の位置に、ポインタ（２４ビットの定義）の１６、０００、０００のキューを配置することを可能にするキュー−ポインタ・スキームを実施する。キューは、４１０ｋゲートのリライ・エンジン（「ＲＥ」）、または、検査されるパケット・ヘッダに対するＡｒｇｏｎａｕｔ  ＲＩＳＣ（ＡＲＣ）中央処理ユニット３８７およびＦＩＦＯ３０５を含む、１００ＭＨｚで動作する転送エンジン（「ＦＥ」）ＡＳＩＣ４０によって行われた決定に基づいてロードされる。システムへの入力とシステムからの出力は、ＢｌａｚｅＷｉｒｅ（商標）ＭＡＣバス６０上でデイジーチェーン接続されている、３５０ｋゲートの６０ＭＨｚ  ＭＯＭ（ＭＴＩ（メディアに無関係なインターフェース）８進法ＭＡＣ）ＡＳＩＣ１０および２０を使用して実施される。ＭＯＭチップ１０および２０は、各々、ローカルエリアイーサネットに対する２つのクワッド物理リンクチップ（それぞれ７１および７２と７０および７３）、または、Ｔ１とＰＯＴＳ（「普通の従来の電話サービス」）のＷＡＮライン６９をサービスする分散アクセス・デバイス（ＤＡＤ）ＷＡＮプロセッサ６６あるいは背景エンジン（「ＢＥ」）５０に対するインターフェースの役割りを果たすことが可能である。
【０００９】
図２は、ＭＯＭチップ１０など、本発明の好ましい実施形態で使用される、ＭＯＭチップのブロック図である。一般に、図は、８つの２重イーサネット・ポートを提供するＭＩＩインターフェース６５を示す。受信インターフェース１１とパーサ１２は、データ・パケットを受信し、以下のセクション２で記述するカノニカル・ヘッダとしてフレーム・ヘッダを書き換え、結果的に得られるパケットを１２８バイトのセルに分割する。このセルは、８つのポートの中のラウンド・ロビン・アービトレーションにおいて、プロデューサ１３とＦＩＦＯアービタ１４によって、ＦＩＦＯ１５に配置される。カノニカル・ヘッダを担っていないデータ・セル（パケットの第１セルに続くパケット・セル）は、データの内部タグ付けのためにバースト論理１７によって追加されたバースト・ヘッダを有する。ＲＸクレジット・マネジャ１９は、送信クレジット（以下のセクション８において議論する）を適切であるとしてヘッダに追加して、送信ＦＩＦＯ２４が送信されるより多くのデータを受信することができることをＱＭ３０に通知する。トークン・アービタ１８は、データをＭＡＣバスＴＸセル７６に送信し、さらにＭＡＣバス６０上でＱＭ３０に送信するときを決定する。
【００１０】
さらに図２を参照すると、ＭＡＣバス６０に入来するデータ・セルは、カノニカル／バースト・ヘッダの回路識別子により、送信コンシューマ２６に向けられる。データ・パケット・ヘッダは、送信コンシューマ２６とインターフェース２７によって再構築および送信され、ＴＸクレジット／マネジャ２８は、クレジット情報で更新されて、ＱＭ３０に戻る。
【００１１】
図３は、本発明の好ましい実施形態で使用されるＱＭ３０のブロック図である。本質的に、ＱＭ３０は、（データ・バッファに連結されたポインタの連結リストによって仮想的に実施された）適切なキュー上でデータ・セルの配置を迅速に実行し、ＲＥ４０によって支持されたキュー・ポリシを適用するように設計されているゲートと状態機械の集合体である。ＱＭ３０は、３つのクロック・レジームに分割される。受信データＦＩＦＯ３０６と受信コマンドＦＩＦＯ３１２を供給するデジタル遅延ロック・ループ３０２と受信インターフェース３０４を通り、送信データＦＩＦＯ３０５を排出するデジタル遅延ロック・ループ３０１と送信インターフェース３０３を通るＭＡＣバス６０とのインターフェースは、ＭＡＣバス・クロック上にある。受信したデータ・セルは、以下で議論するように、直接２重ＲＡＭＢＵＳ（登録商標）アクセス・セル３０８を通って、ＥＲＡＭ３５および３６にチャネリングされる。ＤＲＡＭクロック上で動作するＤＲＡＭインターフェース３０７は、ＭＡＣバスＦＩＦＯ３０５と３０６、ならびに、ヘッダ・アウトＦＩＦＯ３０９（ヘッダ・データ・インターフェース７４上でＲＥ４０（図示せず）に送信されるカノニカル・ヘッダ・セルを含む）、ヘッダ・インＦＩＦＯ３１０（適切なルーティング情報でリライ・エンジン・データ・インターフェースにおいて書き直されたカノニカル・ヘッダを含む）、およびＤＲＡＭコマンドＦＩＦＯ３１１のオペレーションを調整する。ＤＲＡＭコマンドＦＩＦＯ３１１は、ＳＲＡＭクロック領域下の機能ネットワークにおいて示したＱＭ論理によって実施されたＲＥの決定を含む。受信エンジン３１５、送信エンジン３１６、およびヘッダ・プリフェッチ・エンジン２３４は、データをＤＲＡＭ３５および３６から出し入れする命令をＤＲＡＭインターフェース３０７に提供するように、ＤＲＡＭアービタ３１４の機能に指示する。また、受信エンジン３１５と送信エンジン３１６は、ＤＲＡＭ３５および３６のバッファを入来するデータに割り付けるように、自由バッファ・マネジャ３１８と調和する。エンキュー・マネジャ３１９とデキュー・マネジャ３１２は、ヘッダ・プリフェッチ・エンジンおよび受信キュー状態（以下のセクション５において議論するように、受信キュー・ポインタのヘッドとテール）３２０と調和して、とりわけパターン整合のために、カノニカル・ヘッダ・データを含んでいるセルをＲＥ４０に送信し、受信したキューから対応するパケットを取り出すときについて決定する。ヘッダ・プリフェッチ・エンジン３１４は、リライ・エンジン・コンテキスト３２６、インターフェース７５を介してＲＥから命令を受信する命令ディスパッチ・マネジャ３２７、リライ・エンジン命令インターフェース３２９、およびリライ・エンジン命令ＦＩＦＯ３２８と調和する。回路ポーラ３１７は、回路ごとに送信エンジン３１６をポーリングして、セルを送信し、ＳＲＡＭインターフェース３２３を通して、ＳＲＡＭ３２のバッファ・ポインタ（「記述子」）の連結リストにアクセスし、１つまたは複数のキュー上で受信および送信される際のパケットの構成要素セルを追跡するＳＲＡＭアービタ３２２と調和する。適切なフィールド・マッピングがハードワイヤードされているこれらのオペレーションは、非常に高速で実行されたスケジューリングとルーティングの高度な柔軟性に備えている。
【００１２】
図４は、ＲＥ４０のブロック図である。ＲＥ４０の主要機能は、ＱＭ３０からインターフェース７４において受信したカノニカル化したパケット・ヘッダを検査して、パケットが既知のフローに属するか、および、それに応じて適切なスケジューリングのためにインターフェース７５上で命令を提供するかについて、迅速に決定する（サービス品質）。ＣＰＵコア３８７（ＡＲＣプロセッサで実施される）は、命令キャッシュ３８６とデータ・キャッシュ３８５を含み、ＤＲＡＭインターフェース３８４（やはり、初期化時に、低速バス６２とＤＭＡ３８３を介して、ＢＥ５０から命令を受信する）を介して、コードおよびデータＤＲＡＭ４２と通信する。ストリング比較コプロセッサ３８９を使用して、パケットとフローを整合するために使用するパターン認識を援助する。一般に、ＲＥ４０に入るカノニカル化したパケット・ヘッダは、ＭＵＳＩｎ３９４によってデータＦＩＦＯ３９４内にＭＵＸすることと併行して、ハッシュ・プリプロセッサ３９９によって事前処理される。併行ハッシングの結果は、ハッシュＦＩＦＯ３９３に配置され、ハッシュ探索エンジン３９２によって、（特定のフロー特性と関連付けられているヘッダ情報の既知のハッシュに関する）ハッシュ表３９１のオンボードＬ１キャッシュのコンテンツと比較される。Ｌ１キャッシュ３９１に整合性が見出されない場合、ハッシュ探索エンジン３２９は、ＳＲＡＭインターフェースとアービタ３８８を介してアクセスした、探索ＳＲＡＭ４５のハッシュ表全体を調べることになる。トライ・サーチ・コプロセッサ３９０を使用して、迅速なパターン整合が適切でないかまたは失敗した状況（以下で議論する）における、適切なフロー・パラメータを見つける。決定したフロー・パラメータにより、ＣＰＵ３８７によって、適切な命令を命令ＦＩＦＯ３９５に発行して、データＦＩＦＯ３９４からＭＵＸアウト３９７によってインターフェース７５を横切ってＱＭ３０内に提供されたあらゆるデータで多重化された命令プッシュ３９６によって処理する。
【００１３】
図５は、キュー管理の観点から、本発明の好ましい実施形態のオペレーションに関する一般的な概略図を示す。ＭＯＭ受信ポート１５’上のデータは、ＱＭ主要受信ＦＩＦＯ３３０内に向けられる。また、データは、プロトコル６６’下およびＤＡＤ管理６６’下で処理されたＷＡＮ（Ｔ１およびＰＯＴＳ）ポート受信キュー６９’からＤＡＤイーサネット送信キュー３４８’内にエンキューされて、ＭＯＭ受信ポート３４８上に出現する。受信ＦＩＦＯ３３０のデータ・セルは、主要システム・パケット・メモリＤＲＡＭ３５および３６に配置され、一方、カノニカル・ヘッダは、ＦＩＦＯ３９４において、ＱＭ３０に転送される。ここで、ＦａｓｔＰａｔｈ（商標）処理を適用して、フローごと、優先順位ごと、および各ポート・キュー３３２（以下で議論するように静的優先順位）および３３３（以下で議論するように、重みを付けたロビン優先順位）ごとにパケットの適切なキューイングを、送信のためにＭＯＭ送信ポート２４’（または、さらにＴ１およびＰＯＴＳポート送信キュー６９”に分配するために、回路キュー３５０上で分配されるＤＡＤ６６）に送信することを可能にする。スケジューリングの微妙な同調は、「中間」キューとしてスケジューリングしたキュー３３５を使用したフローごとのキューイングに対して、サービス品質スケジューリング・プロセス３３６を使用して達成することが可能である。管理キュー３３７も、重みを付けたラウンド・ロビン・キュー３３３上で動作する管理オペレーション・プロセス３３８を備える。また、モニタ・キュー３３４が、ＭＩＩ２４’上で送信される情報を監視するネットワークに対して提供されている。ＢＥ５０側では、ＭＯＭポート送信キュー３３９上に配置されたデータは、ＭＩＩ（１００Ｍｂｉｔのイーサネット）リンク５４上で、ＢＥ受信キュー３４１内に送信される。背景エンジン主要転送プロセス３４２は、情報を、ＢＥ送信低優先キュー３４６、または管理オペレーション・プロセス３４４によってサービスされる管理キュー３４３内に渡し、データ（命令を服務）を開発して、ＢＥ送信高優先キュー３４５上に配置する。両方のＢＥ送信キューとも、リンク６４を介して、ＭＯＭポート受信キュー３４７内に排出され、ＱＭ受信キュー３３０上に配置される。
【００１４】
図６は、本発明のプロセスに関する一般化した流れ図である。プロセスは、異なるセルに対する図の様々な点に沿って、同時に行われることを理解されたい。本発明の好ましい実施形態は、しばしば、入来する長いイーサネット・フレームを、後の再アセンブリのためにセルに分割するので、この実施形態では、元となったパケットに関して、セルを特徴付けることが重要である。受信したセルは、「パケットの開始」（「ＳＯＰ」）、「パケットの中間」（「ＭＯＰ」）、「パケットの終了」（「ＥＯＰ」）とすることが可能であり、または、「パケットの開始および終了」（「ＳＥＰ」）として１つのパケットを含むことが可能である。好ましい実施形態におけるパケットの受信および送信は回路ごとに実行され、回路はパケットの順序を維持する局所的な接続として定義されるので、１つの回路上のパケットのセルは、ＭＡＣバス上など、他の回路上のパケットのセルでインタリーブすることが可能であるが、同じ回路上で受信されたセルは、同じ順序で送信されなければならない。したがって、図６Ａでは、時間が上から下に進むにつれ、ＭＡＣバス上に現れる順序で、ＳＯＰ３７１が回路２から受信され、次いでＳＥＰ３７２が回路１から、ＳＯＰ３７３が回路３から、ＭＯＰ３７４が回路２から、ＥＯＰ３７６が回路３から、ＳＯＰ３７５が回路１から、ＥＯＰ３７７が回路３から受信される。
【００１５】
図６の示した一般化したプロセスを参照すると、オペレーション３５１において、パケットはＭＩＩにおいて受信され、オペレーション３５２において、やはりカノニカル・ヘッダ（および可能であればバースト・ヘッダ）を追加するＭＯＭ１０または２０によってセルに分割される（図１参照）。ＭＯＭ送信バッファのセルは、オペレーション３５３において、ＭＡＣバス上で調停され、オペレーション３５４において、後に送信するためにＤＲＡＭに格納され、これはまた、本発明の好ましい実施形態で使用した仮想パケットのリンクリストなど、セルを当初のパケットに関連付ける手順の開発を含む。セルがＳＯＰである場合、セルをパターン整合手順に送信する決定３５５が行われ、セルは、以前に識別されたフローに関連付けられている既知のハッシュ結果に対して、ハッシュされ３５６、次いで整合される３５７。整合が存在しない場合（おそらくはいくつかの整合手順後）、新しいフローまたは例外が指定される３５８。いずれの場合でも、パケットを適切にスケジューリングおよび経路指定するために、適切なヘッダが書かれる。好ましい実施形態では、スケジューリングは、パケットを指定されたサービス品質と特定の回路に関連付けられているキューに割り当てることによって行われる。キュー上のセルは、適切な時間に送信３６０され、プロセスは、おそらくはヘッダの書換えを含む。送信されたセルがＥＯＰであった場合、パケットは、回路からデキューされ３６１、パケットを送信するという他の要求が存在しない場合（オーナ３６２がもはやない場合）、データ・バッファは解放される３６３。このプロセスは、さらに一般化して、多様な方式で実施することが可能である。
【００１６】
本発明の好ましい実施形態によるデータのフローについて、さらに以下で提示する。これには、追加の発明が含まれる。
【００１７】
２．ヘッダ「カノニカライゼーション」およびフレーム「セルラー化」
物理レイヤ上でデータ・パケットを受信すると、この発明的なネットワーク・スイッチは、到来パケットのレイヤ２ヘッダおよびレイヤ３ヘッダをとり（レイヤ１パケット・プリアンブルがあればドロップし）、それをカノニカル形式に変換する。本発明はさらに、可変長パケットを、高速内部バス上での通信にとって最大限に都合のよい長さの「セル」に分割する。これにより、イーサネット「フレーム」やＡＴＭ「セル」などの異なるレイヤ２ヘッダ・フォーマットおよびレイヤ３ヘッダ・フォーマットであって異なる長さのデータ・パケットを、同じスイッチング・プロセスおよび装置でルーティングすることができる。ヘッダの「カノニカライゼーション」はまた、処理に都合のよい４バイト境界に沿ってヘッダを整列させる。ここでの例はイーサネット・フレームの場合であるが、用語およびインターフェースＡＳＩＣを適切に修正すればＡＴＭセルにも適用可能である。
【００１８】
図１を参照すると、図示した８つのポートのうちの１つを介して情報のフレームがＭＯＭ１チップ１０によって受信される。物理リンク・レイヤ１の処理は、好ましい実施形態ではデュアル「オフザシェルフ」ＱｕａｄＰＨＹ集積回路（Ｌｕｃｅｎｔ  Ｔｅｃｈｎｏｌｏｇｉｅｓから入手可能なものなど）によって扱い、各回路は、１０Ｂａｓｅ−Ｔ（１０Ｍｂｉｔ／秒）または１００Ｂａｓｅ−ＴＸ（１００Ｍｂｉｔ／秒）のイーサネットの送信／受信電子回路を扱う。ポートの１つ、例えばＭＯＭ２からのポートを、内部または外部１０Ｍｂｉｔイーサネットによって、オフザシェルフＷＡＮプロセッサ（Ｍｏｔｏｒｏｌａから入手可能なものなど）を含むＤＡＤ集積回路に接続することができ、ＤＡＤ集積回路は、モデムを介してＴ１およびＰＯＴＳ回線とインターフェースする。これらは共に、ＱｕａｄＳｅｒｖｅ（商標）ＷＡＮアクセス・モジュールを形成する。
【００１９】
図１を参照すると、メッセージを形成するデータ・ストリームの形をとる情報のフレームまたはパケットが物理回路７０に入力され、次いで、ＭＯＭ１チップ１０によってその８つのポートの１つを介して受信される。図１８に、典型的なパケット・フォーマットの構成を概略的に示す。プリアンブル６２０があり、これに続いて、パケットをブリッジングするための情報を含むデータ・リンク・レイヤ２ヘッダ６２２と、メッセージをルーティングするための情報を含むネットワーク・レイヤ３ヘッダ６２３と、データの使用対象であるアプリケーションに関する情報を含むアプリケーション・ヘッダ６２４がある。これらのヘッダの後にデータ本体６２５、および場合によってはトレーラ６２６があるが、トレーラ６２６は通常は不要であり使用されない。
【００２０】
ＭＯＭ１チップは、好ましい実施形態では様々なイーサネット・プロトコルを認識するようにハードウェア中に事前プログラムされたものだが、これは、受信フレームから、プリアンブルおよびトレーラをドロップし、レイヤ２および３のヘッダを読み、図７Ａの２８バイトのカノニカル・ヘッダを生成する。ＭＯＭ１は、１ポートにつき２５６バイトのバッファ容量があるので、フレーム・データをそれぞれ１２８バイトのセルにセグメント化する（他の実施形態では他のセル長を用いてもよい）。
【００２１】
受信されたレイヤ３（ネットワーク）ヘッダ情報は、カノニカル・ヘッダをすぐに付加して記憶される。カノニカル・ヘッダは２８バイトなので、レイヤ３ヘッダは、常にセルの開始点から４の倍数バイトで開始する。レイヤ３内の重要なフィールドは、通常、４バイト境界に整列する。これにより、３２ビット・プロセッサ／メモリ・アーキテクチャの場合にこれらのフィールドの処理が非常に効率的になる。
【００２２】
レイヤ３ヘッダには、アプリケーション・レイヤを含めた上位レイヤからの他のヘッダ情報が続く。カノニカル・ヘッダは、受信された各フレームまたはパケットの第１のセルの最初に配置され、パケットをルーティングまたはブリッジングするためにＲＥ４０によって使用される。セルのストリームの形をとるパケットが送信されるようにＭＯＭに送られたとき、ＭＯＭは、送信カノニカル・ヘッダ中の宛先およびプロトコル情報に従って適切なヘッダ、プリアンブル、およびトレーラを再構築し、指定されたポートに接続された回線上で、再構築したパケットの送信を開始する。
【００２３】
図７Ａに、好ましい一実施形態におけるカノニカル・ヘッダの構成および内容を示す。最初の２つのバイト４３０は、データ・パケットが受信された回路の回路識別を保持し、バイト４３２すなわちＤＬ  Ｉｎｆｏは、元の受信ヘッダからのデータ・リンク（レイヤ２）ヘッダに関する情報を提供する。図７Ｂに、これらのビットに対する具体的な割当てを示す。ビット７は、受信されたフレームがその受信時にＶＬＡＮ（仮想ローカル・エリア・ネットワーク）でタグ付けされていたかどうかを示す。送信時にこのビットがセットされている場合、送出パケットは、送信を処理するＭＯＭチップによってＶＬＡＮヘッダでカプセル化される。ただし、ＶＬＡＮタグ付きで受信されたパケットは必ずしもＶＬＡＮタグ付きで送出する必要はなく、その逆も同様であることに留意されたい。
【００２４】
図７Ｂのビット６および５は、どのようにＣＲＣ（巡回冗長検査）が処理されるかを示す。図７Ｃは改めて説明する必要はない。送出フレームが受信フレームと異なるときは新しいＣＲＣを生成しなければならないが、単に元のフレームが転送される場合はＣＲＣを変更しなくてもよく、したがって、古いＣＲＣを保持するか別のＣＲＣを生成する必要があることに留意されたい。ビット３および４は未使用であり、０のままである。図７Ｄに、データ・リンク・フォーマットを識別するビット２、１、および０に対する符号化を示す。
【００２５】
カノニカル・ヘッダＮＬ  Ｉｎｆｏフィールド４３４は、ネットワーク・レイヤ情報を含む。図８Ａに、ＮＬ  Ｉｎｆｏ中の８つのビットの意味を示す。受信に関して、ビット７の真は、受信された情報の宛先アドレス（ＤＡ）が、パケットが受信された回路に関連するブリッジ・グループのアドレスであることを示す。ビット６の真は、ＤＡがそのポートに対するシステム・アドレスであることを示す。ビット５の真は、ＤＡが、ネットワーク制御プロトコルに関連するアドレスなど、本発明により「周知のアドレス」として事前構成されているアドレスであることを示す。送信時にこのビットは無視される。送信時、ビット７および６がセットされている場合は、ＳＡフィールドに適切なソース・アドレスが入る。
【００２６】
ビット４〜０は、パケットのレイヤ３プロトコルを識別する。図８Ｂは、本発明の中に事前プログラムされたこれらのプロトコルを識別するものである。これらは、新しいプロトコルが開発されたときに拡張することができ、このシステムによって効率的に扱う必要がある。
【００２７】
タイム・スタンプの４つのバイト１３８は、パケットが失効する時間を含む。ＱＭ３０は、パケットの第１のセルの一部としてカノニカル・ヘッダを受け取ったときに、そのパケットが失効する時間を入力する。ＱＭ３０は、パケットの送信時、現在時間がカノニカル・ヘッダ中のタイム・スタンプ値よりも大きいかどうかをチェックすることになる。大きい場合は、データ・リンク・デバイスは、そのパケットを送信せず、代わりにそれをカウントするように指示を受ける。このフィールドは、ＭＯＭによって最初に生成されるときに、以下のセクションの「Ｄａｔａ  Ｆｌｏｗ  Ｉｎ」で述べるセル情報を含む。
【００２８】
２バイト受信回路識別（Ｒｘ  Ｃｋｔ  Ｉｄ）は、パケットが受信される回路を識別する。ＱＭは、データが再送される回路の回路識別でＣｋｔ  Ｉｄフィールド４３０を上書きする前に、ＭＯＭ１によって最初に供給された受信回路識別をＣｋｔ  Ｉｄフィールド４３０からコピーする。したがって受信回路識別は、後で使用されるように（ＢＥ５０による管理およびＲＭＯＮ機能などのために）保持される。
【００２９】
ＤＡは、受信パケットの４８ビット・レイヤ２（ＭＡＣ）宛先アドレスである。
ＳＡは、受信パケットの４８ビット・レイヤ２（ＭＡＣ）ソース・アドレスである。
【００３０】
ＶＬＡＮタグは、イーサネット８０２．１Ｑタグ付きで受信したパケットに対応するための２バイト・フィールドである。前述のように、ＤＬ  Ｉｎｆｏフィールド中のＶＬＡＮタグ・ビットもまたセットされる。このパケットの送信を処理するＭＯＭチップは、送出パケットにタグ付けすることになる。
【００３１】
Ｐ−Ｔｙｐｅ／ｌｅｎは、プロトコル・タイプ／長さのフィールドを含む２バイト・フィールドである。この好ましい実施形態では、この値が１５００（１０進法）よりも大きい場合、このフィールドはプロトコルを表し、この値が１５００以下である場合、このフィールドは長さを表す。プロトコルは、ＮＬ  ＩｎｆｏフィールドのＰｒｏｔｏｃｏｌ  Ｋｉｎｄサブフィールド中に取り込まれる。プロトコルがそのように構成されていない場合、ＮＬ  ＩｎｆｏフィールドのＰｒｏｔｏｃｏｌ  Ｋｉｎｄサブフィールドは、Ｕｎｋｎｏｗｎ（０）を示すことになり、Ｐ−Ｔｙｐｅ／ｌｅｎフィールドはその値を有することになる。例えば、パケットがイーサネット８０２．３フォーマットである場合、このフィールドは、レイヤ３ヘッダ中の長さを使用した妥当性チェックに使用できる長さを含むことになる。
【００３２】
ＸＸバイトは、受信パケットのパケット・フォーマットに基づく他の情報を有することができる。図８Ｃに、異なるＤＬフォーマット・タイプの場合のＸＸバイトの内容を示す。
【００３３】
３．ＢｌａｚｅＷｉｒｅ（商標）高速ＭＡＣバス
受信されて１つまたは複数のセルに再構築され、第１のセルがカノニカル・ヘッダおよび上位レイヤ・ヘッダを含むフレームは、ＱＭとの間で、ＢｌａｚｅＷｉｒｅ（商標）と呼ばれる高速ＭＡＣバス上で通信される。
【００３４】
ＢｌａｚｅＷｉｒｅ（商標）のここでの設計は、２つの大規模集積回路チップ間で各方向に１０個の信号および１つのクロック信号がある全二重クロック・バスである。このクロッキング・プロトコルにより、バス上のデータ転送をセルフ・フレーミングかつ非対称かつ非エイリアシングにすることができる。すべての信号は、内在伝送回線が適切に終端している２つの導体ラン間の差動信号である。この好ましい実施形態では、差動ドライバおよびレシーバの電気的特性は、ほぼ低電圧差動規格（ＳＶＤＳ）ＡＮＳＩ／ＴＩＡ／ＥＩＡ−６４４に記述されているとおりである。差動信号電圧は、約２５０ミリボルト（ｍｖ）であり、ケーブル終端および物理信号パスは、バスにわたる高速動作に対応するように設計される。バスは、一方の大きなチップ（ＭＯＭまたはＱＭ）から他方のチップに続くチェーンとして構成される。バスへのチップのアクセスを制御するために、後述するように別のデイジー・チェーン型トークン・パス手法が実装される。バスの電子設計は、場合によって異なる製造、供給電圧変動、および温度変動からくる、チップの異なる製品ランに付きものの実際の変形を補償する。好ましい実施形態では、バスのスピードは、ギガヘルツの範囲まで上げることができる。
【００３５】
１０個の信号は８つのデータから構成され、１つはパリティであり１つは制御である。これらのデータは、クロック信号の立上りと立下りの両方の線上に配置される。データはクロック遷移における信号線上に配置されるので、信号は、受信端でまたはクロック信号の中心の至近で読むべきである。これにより、どんなオーバーシュートも、他のどんな信号遅延または異常も解決することができる。両方のクロック信号遷移における信号線上にデータがロードされるので、クロック・エッジとバス上に配置されたデータとの間のスキューが最小限に抑えられた対称クロックを有することがクリティカルである。この回路は、クロック信号の両方の位相の中心を監視および発見するフィードバック機構を提供し、さらに、チップを介してバスの継続の上に送出されつつある信号に対称クロックを提供する。
【００３６】
図９に、各方向に１０本がグループになった２０本の信号線と各グループにつき１つのクロックとを有するＭＯＭ１およびＭＯＭ２として示す２つのサブシステム間の基本的な信号フローを図示する。図１０に、２２本の線のそれぞれの差動特徴を示す。当技術分野で周知の差動ドライバおよびレシーバが、信号忠実度を最大限にしてリンギングを最小限に抑えるために、それらに特徴的なインピーダンスで伝送回線を適切に終端する。他の実施形態で有利なように、ドライブ側に実装する手法など他の終端技術を使用することもできる。
【００３７】
図１１は、１０個のデータ・ビットのうちの１つをＭＯＭのうちの１つから出力するための回路の概略である。この回路は、本質的に他のデータ・ビット用に複製される。この回路実装により、クロック対称性が最大限になり、スキューが最小限に抑えられる。Ａデータ４６２が、出力４６６上に配置され、Ｂデータ４６４がそれに続く。Ａデータは、フロップ４６８中にラッチされ、論理配列に提示される。前のＢデータがラッチ４７２中に残されており論理配列４６０に入力されると考えてみる。論理配列は、信号をラッチ４７４にロードするように構成され、ラッチ４７４は、ラッチ４７６中に残った信号との「排他的論理和がとられる」と、ゲート４６６の出力にＡ信号を提供する。次にクロック・エッジ上で、同様の演算がＢデータ信号を出力に提供し、このＢデータ４６４は、４７２でラッチされ、ラッチ４７４中にある前の信号との「排他的論理和がとられ」、したがって、ラッチ４７６中のデータの「排他的論理和」が、「排他的論理和」４６６の出力にＢ信号を提供することになる。図１２は、以上のことを単純化したタイミング図である。
【００３８】
図１２Ａに、バス・クロックと、ＭＯＭ１と２の間のバス上にある１０本のデータ線との複合タイミング・チャートを示す。図１２Ａは、クロック信号の各エッジの上における８つの連続したバイト（加えてパリティおよび制御）の転送を示している。
【００３９】
信号がＭＯＭまたはＱＭで受信されるとき、図１３に、受信クロックのある位相の中心にエッジがある遅延クロックを提供するのに使用されるＭＯＭの回路を示す。別の類似の回路を使用して、受信クロックの別の位相の中心にエッジがある遅延クロックを提供する。これらの中心合わせしたクロックは、データを受信ＭＯＭ中にラッチするのに使用され、また、ＭＯＭから信号を送出するのに使用される対称クロックに対する基準となる。受信クロック８０は、ラッチ４８２およびラッチ４８４に入力されるデータになる。遅延クロックＤＬＹＡ（入力クロックの遅延バージョン）が、クロック信号４８０をラッチ４８２にラッチし、ラッチ４８２の出力はＳＡＭＰＬＥ  ＣＬＫ  Ａであり、遅延クロックＤＬＹＢが、クロック信号４８０をラッチ４８４にラッチし、これは出力ＳＡＭＰＬＥ  ＣＬＫ  Ｂを伴う。ＤＬＹＡおよびＤＬＹＢは、プログラム可能な分だけ制御論理によって遅延される。これらのＳＡＭＰＬＥ  ＣＬＫは両方とも、信号の同期をとるように設計された回路を介して制御論理配列９０にフィードバックされる。動作時、制御論理は、いつＤＬＹＡが発生するかをプログラムすることができる。このようにして、ＤＬＹＡはローのときにクロック４８０信号をラッチすることができ、制御論理がＳＡＭＰＬＥ  ＣＬＫ  Ａ信号によってローのときを決定することができる。制御論理は、クロック４８０信号がハイになるまで、異なる遅延の設定を継続する。同様にして、制御論理は、クロック信号がローに戻るまで、異なる遅延の設定を継続する。前と同様に、制御論理は、ＳＡＭＰＬＥ  ＣＬＫ  Ａ信号を監視することからこの条件を決定する。図１３Ａを参照すると、制御論理がクロック信号４８０の第１の立上り４８０’および立下り４８０”を見つけると、制御論理は、ＤＬＹＡ立上り４８６を「知り」、クロック４８０の正の位相の中心に設定することができる。このＤＬＹＡ立上り信号は効果的にも、クロック４８０の次の連続した正の位相上のデータをラッチするのに使用される立上り４８６’となる。ＤＬＹＡ信号の中心合わせの間、図１３Ａの時間４８６で受け取られる実際のデータは、前にクロック４８０の正の位相に中心合わせされた図１３の信号ＤＬＹＢによってラッチされる。ＤＬＹＢの前の中心合わせは、ＳＡＭＰＬＥ  ＣＬＫ  Ｂフィードバック信号およびＤＬＹＢ遅延信号を用いて上に述べたのと同に方式で達成されたものである。この実施形態では、ある遅延クロックがデータをラッチしている間に、他の遅延クロックがいくらか後で使用されるように中心合わせされる。
【００４０】
図１３の回路は、複製されて、反対の位相上のデータをラッチするために入力クロック信号の負の位相の中心が正確に測定される。図１３は、受信クロックの負の位相の中心に正確にＤＬＹＣ立上り４８９を示している。前述のように、他方のクロック（図示していないＤＬＹＤ）がデータをラッチしている間に、ＤＬＹＣクロックがクロック４８０のある負の位相の間に中心合わせされ、ＤＬＹＣクロックがデータをラッチする間に、ＤＬＹＤが中心合わせされる。
【００４１】
図１４に遅延回路の各部を示す。ＩＮ信号４９４は、あるゲート４９５によって遅延され、「ａｎｄ」ゲート４６６に入力される。制御１信号が論理信号である場合、この信号は、９６を横断し、「ｏｒ」構造４９８を介して出力され、３つのゲート遅延すなわち４９５、４９６、４９８によって遅延された出力信号となる。この遅延は、１つの遅延ユニットと見なされる。制御１信号が論理「０」であり制御２信号が論理「１」である場合、ＩＮ信号は、ゲート４９５、４９５’、４９６’、４９８’、４９８を通って移動する。このパスは、２つのゲートよりも長く、ＩＮ信号は２つの単一ユニット遅延回路を通って行ったものと見なされる。各信号遅延ユニットは、２つのゲート遅延を追加する。制御論理によってＩＮ信号が３つのゲート５００に到達でき、制御Ｘ信号が論理信号である場合、ＩＮ信号は、４つのゲート、すなわち３つのゲート５００およびゲート５０４のインクリメンタルを通っていくことになる（ゲート５０２は各遅延回路中で複製されて前の遅延回路中でディセーブルにされた共通パスである）。この回路は、４つのゲート遅延を追加し、２つのユニット遅延を形成する。４ユニット遅延（図示せず）は、３つのゲート５００を７つのゲートで置き換えることになり、したがって８つのゲート遅延または４つのユニット遅延のインクリメントを追加する。この好ましい実施形態では、３２個の単一ユニット遅延と、１６個の２ユニット遅延と、１６個の４ユニット遅延がある。この好ましい実施形態における構成により、選択できる合計１２８個のユニット遅延までの等差数列状の遅延が可能である。他の実施形態では、他の遅延回路構成を選択することもでき、他の周知の遅延回路を有利に使用することもできる。この好ましい実施形態では、回路を構築するのに使用される予想される製造プロセスに対し、かつ予想される温度および供給電圧動作に対し、単一遅延が約０．１５ナノ秒となる。前述のパラメータに応じて、１ユニット遅延の変動が０．０８から０．３ナノ秒までにわたる場合があることが予想される。
【００４２】
図１５（表１）は、この好ましい実施形態での制御ビットの使用法を示す表である。ビットはフレーミングに使用される。図１２Ａのタイミング図では、ｅ０〜ｅ７でマークされた各クロック遷移で８バイトが転送される。表１は、偶数遷移、ｅ０、ｅ２、ｅ４、およびｅ６に関する制御ビットの値を示すものである。これらの組合せが、一番右の列に示された許容機能を示す。各偶数遷移で制御ビットがゼロの場合、バスはアイドル状態である。行５１０に示されたいずれの組合せも、データ・ライン上にあるデータが有効フレームであることを表示するものである。具体的に言えば、データの有効フレームでは、ｅ６時間の値が常にゼロでありｅ０時間の値が常に１であるため、システムは制御ビットのゼロから１の時間シーケンスを探す。ｅ０では１が想定され、行５１０に示された組合せが存在すれば、このデータのフレーミングは８バイトの有効セットを示す。
【００４３】
８バイト・データの有効フレームにエイリアシングが発生することのないように、行５１０の値が選択される。有効な制御ビット・シーケンスの組合せ、すなわち図１５の行５１０には、必ずゼロの次に１があり、有効フレーム内にそれ以外のゼロ／１パターンはない。図１６では、偶数クロック遷移での制御ビット値のパターンが、フレーム５１２を無効として示しているが、これは、フレーム５１２のｅ２およびｅ４に、別のゼロ／１パターンがあるからである。ただし、フレーム５１４はフレーム５１６と同様に有効である。実際には、制御ビットの値が各受信クロック位相で測定され、クロック位相で分けられたゼロから１への遷移が監視される。このような遷移が発生した場合、１はｅ０時間スロット内にあるものとして扱われ、フレームの有効性の監視は、その相対的タイミングに基づくものである。
【００４４】
ＭＯＭチップからＱＭへのデータ伝送は、好ましい実施形態では、トークン・リングによって調停される。図１のシステム構成／概略図を再度参照すると、トークン・リング調停パス６１が、ＭＯＭ  １とＭＯＭ  ２との間に示されている。トークン・リングとは、入力トークン信号と出力トークン信号との間に論理的な相違が存在する場合、チップがトークンを有するループ状の信号のことである。図１７では、チップ内に有効な反転がないため、パス内にインバータがあり、初期設定時に１つのチップ、この場合はＭＯＭ  １がトークンを得て、バスを制御することが保証される。チップがトークンを得ると、バスを介して独自のデータを送信することが可能であるが、チップがトークンを得ていないと、トークンを待たなければならず、その間他のデータは単にチップを介して渡される。チップがトークンを得ると、そのチップによって送信される必要のあるすべてのデータが送信された後に、トークンが解放される。ＭＯＭ  １がトークンを得た場合、ＭＯＭ  １が出力信号６１の状態を変えることによって、トークンがＭＯＭ  ２に渡される。その後、ＭＯＭ  ２がトークンを得る。
【００４５】
このトークン・パッシングは、１つのデバイスの単一トークン出力信号と、次のデバイスの単一トークン入力信号とを接続することによって、複数のデバイスへと延長することができる。最終デバイスのトークン出力信号が反転され、その後、トークン・パッシング・チェーン内の最初のデバイスに送られる。
【００４６】
エッジでトークン・パッシングを実施するか、または情報の状態を変えることで、異なるクロック・ドメイン間での同期化が容易になる。エッジ・ベースの情報パッシングにより、トークンが認識され、トークン・パッシング・チェーン内の次のデバイスに渡されるまで、そのトークンは自動的に前のデバイスで有効なままとなる。
【００４７】
４．データのフロー・イン
ＭＯＭ  １チップ１０は、８ポートそれぞれについて、２セルまたは２５６バイトまでの受信データを格納またはバッファリングすることができる。前述の「ヘッダのカノニカライゼーション（Ｈｅａｄｅｒ  Ｃａｎｏｎｉｃａｌｉｚａｔｉｏｎ）」の項で述べたように、ＭＯＭチップが、受信したフレームまたはパケットからレイヤ２およびレイヤ３のヘッダを読み取り、２８バイトの最初のカノニカル・ヘッダを生成（この項で詳細に述べる）した後、ネットワークのレイヤ３ヘッダおよび第１セルのアプリケーション・レイヤ・ヘッダが処理される。
【００４８】
ＭＯＭ  １０（または２０）は、ＭＯＭが前述のトークン・リング・アービトレーション・パスのトークンを保持しているときに、高速ＭＡＣバス６０上でセルをＱＭ  ３０に伝送する。ＭＯＭの８ポート間で、アービトレーションは順繰りである。ＱＭがセルを受け取り、このセルをダイナミックＲＡＭ  ３５および３６に格納するが、この好ましい実施形態では、以下の第９項で述べるような高速アクセスのＤＲＡＭバンクを２つ備えた、ＲＡＭＢＵＳ（登録商標）ＤＲＡＭである。受け取って格納したセルを記述する情報は「記述子」と呼ばれ、ＳＲＡＭ  ３２に配置される。カノニカル・ヘッダは、タイム・スタンプを含むように修正される。パケット内の第１のセルにある修正されたカノニカル・ヘッダおよび残りのヘッダ情報は、ＲＥ  ４０に転送するために、ヘッダ・アウトＦＩＦＯ  ３０９内に配置される。
【００４９】
フレームのセグメント化およびアービトレーション・スキームにより、ある回路上で受け取られたパケットの後続セルは、他の回路上で受け取られた他のパケットのセルを使ってインターリーブすることができる。ＱＭがパケットのセルの順序を追跡できるような情報を提供するために、ＭＯＭは、パケットの第１セルの最初のカノニカル・ヘッダの第１のオクトバイトに対応して、同じパケットの後続セルに追加された８バイト（オクトバイト）の「バースト」ヘッダを書き込む（最高１７オクトバイトになる）。
【００５０】
追加情報が制御信号回線または高速ＭＡＣバスのビット上で送信されることにより、セルの境界およびセル内に格納された情報のタイプが識別可能になる。図２１は、オクトバイトのグループでデータを描くための、制御ビットの使用法を示す図である。８つの連続するクロック位相上にある制御ビット７００が、８バイトでフレーミングし、データを区別する。制御ビットの値は、図２２の表で、ｅ０からｅ７で示されている。
【００５１】
図２２では、偶数の制御ビットｅ０、ｅ２、ｅ４、およびｅ６が以下のように符号化される。８ビットの有効グループが受け取られたことを示すために、ｅ０は常に１であり、ｅ６は常にゼロである。この符号化のエイリアシングを避けるために、有効グループ（偶数の制御ビットｅ０からｅ６について）を示す値は、１０００、１１００、および１１１０のみである。ビットｅ２はセルの開始を示し、ｅ４はパケットの開始を示す。図２３は、偶数の制御ビットの可能なシーケンスを示す図であって、グループ７０２は有効なグループではないが、グループ７０４、７０８、および７１０は有効である。丸で囲まれたゼロ／１  ７０８は、有効グループの開始は、最初にゼロ、その直後が１である場合のみであり、続く２ビット（ｅ２およびｅ４）に別のゼロ／１はあり得ないことを示す。
【００５２】
さらに図２２を参照すると、奇数の制御ビットは、以下のように符号化される。ｅ１は伝送クレジット（以下の考察を参照）が存在することを示し、ｅ３（コード・ビット０）およびｅ５（コード・ビット１）は２ビットのエンド・コードを形成し、ｅ７（ショート・ワード）は、オクトバイトが８つの有意バイトよりも少ないバイトを含むことを示す。ショート・ワードは、セルの開始およびセルの終了時に使用することができる。
【００５３】
図２４は、発生する可能性のあるいくつかのパケット・タイプを示す図である。第１セル７２０は、１６オクトバイトまで、すなわち１２８バイトまで有することができる。第１の３２ビット・ワード（オクトバイト）に関する偶数の制御ビット７２２は１１１０である。図２２に示されるように、このコードは、このオクトバイトがパケットの有効な第１セルの一部であることを意味するものである。有効なセルにはｅ０が「１」に等しいことが必要であり、ｅ２が「１」に等しければこの８バイト転送がセルの開始であることを意味し、ｅ４が「１」に等しければこれがパケットの開始であることを意味し、有効なセルにはｅ６がゼロでなければならないことがわかる。セル７２０の場合、奇数の制御ビットはすべてゼロであるが、例外として、最後の８バイト転送のビットｅ５だけは「１」である。図２５は、制御ビットｅ１、ｅ３、ｅ５、およびｅ７、すなわち奇数の制御ビットの符号化を示す図である。セル７２０の場合、ｅ５は「１」、ｅ３は「０」であり、これが「パケットの終わり」に復号化される。したがって、セル７２０は１つのセル・パケット（ＳＥＰ）である。このセルは、全１２８バイト長である必要はないことに留意されたい。
【００５４】
セル７２４はパケットの有効な開始セルであり、ここで奇数制御ビット７２６のｅ３は、「パケットの終わり」ではなく「セルの終わり」を意味するように設定されているため、これはＳＯＰセルである。次のセル７２８は、パケットの第２セル（ＭＯＰ）であり、ＳＯＰに続くすべてのセルは、各セルの始まりに追加されたオクトバイト・バースト・ヘッダ３３０を含み、１７までのオクトバイトを有することになる。この第２セルの場合、最後のオクトバイトｅ３は、このセルがパケットの終わりではなくセルの終わりであることを意味するように設定される。セル７３４は、最後の８バイト・グループにｅ５を有し、これはこのセルがパケットの終わり（ＥＯＰ）であることを意味するように設定され、さらにこの場合、ｅ７も設定される。ビットｅ７は、８つのうち最後のグループが一杯ではなく、（図２５に表されたように）「ショート・ワード」であったことを意味し、これが発生すると、最後のバイト３３８には、最後の８バイト・グループ内の有効バイト数が格納される。たとえば、最後のグループに有効バイトが３つしかない場合、最後のバイト（ｅ７制御ビットと同時に発生）には００１１、すなわち１０進法の３が含まれることになる。
【００５５】
ＭＯＭチップからＱＭへのセルの伝送に関して、第１セルの開始時に、第１のオクトバイトには、タイム・スタンプを含めるようにＱＭによって修正されたカノニカル・ヘッダの一部が含まれる。カノニカル・ヘッダ全体が、他のヘッダと共にＤＲＡＭ内に格納され、このようなフレーム・データを１２８バイトの残り部分に収めることができる。
【００５６】
図２６は、ＱＭによるカノニカル・ヘッダの第１のオクトバイトの伝送を示した図である。図からわかるように、ＭＯＭ、Ｃｋｔ  ＩＤ、ＤＬ  Ｉｎｆｏ、およびＮＬ  Ｉｎｆｏが書き込まれた最初の４バイト７４０が、ＱＭによって転送される。セル情報が含まれた２番目の４バイト７４２は、ＱＭによってタイム・スタンプ７４８で上書きされる。（カノニカル・ヘッダはＲＥに送られ、パケット・ポリシーでのみ処理されて、セル情報には関与されない。）
【００５７】
セル情報バイト７４２の第１のバイト７４４には、ＱＭから報告された伝送クレジットの数が含まれる（以下の「伝送クレジット・スキーム（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｒｅｄｉｔ  Ｓｃｈｅｍｅ）」の項で説明）。第２のバイトにはクレジット・フラグが含まれており、ビット７はＳＹＮＣＨフラグ（初期設定用）、ビット６は「親」フラグである（以下の第８項で説明）。第３のバイトは、図２７に示された意味を有するセル情報を提供する。ビットはそれぞれ、ビット７はセル・エラーを示し、ビット６はパケットのタイムアウト、ビット５は不良パケット・キューからのパケット、ビット４は監視キューから、ビット３〜０は前述の制御から選択されたビットを示すという意味である。ビット３はパケット終了ビット、ビット２はパケット開始ビット、ビット１はデータ・セル・ビット、ビット０は伝送クレジット・ビットである。セル情報バイト７４２の最後のバイトは、セルの長さをバイト数で表す。
【００５８】
カノニカル・ヘッダなしのセルを追跡するのに使用されるオクトバイト長さのバースト・ヘッダが、図２８に示される。このフィールドは、ＤＬ  ＩｎｆｏおよびＮＬ  Ｉｎｆｏ（ＳＯＰだけを対象とするＲＥによって使用される）が、セル・シーケンス番号７５２および未使用スペースに置き換えられている点を除いて、最初のカノニカル・ヘッダの第１のオクトバイトのフィールドと同じである。Ｃｋｔ  Ｉｄ  ７５０は、セル（より具体的に言えば、その代理であるバッファ記述子）を、同じＣｋｔ  Ｉｄを有し、（セルが廃棄されていない限り）逐次シーケンス番号を有しているはずの先行セルと一致させるために使用される。ＱＭによって、セルが先行セルと（以下で説明するように）いったんリンクされ、クレジットが入力され、他方のセル情報に関するアクションが実行されると、バースト・ヘッダは不要となり、ドロップされる。（セルは、パリティ情報がエラーを検出すると廃棄される場合がある。このような場合には、ＭＯＭチップへの信号送信によって、この時点でセルが、さらに最終的にパケットが打ち切られる。）伝送段階でＱＭによって、セル用の新しいバースト・ヘッダが作成され、ここでＣＫＴ  ＩＤはパケットが送信される場所を示す。
【００５９】
５．ＱＭバッファおよびキューの構造と操作
ＱＭによってＭＡＣバス上に受け取ったデータ・セルは、以下のセクション９で説明する高速アクセス操作に従ってＲＡＭＢＵＳ（登録商標）ＤＲＡＭの、アドレス可能な１２８バイトのデータ・バッファに、正規のヘッダはそのままだがタイムスタンプを含むように書き直され、またバースト・ヘッダのオクトバイトをドロップして、個別に記憶される。アドレス０００００はセル情報を含まず、ヌル・ポインタに対応する。
【００６０】
ＭＡＣバス上に受け取り、データ・バッファに記憶されたすべてのセルは、例外として少数の専用キュー以外に使用される記述子／ポインタ方式を使用して単一の仮想受信キューに編成される。この方式は、１ギガバイトまでのデータに対応する受信キューを使用可能にする。
【００６１】
この記述子／ポインタ方式では、ＱＭ  ＳＲＡＭにあるデータ・バッファ「記述子」は２つの４バイトの語を含んでおり、そのバッファに記憶されている実データの代理となり、論理パケットを形成するようにリンクされている。したがって、データと共にデータ・バッファに割り当てられた記述子は、関連するセルが記憶されているＤＲＡＭにあるバッファのアドレスを示す第１の語のフィールドと、同一パケットの次のセルに関連するＳＲＡＭにある別の記述子８０２へのポインタを含む第２の語のフィールドとを有する。図２９に示すように、完全なマルチセル・パケットは、ＭＯＰバッファ記述子８０２を指すＳＯＰバッファ記述子８０１の第２の語と、ＥＯＰバッファ記述子８０３を指す記述子８０２の第２の語と、パケットの最終セルに関連付けられた記述子８０３の第２の語と共に、パケットの第１のセルに関連付けられた記述子８０１を指すポインタを含めて、記述子「ｌｉｎｋ−ｌｉｓｔ」によって記述される。図２９Ｂに示すように、不完全なパケットは、記述子８０５の第２の語にヌル・ポインタを有する。
【００６２】
本発明では、キューは、キューの第１のパケットの第１のセルと、キューの次のパケットの第１のセルに関連付けられた記述子の第１の語を指すフィールドとに関連付けられた記述子の第１の語を指すキュー・ヘッド・ポインタによって形成されており、キューの最終パケットまでこのように反復的にリンクされる。このキューは図３０に示すようにそれを指すキュー・テール・ポインタを有し、受信キュー・ヘッド・ポインタはキューの第１のパケットの第１のセルに関連付けられた指名子８１２を指し、テール８１１は受信キューの最終パケットの第１のセルに関連付けられた指名子８１５を指す（記述子は、それぞれＤＲＡＭ３５または３６の１２８バイトのバッファにマッピングする）。図示するように、キューに入れられたパラメータは必ずしも完全である必要はないが、このパケット志向の実施例では、ＭＡＣバスから受信したデータ・セルは、キューの最後ではなく、バースト・ヘッダのＲｃｖ  Ｃｋｔによって識別されるそのパケットに「付加」される。
【００６３】
受信動作において、ＱＭ  Ｄｅｓｃｒｉｐｔｏｒ  ＳＲＡＭは、バッファ記述子テーブルと受信コンテキスト（または回路）テーブルの中に編成される。このバッファ・テーブルすなわちリストは２つの４バイトの語を含む記述子を有し、語０はＲＡＭＢＵＳ（登録商標）ＤＲＡＭのデータ・バッファのバッファ・アドレスを含み（したがってこのバッファ・テーブル項目は暗黙バッファである）、語１はそのバッファ・テーブルの別の記述子へのポインタを含む。初期化の際、このバッファ・テーブルは「フリー・バッファ・テーブル」であり、そこでは第１のフリー・バッファの指名子をヘッド・ポインタによってＱＭハードウェアが指し、その第２の語が次のフリー・バッファ記述子を指し、第２の語のヌル・ターミネータを含む最終フリー・バッファ指名子までこのように反復的にリンクされる。
【００６４】
データ・セルがＭＡＣバスからＱＭに提示される際、ＱＭはその回路ＩＤをその正規のヘッダまたはバースト・ヘッダから抽出し、その回路の活動状況に関する情報をもたらす受信コンテキスト（回路）テーブルの項目に対してチェックする。ＳＯＰが検出されると、受信コンテキスト・テーブルの項目（８バイト・回路）が作成され、ポインタ（現行バッファ）が次のフリー・バッファ識別子を指すように入力される。このセル・データは関連するＲＡＭＢＵＳ（登録商標）ＤＲＡＭバッファに書き込まれる。フリー・バッファ・リスト・ポインタは、「現行バッファ」が割り当てられた後、次のフリー・バッファ指名子に移動される。
【００６５】
受信したセルがＳＥＰでない場合、バッファ指名子の第２の語は次のフリー・バッファ指名子を指し、関連するバッファを事前割当てし、次のバッファ項目の第２の語に「０」が書き込まれる。
【００６６】
受信したセルがＳＥＰまたはＥＯＰである場合、このバッファ指名子の第２の語はそのパケットの第１のバッファ指名子を指すようにセットされ、結果として生じるパケットを定義するリンク・リストが受信コンテキスト・テーブルからリンク解除される。
【００６７】
従って、ＭＡＣバス上にインターリーブされる場合がある同一回路ｉｄと共に受信されたセルは、事実上、リンク・リストによってパケット内に再構成され、先導するセルが切断動作で送信されているときでさえその一部は不完全な場合がある。後者の場合、図３０Ｂに示すように、受信コンテキスト・テーブル８２０の現行バッファは、データ・セルがロードされるべきバッファに対応する次のバッファ記述子８３３を指し、バッファ記述子８３３は、パケットの他のセルの記述子８３２、８２２、および８２１にリンクされている。この記述子の１つ記述子８３２は、送信コンテキスト・テーブルの回路項目の現行バッファ８２１としてリンクされている。送信コンテキスト・テーブルの回路項目が経路指定情報を提供するので、記述子８３３に関連付けられたバッファにその後に配置されたデータは「行く先を知っている」。このリンク管理システムは、「切断」すなわちパケットの他の部分をまだ受信中にそのパケットの一部を送信することを可能にする。
【００６８】
６．リレー・エンジン処理／フロー・マッチング（ＦａｓｔＰａｔｈ（商標））
ＳＯＰのリンクされた記述子の受信キューはＲＥ４０による処理を待つ。ＳＯＰセル自体は、メモリ空間が使用可能になると、リレー・エンジンによって処理される１６個の１２８バイトのレジスタの「循環」ＦＩＦＯ３９４にロードされる。これは、ＳＯＰセルの処理に続くポインタ・システムによって実施され、そのレジスタが一杯になるまで（第２のポインタが図１９の受信ポインタに「追いつく」とき）セルを加え、次いでヘッド・ポインタによって指されたセルの処理が完了し、ドロップされたときだけ（かつ、受信ポインタが送信ポインタに「後れを取った」とき）、別のセルを付加する。
【００６９】
ＲＥの動作は４ステージのパイプラインを中心とする。パイプラインは、特に高速ハードウェア設計における、長年に亘る当技術分野の用語であり、付随的に言及する以外は本明細書でこれ以上説明はしない。ＲＥのタスクは、記憶されているパケットの再送信を経路指定しスケジュール管理するために、フレーム・フローの最良の転送を行い、それに従って転送情報をＱＭに提供する方法を決定することである。この４つのステージをここで簡単に説明し、次いでフローを識別するためのパターン・マッチングを実施するために使用されるハッシュ関数および署名関数のより詳細な説明を続ける。
【００７０】
第１のステージは、ヘッダがハッシュ・エンジンによって処理されるのと平行して、完全なヘッダ情報（ＳＯＰセル全体）を「循環」データＦＩＦＯに記憶し、そのパケットが、経路指定情報およびスケジュール管理情報が既にそのために開発されている既存のフローの一部であるかどうかをチェックするためのパターン・マッチング関数を実施するためにハッシュ値および署名値を計算する。
【００７１】
第２のステージは、Ｈａｓｈ  Ｔａｂｌｅ  Ｌ１  ３９１にアドレスするために使用されるＨａｓｈ値を受信する。このテーブルで有効な項目が見つかると、Ｌ１  Ｔａｂｌｅからの署名が、Ｈａｓｈｅｄデータの計算された署名と比較される。一致した場合、Ｈａｓｈ  ＴａｂｌｅのＦｌｏｗ  Ｔａｇ（図示せず）が、パイプライン処理されるＦＥ／ＲＥハードウェアの次のステージに有効なヒットが見つかったという指示と共に提示される。Ｆｌｏｗ  Ｔａｇは、そのフローに関する情報が記憶されているメモリのテーブルへの２４ビットのインデックスである。この情報には、本明細書各所で記載するように、他のフロー関連情報と共にパケットを転送する１つまたは複数の回路が含まれる。
【００７２】
有効Ｆｌｏｗ  Ｔａｇポインタ（指された内容をリンクする）は、この好ましい実施形態で説明されるパターン・マッチング関数の好適な結果である。
【００７３】
Ｌ１でマッチが見つからない場合、外部Ｌ２Ｔａｂｌｅ４５上でサーチが実施される。前記のように署名が比較され、Ｌ２テーブルのＦｌｏｗ  Ｔａｇが次のステージに提示される。次のサーチを容易にするために、Ｌ２項目はＬ１テーブルに書き込まれる。
Ｌ１とＬ２のどちらにもヒットがない場合、計算されたハッシュおよび署名は、ヒットが発見されなかったという指示と共に次のステージに提示される。
【００７４】
第３のステージは前記情報を受信し、ヘッダのルックアップが成功したかどうかを判定する。成功した場合、そのヘッダ・データは、適用されるプロトコル規則に従って更新され、そのパケットはフロー情報に従って転送される。しかし、そのヘッダがＴＣＰ（レイヤ４転送制御プロトコル）ＳＹＮパケットまたは別のプロトコルの接続パケットの相当する開始であることが判明すると、またはそのフレームが知られている接続フローの一部でない場合、そのパケットはそのフロー情報に従って転送されない。それらの場合、ＲＥは、完全な事前ハッシュされたヘッダを復号化することによってそのフロー・フレームを経路指定するように働く。このプロセスにおいて、有用なフロー情報を作成し、ステージ１でハードウェアによって得られたハッシュ値および署名値を使用してＬ２  Ｈａｓｈ  Ｔａｂｌｅにそれを指すタグを挿入する。
【００７５】
このパイプラインの第４のステージでは、Ｆｌｏｗ  Ｔａｇによって供給される情報または、ＲＥの完全な事前ハッシュされたヘッダの復号化によって供給される経路指定情報に従って、ヘッダは、指定のキューに送信するためにキューに入れられるようにＱＭに戻される。そのフローの後続パケットを転送するための情報を統合するために、ＲＥは、Ｌａｙｅｒ２およびＬａｙｅｒ３のヘッダに加えてアプリケーション層データを検査する。
【００７６】
さらに詳細には、図４を参照すると、パケットが受信されたとき、ＱＭ３０は（ＮＬフィールドから判定されるような）１２８バイトの長さである場合がある有用なヘッダを、そのヘッダ・データをＲＥのデュアルポート循環バッファにロードすることによって、ＦＥ／ＲＥに提供する。図４を参照すると、ヘッダ・データはＱＭ１００からＭＵＸＩｎ  １０２送信され、ＲＥ４０のＦＩＦＯスタックＤＦに配置される。ＲＥは、１２８ビット項目の既に記憶されている順序付けられたデータ・アレイにインデックスするためにネットワーク・リンク・バイトを使用する。ここでは、各ビットは受信した完全なヘッダ・データ・バイトの１つに対応する。１つの１と共にビットに対応するバイトが、ハッシュ関数および署名関数によって抽出、処理される。バイト・ストリングは、複数の奇数個の４バイトのストリングを提供するために、終端部がゼロによってパディングされる。この好ましい実施形態では、１２８ヘッダ・バイトの６４バイトまでをハッシュ／署名動作によって処理することができるが、他の好ましい実施形態を有利にするためにはこれより少なくてもより多くてもよい。
【００７７】
ハッシュ関数および署名関数は、異なる乗数が使用されることを除いて同一である。しかし、別の好ましい実施形態では、有利にするために、異なる乗数および異なる除数の他の組合わせを使用することも可能である。
【００７８】
図４を参照すると、Ｈａｓｈ  Ｐｒｅｐｒｏｃｅｓｓｏｒ３９９は、１２８バイトのヘッダ・データからの選択バイトを入力する。この選択バイトは、３２ビット・ワード（上記のように４の倍数）のｎ番目を形成する。この３２ビット・ワードのシーケンス中のビットは、ガロア体、ＧＦ［２］、すなわち２のガロア体（ガロア体は当分野で知られている）で多項式として扱われる。この好ましい実施形態では、この多項式を無作為の３２ビット多項式で乗算し、注意深く選択した３２次の多項式で除算し、その結果３２ビットの剰余が得られる。上記で使用した除数は、既約（ｉｒｒｅｄｕｃｉｂｌｅ）および基本（ｐｒｉｍｉｔｉｖｅ）両方になるように選択される（既約および基本は当分野で知られる用語である）。剰余ビットのサブセットは、ハッシュ・テーブルへの実際のインデックスとして使用される。ビット５から０は、オンチップＬ１キャッシュ３９１に割り当てられるアドレスである。ビット１６から１は、オフチップＬ２ＲＡＭ４５中の６４Ｋ位置をアドレス指定するのに使用される。
【００７９】
この好ましい実施形態で使用する除数は、ｘ12＋ｘ7＋ｘ5＋ｘ3＋ｘ2＋ｘ＋１であるが、既約かつ基本であれば他の除数を使用してもよい。
【００８０】
着信フレームのＦｌｏｗ  Ｔａｇおよび／または宛先を識別するＨａｓｈ  Ｔａｂｌｅの内容の編成は以下の通りである。
Ｈａｓｈ  Ｔａｂｌｅ１はそれぞれ６４ビットである６４ワードを含み、チップ上に存在して、少数のフローだけがアクティブである共通のオカレンスにおける値のリターンを最適化する。これより大きなテーブルを使用することもできる。図２０Ａおよび図２０Ｂを見ると、各ワードで、ビット３１〜２４は、ビット３１が真であれば有効なエントリを示す状態を形成している。ビット０〜２３は２４ビットのＦｌｏｗ  Ｔａｇを形成し、ここには特定フローに関する情報が記憶される。このタグは、パケットの転送先である１つまたは複数の回路についての情報を指すポインタである。Ｆｌｏｗ  Ｔａｇを獲得することは、ＲＥの主要なタスクである。Ｈａｓｈ  Ｔａｂｌｅはビット６３〜３２に３２ビットのシグニチャも含み、これは衝突が発生しておらず、また結果が有効であることを保証するために使用される。Ｆｌｏｗ  Ｔａｇルック・アップの有効性をさらに確実にするために、あいまいでない識別を行えるように事前にハッシュしたヘッダ・データが記憶される。
【００８１】
Ｌ１Ｈａｓｈテーブルで一致がない場合、当システムは、ハッシュ済みの結果ビット１６〜０を使用して、６４Ｋ  Ｈａｓｈ  Ｔａｂｌｅ  Ｌ２にインデックスする。各位置は６４ビット幅になる。ビット３０はＨａｓｈ  Ｂｕｃｋｅｔポインタであり、このビットがゼロの場合は、Ｌ２テーブル中のビットをＬ１テーブルと同じように機能面から編成する。このＨａｓｈ  Ａｄｄｒｅｓｓに有効なエントリが１つある場合、当システムは、Ｌ２ビット０〜２３をフロー・テーブルへのインデックスとして、フロー・タグを入手する。図２０Ｂを参照されたい。このＨａｓｈ  Ａｄｄｒｅｓｓに有効エントリがない場合、有効ビットであるＬ２ビット３１をゼロにセットする。このハッシュ・アドレスに２つ以上のエントリがある場合は、状態ワード・ビット３０が１にセットされ、当システムは、Ｌ２ビット５５〜３６をＨａｓｈ  Ｂｕｃｋｅｔへのポインタにする。
【００８２】
Ｈａｓｈ  Ｂｕｃｋｅｔは６４ビット・ワードのエイリアス・アドレスを８つまで保持する。衝突ビット２９が１の場合、エイリアス状態はハッシュおよびシグニチャ両方の動作について存続し、また有用な情報を得ることができないので、ハッシュ機構はそれ以上の分解を行わない。この時点で、２つの競合フローはプロセッサに戻され、ルーティング情報を求めてトライ検索を行う。Ｈａｓｈ  Ｂｕｃｋｅｔ中の８ワードは連続して検索され、この検索を容易にするために、アドレスはテーブルへの最下位のインデックスから始まって連続している。９つ以上のエントリがＨａｓｈ  Ｂｕｃｋｅｔに向けられる場合、当システムは元に戻り、トライ・ルーチンによりオーバーフローを検索する。トライ検索はコプロセッサ３９０を使用し、ルーティングおよびブリッジング用の大規模トライデータベースとして編成されている。
【００８３】
シグニチャおよび／またはハッシュ衝突の発生は監視することができ、それが過度である場合は、各乗数を変更することができる。このように変更すると、その結果、ネットワーク中で遭遇する所与のアドレス・セットに対してより有効にランダム化を行うことができる。
【００８４】
ハッシングおよびシグニチャ・ルーチンの結果はある状況では使用することができない。ＴＣＰ  ＳＹＮまたはそれと同等の「接続の開始」パケットが到着するとき、あるいは接続フローに属さないパケットが見つかった場合、あるいはそのパケットが高セキュリティまたは他の特別モードの一部であるときなどに、接続が開始される時がその例である。このような状況が見つかると、当システムはトライ検索に戻ることができる。
【００８５】
一般に、フロー中の後続パケットの処理は、上記のようにソフトウェア・パターン・マッチングを最適化することによって加速される。
【００８６】
ＲＥは、アドレッシングとともに転送するのにどのキューにセルを置くべきかを指定する命令を含む情報を戻す。ＱＭは情報を受け取ってセルを配置するが、このセルは、送信するリスト上で、受信中であるかまたは受信されたパケットの内容を形成するリンクされたリストに記憶される。
【００８７】
７．送信スケジューリング
ＲＥはＱＭをプログラミングし、このＱＭは、種々の回路についての管理された優先順位により、１６，０００，０００送信キュー（２４ビット）までのＱＭ記述子ＳＲＡＭのリンクされたポインタによって仮想的に進展する。
【００８８】
送信段階のコアはＴｒａｎｓｍｉｔ  Ｃｏｎｔｅｘｔ  Ｔａｂｌｅであり、これは回路によって編成され、図３５に示すように各回路につき４つの４バイト・ワードがある。ワード０は、クレジットｓｙｎｃビット、送信クレジット用の７ビット８１２（回路に対してクレジットが存在しないと送信は行われない）、パケット・ビットのスタート・ビット８１４、および送信する次のバッファ（次のバッファＩＤ）を指定する２３ビットを含む。ワード１  ８１６は、８つのフラグ・ビット８１８を含む。図３５Ａは、これらのフラグ・ビットの意味を示している。ビット７はパケットがシングル・バッファであることを示し、ビット６は、通例はＣＲＣエラーによりパケットが不良であり、ＭＯＭがそのパケットを中止すべきであることを示し、ビット５はそのパケットがモニタ・キューからデキューされ、そのパケットはトラフィック分析のためにどこか他のポートかまたはバックグランウンド・エンジンにオフ・ロードできることを示し、ビット４はそのパケットが「複数所有」されており、２つ以上の回路に送信されうることを示し、ビット３〜０は、１６バイトのグループ中の１２８バイトまでのバイトのバッファ長を示している。ワード１の残りの２４ビットは、第１キューのアドレスを含んでいる（各回路は１、２、４、８、あるいは１６個の関連するキューを有することが可能である）。送信コンテキスト・テーブルのワード２  ８２０は、モニタ・キューが添付されていることを示す１ビット８２２、キュー・サービス・ポリシーを示す４ビット、および参照カウントを示す３ビットを含んでいる。図３５Ｂは、この４つのキュー・サービス・ポリシー・ビットの意味を示している。可能な指示は；１がキュー、２、４、８、あるいは１６が静的キュー；または２、４、あるいは８が重み付けラウンド・ロビン・キュー、；または２、４、８、および１６の２分の１が静的キュー、２分の１が重み付けラウンド・ロビン・キュー、などである。下記で述べるように、静的キューが最高の優先順位を有し、その次に重み付けラウンド・ロビン・キューが続く。ワード３はスタンバイ・スケジューラ・コントロール・ワードを含み、これは「次のｃｃｔＩＤ」「ペアレントｃｃｔＩＤ」（スタンバイ・スケジューラ回路にのみ使用される）、状態ビット（アクティブまたはアイドル）、およびスタンバイ・スケジューラ・インターバルを含む。
【００８９】
図３６に示すＱｕｅｕｅ  Ｔａｂｌｅは、Ｔｒａｎｓｍｉｔ  Ｃｏｎｔｅｘｔ
Ｔａｂｌｅと連携して働き、キューごとに４つの４バイト・ワードを含む。ワード０は、２バイトのスタンバイ回路ＩＤ（下記で説明する）、および２バイトのキュー・サマリー・ビット（１６のキュー番号ごとにのみ）を含む。ワード１は、キュー・サイズを示す２バイト、および２バイトのオーバーフロー・カウンタＩＤを含む。ワード２はスタンバイ・キューの数を示す５ビット・フィールドと、ヘッド・オブ・キュー・ポインタの２４ビットを含む。ワード３は、２４ビットのテール・オブ・キュー・ポインタを含む。
【００９０】
好ましい実施形態では、ヘッド・オブ・キュー・ポインタで始まるＳＯＰセルを最初のＳＯＰに（かつテール・ポインタを最後のＳＯＰに）リンクすることによってキューが形成され、パケットの新しいセルがパケットのセルに追加されることを思い出されたい。したがって、図３７を参照すると、リンクした記述子８６３で表すように、Ｑｕｅｕｅ  Ｔａｂｌｅ８５０のキュー１６には４つのＳＯＰがあり、キュー１７にはリンクした記述子８６４で表すように２つのＳＯＰがある。リンクした記述子８６２で表すような不完全なパケットはそれでもなお送信することができるが（「カットスルー」を許可することにより）、最後の記述子がそれに関連するバッファが空であることを示すと送信は回路上で停止し、それにより、回路上でパケット順序を保つという規則を維持する。
【００９１】
キュー・ポリシーは、データ・パケット送信の優先順位づけ、およびスケジューリングを可能にする。したがって、固定した静的優先順位下では、特定キューにあるパケットはすべて別のキューにあるパケットよりも先に送信される。重み付けラウンド・ロビン・キュー方式では、１つのキューにある特定数のパケットが送信され、次いで次のキューにある特定数のパケットが送信され、その後も同様である。これにより、低い優先順位クラスを「窮乏」させることなく、トラフィックのクラス（キュー）に相対的な優先順位を持たせることが可能になる。静的キューがサービスされる時に、静的キューが優先権を有する「ハーフ・アンド・ハーフ」方式が提供される。
【００９２】
使用中の回路についてのＳｃｈｅｄｕｌｅ  Ｔａｂｌｅは継続的に走査される。図３７に示すように、このテーブルは、Ｐｒｉｍａｒｙ  Ｓｃｈｅｄｕｌｅ  Ｔａｂｌｅ  Ａ８６５、Ｐｒｉｍａｒｙ  Ｓｃｈｅｄｕｌｅ  Ｔａｂｌｅ  Ｂ  ８６６、およびＳｅｃｏｎｄａｒｙ  Ｓｃｈｅｄｕｌｅ  Ｔａｂｌｅ  ８７０を備えるＰｒｉｍａｒｙ  Ｓｃｈｅｄｕｌｅ  Ｔａｂｌｅからなる。Ｐｒｉｍａｒｙ  Ｓｃｈｅｄｕｌｅ  Ｔａｂｌｅはオンチップに位置し、それぞれ６４のエントリを有する、２つの先に触れたサブテーブルからなる。Ｐｒｉｍａｒｙ  Ｓｃｈｅｄｕｌｅ  Ｔａｂｌｅ  Ａ中のスロットは、すべてのＳｃｈｅｄｕｌｅ  Ｔｉｍｅ時間が「時を刻む」たびに１回訪れられる。Ｐｒｉｍａｒｙ  Ｔａｂｌｅ
Ａエントリは、Ｐｒｉｍａｒｙ  Ｓｃｈｅｄｕｌｅ  Ｔａｂｌｅ  Ｂのエントリへの６ビット・インデックスを含む。図３７に示すように、Ｔａｂｌｅ  Ｂエントリはどれも、それをポイントするＴａｂｌｅ  Ａエントリを２つ以上有する。Ｐｒｉｍａｒｙ  Ｔａｂｌｅ  Ｂエントリは２次テーブルのサイズを含み、このサイズが「０」に等しくない場合は、２次テーブル８５７へのオフセットと、２次テーブル８６８の基底アドレスをも含む。サイズが「０」に等しい場合、残りのフィールドは、「Ｕｓｅ  Ｐａｒｅｎｔ  Ｃｉｒｃｕｉｔ」ビット  ８７１、Ｐａｒｅｎｔ  Ｃｉｒｃｕｉｔ  ＩＤ  ８７２、およびＣｉｒｃｕｉｔ  ＩＤ  ８７３になる。
【００９３】
セル送信イベントは、Ｃｉｒｃｕｉｔ  ＩＤを有するスケジュール・テーブル・エントリが見つかると起動される。適切なＣｉｒｃｕｉｔ  ＩＤをＳｃｈｅｄｕｌｅ  Ｔａｂｌｅに入力することにより、セル送信順序付けパターンが生成され、これは送信イベントの回路個々の比率に応じて回路に帯域幅を有効に割り当てる。
【００９４】
Ｓｃｈｅｄｕｌｅ  Ｔａｂｌｅの階層的性質は、広範囲の割合をプログラムすることを可能にする。これは、サブテーブルの３レベルまで「チェーニング」することによって行われる。Ｐｒｉｍａｒｙ  Ｔａｂｌｅ  Ｂエントリのサイズ・フィールドがゼロでない場合、このエントリは、オフチップに位置するＳｅｃｏｎｄａｒｙ  Ｔａｂｌｅへのポインタを含む。Ｓｅｃｏｎｄａｒｙ  Ｔａｂｌｅ
８７０は、エントリを２５５個まで有することが可能であり、このエントリはそれぞれＴｅｒｔｉａｒｙ  Ｔａｂｌｅをポイントするか、またはＣｉｒｃｕｉｔ  ＩＤを含むことができる。テーブル・チェーニングに遭遇すると、オフセット・フィールド８６７を使用して、低レベル・テーブルでどのエントリにアクセスすべきかを追跡する。このフィールドを訪れるたびに、テーブル・サイズを法としてオフセットが増分される。
【００９５】
Ｓｔａｎｄ−ｂｙ  Ｓｃｈｅｄｕｌｅｒ（ＳＢＳ）は、２次スケジューリング機構である。その名前が意味するように、Ｓｔａｎｄ−ｂｙ  Ｓｃｈｅｄｕｌｅｒは、スケジュール・テーブルから後回しにされた帯域幅についてのトラフィックをスケジュールする。スタンドバイ・トラフィックを伝送することができる２つのケースがある。すなわち、（１）伝送イベントが、回路に対してデータを伝送しなかった（クレジットの不足またはデータの不足）ケースと、（２）スケジュール・テーブル中にプログラムされるＣｉｒｃｕｉｔ  ＩＤがゼロであり、それによって帯域幅うちのある量がスタンドバイ・トラフィックに事前割り振りされるケースである。
【００９６】
ＳＢＳは、Ｃａｌｅｎｄａｒ  Ｑｕｅｕｅアルゴリズムのバージョン、本質的にはリンクされたリストの配列として実装されるスロットされたタイム・リングを使用する。配列の各要素は、異なるタイム・スロットに対応する。各タイム・スロットには、この時にセルを送信するようにスケジュールされる回路のリストが装着される。スロット・インデックスは時間と共に進む。人気のあるスロットが見つかったとき、そのスロットでのリストの先頭の回路についてのセルを伝送することができる。セルが特定の回路に対して伝送されるとき、その回路上の次のセルに対する適格時間が計算され、別のタイム・スロットにマップされる。
【００９７】
図３８を参照すると、Ｓｔａｎｄ  ｂｙ  Ｓｃｈｅｄｕｌｅｒ  Ｃａｌｅｎｄａｒ  Ｔａｂｌｅ  ８７８は、６４個のエントリからなるオンチップ・テーブルである。各エントリは、特定のスロットに装着される回路のリンクされたリストを記述するヘッド・インデックスおよびテール・インデックスを含む。リンクは、Ｔｒａｎｓｍｉｔ  Ｃｏｎｔｅｘｔ  Ｔａｂｌｅ  ８６０中のｗｏｒｄ  ３のＮｅｘｔ  ＣＣｔＩｄフィールド中に格納される。スロット・インデックス８７７は、ＱＭコア・クロックに対応する期間と共に進む。ＳＢＳの機会が生じたとき、伝送するための次の回路が、スロット・インデックスの現在値によって表される時点から前方にスキャンすることによって見つかる。送信するための次の回路は、次に人気のあるスロットに対するリストの先頭にある回路である。次の回路が見つかった後、その回路がリストから待機解除され、再スケジュールされる。
【００９８】
再スケジューリングは、回路を送信すべき次のスロットを計算することによって実行される。次のスロットの計算は、Ｔｒａｎｓｍｉｔ  Ｃｏｎｔｅｘｔ  Ｔａｂｌｅ中のＷｏｒｄ  ３のＳＢＳインターバル・フィールドに基づく。このフィールドは、回路についての連続する伝送イベントの間のカレンダー・テーブル・スロットの数を表す６ビットの数である。回路についての次のスロットは、テーブル・サイズを法として、現スロットとこのインターバルとの和である。ＳＢＳの正味の効果は、重み付けＷｅｉｇｈｔｅｄ  Ｆａｉｒ  Ｑｕｅｕｅｉｎｇアルゴリズムの近似である。所与の回路の重みは、そのＳＢＳインターバルの逆である。
【００９９】
Ｓｔａｎｄ−ｂｙ  Ｓｃｈｅｄｕｌｅｒの別の態様は、「アクティブ」な、すなわち送信するためのデータを有する回路のみに基づく動的帯域幅割振りを実行できることである。多くの回路をスタンドバイ帯域幅に対して可能にすることができる。しかし少数の回路のみが、どの時点でもアクティブである可能性が高い。スタンドバイ帯域幅をより効果的に使用するために、ＳＢＳは、スケジューラ中のアクティブな回路のみを保つ。ＳＢＳは、回路がアクティブになるか、またはアイドルになったときに、Ｑｕｅｕｅ  Ｔａｂｌｅを管理するプロセスからメッセージを受信する。アクティブからアイドルへの移行は、パケットが待機解除され、回路についてのすべてのキューが空になったときに行われる。アイドルからアクティブへの移行は、パケットがすべて空のキューを有する回路に対して待ち行列に入れられたときに行われる。
【０１００】
どんな回路もスケジュール・テーブルとＳＢＳの両方を同時に使用してスケジュールすることができる。これは、ＡＴＭ利用可能ビット・レート（「ＡＢＲ」）トラフィックに対して有用である。
【０１０１】
好ましい実施形態での「送信」は、パケット・ストリング（これは不完全である可能性がある）をそのキューからリンク解除し（「待機解除」）、それを（図３７に示す）Ｔｒａｎｓｍｉｔ  Ｃｏｎｔｅｘｔ  Ｔａｂｌｅ  ８６０の現バッファにリンクすることで開始する。次いでＴｒａｎｓｍｉｔ  Ｃｏｎｔｅｘｔ  Ｔａｂｌｅの回路エントリがポーリングされ、現バッファのバッファ・コンテントが（空でない場合に）対応する「回路」６３’に送信される。セル・データは、以下に説明する「ピンポン（ｐｉｎｇ−ｐｏｎｇ）」方式に従ってＲＡＭＢＵＳ  ＤＲＡＭから読み取られる。
【０１０２】
パケットが完全に伝送されたとき、そのバッファは自由バッファ・リストに返される。パケットの伝送の完了は、ｔｒａｎｓｍｉｔ  ｃｏｎｔｅｘｔ  ｔａｂｌｅの次のバッファがパケットの第１バッファに関連するデスクリプタ８８０に向けて送られるときに、図３９Ａのポインタ８８３を参照して、パケットの最後のバッファのデスクリプタ８８２の第２ワードによって示される。次いで自由バッファ・マネージャ（図示せず）は、ＳＯＰのデスクリプタ８８０の「所有者」フィールドを調べることによって、他の（マルチキャスティングなどに対する）「所有者」がいるかどうかをチェックし、図３９Ｂに示すように所有者がいない場合（値が１である場合。そうでない場合は減分する）、自由バッファ・マネージャは、デスクリプタ８９０の第２ワード中のバッファ・カウント８９１によって自由カウンタ８９０を増分する。自由バッファ・マネージャは、自由バッファ・リスト・ヘッド・ポインタを、自由バッファ・リストの先頭８９５から、デスクリプタ８８０が指すデスクリプタ、すなわち第２セルのバッファのデスクリプタ８８１に移動し、デスクリプタ８８０のデスクリプタ・フィールド中に自由バッファ・リスト８９６の前の先頭へのポインタを入力する。したがって図３９Ｂからわかるように、３つのバッファすべては自由バッファ・リストの先頭でリンクされる。
【０１０３】
８．伝送クレジット・ループ
好ましい実施形態では、多重クレジット・ループを使用することによって階層的フローおよび輻輳制御方式を提供する。伝送のためにセルを受諾するための８個の出力チャネルそれぞれについての、ＭＯＭチップの能力を示すクレジットのシステムが確立される。特定のチャネルについてのＭＯＭが、セルごとにパケットを送信し、各セルが送信されるとき、そのＭＯＭは、前述のクレジット・ビットを介して、別のセルをそのＭＯＭチップに送信できることを示す。図３１に示すように、セルを送信している時のＭＯＭは、クレジット・カウント７６０を増分し、ＱＭがセル７６２をＭＯＭに転送するときに、そのＱＭはクレジット・カウント７６４を減分する。前述のように、クレジットは、適切なＭＯＭチャネル・クレジットが保持されるように回路ＩＤを有する。この好ましい実施形態では、４つの伝送セルを格納することができる。ＭＯＭは、その中でパケットがセルから再組上げされるＦＩＦＯを有する。
【０１０４】
ＭＯＭチップからセルが伝送されるとき、ＱＭに送り返されるクレジットは、最大長セルについてのクレジットである。それはセル・モードでは１７オクトバイト、またはパケット・モードでは１６オクトバイトにすることができる（パケット・モードのときはＭＯＭがバースト・ヘッダを削除するからである）。しかしＱＭは、最大セル・サイズ未満を送信する可能性がある。図３２は、ＭＯＭチップに関連する各出力チャネルに対して重複するものであり、クレジットがＭＯＭチップ中で処理される機構を略図で示す。ヘッド・ポインタ７７０、テール・ポインタ７７２、仮想テール・ポインタ７７４、およびパケット・ポインタの開始７７６がある。この好ましい実施形態では、伝送ＦＩＦＯ中に５１２バイト・ロケーション、または４つの全１２８バイト・ロケーションがある。図３２では、６４個のスロットがあり、各スロット７７８は、象徴的に１オクトバイトを保持する（この実施形態では６４オクトバイトはＦＩＦＯの記憶容量５１２バイトに等しい）。
【０１０５】
初期設定時に、ＦＩＦＯは空であり、仮想テールは増分され、ＦＩＦＯロケーションを通って移動する。仮想テール・ポインタは、仮想テールがヘッド・ポインタに到達したか、またはヘッド・ポインタに到達することを試行するときに停止する。仮想テール・ポインタが増分するごとに単一クレジットがＭＯＭチップ中の送信クレジット・マネージャおよび受信クレジット・マネージャを介して送信される。これらのクレジットは、この回路についてのＱＭ中に蓄積される。ＭＯＭがこの回路へのセルを受信したとき、テール・ポインタ（このポインタは実際のセル長を表す実情報を指す）は増分される。ＱＭがセル全体未満を送信したとき、仮想テール・ポインタは補正される。ＭＯＭが実際にセルを伝送するとき、ヘッド・ポインタは増分される。ＭＯＭがセルを送信するとき、ヘッド・ポインタは、仮想テール・ポインタおよび実テール・ポインタから移動し、ＦＩＦＯ中のルームを空ける。最大セル未満を送信し、ＱＭによって補正された可能性がある仮想テール・ポインタが、ヘッド・ポインタを循環することなく伝送ＦＩＦＯ中の最大セル長を増分することができるとき、クレジットはＱＭ中に送信され、確立される。
【０１０６】
他の残りのポインタ、パケット・ポインタ７７６の開始は、１つの重要な機能を有する。その機能は、パケットの開始の開始ロケーションを保持し、その結果イーサネット・ケーブル上でコリジョンがある場合に衝突したパケットを公開された明細書に従って再伝送することができることである。
【０１０７】
図２に関して、仮想テール・ポインタは、伝送クレジット・マネージャによって制御され、実テール・ポインタは、伝送ＦＩＦＯ「プロデューサ」によって制御され、「コンシューマ」は、パケット・ポインタのヘッダおよび開始を制御する。すべてのポインタは、比較およびクレジットの発行のために、すべての伝送クレジット・マネージャにとってアクセス可能である。
【０１０８】
図３３に、どのようにＭＯＭ  ＦＩＦＯ、２ポート、６４オクトバイト・メモリが制御されるかを示す。アービタ７８０は、ＱＭからロードされたセルを追跡するために、「プロデューサ」側からのＦＩＦＯの最も顕著な３つのアドレス・ビットを制御し、５１２のロケーションをアドレス指定するために必要な全９ビットの下側の６ビットは、テール・ポインタ７８２（８つのうちの１つを示す）によって制御される。仮想テール・ポインタ７８４は実データを指さない。カウンタ機構によって、クレジット・マネージャは、ＱＭに送信するクレジット数を決定することができる。別のアービタ７８６およびヘッド・ポインタ（８つのうちの１つを示す）は、パケットがＭＯＭチップによって物理的に送信されるときにＦＩＦＯをアンローディングすること、ＦＩＦＯを空けることを制御する。ヘッド・ポインタ７８８は、ＦＩＦＯのアンローディング側からＦＩＦＯの下側の６ビットを制御する。コンシューマは、データが送信されたときにヘッド・ポインタを増分する。ヘッド・ポインタのヘッド、テール、および開始は、伝送クレジット回路が利用可能である。
【０１０９】
図２６を参照すると、イニシアル・カノニカル・ヘッダの第１オクトバイトの部分７４２が、かつ、図２７を参照すると、バースト・ヘッダが、２つのクレジット・フラグ、「シンク」フラグおよび「親」フラグを含む。シンク・フラグは、電源投入時に、前述のクレジット・サイクル・オペレーションを適切に確立するために使用される。電源投入時に、ＭＯＭは、１０ミリ秒ごとにシンク・フラグをＱＭに送信する。ＱＭが電源投入されたとき、ＱＭは、シンク・フラグを探し、ＱＭを見つけたとき、シンク確認をＭＯＭに送信する。次いでＭＯＭは、前述の何らかのクレジットをＱＭがクレジットを受諾す準備ができていることの保証と共に送信する。
【０１１０】
ペアレント・フラッグは、ＭＯＭチップのチャネルにマルチプレックスされた物理的通信パスが複数あるので、必要となる。ＭＯＭチャネルに接続されている通信回路が１つだけで、ＭＯＭがＥｔｈｅｒｎｅｔに接続されているとき、クレジット・システムは、上記のように働くが、ＭＯＭチャネルへの多数の別々のパスにより１つのＭＯＭチャネルに接続されたパスのそれぞれに対してクレジットを維持する方法が設計される。このクレジット・システムの重要な態様は、１つのＭＯＭチャネルに接続された複数の通信パスのどれをとっても該複数通信パス中の他のパスによってブロックまたはロックアウトされる可能性のないことを保証する必要があることである。この実施形態で、図３４にＭＯＭチップ内の２つのＦＩＦＯチャネルを示す。ＦＩＦＯ  ８００は単一の通信パスで動作する。この場合、ＭＯＭ  ＦＩＦＯ  ８００は、単一の通信回路によるその動作を示すリーフである。ＦＩＦＯ  ８０２は、ＦＩＦＯチャネルに関連付けられ、これは、他のチップ、たとえば、本好適な実施形態のＤＡＤチップ８０４に接続されており、ただし、ＤＡＤはさらに他の８個の通信回路８０４にさらに接続されている。この場合、ＦＩＦＯ８０２は、「ペアレント」と称され、ＤＡＤに接続された該８個の通信回路はリーフである。この回路では、ＱＭは、ＭＯＭ内のペアレントＦＩＦＯに接続された個々のリーフに対するクレジットを維持する。このようにして、ＱＭは、送信ＦＩＦＯが満たされ、さらなるセルを受入れ不可能になる時を知ることになる。続いて、ＱＭは、ペアレントおよびリーフ内のクレジットを単にポーリングすることによって、他のリーフにセルを転送し、結果的にセルを送信することになる。このやり方では、１つのリーフが他のリーフのサービスを阻止することはできない。
【０１１１】
図３８を参照すると、ＱＭ内のＳｃｈｅｄｕｌｅ  Ｔａｂｌｅ  ８６６には、特定の回路に関連するペアレントがあるかどうかの指示８７１がある。ペアレントとして作用するＭＯＭは、ペアレントＦＩＦＯ、および該ペアレントに関連するリーフのそれぞれに対するクレジットを送る。
【０１１２】
Ｐａｒｅｎｔ  Ｃｒｅｄｉｔ  Ｔａｂｌｅ  ８７５は、ＱＭ内の６４エントリ・オンチップ・テーブルである。各エントリは、「ペアレント回路」として扱われているものに対するクレジット・カウントを含んでいる。回路がペアレント回路に結合されているとき、それは、そのＴｒａｍｓｍｉｔ  Ｃｏｎｔｅｘｔ  Ｔａｂｌｅクレジット・フィールドと、Ｐａｒｅｎｔ  Ｃｒｅｄｉｔ  Ｔａｂｌｅ内にあるそのペアレント・クレジット・フィールドとの両方で使用可能なクレジットを有する場合にＭＡＣバスに対してセルを送信するだけである。
【０１１３】
セルが、ペアレントを備えた回路に送信されたとき、Ｔｒａｎｓｍｉｔ  Ｃｏｎｔｅｘｔ  Ｔａｂｌｅクレジットおよび関連するクレジットが減分される。ペアレント・チャネルからのペアレント・クレジット更新セルは、ＱＭに送り返され、これによってペアレント・クレジットを増分させる。
【０１１４】
スケジュール・テーブルは、回路を所与のペアレント回路に結合させるために使用する。Ｕｓｅ  Ｐａｒｅｎｔ  Ｃｉｒｃｕｉｔ  ＩＤ  フィールド８７２は、この目的に使用する。スケジュール・テーブル・エントリがＰビットのセットを有する場合、これは、回路がペアレントを有し、Ｐａｒｅｎｔ  Ｃｒｅｄｉｔ
Ｔａｂｌｅ  ８７５をインデックス付けするためにＰａｒｅｎｔ  Ｃｉｒｃｕｉｔ  ＩＤ  ８７２を用いるべきことを意味する。
【０１１５】
９．ＲＡＭＢＵＳ（登録商標）上の超高速アクセス
ＲＡＭＢＵＳ（登録商標）  ＤＲＡＭ  ３５および３６は、オフ・ザ・シェルフ（ｏｆｆ−ｔｈｅ−ｓｈｅｌｆ）の品目である。本発明では、それらは、このデート通信用途に対し読取りおよび書込み帯域幅を最大限高める固有の方式で使用される。
【０１１６】
本発明は、ＲＡＭＢＵＳ（登録商標）に対するインターフェース３０８を提供し、これは、ＲＭＢＵＳ（登録商標）メモリの有効帯域幅を増やすために、デュアル・バンク・オーガニゼーション（ｄｕａｌ  ｂａｎｋ  ｏｒｇａｎｉｚａｔｉｏｎ）を使用する。Ｄｕａｌ  ＦＩＦＯスタックはコントロ−ラとともに使用されて、ＲＡＭＢＵＳ（登録商標）内の別々のＤＲＡＭバンクを交互にアドレス指定する。ＦＩＦＯにより待ち時間が増え、ＲＡＭＢＵＳ（登録商標）を制御する電子機器のハードウェア・オーバヘッドが増えることになるが、書込みまたは読取りが行われた一連のデータを保証する試みが代替バンクから来る。この方式では、一方のバンクがプレチャージし、その間他方のバンクがアクセスされることになり、次いで該他方のバンクがプレチャジし、その間第１バンクがアクセスされることになる。
【０１１７】
図４０を参照すると、ＲＡＭＢＵＳ  ９００がブロック形式で示されており、これの中に、フェーズロック・ループ、ＰＬＬ、および２つのダイナミックＲＡＭバンク、ＤＲＡＭ  １および２が示されている（それぞれ３６、３７）。ＲＡＭＢＵＳ（登録商標）に入る、またはそこから出るマルチプレックスされたデータ／アドレス・バスは、付属のクロックを備えた基本的に８ビット幅のシリアル・ポートである。
【０１１８】
ＤＡＲＡＭ  ３５および３６内のデータ・バッファの編成は、（１２８バイト）の偶数データ・バッファすべてが一方のバンク上にあり、奇数のデータ・バッファすべてが他方のバンク上にあるようになっている。アービタ９０２は、データに関する様々なリクエストがＦＩＦＯスタック９０４および９０６に対してロードされる順番を決定する。リクエスト内のバッファ・アドレスは、偶数または奇数であり、偶数バッファを有するリクエストはＦＩＦＯ  ９０４にロードされ、奇数バッファを有するものはＦＩＦＯ  ９０６にロードされる。
【０１１９】
ＦＩＦＯは空である条件では、リクエストは偶数または奇数のＦＩＦＯにロードされ、インターリーバ９０８はそのリクエストをコントローラ９１０に送る。リクエストは多数であるため、ＦＩＦＯのリクエストがバックアップする。リクエストが両方のＦＩＦＯにバックアップしたら、インターリーバー９０８はＦＩＦＯとその他から交互にリクエストを受け取る（“ピンポン操作”）。これらバッファアドレスは交互に偶数と奇数になるので、コントローラはＲＵＮＢＵＳ（登録商標）の２つの異なるバンクに交互またはインターリーブ的にアクセスする。この操作で、第１バンクは第２バンクがプレチャージされているときにアクセスされ、次のアクセスで第２バンクは第１バンクがプレチャージされているときにアクセスされる。
【０１２０】
この交互アクセスは実質的にＲＵＮＢＵＳ（登録商標）のライティングまたはリーディングのための最速アクセスを提供し、両方のＦＩＦＯスタックにリクエストが存在するかぎりＲＵＮＢＵＳ（登録商標）メモリのスループットを最大化する。一方、純粋にＦＩＦＯベースに存在するリクエストはバックツーバック偶数またはバックツーバック奇数リクエストで分数を有するであろう。それでタイムアウトの分数はプレチャージされる。
【０１２１】
特定のリクエストに関する待ち時間は通常の方法で発生する。この方法は高トラフィック条件でＲＵＮＢＵＳ（登録商標）の最大利用を保証する。
【０１２２】
１０．バックグラウンドエンジン/イニシャリゼーション
本願発明の重要部分は、モニターと他の重要決定時のＭＯＭポートでインターフェースされるＢＥの使用である。これでＢｌａｚｅＷａｔｃｈ（商標）とラーンアンドロック安全システムにコンフィギュレーションとコントロール機能にアクセスさせる。
【０１２３】
図１において、ブーツ  フラッシュＲＯＭ５１はシステムのイニシャリゼーションとスタートアップのためにＢＥ５０にアクセスできるように提供される。ブーツＲＯＭインストラクションはパワーアップまたは完全システムリセットが存在するときにランする。ブーツはＢＥ  ＤＲＡＭ５３のセクションに操作性があり、信頼できることをテストして確認する。このセクションはＩＳＢコードとＢｌａｚｅｎｅｔ  Ｒｕｎｔｉｍｅ  ｋｅｒｎｅｌが存在するところである。ＲＯＭ５１の最初の１Ｆ（１６進数）または３２（１０進数）アドレスは当初の妨害ベクトルをホールドする。アドレス２０−７ＦはＲＯＭ情報をホールドし、７０−８Ｆはコンソールサポートインターフェースルーチンをホールドし、１００−４ＦＦはＭＯＭアトリビュートテーブルをホールドし、１ＦＦＦＣ−１ＦＦＦＦはブーツイメージをホールドし、５００−１ＦＦＦＢはシクリックリダンダンシーチェック（ＣＲＣ）のブーツイメージチェックサムをホールドする。この実施例では、残りのＢＥ  ＤＲＡＭ５３はＢｅＲＴイニシャリゼーションプロセスと平行にテストされるであろう。
【０１２４】
ブーツはまた、ＢＡＲＫ（バックグラウンドエンジンカーネル）に、例えば、タイマーからインテラプトを受け取らせるようにインテラプト構造とオペレーションをテストする。次に、ブーツはＩ２Ｃバス６２をイニシャライズし、Ｉ２Ｃバスに取り付けられたチップにアドレスをアサインする。ブーツは次にバスのチップのＩＤを決定する。ブーツは発見されたチップのＩＤを調べ、イニシャライザーは実行のためにダウンロードされたブーツディレクトリ内に発見される。
【０１２５】
メインなシステムイメージは、例えば１０メガバイトのシステムソフトウエアを含んだコンパクトフラッシュカードの不揮発性ストレージ５２に存在する。ベーシック情報はＩ２ＣバスでＲＥ４０とＭＯＭ１０及び２０に移される。完全イメージはＤＭＡチャンネルで移される。
【０１２６】
以上の説明は出願時の本願発明の好適実施例である。均等な部材と機能で置き換えが可能である。ハードとソフトの多彩な混合適用が可能である。本願発明は非常にフレキシブルであり、スケール調整可能である。
【０１２７】
１１．バルクトランスファーのスケジュール
アプリケーションの形態によってはバルクデータを、例えば、ｅ−メールで添付資料を付けて送ることができる。バルクデータトランスファーアプリケーションからのパケットは出て行く回路（リンク）をコンジェストすることができよう。バルクデータトランスファにより引き起こされるコンジェスチオン問題に対処する保証されたプライオリティの高品質サービスが提供される。
【０１２８】
図４１は本願発明の本実施例に使用されるＩＰ（インターネットプロトコール）パケット１０００の図である。ＩＰパケット１０００は複数のインフォメーションフィールドを有している。バージョンナンバーとヘッダレングスフィールド１００５はパケットが属するＩＰプロトコールのバージョンとパケットヘッダの長さを３２ビットワードでホールドする。サービスフィールド１０１０のタイプはホストにインターネット装置（すなわち、スイッチまたはルータ）に対してどの種類のサービスが必要かを告げる。データレングスフィールド１０１５はトランスミッションのデータバイト数をホールドする。データバイトカウントはフローがバルクトランスファーであるかどうかの決定をする。アイデンティファイヤーフィールド１０２０はどのパケットに新規に到着したフラグメントが属するかを決定するのにデスティネーションホストによって必要とされる。データパケットの全フラグメントは同一の識別値を有している。フラグメンテーションフィールド１０２５はさらに多くのフラグメント情報を与える。これには現行のフラグメントが属する現行データパケットのオフセットを含んでいる。ライブフィールド１０３０への時間はパケットライフタイムを限定するのに使用されるカウンターである。プロトコールフィールド１０３５はトランスポートインフォメーションをホールドする。ヘッダチェックサムフィールド１０４０はヘッダベリフィケーションのためにのみ有効である。ソースＩＰアドレス１０４５と宛先ＩＰアドレス０５０はソースと宛先アドレス情報を供給する。ＩＰオプションフィールド１０５５はユーザに情報を加えさせる。トランスポートヘッダとデータフィールド１０６０はＴＣＰまたはＵＤＰパケットをホールドする。図４２はｅ−メールとファイルトランスファーのごときバルクデータのトランザクションに典型的であるＴＣＰ（トランスミッションコントロールプロトコール）パケット１０８０のプログラムである。ＴＣＰは２つのホストにコネクションとデータの交換ストリームを確立させる。ＴＣＰはさらにデータの搬送を保証し、データパケットが送られたときと同じ順序で搬送されることを保証する。
【０１２９】
図４を解説する。ＲＥ（リレーエンジン；中継エンジン。また転送エンジンともいう）４０のブロック図が提供されている。ＲＥ４０の主要な機能はＱＭ（キューマネージャ）３０インターフェース７４で受領されたキャノニカナイズされたパケットヘッダを検査し、パケットが知られたフローに属するかどうかを迅速に決定し、適当なスケジュール処理のためにインターフェース７５でインストラクションを提供することである。ＦＥコードとデータＤＲＡＭ４２の特殊なハンドラー１０８５はフローのパケットが到着するときにデータバイトの蓄積データバイトカウントをホールドする。ＤＲＡＭ４２はフローがバルクデータトランスファーであるかどうかを決定するためにデータバイトカウントが比較されるしきい値１０８７をもホールドする。
【０１３０】
フロー決定は、知られたフローがデータのバルクトランスファーであるかどうかの決定を行うことを含んでいる。ＲＥ４０はそれぞれのフローのための蓄積データバイトカウントを所定のしきい値と比較する。もしデータバイトカウントがしきい値以上であればフローはバルクトランスファーであり、ＲＥ４０はＱＭ３０にサービス品質を低下させ、さらに時間が重要なデータにスケジュールサービスを継続的に受領させる。もしデータバイトカウントがしきい値以下であれば、フローには非バルクトランスファー品質のサービスが提供される。
【０１３１】
層２/層３情報は所定のパケット用の出て行く回路（リンク）の発見に使用される。本願発明の本実施例ではシステムの全ての回路は１６キューでセットアップされている。別実施例では別数のキューが関与する。１６キューのどれがパケットを配置するかの決定はさらに高い層の情報（層４−７）に基く。
【０１３２】
図５を説明する。レシーブＦＩＦＯのデータセルはメインシステムパケットメモリＤＲＡＭ３５，３６に配置され、ＳＯＰの基準ヘッダはＦＩＦＯ３９４でリレーエンジン４０に送り出される。そこでＦａｓｔＰａｔｈ（商標）プロセスが実施され、フロー、プライオリティ及びポートキュー３３２、３３３ごとにパケットの適当なキュー処理を可能にし、ＭＯＭトランスミットポート２４’に送る。各受領されたパケットのデータバイトカウントはデータバイトカウントバッファのそれぞれの識別フロー用に保存される。パケットは特定のフローの一部として識別されるので、バッファー内のカウントは漸増する。
【０１３３】
図４３は転送エンジン（ＦＥ）コードとデータＤＲＡＭ４５（図１）に配置されたフローインフォメーションデータストラクチャー１１００，１１０２と、アプリケーションポリシーレコード１１１０の一部の図である。各フローは２つのインフォメーションデータストラクチャー１１００，１１０２を有している。第１フローインフォメーションデータストラクチャー１１００はクライエントからサーバーへのフロー方向のためである。第２フローインフォメーションデータストラクチャー１１０２はサーバーからクライエントへのフロー方向のためである。
【０１３４】
フローインフォメーションデータストラクチャー１１００，１１０２は複数のフィールドを有している。プレハッシュデータフィールド１１１５はハッシュ処理が行われる前にデータパケットから引き出された情報をホールドする。引き出されたデータはフロー識別プロセスに使用されるものである。フローハンドラーフィールド１１２０は所定タイプのフローに必要な追加プロセスを完成させるソフトウェアルーチンへのポインターである。フローキューインストラクションフィールド１１２５は特定のキューにフローを配置するためのインストラクションを含み、特定のキューの数はフローキューナンバーフィールド１１３０に保存される。フローバイトとパケットカウンターフィールド１１３５はフロー用のバイトとパケットカウントをホールドする。リバースフローデータフィールド１１３７は２つのフローインフォメーションデータストラクチャー１１００，１１０２をリンクさせる。クライエント/サーバーフローインフォメーションデータストラクチャー１１００のリバースフローデータフィールドはサーバー/クライエントインフォメーションデータストラクチャー１１０２へのポインターを有している。その逆もある。フローポリシーデータフィールド１１４０はアプリケーションポリシーレコード１１１０へポイントするポインターをホールドする。本実施例においては、両方のフローインフォメーションデータストラクチャーのフローポリシーデータフィールド１１４０は同じポリシーレコードにポイントするが、それらはそれぞれ異なるものにポイントさせることもできる。フローメインテナンスデータフィールド１１４５は、データストラクチャーをスイッチ内で整合させるソフトウェアオーバーヘッドを含んでいる。
【０１３５】
アプリケーションポリシーレコード１１１０はスイッチを通過する各タイプのフローのハンドリングデータとパラメータをホールドする。図４２に示すアプリケーションポリシーレコードの部分は３フィールド、すなわち、しきい値フィールド１１５０、スタートプライオリティフィールド１１５０、エンドプライオリティフィールド１１６０を有している。それらはバルクフローとサービス品質の決定に利用される。もしデータバイトカウントがしきい値を超えるとフローはバルクデータトランスファーである。スタートプライオリティフィールド１１５５はバルクトランスファーの決定が行われる前にフローの開始で特定のフローに提供されるプライオリティを保存する。エンドプライオリティフィールド１１６０はバルクトランスファー決定が行われた後に特定のフローに提供されたプライオリティを保存する。これら３つのフィールドは特定タイプのフローのための受領されるサービス品質のポリシーパラメータをホールドする。
【０１３６】
図４４はバルクトランスファー品質のサービスをスケジュールする方法のフロー図である。第１パケットはスイッチ到着する；ブロック１２００。フォーワードエンジン４０は当初のパケットが属するフローのタイプを決定する；ブロック１２１０。変化するプライオリティサービスを得るフローが８つのプライオリティキューの１つに指定される。フォーワードエンジンは特定された当初のプライオリティレベルの特定フローのポリシーレコードをコンサルトする；ブロック１２１５。フローはポリシーレコード１１１０のスタートプライオリティフィールド１１５５で特定された特定フローに指定される。フォーワードエンジンコードとデータＤＲＡＭ４２の特殊ハンドラー１０８５はその特定フローから受領したバイト数をカウントし始める；ブロック１２２０。このカウントはフローインフォメーションデータストラクチャー１１００のフローバイトとパケットカウントフィールド１１３５に保存される。このデータバイトカウント値はしきい値と比較される；決定ブロック１２３０。もしデータバイトカウントがしきい値を超えなければ、データパケットはフローのスタートでセットされたプライオリティで処理を継続する。しかし、もしデータバイトカウントがしきい値よりも大きければ、データフローは低いプライオリティキューに再指定され、フローの残りのデータパケットはポリシーレコードのエンドプライオリティフィールドで特定されたキューで処理される。フローは特殊ハンドラーから通常ハンドラーへ移動される。バルクデータトランスファーフローの残りのパケットは低いプライオリティキューで処理される；ブロック１２４０。これで、同じ回路に進む他のアピリケーションフロー及びバイトしきい値を冒さない同じアプリケーションの他のフローによって必要とされるバンド幅が開かれる。
【０１３７】
本願発明を実施例を利用して解説した。これら実施例には本願発明のスコープ内で改良及び変更が可能である。