(57)【特許請求の範囲】
【請求項１】
内部関数バスを持つ高速パターンプロセッサと共に用いる外部デバイス伝送システムであって、
複数の引数署名レジスタを維持するように構成されたコンテクストメモリサブシステムであって、前記複数の引数署名レジスタの各々が一つの対応するコンテクストと関連づけられるとともに、一つの対応する引数を含むようなコンテクストメモリサブシステムと、
前記複数の引数署名レジスタのうちの１つのレジスタからの引数を動的に修正し、当該修正された引数と関連づけられるコンテクストの関数として、送信コマンドを生成するように構成されたパターン処理エンジンと、
前記送信コマンドを受信し、およびこの送信コマンドに基づいて、前記修正された引数を外部デバイスに対して送信するように構成された出力インタフェースサブシステムと、を備えることを特徴とする外部デバイス伝送システム。
【請求項２】
前記修正された引数が、
外部デバイスコマンド、
ルーティングパラメータ、および
プロトコルデータユニットの分類、から成る一群から選択されたデータを含む請求項１記載の外部デバイス伝送システム。
【請求項３】
前記出力インタフェースサブシステムが、さらにプロトコルデータユニットの一部分と前記修正された引数を前記外部デバイスに送信するように構成される請求項１記載の外部デバイス伝送システム。
【請求項４】
前記パターン処理エンジンが、さらに前記修正された引数をプロトコルデータユニットの内容に基づいて動的に修正するように構成される請求項１記載の外部デバイス伝送システム。
【請求項５】
内部関数バスを持つ高速パターンプロセッサと共に用いる、コマンドを外部デバイスに送信するための方法であって、
複数の引数署名レジスタを維持するステップであって、この複数の引数署名レジスタの各々が一つの対応するコンテクストと関連づけられるとともに、一つの対応する引数を含むステップと、
送信コマンドを送信すべきかどうかを決定して、送信コマンドが生成される場合に、前記複数の引数署名レジスタのうちの１つのレジスタからの引数を動的に修正するステップと、
前記修正された引数と関連づけられるコンテクストの関数として、前記送信コマンドを生成するステップと、
前記送信コマンドに基づいて、前記修正された引数を外部デバイスに対して送信するステップと、を含むことを特徴とする方法。
【請求項６】
前記修正された引数が、
外部デバイスコマンド、
ルーティングパラメータ、および
プロトコルデータユニットの分類、から成る一群から選択されたデータを含む請求項５記載の方法。
【請求項７】
前記送信するステップが、さらに、プロトコルデータユニットの一部分と前記修正された引数を前記外部デバイスに送信する処理を含む請求項５記載の方法。
【請求項８】
高速パターンプロセッサであって、
内部関数バスと、
外部デバイス伝送システムとを含み、この外部デバイス伝送システムが、
複数の引数署名レジスタを維持するコンテクストメモリサブシステムであって、前記複数の引数署名レジスタの各々が一つの対応するコンテクストと関連づけられるとともに、一つの対応する引数を含むコンテクストメモリサブシステムであって、前記対応するコンテクストの各々がコンテクスト番号により識別され、および各引数署名レジスタが前記コンテクスト番号を用いてアクセスされるようになっているコンテクストメモリサブシステムと、
前記複数の引数署名レジスタのうちの１つのレジスタ内の引数を動的に修正し、この修正された引数と関連づけられるコンテクストの関数として、送信コマンドを生成するパターン処理エンジンと、
前記パターン処理エンジンから前記内部関数バスを介して前記送信コマンドを受信し、この送信コマンドに基づいて、前記修正された引数を外部デバイスに対して送信する出力インタフェースサブシステムと、
構成情報を、前記コンテクストメモリサブシステムの、前記対応するコンテクストと関連づけられる部分内に格納するデータバッファコントローラと、を備えることを特徴とする高速パターンプロセッサ。
【請求項９】
前記修正された引数が、
外部デバイスコマンド、
ルーティングパラメータ、および
プロトコルデータユニットの分類、から成る一群から選択されたデータを含む請求項８記載の高速パターンプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般的には、通信システム、より詳細には、外部デバイス伝送システム、外部デバイスにコマンドを伝送するための方法、および上述のシステムおよび方法を採用する高速パターンプロセッサに関する。
【０００２】
【従来の技術】
通信網は、今日、リアルタイム情報を多様な位置に配信することに対する需要の増加によってもたらされた革命の最中にある。多くの状況において、多量のデータを、地理的境界を越えて、より高速かつ高精度に伝送する能力が要求される。ただし、今日では、ますます大きなサイズのますます複雑なデータが伝送されるようになっており、要求される速度および精度を維持することはますます困難になっている。
【０００３】
初期の通信網は、階層星型トポロジーに似た形態に構成された。遠隔サイトからのアクセスは全てメインフレームコンピュータが配備される中央位置にチャネルバックされた。このため、ある遠隔サイトから別の遠隔サイトへの、あるいはある遠隔サイトから中央位置へのデータ伝送は全て中央位置にて処理することを要求された。このアーキテクチャは、極端にプロセッサ集中的(ｐｒｏｃｅｓｓｏｒ−ｉｎｔｅｎｓｉｖｅ)であり、各伝送に対してより高い帯域幅の利用が強いられる。このことは、１９８０年第の中期から後期頃までは、比較的少数の遠隔サイトしか中央位置に結合されてなかったためにそれほど重大な問題とはならなかった。加えて、多くの遠隔サイトは、中央位置と近接した配置されていた。
ただし、今日では、数十万もの遠隔サイトが様々な大陸間(ａｓｓｏｒｔｅｄ  ｃｏｎｔｉｎｅｎｔｓ)を横断して様々な場所に位置する。このため、過去の伝統的な網では、今日の市場において要求される速度および精度にてデータを伝送することは不可能となっている。
【０００４】
このような爆発的な需要に答えて、分散処理を用いてデータを網を通じて伝送する方式が採用されることとなり、これによって多数の情報をパケットとして複数の地理的境界を越えて正確かつ迅速に分配することが可能となった。今日、多くの通信サイトは、多くの他のサイトと、それらの位置と関係なく、通信する知能（インテリジェント）と能力を持つ。これは、典型的には、中央化されたトポロジーではなく、ピアレベルにて達成され、中央サイトの所のホストコンピュータは、もっぱら、どのようなトランザクションが行なわれているかを監視したり、データベースを維持し、これから管理レポートを生成したり、運用上の問題に当たったりすることにとどまる。
【０００５】
今日の分散処理においては、中央サイトは、過去の多くのプロセッサ集中的なデータ転送要件から解放される。データの転送は、典型的には、データ網を用いて達成され、データ網はルータの集合から成る。これらルータは、遠隔サイト間で情報およびデータファイルを知能的にやりとりする能力を持つ。ただし、今日の情報およびデータファイルのルーティングに対する需要並びにこれに対して要求される複雑さの増加のために、現存のルータの能力も直ぐに限界に達した。新たなタイプのプロセッサおよびデバイスを採用することで、幾らかの効率は得られている。ただし、これらプロセッサおよびデバイスは、しばしば、特殊な処理構造を要求し、このため、これらを収容するためにはシステムの再設計が必要となる。
【０００６】
【発明が解決しようとする課題】
より具体的には、システム内で遂行される基本動作は、関数コマンド(ｆｕｎｃｔｉｏｎ  ｃｏｍｍａｎｄｓ)によって決定される。従って、セットの関数コマンドの決定は、 通常、システム設計において重要なパラメータとなる。これは、各コマンドは、典型的には、制御レジスタ内に硬直に定義されたフィールドを持つためである。これら関数フィールド(ｆｕｎｃｔｉｏｎ  ｆｉｅｌｄｓ)の定義によってシステムに対するハードウエア設計が規定され、従って、これら関数フィールドが変更は、必然的にシステムハードウエアの変更を伴うが、これは通常は現実的でない。加えて、固定の関数フィールド(ｆｉｘｅｄ  ｆｕｎｃｔｉｏｎ  ｆｉｅｌｄｓ)の場合、システムによって収容できる外部デバイスの範囲も制限される。このことは、これら様々な外部デバイスの特性が異なる場合は特にそうである。
【０００７】
従って、当分野においては、通信システム内に採用される異なるデバイス間での関数(ｆｕｎｃｔｉｏｎ)の使用を促進し、従来の技術の欠点を克服することができるやり方に対する必要性が存在する。
【０００８】
【課題を解決するための手段】
従来の技術の上述の欠陥を克服するために、本発明は、内部関数バスを持つ高速パターンプロセッサと共に用いる外部デバイス伝送システム、外部デバイス伝送システムにコマンドを送信するための方法、およびこのシステムおよび方法を採用する高速パターンプロセッサを提供する。一つの実施例においては、外部デバイス伝送システムは、複数の引数署名レジスタを維持するコンテクストメモリサブシステムを含み、これら複数の引数署名レジスタの各々は、一つの対応するコンテクストと関連し、一つの対応する引数を含む。外部デバイス伝送システムはさらに、引数を動的に修正し、こうして修正された引数と関連するコンテクストの関数として、送信コマンドを生成するパターン処理エンジンを備える。外部デバイス伝送システムはさらに、この送信コマンドを受信し、この送信コマンドに基づいて、修正された引数を外部デバイスに送信する出力インタフェースサブシステムを備える。
【０００９】
もう一つの実施例においては、本発明はコマンドを外部デバイスに伝送するための方法を提供する。一つの実施例においては、この方法は、複数の引数署名レジスタを維持するステップを含み、この複数の引数署名レジスタの各々は一つの対応するコンテクストと関連し、一つの対応する引数を含む。この方法はさらに、引数を動的に修正するステップ、修正された引数と関連するコンテクストの関数として、送信コマンドを生成するステップ、および送信コマンドに基づいて修正された引数を外部デバイスに送信するステップを含む。
【００１０】
もう一つの実施例においては、本発明は、高速パターンプロセッサを提供する。この高速パターンプロセッサは、一つの実施例においては、内部関数バス、外部デバイス伝送システムおよびデータバッファコントローラを備える。外部デバイス伝送システムは、複数の引数署名レジスタを維持するコンテクストメモリサブシステムを含み、これら複数の引数署名レジスタの各々は、一つの対応するコンテクストと関連し、一つの対応する引数を含む。外部デバイス伝送システムはさらに、引数を動的に修正し、こうして修正された引数と関連するコンテクストの関数として、送信コマンドを生成するパターン処理エンジンを備える。外部デバイス伝送システムはさらに、この送信コマンドを受信し、この送信コマンドに基づいて、修正された引数を外部デバイスに送信する出力インタフェースサブシステムを備える。データバッファコントローラは、構成情報をコンテクストメモリサブシステムの対応するコンテクストと関連する部分に格納する。
【００１１】
上では、本発明の好ましい実施例（特徴）および代替実施例（特徴）について当業者が本発明の以下の詳細をより良く理解できるようにやや広く概説した。以下では、本発明のクレームの主題を構成する本発明の追加の実施例（特徴）についても説明される。当業者においては理解できるように、ここに開示される概念および特定の実施例を用いて、本発明の同一の目的を遂行する他の構造を設計あるいはこれらを他の構造に修正することもできる。当業者においては理解できるように、このような同等な構造も本発明の精神および範囲から最も広い意味において逸脱するものではない。
【００１２】
本発明のより完全な理解が以下の説明を付属の図面を参照しながら読むことで得られるものである。
【００１３】
【発明の実施の形態】
図１は本発明の原理に従って構成された通信網１００の一つの実施例のブロック図を示す。通信網１００は、より一般的には、情報をデータパケットの形式にて網内のある点から網内のもう一つの点に伝送するように設計される。
【００１４】
図１に示すように、通信網１００はパケット網１１０、公衆電話網(ＰＳＴＮ)１１５、発信デバイス１２０および着信デバイス１３０を含む。図１に示す説明の実施例においては、パケット網１１０は非同期転送モード(Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ、ＡＴＭ)網から成る。ただし、当業者においては容易に理解できるように、本発明は任意の他のパケット網を用いることもできる。パケット網１１０は、ルータ１４０、１４５、１５０、１６０、１６５、１７０およびゲートウェイ１５５を含むが、当業者においては理解できるように、パケット網１１０は任意の数のルータおよびゲートウェイを含むことができる。
【００１５】
ソースデバイス１２０はパケット網１１０を通じて宛先デバイス１３０に送信されるべきデータパケットを生成する。説明の実施例においては、ソースデバイス１２０は、最初、データパケットを第一のルータに送信し、第一のルータは、次に、そのデータパケットから、ルーティング情報および網の負荷状況(ｌｏａｄｉｎｇ)に基づいてそのデータパケットをどのルータに送信すべきかを決定する。次のルータの選択を決定する際に用いられる幾つかの情報には、データパケットのサイズ、ルータおよび宛先への通信リンクの負荷状況が含まれる。説明の実施例においては、第一のルータ１４０はデータパケットを第二のルータ１４５あるいは第四のルータ１６０に送信する。
【００１６】
データパケットは、パケット網１１０内のルータからルータへと横断し、ゲートウェイ１５５へと辿り着く。ある一つの特定の実施例においては、データパケットは、第一のルータ１４０、第四のルータ１６０、第五のルータ１６５、第六のルータ１７０、第三のルータ１５０、そして最後にゲートウェイ１５５へと至る経路を辿る。ゲートウェイ１５５は、このデータパケットを、パケット網１１０と関連するプロトコルから公衆交換網(ＰＳＴＮ)１１５と互換性のある異なるプロトコルに変換する。ゲートウェイ１５５は次にこのデータパケットをＰＳＴＮ１１５を経由して宛先デバイス１３０に送信する。ただし、別の例として、データパケットは、異なる経路、例えば、第一のルータ１４０、第二のルータ１４５、第三のルータ１５０、そして、最終的にゲートウェイ１５５へと辿り着くことも考えられる。次のルータを選択する際には、通常はデータパケットが辿る経路はそのデータパケットに対して最速スループット(ｆａｓｔｅｓｔ  ｔｈｒｏｕｇｈｐｕｔ)であることを要求される。ただし、この経路は常に最少数のルータを含むとは限らない。
【００１７】
図２は、本発明の原理に従って構成されたルータアーキテクチャ２００の実施例のブロック図を示す。このルータアーキテクチャ２００は、一つの実施例においては、図１に示す任意のルータ内で用いられる。ルータアーキテクチャ２００は、新規なハードウエアとソフトウエアの組合せを持ち、複数の通信プロトコルに対して、高速処理能力を、フルプログラムビリティ(ｆｕｌｌ  ｐｒｏｇｒａｍｍａｂｉｌｉｔｙ)にて達成する。この新規な組合せは、従来の縮小命令セット計算(ｒｅｄｕｃｅｄ  ｉｎｓｔｒｕｃｔｉｏｎ  ｓｅｔ  ｃｏｍｐｕｔｉｎｇ、ＲＩＳＣ)プロセッサのプログラムビリティ(ｐｒｏｇｒａｍｍａｂｉｌｉｔｙ)を、これまでは特定用途向け集積回路(ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ、ＡＳＩＣ)プロセッサによってしか達成できなかった速度にて提供する。
【００１８】
図２に示す実施例においては、ルータアーキテクチャ２００は、物理インタフェース２１０、高速パターンプロセッサ(ｆａｓｔ  ｐａｔｔｅｒｎ  ｐｒｏｃｅｓｓｏｒ、ＦＰＰ)２２０、ルーティングスイッチプロセッサ(ｒｏｕｔｉｎｇｓｗｉｔｃｈ  ｐｒｏｃｅｓｓｏｒ、ＲＳＰ)２３０、およびシステムインタフェースプロセッサ(ｓｙｓｔｅｍ  ｉｎｔｅｒｆａｃｅ  ｐｒｏｃｅｓｓｏｒ、ＳＩＰ)２４０を備える。ルータアーキテクチャ２００は、さらに、ＲＳＰ２３０とファブリック網２６０に結合されたファブリックインタフェースコントローラ２５０を備える。本発明の範囲から逸脱することなく、図示されない他の要素もルータアーキテクチャ２００内に含めることもできることに注意する。
【００１９】
物理インタフェース２１０は、外部網への結合を提供する。一つの実施例においては、物理インタフェース２１０は、ＰＯＳ  ＰＨＹ/ＵＴＯＰＩＡレベル３インタフェースから成る。一つの実施例においては、ＦＰＰ２２０は物理インタフェース２１０に結合され、物理インタフェース２１０からプロトコルデータユニット(ｐｒｏｔｏｃｏｌ  ｄａｔａ  ｕｎｉｔｓ、ＰＤＵ)を含むデータ流を受信する。ＦＰＰ２２０はこれらＰＤＵを分析および分類し、ＲＳＰ２３０にパケットを出力することで処理を終える。
【００２０】
ＦＰＰ２２０は、強力な高水準関数プログラミング言語(ｆｕｎｃｔｉｏｎａｌ  ｐｒｏｇｒａｍｍｉｎｇ  ｌａｎｇｕａｇｅ、ＦＰＬ)との関連で、複雑なパターンおよび署名(ｓｉｇｎａｔｕｒｅ)認識を実現する能力を持ち、これら署名を含む処理ブロックに関して動作する。ＦＰＰ２２０は、データ流のペイロードの個々の全てのバイトとヘッダに関してパターン分析を遂行する。このパターン分析の結論は、次に、システム論理、すなわちＲＳＰ２３０に送られ、ＲＳＰ２３０はこれを用いて、処理ブロックの操作(ｍａｎｉｐｕｌａｔｉｏｎ)およびキューイング(ｑｕｅｕｉｎｇ)機能を行なう。ＦＰＰ２２０とＲＳＰ２３０は、スイッチングおよびルーティングに対する解決(ｓｏｌｕｔｉｏｎ)を提供する。ＦＰＰ２２０は、さらに、ＲＳＰ２３０およびＳＩＰ２４０に対するグルーレスインタフェース(ｇｌｕｅｌｅｓｓ  ｉｎｔｅｒｆａｃｅｓ)を提供し、こうして、次世代テラビットスイッチおよびルータにおけるワイヤ速度処理(ｗｉｒｅ−ｓｐｅｅｄ  ｐｒｏｃｅｓｓｉｎｇ)に対する完全な解決を提供する。
【００２１】
図２に示すように、ＦＰＰ２２０は、物理インタフェース２１０からのデータ流を受信するために第一の通信リンク２７０を用いる。この第一の通信リンク２７０は、例えば、産業標準のＵＴＯＰＩＡレベル３／ＵＴＯＰＩＡレベル２／ＰＯＳ  ＰＨＹレベル３インタフェースから成る。加えて、ＦＰＰ２２０は、パターンおよび結論をＲＳＰ２３０に送信するために第二の通信リンク２７２を用いる。この第二の通信リンク２７２は、例えば、ＰＯＳ  ＰＨＹレベル３インタフェースから成る。
【００２２】
ＦＰＰ２２０は、さらに、管理パスインタフェース(ｍａｎａｇｅｍｅｎｔ  ｐａｔｈ  ｉｎｔｅｒｆａｃｅ、ＭＰＩ)２７５、関数バスインタフェース(ｆｕｎｃｔｉｏｎ  ｂｕｓ  ｉｎｔｅｒｆａｃｅ、ＦＢＩ)２８０、および構成バスインタフェース(ｃｏｎｆｉｇｕｒａｔｉｏｎ  ｂｕｓ  ｉｎｔｅｒｆａｃｅ、ＣＢＩ)２８５を含む。ＭＰＩ２７５は、ＦＰＰ２２０によってローカルマイクロプロセッサから管理フレームを受信するために用いられる。一つの実施例においては、これはＳＩＰ２４０を通じて扱われる。ＦＢＩ２８０は、ＦＰＰ２２０とＳＩＰ２４０を、あるいは幾つかの状況においてはカスタム論理とを、関数呼(ｆｕｎｃｔｉｏｎ  ｃａｌｌｓ)の外部処理のために接続するために用いられる。ＣＮＩ２８５は、ＦＰＰ２２０と他のデバイス（例えば、物理インタフェース２１０およびＲＳＰ２３０）をＳＩＰ２４０に接続するために用いられる。本発明の範囲から逸脱することなく、他のインタフェース（図示せず）、例えばメモリインタフェースを設けることもできる。
【００２３】
ＦＰＰ２２０は、これがプログラマブルであり、多様なアプリケーションおよびプロトコルの性能の最適化における柔軟性を持つという点で追加の利益を提供する。つまり、ＦＰＰは固定された機能を持つＡＳＩＣではなく、プログラマブルなプロセッサであるために、将来開発されるであろう新たなプロトコルおよびアプリケーション並びに要求されるであろう新たなネットワーク機能を扱うことができる。ＦＰＰ２２０は、さらに、多様な探索アルゴリズムを収容することもでき、これら探索アルゴリズムは大きなリストにも適用することができる。
【００２４】
ＲＳＰ２３０もプログラマブルであり、ＦＰＰ２２０と協調して、ＦＰＰ２２０によって分類されたＰＤＵを処理する。ＲＳＰ２３０はＦＰＰ２２０から受信される分類情報を用いて、ＰＤＵペイロードの開始オフセットおよび長さを決定することで、そのＰＤＵに対する分類結論を得る。この分類情報は、そのＰＤＵに対して選択されるべきポートおよび関連するＲＳＰ２３０を決定するために用いられる。ＲＳＰ２３０は加えてフラッグの形式にてパスされる追加のＰＤＵもさらなる処理のために受信する。
【００２５】
ＲＳＰ２３０は、さらに、ランダム早期廃棄(ｒａｎｄｏｍ  ｅａｒｌｙ  ｄｉｓｃａｒｄ、ＲＥＤ)、重み付きランダム早期廃棄(ｗｅｉｇｈｔｅｄ  ｒａｎｄｏｍ  ｅａｒｌｙ  ｄｉｓｃａｒｄ、ＷＲＥＤ)、早期パケット廃棄(ｅａｒｌｙ  ｐａｃｋｅｔ  ｄｉｓｃａｒｄ、ＥＰＤ)、および部分的パケット廃棄(ｐａｒｔｉａｌ  ｐａｃｋｅｔ  ｄｉｓｃａｒｄ、ＰＰＤ)などの方針を含むプログラマブルなトラヒック管理を提供する。ＲＳＰ２３０は、さらに、キュー毎にプログラマブルなサービス品質(ｑｕａｌｉｔｙ  ｏｆ  ｓｅｒｖｉｃｅ、ＱｏＳ)およびサービスクラス(ｃｌａｓｓ  ｏｆ  ｓｅｒｖｉｃｅ、ＣｏＳ)パラメータを含むプログラマブルなトラヒック整形(ｔｒａｆｆｉｃ  ｓｈａｐｉｎｇ)も提供する。ＱｏＳパラメータには、固定ビットレート(ｃｏｎｓｔａｎｔ  ｂｉｔ  ｒａｔｅ、ＣＢＲ)、未指定ビットレート(ｕｎｓｐｅｃｉｆｉｅｄ  ｂｉｔ  ｒａｔｅ、ＵＢＲ)、および可変ビットレート(ｖａｒｉａｂｌｅ  ｂｉｔ  ｒａｔｅ、ＶＢＲ)が含まれる。同様に、ＣｏＳパラメータには、固定優先(ｆｉｘｅｄｐｒｉｏｒｉｔｙ)、ラウンドロビン(ｒｏｕｎｄ  ｒｏｂｉｎ)、重み付きラウンドロビン(ｗｅｉｇｈｔｅｄ  ｒｏｕｎｄ  ｒｏｂｉｎ、ＷＲＲ)、重み付き公平キューイング(ｗｅｉｇｈｔｅｄ  ｆａｉｒ  ｑｕｅｕｉｎｇ、ＷＦＱ)および保障フレームレート(ｇｕａｒａｎｔｅｅｄ  ｆｒａｍｅ  ｒａｔｅ、ＧＦＲ)が含まれる。
【００２６】
代替として、ＲＳＰ２３０は、ヘッダあるいはテーラの追加あるいは削除、内容の書替えあるいは修正、タグの追加、および検査合計とＣＲＣの更新を含むプログラマブルなパケット修正を提供することもできる。ＲＳＰ２３０は、Ｃ言語と類似のセマンティクス(ｓｅｍａｎｔｉｃｓ：意味)を持つ記述言語を用いてプログラミングされる。このような言語は当分野において周知である。ＲＳＰ２３０にはファブリックインタフェースコントローラ２５０およびファブリック網２６０も接続される。ファブリックインタフェースコントローラ２５０は、典型的には通信網から成るファブリック２６０への物理インタフェースを提供する。ＳＩＰ２４０は、ＦＰＰ２２０、ＲＳＰ２３０および物理インタフェース２１０、２５０の初期化および構成を集中的に扱う。ＳＩＰ２４０は、一つの実施例においては、方針の決定(ｐｏｌｉｃｉｎｇ)、管理状態情報の供給、ホストコンピュータへの周辺要素相互接続(ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ、ＰＣＩ)接続の提供等を行なう。ＳＩＰ２４０には、例えば、Ａｇｅｒｅ  Ｓｙｓｔｅｍｓ，Ｉｎｃ．から市販されているＰａｙｌｏａｄＰｌｕｓ（登録商標）Ａｇｅｒｅ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅが用いられる。
【００２７】
図３は本発明の原理に従って構成された高速パターンプロセッサ(ＦＰＰ)３００の一つの実施例のブロック図を示す。ＦＰＰ３００は、外部入力データ流３３０、３３２を介してＰＤＵを受信する入力フレーマ３０２を備える。入力フレーマ３０２は、これらＰＤＵを含むパケットを６４−バイト処理ブロックにフレーム化し、この処理ブロックを外部データバッファ３４０内に格納する。入力データ流３３０と３３２は、それぞれ、物理(ＰＨＹ)インタフェースからの３２−ビットＵＴＯＰＩＡ/ＰＯＳ／ＰＨＹからのデータ流と、ＩＰ２４０からの８−ビットＰＯＳ−ＰＨＹ管理パスインタフェース（図２）からのデータ流から成る。
【００２８】
典型的には、処理ブロックを外部データバッファ３４０に格納するためにデータバッファコントローラ３０４が用いられる。データバッファコントローラ３０４は、加えて、この処理ブロックおよび関連する構成情報をコンテクストメモリサブシステム３０８の、１つの処理スレッドを構成する、コンテクストと関連する部分にも格納する。図示するように、コンテクストメモリサブシステム３０８はデータバッファコントローラ３０４に結合される。
【００２９】
加えて、コンテクストメモリサブシステム３０８は、検査合計／巡回冗長検査(ＣＲＣ)エンジン３１４およびパターン処理エンジン３１２にも結合される。検査合計／巡回冗長検査(ＣＲＣ)エンジン３１４は、処理ブロックおよび処理ブロック内に含まれるＰＤＵに関して検査合計あるいはＣＲＣ機能を遂行する。パターン処理エンジン３１２は、ＰＤＵをどのように分類し、処理すべきかを決定するパターンマッチング(ｐａｔｔｅｒｎ  ｍａｔｃｈｉｎｇ)を遂行する。パターン処理エンジン３１２はプログラムメモリ３５０に結合される。
【００３０】
ＦＰＰ３００は、さらに、キューエンジン３１６および演算論理ユニット(ａｒｉｔｈｍｅｔｉｃ  ｌｏｇｉｃ  ｕｎｉｔ、ＡＬＵ)３１８を備える。キューエンジン３１６は、ＦＰＰ３００に対するリプレイコンテクスト(ｒｅｐｌａｙ  ｃｏｎｔｅｘｔｓ)の管理、ブロックバッファに対するアドレスの提供、並びに、ブロック、ＰＤＵ、および接続キューに関する情報の維持を行なう。キューエンジン３１６は、外部制御メモリ３６０と内部関数バス３１０に結合される。
【００３１】
ＡＬＵ３１８は内部関数バスに結合され、関連する計算機能を遂行する。
【００３２】
内部関数バス３１０には関数バスインタフェース３２２も結合される。関数バスインタフェース３２２は、外部関数プログラミング言語による関数呼をデータポート３３６を通じて外部論理にパスする。一つの実施例においては、このデータポート３３６は、ＳＩＰ２４０（図２）への３２ビット接続から成る。ＦＰＰ３００は、さらに、外部に接続されたプロセッサからの構成リクエストを処理するための構成バスインタフェース３２０を備える。図示するように、この構成バスインタフェース３２０は、データポート３３４、例えば、８−ビットＣＢＩソースに接続される。
【００３３】
加えて、内部関数バス３１０には、出力インタフェース３０６が結合される。
出力インタフェース３０６は、ＰＤＵおよびこれらの分類結論を下流の論理に送信する。出力インタフェース３０６は、データバッファ３４０内に格納されている処理ブロックを取り出し、これら処理ブロック内に含まれるＰＤＵを出力データポート３３８を通じて外部ユニットに送る。出力データポート３３８は、一つの実施例においては、ＲＳＰ２３０（図２）に接続された３２−ビットＰＯＳ−ＰＨＹから成る。
【００３４】
図４は本発明の原理に従って構成された外部デバイス伝送システム４００の一つの実施例のブロック図を示す。外部デバイス伝送システム４００は、内部関数バスを持つ高速パターンプロセッサと共に用いられる。外部デバイス伝送システム４００は、複数の引数署名レジスタ(ａｒｇｕｍｅｎｔ  ｓｉｇｎａｔｕｒｅｒｅｇｉｓｔｅｒ)４０６を持つコンテクストメモリサブシステム４０５、内部関数バス４１５を利用するパターン処理エンジン４１０、および出力インタフェースサブシステム４２０を備える。パターン処理エンジン４１０はプログラムメモリ４３０に結合され、出力インタフェースサブシステム４２０は出力データポート４１６を介して外部プロセッサ４２５に結合される。
【００３５】
コンテクストメモリサブシステム４０５は、複数の引数署名レジスタ４０６を維持するように構成される。これら引数署名レジスタ４０６の各々は、対応する引数を含み、対応するコンテクストと関連する。コンテクスト(ｃｏｎｔｅｘｔ)は、ＦＰＰによって用いられる一つの処理スレッドである。（コンテクストの説明については図３を参照されたい）。コンテクストは、コンテクストメモリサブシステム４０５内のブロックバッファ（図示せず）内に格納されている処理ブロックとも関連する。各処理ブロックはプロトコルデータユニット(ＰＤＵ)の少なくとも一部を含む。
【００３６】
本発明の目的に対しては、「プロトコルデータユニット(ｐｒｏｔｏｃｏｌ  ｄａｔａ  ｕｎｉｔ)」は、網を通じてパケットを介して伝送される特定のプロトコル内の底辺に横たわるメッセージ(ｕｎｄｅｒｌｙｉｎｇ  ｍｅｓｓａｇｅ)を意味する。例えば、プロトコルデータユニットは、非同期転送モード(Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ、「ＡＴＭ」)網を通じて伝送されるインターネットプロトコル(Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ、「ＩＰ」)メッセージであり得る。ＡＴＭ網においては、ＩＰメッセージはＡＴＭ網を通じて伝送する前にＡＴＭセル（パケット）に分解される。ただし、勿論、プロトコルデータユニットは、網を通じて伝送される任意のプロトコルメッセージであり得、パケットはプロトコルデータユニットの一部分であることも、プロトコルデータユニット全体であることもあり得る。「構成される(ｃｏｎｆｉｇｕｒｅｄｔｏ)」なる用語は、そのデバイス、システムあるいはサブシステムが、記述されるタスクを達成するために必要なソフトウエア、ハードウエア、ファームウエアあるいはこれらの組合せを備えることを意味する。
【００３７】
説明の実施例においては、パターン処理エンジン４１０は、プログラムメモリ４３０および関数プログラミング言語(ＦＰＬ)にて定義される動作命令のシーケンスを用いて、その動作を指令する。関数プログラミング言語は、Ｃプログラミング言語などの手続き型プログラミング言語とは、関数(ｆｕｎｃｔｉｏｎ)を遂行するためにより少数のコードラインを必要とし、従って、本質的により直観的である点で異なる。これら属性は、プログラミングの容易さと、全体としての性能の向上の両方に貢献する。
【００３８】
加えて、パターン処理エンジン４１０は、引数を動的に修正するように構成される。この修正された引数は、例えば、外部デバイスコマンド、ルーティングパラメータおよびプロトコルデータユニットの分類を表すデータ含む。勿論、これらは可能なものの単なる例示に過ぎず、本発明はこれらに制限されるものではない。パターン処理エンジンは、さらに、修正された引数をＰＤＵの内容(ｃｏｎｔｅｎｔ)に基づいて動的に修正するように構成される。加えて、パターン処理エンジン４１０は、修正された引数と関連するコンテクストの関数として、送信コマンド(ｔｒａｍｓｍｉｔ  ｃｏｍｍａｎｄ)を生成する。この送信コマンドは、内部関数バス４１５を介して出力インタフェースサブシステム４２０に送信される。
【００３９】
出力インタフェースサブシステム４２０は、内部関数バス４１５から送信コマンドを受信し、この送信コマンドに基づいて修正された引数を、外部デバイス、例えば、外部プロセッサ４２５に送信する。説明の実施例においては、外部プロセッサ４２５はルーティングスイッチプロセッサから成る。ただし、勿論、本発明は、送信コマンドを、たった１つの外部プロセッサ４２５に送信することに制限されるものではなく、他の幾つかの実施例においては、本発明は、送信コマンドを、任意の数の外部プロセッサに送信し、送信コマンドは外部プロセッサに依存して異なる情報を含む。一つの関連する実施例においては、出力インタフェースサブシステム４２０は、さらに、プロトコルデータユニットの一部分と修正された引数を外部プロセッサ４２５に送信するように構成される。こうして、本発明は、長所として、任意のデータを外部デバイスにパスするための一般メカニズムを提供する。
【００４０】
図５は本発明の原理に従って構成された複数の引数署名レジスタ５００の一つの実施例の略図を示す。説明の実施例においては、これら複数の引数署名レジスタ５００は、引数署名レジスタ０から引数署名レジスタ６３までの６４個の引数署名レジスタから構成される。これら引数署名レジスタ０〜６３の各々は、外部デバイスコマンドでもあり得る引数、ルーティングパラメータ、プロトコルデータユニットの分類、キュー番号、セットのフラッグ、オフセットあるいはストリング番号を含む。勿論、引数は、本発明によって採用可能な任意の他のタイプの情報あるいはパラメータを含むこともできる。これら引数署名レジスタ０〜６３の各々は、６４ビット幅の引数を収容する。ただし、これら複数の引数署名レジスタは、６４個の引数署名レジスタと６４ビット幅に制限されるものではなく、本発明の他の幾つかの実施例においては、任意の数の引数署名レジスタと任意のビット幅が用いられる。説明の実施例においては、これら引数署名レジスタ０〜６３のおのおのは一つのコンテクストと関連し、コンテクスト番号を用いてアクセスされる。こうして、本発明によると、長所として、異なる内部あるいは外部コープロセッサ(ｃｏ−ｐｒｏｃｅｓｓｏｒｓ)間で引数をコンテクスト番号を用いてパスすることが可能となる。
【００４１】
図６は本発明の原理に従って構成された外部デバイスにコマンドを送信するための方法６００の一つの実施例の流れ図を示す。方法６００は内部関数バスを持つ高速パターンプロセッサとの関連で用いられ、ステップ６０５における初期化から開始される。次に、ステップ６１０において、複数の引数署名レジスタの維持が達成される。つまり、複数の引数署名レジスタの各々は、対応する引数を、対応するコンテクストと関連付ける。この維持には、これら複数の署名レジスタの各々の初期化および更新も含まれる。次に、ステップ６１５において、関数プログラミング言語(ＦＰＬ)の命令が処理され、次に、第一の判定ステップ６２０において、送信コマンドが生成されるべきであるか否かの決定が下される。
【００４２】
第一の判定ステップ６２０において、送信コマンドが生成されるべきことが決定された場合は、ステップ６２５において、高速パターンプロセッサと関連するパターン処理エンジンの指令の下で、引数が動的に修正される。方法６００は、引数を動的に修正するために、関数プログラミング言語にて定義される動作命令のシーケンスを用いる。こうして修正された引数は、外部デバイスコマンド、ルーティングパラメータおよびプロトコルデータユニットの分類から成る一群から選択されるデータを含む。もう一つの実施例においては、こうして修正された引数は、プロトコルデータユニットの内容に基づいて動的に修正される。
【００４３】
次に、ステップ６３０において、修正された引数と関連するコンテクストの関数として送信コマンドが生成される。次に、ステップ６３５において、修正された引数が外部デバイスに送信される。ステップ６３５は、プロトコルデータユニットの部分と修正された引数を、例えば、ルーティングスイッチプロセッサから成る外部デバイスに送信することもできる。一つの関連する実施例においては、方法６００は、修正された引数を外部デバイスに送信するために出力インタフェースサブシステムを用いる。この方法は、次に、さらなる処理のためにステップ６１５に戻る。他方、第一の判定ステップ６２０において、送信コマンドを生成しないことが決定された場合も、方法６００は、さらなる処理のためにステップ６１５に戻る。
【００４４】
当業者においては理解できるように、本発明は上述のタイプのリクエストに制限されるものではない。さらに、本発明は上述のような処理のシーケンスに制限されるものでもない。本発明の他の実施例として、追加のタイプのコマンドを生成することも、あるいはステップ数を追加もくしは削減することもできる。
【００４５】
本発明が詳細に説明されたが、当業者においては理解できるように、本発明の精神および範囲から最も広い意味において逸脱することなく、様々な変更、置換および代替を加えることも可能である。
【図面の簡単な説明】
【図１】本発明の原理に従って構成された通信網の一つの実施例のブロック図を示す。
【図２】本発明の原理に従って構成されたルータアーキテクチャの一つの実施例のブロック図を示す。
【図３】本発明の原理に従って構成された高速パターンプロセッサの一つの実施例のブロック図を示す。
【図４】本発明の原理に従って構成された外部デバイス伝送システムの一つの実施例のブロック図を示す。
【図５】本発明の原理に従って構成された複数の引数署名レジスタの一つの実施例のブロック図を示す。
【図６】本発明の原理に従って構成された外部デバイスにコマンドを送信するための方法の一つの実施例の流れ図を示す。
【符号の説明】
１００  通信網
１１０  パケット網
１１５  公衆電話網（ＰＳＴＮ）
１２０  発信デバイス
１３０  着信デバイス
１４０、１４５、１５０、１６０、１７０  ルータ
１５５  ゲートウェイ
２００  ルータアーキテクチャ
２１０  物理インタフェース
２２０  高速パターンプロセッサ（ＦＰＰ）
２３０  ルーティングスイッチプロセッサ（ＲＳＰ）
２４０  システムインタフェースプロセッサ（ＳＩＰ）
２５０  ファブリックインタフェースコントローラ
２６０  ファブリック網
２７０  第一の通信リンク
２７２  第二の通信リンク
２７５  管理パスインタフェース（ＭＰＩ）
２８０  関数バスインタフェース（ＦＢＩ）
２８５  構成バスインタフェース（ＣＢＩ）
３００  高速パターンプロセッサ（ＦＰＰ）
３０２  入力フレーマ
３０４  データバッファコントローラ
３０６  出力インタフェース
３０８  コンテクストメモリサブシステム
３３０、３３２  外部入力データ流
３１０  内部関数バス
３１２  パターン処理エンジン
３１４  検査合計／巡回冗長検査（ＣＲＣ）エンジン
３１６  キューエンジン
３１８  演算論理ユニット（ＡＬＵ）
３２２  関数バスインタフェース
３３４  データポート
３３６  データポート
３３８  出力データポート
３４０  外部データバッファ
３５０  プログラムメモリ
３６０  外部制御メモリ
４００  外部デバイス伝送システム
４０６  引数署名レジスタ
４０５  コンテクストメモリサブシステム
４１０  パターン処理エンジン
４１５  内部関数バス
４１６  出力データポート
４２０  出力インタフェースサブシステム
４２５  外部プロセッサ
４３０  プログラムメモリ
【図１】
0004524734.tif 000002
【図２】
0004524734.tif 000003
【図３】
0004524734.tif 000004
【図４】
0004524734.tif 000005
【図５】
0004524734.tif 000006
【図６】
0004524734.tif 000007