(57)【特許請求の範囲】
【請求項１】
ネットワークから受信したパケットに対しプロセッサを用いて各種処理を行うパケットデータ処理装置において、
複数のレジスタから構成されており、前記受信したパケットを先頭からクロックに同期して前記複数のレジスタ間で順次シフトして外部に伝達し、前記複数のレジスタのいずれかを前記プロセッサから処理のためにアクセスされるパケットデータアクセス機構と、
複数のレジスタから構成されており、前記受信したパケットに対する処理結果である中間データを前記クロックに同期して前記複数のレジスタ間で順次シフトして外部に伝達する中間データ保持転送機構を
有することを特徴とするパケットデータ処理装置。
【請求項２】
請求項１記載のパケットデータ処理装置において、
前記パケットのデータを用いて検索され、前記パケットのデータに対応するデータが読み出される検索テーブルを
有することを特徴とするパケットデータ処理装置。
【請求項３】
請求項１記載のパケットデータ処理装置を用いたパケット中継装置であって
複数のパケットデータ処理装置を直列接続したことを特徴とするパケット中継装置。
【請求項４】
請求項３記載のパケット中継装置において、
直列接続した複数のパケットデータ処理装置からアクセスされ、前記複数のパケットデータ処理装置間でデータを共有する共有レジスタを
有することを特徴とするパケット中継装置。
【請求項５】
請求項１記載のパケットデータ処理装置において、
前記パケットデータアクセス機構または中間データ保持転送機構を構成する複数のレジスタに対する外部から伝達されたデータの書き込み位置を変更する書き込み位置変更機構を
有することを特徴とするパケットデータ処理装置。
【請求項６】
請求項１記載のパケットデータ処理装置において、
前記パケットデータアクセス機構または中間データ保持転送機構を構成する複数のレジスタから外部に伝達するデータの読み出し位置を変更する読み出し位置変更手段を
有することを特徴とするパケットデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、パケットデータ処理装置及びそれを用いたパケット中継装置に関し、端末と中継装置が相互接続された通信網におけるパケット中継装置において、宛先テーブルの検索やヘッダ書き換え処理等のパケット処理を行うパケットデータ処理装置及びそれを用いたパケット中継装置に関する。
【０００２】
【従来の技術】
端末間の通信のためのネットワークの利用の拡大に伴い、ネットワークの規模拡大のためにネットワーク間の中継、例えばＬＡＮ(Local Area Network)とＬＡＮ、ＬＡＮと専用線を相互接続する必要が生じる。こうして構築されるネットワークで現在主流なのはＩＰ(Internet Protoco1) によるネットワークである。ＩＰはＩＳＯ(International Organization for Standardization)のＯＳＩ(Open Systems Interconnection)モデルにおけるネットワーク層に相当するコネクションレス型のプロトコルである。あらかじめ端末間で通信路を確保するコネクション型のプロトコルと異なり、コネクションレス型のＩＰ通信では、ＬＡＮ問を相互接続するパケット中継装置が、通信データが格納されているパケットを中継処理することによって端末間の通信が実現する。ＩＰネットワークおける中継処理は、宛先テーブルの検索やヘッダ書き換え処理といった、パケット処理が必要になる。
【０００３】
ＩＰネットワークにおけるパケット処理は、パケット・ヘッダのチェックサムの計算、宛先テーブルの検索、パケット・ヘッダの書き換え等のパケットを中継するのに必要な処理に加え、ネットワークにおける通信を制限するためのパケットフィルタリングの実装が求められる。これを専用のハードウェアで行うには煩雑であり、従来はプロセッサによってソフトウェア処理していた。
【０００４】
図１は、プロセッサによってパケット処理を行う従来装置の構成図を示している。従来の構成では、図１で示すように、プロセッサ１０とメモリ１１をバス１２によって接続し、このような構成においてプロセッサ１０がメモリ１１内に格納したパケットに関する処理を実行することによって、パケット中継装置においてパケット処理が実行される。
【０００５】
図２に示すパケット中継装置１４は、図１に示すプロセッサ１０とメモリ１１を組み込む構成を取り、パケットを中継する。パケット中継装置１４はパケットを中継するのにあたって、受信インタフェース１５でパケットを受信した後、その受信パケットを一時的にメモリ１１ヘ格納し、プロセッサ１０によって、チェックサムの計算、宛先テーブルの検索、パケット・ヘッダの書き換え等のパケット処理を受信パケットに対して行った後に、決定した宛先情報等のパケットに付随する情報と共にスイッチ・ファブリック１６にパケットを送る。
【０００６】
そして、パケット中継装置１４は、スイッチ・ファブリック１６から、決定した宛先に従って、適切な送信インタフェース１７にパケットを送り、送信インタフェース１７からＬＡＮにパケットを送出する。このようにして、パケット中継装置１４はパケットを中継する。
上記のパケット中継装置におけるパケット中継処理のなかで、図１で示されるプロセッサは、まず、受信したパケットデータを一時的にメモリ１１に格納し、格納したパケットデータを、プログラムを構成する命令に従って、必要なとき必要な部分を汎用レジスタ２１にデータ転送する。次にプロセッサは、汎用レジスタ２１に格納したパケットデータに関して、テーブルの検索、パケット・ヘッダ・チェックサムの計算、パケット・ヘッダの宛先アドレスの書き換え等を命令に従って順次行った後、必要に応じて汎用レジスタ２１に格納したパケットデータをメモリ１１に格納し、その後、プロセッサ１０は、処理を施したパケットをメモリ１１から送り出す。
【０００７】
テーブルの検索、パケット・ヘッダ・チェックサムの計算、パケット・ヘッダの宛先アドレスの書き換えのようなパケット処理に用いるようなプロセッサは、一般にパケットデータを格納し、演算対象のデータや演算結果を保持するバッファとなる汎用レジスタ２１( 例えば、r0からr7の8 個ある) 、汎用レジスタ２１に併設されデータの出力または入力対象となるレジスタを選択するセレクタ、データ転送・比較・演算を命令に従って実行する演算器２２、命令を解釈しプロセッサ内の各構成要素に制御信号を与える制御部２３、現在実行している命令のプログラム内の位置を保持するプログラム・カウンタ２４、演算の結果を評価するためのフラグレジスタ２５、外部バスインタフェース２６、外部バスバッファ２７を有する。プロセッサは、外部から読み込んだ命令に従って、上記の構成要素を駆動することによって、パケット処理を実行する。
【０００８】
一方、近年、ネットワークの高速化／大容量化に伴い、パケットの中継処理についても一層の高速化が求められている。そこで、プロセッサを用いたソフトウェア処理によるパケット処理では処理性能的に不十分なため、パケット処理を専用のハードウェア回路で高速に実行する方法が開発され実装されている。しかし、専用回路では、プロトコルの改訂やネットワークとして提供するサービス機能向上のための機能の変更を容易に行うことはできず、単なる専用回路化では、その都度新たなハードウェアを開発する必要があるという問題点がある。
【０００９】
これに対して、プロセッサによるパケット処理は、上記のように命令、つまりソフトウェアによってプロセッサを駆動して実行するゆえ、装置完成後のプロトコルの改訂やネットワークとして提供するサービス機能向上のための機能の変更等に容易に対応できる高い柔軟性を持っている。
このように高い柔軟性を有する従来のプロセッサによるパケット処理は、プロセッサとメモリ、およびプロセッサとメモリをつなぐバスによって構成した回路によって処理され、プロセッサは、パケットデータを、プロセッサとメモリ間でデータ転送している。
【００１０】
【発明が解決しようとする課題】
しかしながら、従来のプロセッサを用いたパケット処理では、パケットデータを一時的に格納するメモリに対する読み出し／書き込み処理のため、パケット処理の高速化が難しいという問題点があった。
すなわち、プロセッサを用いたパケット処理では、パケットデータをメモリヘ格納し、それをプロセッサが適時読み出してパケットの内容に応じた処理を実行し、パケットデータおよびその処理結果をメモリに書き込む。プロセッサは、メモリに対し読み出しアドレスを与えてから、メモリからデータを読み出す。同様にプロセッサは、メモリに対し書き込みアドレスを与えてから、メモリにデータを書き込む。このとき、プロセッサがメモリにアドレスを与えてから、データを読み出し／書き込み可能になるまでに、プロセッサのサイクルタイムと比較して時間がかかる。
【００１１】
また、逐次実行型のプロセッサは、同時に実行できる処理が単一であり読み出し動作と書き込み動作を同時に実行できないこと、およびメモリに関しても読み出しと書き込みの同時動作ができる回路は作りにくいことに起因して、通常メモリに対して、プロセッサは読み出しと書き込みを同時に行うことができない。以上のようなメモリヘの読み出し／書き込み処理のオーバヘッドがプロセッサとメモリ間のパケットデータのデータ転送において問題となり、パケット処理を高速に行うことができなかった。
【００１２】
本発明は、上記の点に鑑みなされたものであり、プロセッサによるメモリヘの読み出し／書き込み処理のオーバヘッドを解消でき、高速なパケット処理が可能なパケットデータ処理装置及びそれを用いたパケット中継装置を提供することを目的とする。
【００１３】
【課題を解決するための手段】
請求項１に記載の発明は、ネットワークから受信したパケットに対しプロセッサを用いて各種処理を行うパケットデータ処理装置において、
複数のレジスタから構成されており、前記受信したパケットを先頭からクロックに同期して前記複数のレジスタ間で順次シフトして外部に伝達し、前記複数のレジスタのいずれかを前記プロセッサから処理のためにアクセスされるパケットデータアクセス機構と、
複数のレジスタから構成されており、前記受信したパケットに対する処理結果である中間データを前記クロックに同期して前記複数のレジスタ間で順次シフトして外部に伝達する中間データ保持転送機構を有する。
【００１４】
このように、受信したパケットを先頭からクロックに同期して複数のレジスタ間で順次シフトして外部に伝達するパケットデータアクセス機構を有するため、パケットデータをレジスタに取りこみシフトして送出することを命令手順とは独立して行い、それを見込んだプロセッサの命令手順を実行することによって、柔軟性を有しながら高速にパケット処理を実行することができ、受信したパケットに対する処理結果である中間データをクロックに同期して複数のレジスタ間で順次シフトして外部に伝達する中間データ保持転送機構を有するため、中間データをレジスタに取りこみシフトして送出することを命令手順とは独立して行い、それを見込んだプロセッサの命令手順を実行することによって、柔軟性を有しながら高速にパケット処理を実行することができる。
【００１６】
請求項２に記載の発明は、請求項１記載のパケットデータ処理装置において、
前記パケットのデータを用いて検索され、前記パケットのデータに対応するデータが読み出される検索テーブルを有する。
このように、パケットのデータを用いて検索される検索テーブルを有するため、パケット処理に必要なインタフェース番号等の情報を得ることができる。
【００１７】
請求項３に記載の発明は、請求項１記載のパケットデータ処理装置を用いたパケット中継装置であって
複数のパケットデータ処理装置を直列接続した。
このように、複数のパケットデータ処理装置を直列接続したことにより、複数のパケットデータ処理装置によるパイプライン処理を実行することが可能となり、パケット処理を高速に実行することができる。
【００１８】
請求項４に記載の発明は、請求項３記載のパケット中継装置において、
直列接続した複数のパケットデータ処理装置からアクセスされ、前記複数のパケットデータ処理装置間でデータを共有する共有レジスタを有する。
このように、複数のパケットデータ処理装置間でデータを共有する共有レジスタを有するため、複数のパケットデータ処理装置と共有レジスタを使用して、パラレルに同時処理することができ、より高速にパケット処理を実行することができる。
【００１９】
請求項５に記載の発明は、請求項１記載のパケットデータ処理装置において、
前記パケットデータアクセス機構または中間データ保持転送機構を構成する複数のレジスタに対する外部から伝達されたデータの書き込み位置を変更する書き込み位置変更機構を有する。
【００２０】
このように、パケットデータアクセス機構または中間データ保持転送機構のレジスタに対する外部から伝達されたデータの書き込み位置を変更する書き込み位置変更機構を有するため、パケットの各部分がパケット処理プロセッサ内にとどまっている時間を調節し短くすることができる。
請求項６に記載の発明は、請求項１記載のパケットデータ処理装置において、
前記パケットデータアクセス機構または中間データ保持転送機構を構成する複数のレジスタから外部に伝達するデータの読み出し位置を変更する読み出し位置変更手段を有する。
【００２１】
このように、パケットデータアクセス機構または中間データ保持転送機構のレジスタから外部に伝達するデータの読み出し位置を変更する読み出し位置変更手段を有するため、次段に向けて出力したデータも引き続きパケットデータアクセス機構または中間データ保持転送機構に残り、この残ったデータを参照することができる。
【００２２】
【発明の実施の形態】
本発明では、パケットデータを直接取りこむパケットアクセスレジスタをプロセッサ内に設けることによって、高速にパケットデータにアクセスするパケットデータアクセス機構を構築し、プロセッサとメモリ間のパケットデータに関するメモリヘの読み出し／書き込み処理のオーバヘッドを解消する。これによって高い柔軟性を有するプロセッサを用いたパケット処理において、高速なパケット処理を実現する。
【００２３】
図３は、本発明装置のパケット処理プロセッサの第１実施例のブロック図を示す。図４に図３のパケット処理プロセッサのデータ転送動作原理図を示す。
図３において、パケット処理プロセッサ３０には、パケットデータを直接取りこみ、このデータに高速にアクセスするためのパケットデータアクセス機構としてパケットアクセスレジスタ( 例えば、８個のレジスタp0〜p7) ３２を設けている。また、パケットデータに付随するパケットデータに対する処理結果として、外部ヘデータを伝達したり、このようなデータを受信インタフェース等の前段の処理部から受け取ったりする必要があるので、パケットデータに付随するパケットデータに対する処理結果データ、すなわち中間データを外部より受け取って保持し、そして、外部に伝達するための中間データ保持転送機構として、中間データレジスタ( 例えば、８個のレジスタe0〜e7) ３４を設けている。
【００２４】
パケット処理プロセッサ３０は、パケットデータを受信インタフェースよりパケットアクセスレジスタ３２に取りこみ、パケットアクセスレジスタ３２からパケットデータを送出する。さらにパケット処理プロセッサ３０は、受信インタフェースから処理結果を中間データレジスタ３４に取りこみ、中間データレジスタ３４から処理結果を送出する。パケット処理プロセッサ３０が、受信インタフェースから取りこむ処理結果としては、例えば、パケットアクセスレジスタ３２に取りこむパケットを受信した受信インタフェース番号であり、パケット処理プロセッサ３０が送出する処理結果としては、例えば、ヘッダチェックサムの計算結果等である。
【００２５】
パケットデータおよび処理結果をパケット処理プロセッサ外部から取りこみ、転送するデータ転送手順に関して、パケット処理プロセッサ３０は、クロックに同期して順次、パケットアクセスレジスタ３２および中間データレジスタ３４にパケットの各部分および処理結果を格納し、クロックに同期して順次、パケットアクセスレジスタ３２および中間データレジスタ３４のレジスタ群内の隣のレジスタにシフトする。
【００２６】
図４は、図３のパケット処理プロセッサ３０において、パケットアクセスレジスタ３２と中間データレジスタ３４に関して、それぞれパケットデータと処理結果のデータがクロック単位時間毎に移動していく様子を示している。図4 （Ａ），（Ｂ），（Ｃ），（Ｄ），（Ｅ）それぞれは、１，２，３，４，１７クロック時間それぞれにおいて、パケット処理プロセッサ３０がレジスタに格納しているデータの内容を示しており、例えば同図（Ｂ）は、同図（Ａ）から時間的に１クロック進んだ状態である。
【００２７】
同図（Ａ）において、パケット処理プロセッサ３０は、パケットＡの各部分(a0 からa9) を、まだパケットアクセスレジスタ３２に格納していない。時間的に１クロックが進んだ状態である同図（Ｂ）において、パケット処理プロセッサ３０は、パケットＡを一つシフトして、パケットアクセスレジスタ３２のレジスタp7にパケットＡのa0の部分を格納する。さらに同図（Ｃ）においては、パケット処理プロセッサ３０は、パケットアクセスレジスタ３２のp7に格納したa0をp6に移動し、パケットアクセスレジスタ３２のp7にパケットＡのa0の次の部分a1を格納する。
【００２８】
同図（Ｄ）においては、パケット処理プロセッサ３０は、同様にクロックに同期して、パケットＡの各部分を隣のレジスタヘシフトする。さらに、同図（Ｄ）の状態より１３クロック分進んだ同図（Ｅ）においては、パケット処理プロセッサ３０は、パケットＡの一部をパケットアクセスレジスタ３２のp0より既に送出しており、パケットＡの次のパケットであるパケットＢの一部分をパケットアクセスレジスタヘ格納している。パケット処理プロセッサ３０は、中間データレジスタ３４に関しても同様に、格納したデータをクロックに同期してシフトして行き、例えば、同図（Ｃ）において、パケット処理プロセッサ３０は中間データレジスタ３４のe7に格納したデータを同図（Ｄ）において中間データレジスタ３４のe6に移動する。
【００２９】
ところで、プロセッサ内にすべての各パケットの先頭から終わりまで格納する容量を持つレジスタを構築することは回路規模が大きくなり難しい。それに対して、パケット処理におけるパケットデータのアクセスに関しては、局所性が存在し、例えば、パケット処理プロセッサ３０がパケットＡのa0とa9を同時に参照する可能性は低い。したがって、上記のような動作をするパケットアクセス機構および中間データ保持転送機構の各レジスタ数は、パケット処理を行うにあたって必要最小限( 例えば８個) で済み、パケット処理プロセッサ３０内に構築することが可能となる。
【００３０】
また、パケットデータに関する処理結果を保持し外部に転送する中間データレジスタ３４の内容をパケットアクセスレジスタ３２と同期して、シフトしていくことによって、例えば図４（Ｅ）に示されるように、パケット処理プロセッサ３０の後続の処理部は、パケットの先頭が到着してから１クロック後に、そのパケットに関する属性情報が到着すると判断をすることができ、パケット中継装置は、パケットデータとその処理結果を格納している場所の各対応関係を示す特別な機構を有する必要が無くなり、これを構築しなくて済む。
【００３１】
上記のパケット処理プロセッサ３０がパケットアクセスレジスタ３２および中間データレジスタ３４に格納したデータをクロックに同期して移動する回路構成について説明する。図３において、パケット処理プロセッサ３０は、パケットアクセスレジスタ３２の各レジスタを、隣接する一つ番号が小さいレジスタとセレクタを介して接続し、パケット処理プロセッサ３０の外部のクロック信号発生器がパケット処理プロセッサ３０に与えるクロック信号に同期して、隣接の一つ番号が小さいレジスタヘ内容を転送する。
【００３２】
さらに、パケット処理プロセッサ３０は、パケットアクセスレジスタ３０のp7に外部より直接パケットデータを格納し、p0から直接パケットデータを送出する。このとき、パケットデータの先頭がパケット処理プロセッサ３０ヘ到着した時点で、パケット中継装置の受信インタフェースがパケット処理プロセッサ３０にパケット到着信号を与え、パケット処理プロセッサ３０はこれを合図に、予め装置設計者が用意し、メモリ等に格納した命令手順従って、パケットに対してパケット処理を行う。
【００３３】
上記のパケット到着信号によって、パケット処理プロセッサ３０は、不定期にパケットがパケット中継装置に到着したタイミングを知ることができ、パケットが到着した時点を処理の手順の初めとして命令手順を実行する。パケットアクセスレジスタ３２の各レジスタ間に介在しているセレクタは、演算器が処理結果をパケットヘッダに反映するための書き込み動作を行うときに、転送先となるレジスタに演算器３５からの書き込みデータを選択し、それ以外のときは、隣接する一つ番号が大きいレジスタの内容を選択し、パケットアクセスレジスタ３２がシフトレジスタを構成するようにする。
【００３４】
中間データレジスタ３４もパケットアクセスレジスタ３２と同様の機構を有しており、パケット処理プロセッサ３０は、直接パケットデータに付随する処理結果を前段の受信インタフェースより中間データレジスタ３４のe7に取り込み、中間データレジスタ３４のe0より、これを後段のスイッチファブリックに向けて送出する。
【００３５】
パケット処理プロセッサ３０は、パケットアクセスレジスタ３２および中間データレジスタ３４を、メモリとバスという構成ではなく、パケット処理プロセッサ３０内で図３のように直接結線しており、パケット処理プロセッサ３０のサイクルタイムで、パケットアクセスレジスタ３２および中間データレジスタ３４の内容を読み出し／書き込むことが可能である。この結果、パケット処理プロセッサ３０は、パケットデータの読み出し／書き込みのためのオーバヘッドを解消でき、高速に読み出し／書き込み処理を行うことができる。
【００３６】
さらに、パケット処理プロセッサ３０は、パケットアクセスレジスタ３２の各レジスタ間および中間データレジスタ３４の各レジスタ間のデータ移動をパケット処理プロセッサ３０に備わっている命令、例えばデータ転送命令で行うのではなく、命令手順とは関係なく独立にパケット処理プロセッサ３０のクロックによって常時移動するので、パケット処理プロセッサ３０は、上記のデータ移動と同時に演算処理等を実行することができる。このとき、パケット処理プロセッサ３０は、命令手順とは関係なく各レジスタの内容を書きかえることになるが、上記のようにパケット到着時には受信インタフェースがパケット到着信号をパケット処理プロセッサ３０に与え、かつ、パケットアクセスレジスタ３２，中間データレジスタ３４のデータ移動をクロックに同期して行い、さらに、命令手順の各命令がそれぞれ一定クロック数で終了するような命令のみを具備するパケット処理プロセッサ３０とすることによって、命令手順の記述者は、各時点でパケットアクセスレジスタ３２および中間データレジスタ３４にパケットデータまたは処理結果のどの部分を格納しているか判断することができる。
【００３７】
したがって、パケットデータおよびその処理結果が格納されている各レジスタの内容が命令手順とは関係なく書きかわっても、命令手順の記述者が、各時点で各レジスタに格納されている内容を判断して、これを見込んで命令手順を記述することによって、命令手順によるパケットデータおよびその処理結果に対するパケット処理を行うことができる。
【００３８】
上記のように、パケットデータおよびその処理結果を直接読み取り／書き込みする機構を設け、さらにこの機構におけるデータ転送を命令手順とは独立に行うことによって、パケットデータの読み出し／書き込みのためのオーバヘッドを解消し、命令手順に従った高い柔軟性を有する高速なパケット処理を行うことができる。
【００３９】
図５は、本発明装置のパケット処理プロセッサの第１実施例のブロック図を示す。図５においては、パケットアクセスレジスタ３２，中間データレジスタ３４について図３より簡略化している。図６は、このパケット処理プロセッサをパケット中継装置に組み込んだ実施例を示す。また、図７はパケット処理プロセッサ３０が備える命令セットの実施例を示し、図８はパケット処理プロセッサ３０がパケット処理を実行するときの命令手順を図７の命令セットを用いて記述した実施例であり、パケット処理プロセッサ３０がパケット処理を実行するときのデータ転送の動作例である。
【００４０】
パケット処理の具体例として、図５に示すような３２ビット×１６ワードのパケットデータを直接取りこむためのレジスタであるパケットアクセスレジスタ３２とパケットデータに関する処理結果を保持し、伝達するためのレジスタである中間データレジスタ３４を有する構成をとるパケット処理プロセッサ３０が実行するパケット処理の一つのアプリケーションであるヘッダチェックサム計算処理を実行する手順を説明する。
【００４１】
図５において、パケット処理プロセッサ３０は、パケットデータを直接取りこむためのレジスタであるパケットアクセスレジスタ３２とパケットデータに関する処理結果を保持し、伝達するためのレジスタである中間データレジスタ３４を備え、パケット処理を実行する。パケット処理プロセッサ３０は内部でデータを扱うときの基本的な単位である１ワードが３２ビットのアーキテクチャを有しており、汎用レジスタ３６のレジスタr0〜r7、中間データレジスタ３４のレジスタe0〜e7、およびパケットアクセスレジスタのレジスタp0〜p7は、それぞれ３２ビット長とする。
【００４２】
パケット処理プロセッサ３０は図７に示される命令セット( 命令の種類) を有しており、パケット処理プロセッサ３０は各命令を図８に示す命令手順に従って実行する。図８において、各命令を記述するとき用いる命令フォーマットに関しては、「ＭＯＶＥ」等で表現する命令ニモニックの前に必ず「Ａ」や「≠」等の条件コードを付加している。この条件コードと直前の命令の演算結果の評価が一致したならば、パケット処理プロセッサ３０は、該当する命令を実行する。
【００４３】
例えば、パケット処理プロセッサ３０が実行した直前の命令の演算結果が０であり、パケット処理プロセッサ３０が現在実行しようとしている命令の条件コードが「＝」（＝０）ならば、この条件コードが「＝」の命令を実行し、演算結果が０以外ならばパケット処理プロセッサ３０は、条件コードが「＝」の命令を実行せずに、クロックのみを消費する。条件コードとしては、例えば、=(0 と等しい),≠(0と等しくない),<(O より小さい),>(0 より大きい),A(Always; 常に実行) があり、直前の演算結果に対し、条件コードを評価可能な数の各フラグをフラグ・レジスタ３７に備えるようにする。
【００４４】
また、フラグ・レジスタ３７には演算の結果のキャリーを保持するキャリーフラグを設ける。演算命令のフォーマットは、3 つのオペランドを持つときは、「条件コード、命令ニモニック、ディスティネーション・オペランド、ソース・オペランド１、ソースオペランド２」となり、2 つのオペランドを持つときは、「条件コード、命令ニモニック、ディスティネーション・オペランド、ソース・オペランド１」となる。
【００４５】
パケット処理プロセッサ３０がメモリ等から読み出す命令手順は、例えば、パケット中継装置の設計者が記述し、パケット中継装置のメモリ等に格納する。そして、例えば、パケット中継装置の電源投入時にメモリ等が命令手順をパケット処理プロセッサ３０に与え、パケット処理プロセッサ３０はその命令手順の各命令を制御部３８内の命令デコーダ３９によってデコードし、その結果をパケット処理プロセッサ内の制御部３８で保持する。したがって、パケット処理プロセッサ３０が、パケット処理中に命令の読み込み等でクロックを消費することはなく、図７で示した各命令をパケット処理プロセッサ３０は、一定クロック数（一定クロック周期）で実行する。
【００４６】
図５において、パケット処理プロセッサ３０は、図５中のパケットＣのような、ＬＡＮの伝送路の規格の一つであるEthernet上でＩＰによって通信を行っているとき、パケットに対して例えばＩＰヘッダチェックサム計算を実行する。この処理は、ＩＰヘッダが伝送路上を誤りなく伝送されたかを検査する処理である。パケットがパケット処理プロセッサ３０に到着するときは、図６に示すパケット処理プロセッサ３０の前段にあるビットアライメント整合送出器４０が、図５中のパケットＣのＩＰヘッダを３２ビットのアライメントに合うようにして、このパケットＣをパケット処理プロセッサ３０に送り出し、パケット処理プロセッサ３０は、このパケットを受け取る。
【００４７】
図６中、ビットアライメント整合送出器４０は、受信インタフェース４２からの１６ビットの入力に対して、それをパケットＣのＩＰヘッダがちょうどアライメントが取れるように３２ビットにして、パケット処理プロセッサ３０に送出する。以降、図５中のパケットＣの各部分を図５中に示されるように先頭からc0〜c １６と称し、図８の右側のカラムに示す「パケットアクセスレジスタに格納されているパケットＣの部分」を表現するためにも、この表記法を使用する。ＩＰヘッダチェックサム計算は、ＩＰヘッダを３２ビットワードの並びと見なし、それぞれの和を１の補数法で計算し、その結果の上位１６ビットと下位１６ビットを１６ビットワード単位で加算し、その結果の１の補数が０であれば、ＩＰヘッダは誤り無しとする。
【００４８】
ビットアライメント整合送出器４０がパケット処理プロセッサ３０にパケットの先頭を送出すると、ビットアライメント整合送出器４０はパケット到着信号をパケット処理プロセッサに与え、パケット処理プロセッサ３０は図８の命令手順の順序１より順に命令を実行する。パケット処理プロセッサ３０は各命令をすべて一定クロック数で実行する。パケット到着後、パケット処理プロセッサ３０は、初めEthernetヘッダを順にパケットアクセスレジスタp7に格納し、5 クロック目でＩＰヘッダの先頭c4をパケットアクセスレジスタp7に格納する。このデータ移動に関しては、パケット処理プロセッサ３０は命令手順とは独立にパケット処理プロセッサのクロックにより常時命令手順とは無関係に実行する。
【００４９】
パケット処理プロセッサ３０がＩＰヘッダの先頭c4をp7に格納するまでの命令手順の順序１〜4 の問は、パケット処理プロセッサ３０は何もせずに待ち、5 クロック目でパケットアクセスレジスタ３２p7の内容c4を汎用レジスタ３６のレジスタr0にデータ転送する。次のクロックでパケット処理プロセッサ３０は、p7の内容とr0の内容を加算し、その結果をrOに格納する。このとき、パケット処理プロセッサ３０は、直前のクロックでp7に入っていたＩＰヘッダの先頭c4をp6に移動しており、p7に次のc5を格納している。すなわち、命令手順の順序6 の命令は、ＩＰヘッダの先頭c4およびその次のc5を加算し、r0に格納することと同等となる。
【００５０】
次の命令手順の順序7 では、パケット処理プロセッサ３０は、p7に格納したc6とr0の内容を加算し、さらに上記のように和を１の補数法で計算するために、順序6 の加算のキャリーを加算した結果をrOに格納する。同様に命令手順8,9 で、パケット処理プロセッサ３０は、さらにＩＰヘッダのc7とc8をr0に加算し、命令手順の順序10では、即値0(図８中で「$0」と表現し、レジスタ名ではなく値そのものを記述する) と、r0と、順序9 の命令の加算のキャリーを加算し、結果をr0に格納する。以上の加算によって、ＩＰヘッダを３２ビットワードの並びと見なし、それぞれの和を１の補数法で計算した結果を汎用レジスタ３６のレジスタr0に格納したことになる。
【００５１】
さらに、命令手順の順序11でパケット処理プロセッサ３０は、r0の内容をr1にデータ転送し、順序12でr0の内容を１６ビット分下位にシフトすることによって、加算した結果の上位１６ビットと下位１６ビットをそれぞれr0とr1に格納する。命令手順の順序13でパケット処理プロセッサ３０は、１６ビットのワード単位でr0とr1を加算した結果をr0に格納し、命令手順の順序10でパケット処理プロセッサ３０は、１６ビットワード単位でr0の１の補数をとる。命令手順の順序11では、命令ニモニック「ＭＯＶＥ」の前の条件コードが「≠」なので、パケット処理プロセッサ３０は、直前の順序10の命令の結果が０でなかったならば、中問データレジスタe0に即値１を格納する。
【００５２】
次のクロックでは、パケット処理プロセッサ３０は、e0の内容をパケット処理プロセッサ３０の外に送出するので、これによって、パケットデータに付随する情報として、ＩＰヘッダチェックサム計算の結果をパケット処理プロセッサ３０外に伝達することができ、パケット処理プロセッサ３０は、パケットの先頭の到着から9 クロック目の中間データレジスタ３４の内容が１ならば、ＩＰヘッダに誤りがあることを判別することができる。
【００５３】
図６に示すパケット中継装置４１は、受信インタフェース４２でパケットを受信した後、その受信パケットをビットアラインメント整合送出器４０で整合してパケット処理プロセッサ３０に供給し、ここでチェックサムの計算、宛先テーブルの検索、パケット・ヘッダの書き換え等のパケット処理を受信パケットに対して行った後に、決定した宛先情報等のパケットに付随する情報と共にスイッチ・ファブリック４４にパケットを送る。そして、パケット中継装置４１は、スイッチ・ファブリック４４から決定した宛先に従って、適切な送信インタフェース４５にパケットを送り、送信インタフェース４５からＬＡＮにパケットを送出してパケットを中継する。
【００５４】
以上のような、クロックに同期したレジスタ間のデータ移動を見込んだ命令手順をパケット処理プロセッサ３０が実行することによって、パケット処理プロセッサ３０はパケット処理のアプリケーションの一つであるＩＰヘッダチェックサム計算を実行し、その結果をパケット処理プロセッサ外に伝達することができる。
【００５５】
このように、パケット処理プロセッサ３０がパケットデータおよびその処理結果をレジスタに直接取りこみシフトして送出することを命令手順とは独立して、それを見込んだ命令手順を実行することによって、命令手順を変えれば様々な処理を実行することができるという命令特有の柔軟性を有しながら、高速にパケット処理を実行することができる。
【００５６】
上記実施例は、パケット処理のアプリケーションの一つであるＩＰヘッダチェックサムの実行例であるが、命令手順を変更し、上記と同様にパケットデータおよび処理結果に関する処理をパケット処理プロセッサ３０が実行することによって、他のパケット処理も上記と同様にパケット処理プロセッサ３０は実行することが可能である。
【００５７】
上記実施例では、図６中でパケット処理プロセッサ３０より前の処理段階にビットアライメント整合送出器４０があったが、ビットアライメントの整合を取る処理をパケット処理プロセッサ３０がパケット処理とともに命令によって実行しても、上記と同様にパケット処理を実行することが可能である。命令手順をパケット処理プロセッサ３０に与え、それを保持する方法としては、上記実施例以外の例えば命令のデコード結果を外部から与える方法や、プロセッサ外部の専用のメモリに保持する方法等があり、いずれの方法にしても、１クロックに限らず一定クロック数で各命令が終了する限り、パケットデータのデータシフト機構と命令手順の同期が取れ、上記と同様にパケット処理プロセッサ３０はパケット処理を高速に実行することができる。
【００５８】
また、上記実施例では、パケット処理プロセッサ３０の駆動クロックスピードとパケットアクセスレジスタ３２と中間データレジスタ３４のデータシフト機構の駆動クロックスピードが同一のクロックスピードとなっていたが、パケット処理プロセッサ３０の駆動クロックスピードを外部の回路に対して2 倍として、データの取りこみ及びデータのシフトおよびデータの送出をプロセッサの駆動クロックの2 回に１回実行するようにしても、命令手順でそのことを見込むことによって、上記と同様にパケット処理を高速に実行することができる。駆動クロックに関しては、パケット処理プロセッサとデータシフト機構を同期するようにすれば、倍率に関係なく、上記実施例と同様にパケット処理プロセッサ３０はパケット処理を高速に実行することができる。
【００５９】
上記実施例では、パケット処理プロセッサがパケットアクセスレジスタにパケットデータの実体を格納し、パケットアクセスレジスタ内を移動するようにしているが、実際にパケットアクセスレジスタに格納するものは、パケットデータの実体に限定されず、パケットデータを指し示すポインタを格納しても良い。
また、上記実施例では、パケットアクセスレジスタ内のデータの移動に関して、クロックに同期して各レジスタ間をパケットデータが移動するような構成としているが、パケットデータが移動するのではなく、命令で指定するレジスタ名が例えば同じp0であっても、命令を実行するクロックサイクルに応じてセレクタが選択するレジスタを順次変更することによって、パケットアクセスレジスタ内のパケットデータの移動を実現しても良い。
【００６０】
図９は、本発明装置のパケット処理プロセッサの第２実施例のブロック図を示す。図９のパケット処理プロセッサは、中間データレジスタ３４を具備せず、パケットアクセスレジスタ３２を具備する形態を有し、そのような形態であっても処理可能なパケット処理を実行する。中間データレジスタ３４は、パケットデータに付随するパケットデータに対する処理結果やパケットデータに関する属性情報をパケット処理プロセッサ３０の外部に伝達すること、およびパケット処理プロセッサ３０外部から受信することを可能とする機構であるが、パケット処理プロセッサ３０が実行するパケット処理の内容によっては、中問データレジスタがなく、パケットアクセスレジスタ３２があることによって、パケット処理プロセッサ３０はパケット処理を実行することができる。
【００６１】
パケット処理の内容がパケットデータを読み込み、読み込んだパケットデータに対する処理を実行し、処理結果をパケットデータのみに反映させる処理であるならば、パケットアクセスレジスタ３２のみによって、パケット処理を実行することが可能である。例えば、このような処理としては、パケット処理の一つのアプリケーションであるＩＰヘッダチェック再計算がある。ＩＰヘッダチェック再計算は、ＩＰヘッダチェックサム計算とは逆に、ＩＰヘッダを読み込み、計算したチェックサム値をＩＰヘッダのチェックサムフィールドに書き込む処理であるので、パケットデータに付随するパケットデータに対する処理結果やパケットデータに関する属性情報をパケット処理プロセッサ３０外に伝達したり、パケット処理プロセッサ３０外部から受信する必要は無く、このＩＰヘッダチェックサム再計算を、パケット処理プロセッサ３０はパケットアクセスレジスタ３２があれば実行することができる。
【００６２】
図１０は、本発明装置のパケット処理プロセッサの第３実施例のブロック図を示す。図１０に示すようにパケット処理プロセッサ３０内に宛先テーブル等を格納する検索メモリ５０を構築する。パケット処理プロセッサ３０は、プロセッサ内の検索メモリ５０を検索することにより、パケットヘッダ内の宛先アドレスに従って送出インタフェース、すなわち送出するＬＡＮを判断する等のパケット処理を実行する。
【００６３】
パケット処理プロセッサ３０は、検索メモリ５０に、パケットヘッダのアドレスに対する出力先のような対応関係を示すテーブルを格納し、パケット処理において、このテーブルを検索することにより、パケット処理プロセッサ３０は、パケット処理に必要なパケットを送出するインタフェース番号等の情報を得ることができる。例えば、検索メモリ５０にEthernetヘッダの宛先アドレス( 図１０に示すパケットＣにおけるＤＡ：Destination Addressn）に対する送出インタフェース番号を示すテーブル( フォワーディンク・テーブル) を格納し、宛先アドレスを検索キーとして、検索メモリ５０を検索することによって、その宛先アドレスを保持するパケットを送出するインタフェース番号を得ることができる。
【００６４】
図１０において検索メモリ５０は、１エントリが６４ビットの構成を取り、その検索動作は、パケット処理プロセッサ３０が検索キーの内容を検索キーレジスタ５１，５２( k0,k1)に命令に従ってセットすると、検索メモリ制御部５４が命令手順とは独立に検索メモリ５０の各エントリと、検索キーレジスタ５１，５２の内容とを比較し、検索キーレジスタ５１，５２の内容に該当するエントリの内容をヒットコンテンツ・レジスタ５５，５６( h1,h2)に出力する。また、検索メモリ制御部５４は、該当するエントリが存在したか否かの情報を検索フラグレジスタ５８( hf) に出力する。
【００６５】
このとき、パケット処理プロセッサ３０が、命令手順によってパケット処理を行うためには、検索メモリ５０が格納しているエントリ数に関係なく( エントリ数が増えても) 、パケット処理プロセッサ３０は必ず一定クロック数で検索結果を得ることが必要である。上記の検索が一定クロック数で終了せずに、パケット処理プロセッサ３０が一定クロック数で検索結果を得ることができないと、データ移動と命令手順が同期せず、ある時点でパケット処理プロセッサ３０が各レジスタに何のデータを格納したか、命令手順の記述者は、判断することができない。したがって、検索メモリ制御部５４は、検索メモリ５０の各エントリと検索キーレジスタ５１，５２の内容との比較を一エントリずつではなく、検索キーと全エントリをパラレルに同時比較するようにする。このような比較を実現するメモリデバイスとしては、例えば、内容アドレスメモリ（CAM ：Content Addressable Memory）がある。
【００６６】
このように、パケット処理プロセッサ３０が例えばCAM を用いた検索メモリ５０を検索キーレジスタ５１，５２を介してアクセスすることにより、パケットアクセスレジスタ３２および中間データレジスタ３４のデータ移動と同期して、パケット処理プロセッサ３０は検索結果を得ることができるので、命令によってパケットアクセスレジスタ３２および中間データレジスタ３４に、その検索結果を反映させることができる。したがって、図１０に示されるような検索メモリ５０を備えたパケット処理プロセッサによって、テーブルの検索を行うパケット処理を実行することができる。
【００６７】
上記実施例においては、検索メモリ５０の１エントリが６４ビット長で、検索キーレジスタ５１，５２が３２ビット長で2 個、検索結果を得るレジスタ５５，５６が３２ビット長で2 個、検索結果の状態を知るレジスタ５８が１個の構成となっていたが、これらの検索メモリ５０のエントリ長やレジスタ数等が変わっても、パケット処理プロセッサ３０が一定クロック数で検索結果を得ることができ、パケットアクセスレジスタ３２、中間データレジスタ３４データ移動と同期することが可能な検索メモリ５０機構である限り、上記と同様にパケット処理プロセッサ３０がパケット処理を実行することが可能である。
【００６８】
図１１は、本発明装置のパケット処理プロセッサ３０を用いたパケットデータ処理装置の第１実施例の構成図を示す。図１１では３個のパケット処理プロセッサ３０Ａ，３０Ｂ，３０Ｃを直列に接続し、パケット処理プロセッサ３０Ａ，３０Ｂの中間データレジスタ３４およびパケットアクセスレジスタ３２からのデータ送出先を、次のパケット処理プロセッサ３０Ｂ，３０Ｃのデータ入力としてパケット処理を実行する。これら３個のパケット処理プロセッサ３０Ａ，３０Ｂ，３０Ｃ間を単一の集積回路のチップ内配線によって直接接続し、前段のパケット処理プロセッサは１クロックで次段のパケット処理プロセッサにデータを転送することができるようにする。
【００６９】
図１２に上記構成のパケットデータ処理装置の各パケット処理プロセッサ３０Ａ，３０Ｂ，３０Ｃが実行する命令手順を、通し番号による時系列に沿って記述する。このパケット処理は、例えばパケット処理プロセッサ３０ＡによるＩＰヘッダ長チェック、パケット処理プロセッサ３０ＢによるＩＰヘッダチェックサム計算、パケット処理プロセッサ３０ＣによるＴＴＬ（Time to Live）の減算である。
【００７０】
ＩＰヘッダ長チェックは、ＩＰヘッダ内のＩＰヘッダ長フィールド( 図１１中のパケットＣの拡大図) に格納されている値が５よりも小さい不正な値になっていないか検査する処理である。ＩＰヘッダチェックサム計算は、前述の処理と同じ処理である。ＴＴＬの減算は、ＩＰヘッダ内のＴＴＬフィールド内の値を減らす処理であり、パケットがパケット中継装置を通過する度に１つＴＴＬフィールドの値が減らされ、減算した結果が０になったパケットについてはパケット中継装置で中継しない。これによりパケットが網構成の誤り等によって永遠に中継されつづけないようにしている。
【００７１】
図１１において、初めパケット処理プロセッサ３０ＡがパケットＣを先頭から読み込み、図１２のパケット処理プロセッサ３０Ａの命令手順の順序１より順に、パケット処理の一つのアプリケーションであるＩＰヘッダ長チェックを実行してパケットＣをパケット処理プロセッサ３０Ｂに送出する。次に、パケット処理プロセッサ３０ＢがパケットＣを先頭から読み込み、図１２のパケット処理プロセッサ３０Ｂの命令手順の順序１より順に、パケット処理の一つのアプリケーションであるＩＰヘッダチェックサム計算を実行してパケット処理プロセッサ３０ＣにパケットＣを送出する。次に、パケット処理プロセッサ３０ＣがパケットＣを先頭から読み込み、図１２のパケット処理プロセッサ３０Ｃの命令手順の順序１より順に、パケット処理の一つのアプリケ一ションであるＴＴＬの減算を実行する。
【００７２】
図１２中の通し番号17〜23においてパケット処理プロセッサ３０Ｂの命令手順とパケット処理プロセッサ３０Ｃの命令手順は重なっており、この２つのパケット処理プロセッサ３０は、この時間において同時にパケットＣに関する処理を実行する。ＩＰヘッダ長チェックを実行する図１２のパケット処理プロセッサ３０Ａの命令手順においては、パケットＣのＩＰヘッダのＩＰヘッダ長フィールドがパケット処理プロセッサ３０Ａに到着するまでに、パケット処理プロセッサ３０Ａは、ＩＰヘッダ長フィールドを抽出するためのビットパターンを命令手順の順序２〜４の命令によって、汎用レジスタ３６のレジスタr1に作成し、命令手順の順序5,6 の命令によってＩＰヘッダ長フィールドをレジスタr0に抽出し、命令手順の順序7 の命令によって、最低ヘッダ長の即値５を減じ、命令手順の順序8 の命令によって、その結果が負かどうかに応じ中間データレジスタ３４に対応する値を書き込む。これによって、パケット処理プロセッサ３０Ａはチェックした結果をパケット処理プロセッサ外部に伝達する。
【００７３】
ＩＰヘッダチェックサム計算処理を実行する図１２のパケット処理プロセッサ３０Ｂの命令手順は、図８に示す命令手順と同様であり、パケット処理プロセッサ３０Ｂは、図５に示すパケット処理プロセッサと同様のパケット処理を実行する。
ＴＴＬの減算を実行する図１２のパケット処理プロセッサ３０Ｃの命令手順においては、パケットＣのＩＰヘッダのＴＴＬフィールドがパケット処理プロセッサ３０Ｃに到着するまでに、パケット処理プロセッサ３０Ｃは、ＴＴＬ以外のフィールドを抽出するためのビットパターンを命令手順の順序4 〜6 の命令によって汎用レジスタ３６のレジスタr3に作成し、命令手順の順序7,8 の命令によって、ＴＴＬフィールドをレジスタr1に抽出し、命令手順の順序9 の命令によって、即値１を減じ、命令手順の順序10の命令によって、その結果が０かどうかに応じて、中間データレジスタ３４に対応する値を書き込む。
【００７４】
さらに、命令手順の順序11〜13の命令によって、パケット処理プロセッサ３０Ｃは、ＴＴＬフィールドとそれ以外のフィールドを合わせて、パケットアクセスレジスタ３２ヘ格納し、パケットヘッダのＴＴＬフィールドに関する更新を実行する。パケット処理プロセッサ３０Ｃは中間データレジスタ３４に対応する値を書き込んでいるので、例えば次処理段のスイッチ・ファブリック４４がこの値を受取り、スイッチ・ファブリック４４がこのパケットを中継しない等の処理を実行することが可能である。
【００７５】
上記の命令手順では、一つのパケットＣに関してのみの命令手順を述べたが、パケットはある間隔を置いて連続的に到着しており、例えばパケット処理プロセッサ３０Ａの時系列の通し番号20からは、次のパケットＤの処理を実行するといった、複数プロセッサによるパイプライン処理を実行することが可能である。また、通し番号17〜23においてパケット処理プロセッサ３０Ｂとパケット処理プロセッサ３０Ｃが同時にパケットＣに関する処理を実行しているが、これもある一つのパケットＣに関して、2 つのパケット処理プロセッサ３０がパイプライン処理していることになる。
【００７６】
このように、図１１に示されるような複数のパケット処理プロセッサを直列に接続する構成を取り、図１２に示されるような命令手順で各パケット処理プロセッサ３０Ａ，３０Ｂ，３０Ｃがパケット処理を実行することによって、パケット処理をパイプライン化して処理することができ、より多くの処理量を持ったパケット処理を高速に実行することが可能となる効果がある。上記の実施の形態においては、各パケット処理プロセッサがＩＰヘッダ長チェック、ＩＰヘッダチェックサム計算、ＴＴＬの減算という、パケット処理におけるある論理的な塊を実行するような形態としたが、ある一つのパケット処理プロセッサで実行する処理の総クロック数が許す限り、ある一つのパケット処理プロセッサ３０Ａが、ＩＰヘッダ長チェックとＩＰヘッダチェックサム計算の途中まで、といったパケット処理におけるある論理的な塊にとらわれない処理を行うことも可能である。
【００７７】
図１３は、本発明装置のパケット処理プロセッサ３０を用いたパケットデータ処理装置の第２実施例の構成図を示す。図１３では３個のパケット処理プロセッサ３０Ａ，３０Ｂ，３０Ｃを直列に接続し、パケット処理プロセッサ３０Ａ，３０Ｂの中間データレジスタ３４およびパケットアクセスレジスタ３２からのデータ送出先を、次のパケット処理プロセッサ３０Ｂ，３０Ｃのデータ入力としてパケット処理を実行する。さらに、これら3 個のプロセッサがデータを共有するための領域として、グローバルレジスタ（共有レジスタ）６０を設ける構成とする。
【００７８】
グローバルレジスタ６０は、例えば、ビット長３２ビットの８個のレジスタg0〜g7で構成され、各パケット処理プロセッサ３０Ａ，３０Ｂ，３０Ｃと共に単一の集積回路のチップ内配線によって直接接続する。したがって、各パケット処理プロセッサ３０Ａ，３０Ｂ，３０Ｃは、パケット処理プロセッサ内のレジスタと同様に命令によってグローバルレジスタ６０を直接アクセスすることが可能である。
【００７９】
グローバルレジスタ６０は、汎用レジスタ３６と同様にデータの出力または入力対象となる特定のレジスタg0〜g7を選択するセレクタ６１，６２を隣接して持ち、各パケット処理プロセッサ３０Ａ，３０Ｂ，３０Ｃがこのセレクタヘ選択信号を与える回路機構とする。セレクタ６１は、各パケット処理プロセッサ３０Ａ，３０Ｂ，３０Ｃのパケットアクセスレジスタ３２から読み出す特定のレジスタg0〜g7を選択する信号を受け取り、各選択信号に従ってレジスタg0〜g7を選択する。そして、各パケット処理プロセッサ３０Ａ，３０Ｂ，３０Ｃは、同時にそれぞれ特定のレジスタからデータを読み出す。
【００８０】
一方、グローバルレジスタ６０は、複数のプロセッサの共有領域であるので、同一時点で各プロセッサからの書き込みが同時に発生する可能性がある。しかし、各パケット処理プロセッサ３０Ａ，３０Ｂ，３０Ｃの処理はパケットに同期しており、各時点でどのプロセッサがどの命令を処理するかを把握可能であるため、これを回避するように事前に装置設計者が命令手順を作成すれば、競合を調停する機構は不要となる。
【００８１】
従って、例えばセレクタ６２が各パケット処理プロセッサ３０Ａ，３０Ｂ，３０Ｃから書き込み先のレジスタg0〜g7を選択するための各選択信号を受け取った際に、単純にパケット処理プロセッサ３０Ａ，３０Ｂ，３０Ｃ順に優先して選択し、それに従って、一つのレジスタg0〜g7を選択する。このグローバルレジスタ６０を設けることによって、パケット処理プロセッサ３０Ａ，３０Ｂ，３０Ｃ間で、例えばパケット処理プロセッサ３０Ａからパケット処理プロセッサ３０Ｂからパケット処理プロセッサ３０Ｃというような一方向のデータ伝達以外に、あるプロセッサが書き込んだ後、即座に他のプロセッサが読み出す等のデータ伝達を行うことができる。
【００８２】
これによって、例えば、通常一つのパケット処理プロセッサを用いて、そのパケット処理プロセッサ３０の汎用レジスタ３６を使用して実行するパケット処理を、2 つのパケット処理プロセッサとグローバルレジスタ６０を使用して、パラレルに同時処理することによって、より高速にパケット処理を実行することができる。
【００８３】
例えば、これを図１２の命令手順を用いて示すと、パケット処理プロセッサ３０Ｃの命令手順では、必要なパケット内のフィールドが到着するまでの待ち時間を利用して、後に使用するビットパターンを生成することによって( 順序4 〜6)、効率化をはかっているが、このような時間が存在しない場合は、パケット処理プロセッサ３０Ｂの命令手順の最後の順序15以降でこのビットパターンを生成し、グローバルレジスタ６０ヘ書き込み、これをパケット処理プロセッサ３０Ｃが利用することによって、パケット処理プロセッサ３０Ｃでは、自身でビットパターンを生成するより少ないクロック数で効率的に命令を処理を実行することができる。以上のように、グローバルレジスタ６０を設けることによって、個々のパケット処理プロセッサ間の命令手順の最適化の余地が増える効果がある。
【００８４】
また、グローバルレジスタ６０は、上記のパケット処理時のパケットデータの処理対象データの局所性に当てはまらず例えばパケット処理プロセッサ３０Ａ内のパケットアクセスレジスタ３２の範囲にパケットデータが納まらないときに、このパケットアクセスレジスタ３２の範囲に納まらないパケットデータの部分をグローバルレジスタ６０に格納することによって、次段のパケット処理プロセッサ３０Ｂや３０Ｃがこのデータを参照することができる。
【００８５】
また、グローバルレジスタ６０は、データ伝達手段としてではなく、個々のパケット処理プロセッサ３０Ａ，３０Ｂ，３０Ｃの汎用レジスタ３６としても利用することができ、個々のパケット処理プロセッサの汎用レジスタの数を増やさなくても、プロセッサ間でグローバルレジスタ６０の利用を多重化することによって、実質的に各パケット処理プロセッサが利用することができる汎用レジスタ３６の数を増やすことができる。
【００８６】
図１４は、本発明装置のパケット処理プロセッサの第４実施例のブロック図を示す。このパケット処理プロセッサ３０は、データをパケット処理プロセッサ外から書き込む位置を変更する書き込み位置変更機構を有する。図１５は、図１４のパケット処理プロセッサ３０の書き込み位置変更機構の動作原理図を示す。書き込み位置変更機構は、図１５に示すように、パケットアクセスレジスタ１３２および中間データレジスタ１３４に対して、パケット処理プロセッサ外からデータを書き込む位置を、設定によってパケットアクセスレジスタ１３２のレジスタp7〜p0のいずれか、中間データレジスタ１３４のレジスタe7〜e0のいずれかに変更することを可能とする機構である。
【００８７】
例えば、図１５においては、パケット処理プロセッサ３０は、パケット処理プロセッサ外からパケットアクセスレジスタ１３２のp4と中間データレジスタ１３４のe4にデータを書き込み、クロックに同期してp3/e3,p2/e2,p1/e1pを経由させて、パケットアクセスレジスタ１３２のp0と中間データレジスタ１３４のe0からデータを送出する。
【００８８】
書き込み位置の変更は、例えば、図１４に示す制御部３８がパケットアクセスレジスタ１３２のセレクタsp0 〜sp7 と、中間データレジスタ１３４のセレクタse0 〜se7 に与える選択信号を保持するレジスタを設け、外部の装置管理プロセッサ等により動作開始前に選択信号を書き込んでおく等の方法で実現する。
書き込み位置変更機構は、パケット処理プロセッサ３０が、例えばパケットデータを各レジスタp7〜p0間に介在する各セレクタsp0 〜sp7 ヘ入力し、各セレクタsp0 〜sp7 は、上記の書き込み位置の設定情報をもとに、パケットデータを次段のレジスタヘ送出するか、前のレジスタの内容を次段のレジスタヘ送出するか決定する機構とする。
【００８９】
中間データに対するデータの書き込み機構も同様の機構とする。以上のように動作するセレクタsp〜sp7 及びse0 〜se7 を設けることによって、書き込み位置を変更することが可能となる書き込み位置変更機構によって、パケット処理プロセッサ３０が実行するパケット処理の内容に応じて、書き込み位置を変更し、パケットの各部分がパケット処理プロセッサ内にとどまっている時間を調節し短くすることができる。
【００９０】
例えば、図１２のパケット処理プロセッサ３０Ａを図１４の構成とすれば、パケット処理プロセッサ３０Ａが実行するＩＰヘッダ長チェックにおいては、命令手順の順序5 でパケットアクセスレジスタ３２のp7を参照しているだけなので、書き込み位置を変更しパケットデータが通過するプロセッサ内のパケットアクセスレジスタ３２の数を１つにして、プロセッサ内にとどまっている時間を短くすることができる。しかし、これは処理内容に依存しており、図１２のパケット処理プロセッサ３０Ｃが実行するＴＴＬの減算においては、命令手順の順序7 でパケットアクセスレジスタ３２のp7を参照し、後に命令手順の順序13でパケットアクセスレジスタ３２のp0に書き込みを行っているので、書き込み位置を変更して、あるパケットに対し同時にアクセスできる範囲を、これより狭く変更することはできない。したがって、書き込み位置は、装置設計者がパケット処理プロセッサ３０が実行する処理内容に応じてあらかじめ設定することにする。
【００９１】
図１６は、本発明装置のパケット処理プロセッサの第５実施例のブロック図を示す。このパケット処理プロセッサ３０は、データをパケット処理プロセッサ外に送り出す位置を変更する送り出し位置変更機構を有する。図１７は、図１６のパケット処理プロセッサ３０の送り出し位置変更機構の動作原理図を示す。送り出し位置変更機構は、図１７に示すように、パケットアクセスレジスタ２３２および中間データレジスタ２３４から、パケット処理プロセッサ外にデータを送り出す位置を、設定によってパケットアクセスレジスタ２３２のレジスタp7〜p0のいずれか、中間データレジスタ２３４のレジスタe7〜e0のいずれかに変更することを可能とする機構である。
【００９２】
例えば、図１７においては、パケット処理プロセッサ３０は、パケットアクセスレジスタ２３２のp7と図１７中の中間データレジスタ２３４のe7ヘデータを書き込み、クロックに同期してp6/e6,p5/e5 を経由させて、パケットアクセスレジスタ２３２のp4と中間データレジスタ２３４のe4からデータが送出する。さらに、送り出し位置変更機構においては、パケットアクセスレジスタ２３２が、すでに次段の処理部に入力したデータに関しても、e3/p3,e2/p2,e1/p1,e0/p0 の順に通過させ、これらのデータに関して、パケット処理プロセッサ３０がレジスタe3/p3,e2/p2,e1/p1,e0/p0 にデータを書き込んでも、パケット処理プロセッサ３０が、そのデータをパケット処理プロセッサ外に伝達することはないが、既に次段の処理部に入力したデータを読み込むことはできる。
【００９３】
送り出し位置の変更は、例えば、図１６に示す制御部３８がパケットアクセスレジスタ２３２のセレクタsp10と、中間データレジスタ２３４のセレクタse10に与える選択信号を与えるレジスタを設け、外部の装置管理プロセッサにより動作開始前に書き込んでおく等の方法で実現する。
送り出し位置の変更機構は、パケットアクセスレジスタ２３２のp0〜p7のパケットデータをすべて一つのセレクタsp10に入力し、このセレクタsp10が上記の送り出し位置の設定情報をもとに、どのデータをプロセッサ外部に送出するか選択する機構とする。そして、セレクタsp10とは関係なく、レジスタp0〜p7間でデータを移動するので、パケット処理プロセッサ３０が次段の処理部に供給したデータを、レジスタp0〜p7のいずれかから読み込み再使用することが可能となる。
【００９４】
中間データからのデータの送り出し機構も同様の機構とする。以上のように動作するセレクタsp10及びse10を設けることによって、送り出し位置を変更することが可能となる送り出し位置変更機構を構築する。
上記の送り出し位置変更機構によって、パケット処理プロセッサ３０が実行するパケット処理の内容に応じて送り出し位置を変更し、パケットの各部分がパケット処理プロセッサ内にとどまっている時間を調節し短くすることができることに加えて、次段の処理部に向けて出力したデータも引き続き送り出し位置以降のパケットアクセスレジスタ２３２に残るため、参照することができる。
【００９５】
図１４の書き込み位置変更機構を具備するパケット処理プロセッサ３０においては、パケット処理プロセッサ３０が、あるパケットデータを取りこんだ後、一定クロック数後にそれを参照する処理を行うため、パケットの各部分がパケット処理プロセッサ内にとどまっている時間を短くできなかった場合でも、図１６の実施例では、次段の処理部に入力したデータも引き続き参照することができることによって、この時間を短くすることができる効果がある。
【００９６】
以上説明したように、本発明によれば、パケットデータを直接取りこむレジスタ３２，３４をパケット処理プロセッサ３０内に設けることによって、さらに、レジスタ３２，３４内でデータを順次シフトしていき、特定の範囲のデータを参照する構成とすることで必要となるレジスタ容量を抑え、上記のレジスタ３２，３４をパケット処理プロセッサ３０内に実装可能とすることによって、パケットデータのデータ転送に関するメモリヘの読み出し／書き込み処理のオーバヘッドを解消することができる。
【００９７】
また、上記メモリヘの読み出し／書き込み処理のオーバヘッドを解消することによって、高速なパケット処理を実現することができる効果がある。また、データを順次シフトしていく機構のデータ転送と、パケット処理プロセッサの命令実行との同期をとることによって、命令手順に従ってパケット処理を実行することができ、高い柔軟性を有するパケット処理を高速に実行することができる。
【００９８】
また、パケットデータに対する処理結果を保持し転送するレジスタをパケット処理プロセッサ内に設け、このレジスタとパケットデータを直接取りこむレジスタとのデータ転送の同期をとることによって、パケットデータとその処理結果が格納されている場所の各対応関係を示す特別な機構を構築しなくても済む。
また、複数の本発明パケット処理プロセッサを直列に接続しパケット処理をパイプライン化して実行するときに、パケット処理プロセッサ間でデータ共有するグローバルレジスタ６０を設けることによって、パケット処理プロセッサ間でパケット処理を最適化することができる。
【００９９】
また、パケット処理プロセッサのパケットデータを取りこむレジスタにおける書き込み位置を変更することができる機構を設けることによって、パケット処理プロセッサ内にパケットデータがとどまっている時間を調節することができる。また、パケット処理プロセッサのパケットデータを取りこむレジスタにおけるパケットデータを送り出す位置を変更することができる機構を設けることによって、パケット処理プロセッサ内にパケットがとどまっている時間を調節することができることに加えて、次段の処理部に入力したパケットデータを引き続き参照することができる。これによって、書き込み位置を変更することができる機構を具備するパケット処理プロセッサにおいては、パケット処理プロセッサ内にパケットデータがとどまっている時間を短くすることができなかった場合でも、この時間を短くすることができる。
【０１００】
【発明の効果】
上述の如く、請求項１に記載の発明は、複数のレジスタから構成されており、前記受信したパケットを先頭からクロックに同期して前記複数のレジスタ間で順次シフトして外部に伝達し、前記複数のレジスタのいずれかを前記プロセッサから処理のためにアクセスされるパケットデータアクセス機構と、複数のレジスタから構成されており、前記受信したパケットに対する処理結果である中間データを前記クロックに同期して前記複数のレジスタ間で順次シフトして外部に伝達する中間データ保持転送機構を有する。
【０１０１】
このように、受信したパケットを先頭からクロックに同期して複数のレジスタ間で順次シフトして外部に伝達するパケットデータアクセス機構を有するため、パケットデータをレジスタに取りこみシフトして送出することを命令手順とは独立して行い、それを見込んだプロセッサの命令手順を実行することによって、柔軟性を有しながら高速にパケット処理を実行することができ、受信したパケットに対する処理結果である中間データをクロックに同期して複数のレジスタ間で順次シフトして外部に伝達する中間データ保持転送機構を有するため、中間データをレジスタに取りこみシフトして送出することを命令手順とは独立して行い、それを見込んだプロセッサの命令手順を実行することによって、柔軟性を有しながら高速にパケット処理を実行することができる。
【０１０３】
請求項２に記載の発明は、パケットのデータを用いて検索され、前記パケットのデータに対応するデータが読み出される検索テーブルを有する。
このように、パケットのデータを用いて検索される検索テーブルを有するため、パケット処理に必要なインタフェース番号等の情報を得ることができる。
請求項３に記載の発明は、複数のパケットデータ処理装置を直列接続した。
【０１０４】
このように、複数のパケットデータ処理装置を直列接続したことにより、複数のパケットデータ処理装置によるパイプライン処理を実行することが可能となり、パケット処理を高速に実行することができる。
請求項４に記載の発明は、直列接続した複数のパケットデータ処理装置からアクセスされ、前記複数のパケットデータ処理装置間でデータを共有する共有レジスタを有する。
【０１０５】
このように、複数のパケットデータ処理装置間でデータを共有する共有レジスタを有するため、複数のパケットデータ処理装置と共有レジスタを使用して、パラレルに同時処理することができ、より高速にパケット処理を実行することができる。
請求項５に記載の発明は、パケットデータアクセス機構または中間データ保持転送機構を構成する複数のレジスタに対する外部から伝達されたデータの書き込み位置を変更する書き込み位置変更機構を有する。
【０１０６】
このように、パケットデータアクセス機構または中間データ保持転送機構のレジスタに対する外部から伝達されたデータの書き込み位置を変更する書き込み位置変更機構を有するため、パケットの各部分がパケット処理プロセッサ内にとどまっている時間を調節し短くすることができる。
請求項６に記載の発明は、パケットデータアクセス機構または中間データ保持転送機構を構成する複数のレジスタから外部に伝達するデータの読み出し位置を変更する読み出し位置変更手段を有する。
【０１０７】
このように、パケットデータアクセス機構または中間データ保持転送機構のレジスタから外部に伝達するデータの読み出し位置を変更する読み出し位置変更手段を有するため、次段に向けて出力したデータも引き続きパケットデータアクセス機構または中間データ保持転送機構に残り、この残ったデータを参照することができる。
【図面の簡単な説明】
【図１】プロセッサによってパケット処理を行う従来装置の構成図である。
【図２】従来のパケット中継装置の構成図である。
【図３】本発明装置のパケット処理プロセッサの第１実施例のブロック図である。
【図４】図３のパケット処理プロセッサのデータ転送動作原理図である。
【図５】本発明装置のパケット処理プロセッサの第１実施例のブロック図である。
【図６】図５のパケット処理プロセッサを組み込んだパケット中継装置のブロック図である。
【図７】パケット処理プロセッサ３０が備える命令セットの実施例を示す図である。
【図８】パケット処理プロセッサ３０がパケット処理を実行するときの命令手順を図７の命令セットを用いて記述した実施例を示す図である。
【図９】本発明装置のパケット処理プロセッサの第２実施例のブロック図である。
【図１０】本発明装置のパケット処理プロセッサの第３実施例のブロック図である。
【図１１】本発明装置のパケット処理プロセッサ３０を用いたパケットデータ処理装置の第１実施例の構成図である。
【図１２】パケットデータ処理装置の各パケット処理プロセッサ３０Ａ，３０Ｂ，３０Ｃが実行する命令手順を記述した実施例を示す図である。
【図１３】本発明装置のパケット処理プロセッサ３０を用いたパケットデータ処理装置の第２実施例の構成図である。
【図１４】本発明装置のパケット処理プロセッサの第４実施例のブロック図である。
【図１５】図１４のパケット処理プロセッサ３０の書き込み位置変更機構の動作原理図である。
【図１６】本発明装置のパケット処理プロセッサの第５実施例のブロック図である。
【図１７】図１６のパケット処理プロセッサ３０の送り出し位置変更機構の動作原理図である。
【符号の説明】
３０  パケット処理プロセッサ
３２  パケットアクセスレジスタ
３４  中間データレジスタ
４１  パケット中継装置
４２  受信インタフェース
４４  スイッチ・ファブリック
４５  送信インタフェース
５０  検索メモリ
５１，５２  検索キーレジスタ
５４  検索メモリ制御部
５５，５６  ヒットコンテンツ・レジスタ
５８  検索フラグレジスタ５８
【図１】
0003742250.tif 000002
【図２】
0003742250.tif 000003
【図３】
0003742250.tif 000004
【図４】
0003742250.tif 000005
【図５】
0003742250.tif 000006
【図６】
0003742250.tif 000007
【図７】
0003742250.tif 000008
【図８】
0003742250.tif 000009
【図９】
0003742250.tif 000010
【図１０】
0003742250.tif 000011
【図１１】
0003742250.tif 000012
【図１２】
0003742250.tif 000013
【図１３】
0003742250.tif 000014
【図１４】
0003742250.tif 000015
【図１５】
0003742250.tif 000016
【図１６】
0003742250.tif 000017
【図１７】
0003742250.tif 000018