(57)【特許請求の範囲】
【請求項１】
命令を実行することにより所定のパケット処理を行うパケット処理プロセッサを有するパケット処理装置であって、
前記パケット処理プロセッサは、
複数の第１のレジスタを含んで構成されており、受信したパケットデータを先頭から順に前記第１のレジスタ間でシフトして伝送するパケットアクセス機構と、
前記パケットアクセス機構に直接接続されており、前記パケットアクセス機構内の前記第１のレジスタに保持された前記パケットデータに基づいて、複数のパケットのそれぞれに対応する所定の演算を並列に実行する複数の命令手順実行部と、
前記パケットの受信タイミングに同期して、このパケットに対応する前記演算を行う前記命令手順実行部を選択する選択信号を生成する選択信号生成部と、
複数の第２のレジスタを含んで構成されており、前記パケットアクセス機構内の前記第１のレジスタを用いた前記パケットデータのシフト動作に同期して、前記パケットデータに対応する前記命令手順実行部による処理結果である中間データを前記第２のレジスタ間でシフトして転送する中間データ転送機構と、
を備えることを特徴とするパケット処理装置。
【請求項２】
請求項１において、
前記第１および第２のレジスタの少なくとも一方について、外部から入力されるデータの書き込み位置を可変に設定する書き込み位置設定機構を備えることを特徴とするパケット処理装置。
【請求項３】
請求項１において、
前記第１および第２のレジスタの少なくとも一方について、外部に出力するデータの読み出し位置を可変に設定する読み出し位置設定機構を備えることを特徴とするパケット処理装置。
【請求項４】
請求項１〜３のいずれかにおいて、
直列に接続された複数の前記パケット処理プロセッサを有することを特徴とするパケット処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、パケット中継装置等において、入力されるパケットデータに対して所定のパケット処理を行うパケット処理装置に関する。
【０００２】
【従来の技術】
従来から、ネットワークを介して接続された端末間の通信が盛んであり、特に最近では、ネットワーク規模の拡大に伴ってネットワーク間の中継を行う必要が生じている。例えば、ＬＡＮ（Local Area Network）とＬＡＮ、あるいはＬＡＮと専用線を相互接続したネットワークが構築されている。特に最近では、ＩＰ（Internet Protocol）によるネットワークが主流となっている。ＩＰはＩＳＯ（International Organization for Standardization）のＯＳＩ（Open System Interconnection）モデルにおけるネットワーク層に相当するコネクションレス型のプロトコルである。あらかじめ端末間で通信路を確保する場合に用いられるコネクション型のプロトコルと異なり、コネクションレス型のＩＰ通信では、ＬＡＮ間を相互接続するパケット中継装置が、通信データが含まれるパケットを中継処理することによって端末間の通信が実現する。ＩＰネットワークおける中継処理では、宛先テーブルの検索やヘッダ書き換え処理等の各種のパケット処理が必要になる。
【０００３】
上述したパケット中継装置において行われるパケット処理には、パケット・ヘッダのチェックサムの計算、宛先テーブルの検索、パケット・ヘッダの書き換え等のパケットを中継するために必要な各種の処理に加え、ネットワークにおける通信を制限するパケットフィルタリングの処理が含まれる。これらの処理は専用のハードウェアで行うには煩雑であり、従来はプロセッサを用いたソフトウェア処理によって実現していた。
【０００４】
図１０は、プロセッサを用いてパケット処理を行う従来のパケット処理装置の構成を示す図である。図１０に示すように、従来のパケット処理装置は、プロセッサ９００とメモリ９１０とがバス９２０を介して接続されている。このような構成においてプロセッサ９００がメモリ９１０内に格納されたパケットを読み出すことにより、パケット中継装置における各種のパケット処理が実行される。
【０００５】
【発明が解決しようとする課題】
ところで、上述したプロセッサ９００を用いた従来のパケット処理装置では、メモリ９１０に対するパケットデータの読み出し処理や書き込み処理が頻繁に行われるため、パケット処理の高速化が難しいという問題があった。すなわち、プロセッサ９００は、パケットデータをメモリ９１０に格納した後、この格納されたパケットデータを適時読み出してその内容に対して所定の処理を実行し、さらにその処理結果をメモリ９１０に書き込む必要がある。また、プロセッサ９００は、メモリ９１０に対して読み出しアドレスを与えてから、格納されたパケットデータの読み出しを行う。同様に、プロセッサ９００は、メモリ９１０に対して書き込みアドレスを与えてから、パケットデータの書き込みを行う。このとき、プロセッサ９００がメモリ９１０に対してアドレスを与えてからデータの読み出しや書き込みが可能になるまでに、プロセッサ９００のサイクルタイムと比較して時間がかかる。
【０００６】
また、逐次実行型のプロセッサ９００は、同時に実行できる処理が単一であって読み出し動作と書き込み動作を同時に実行できないことや、メモリ９１０に対しても読み出しと書き込みの同時動作ができる回路は作りにくいことなどに起因して、通常はメモリ９１０に対して、プロセッサ９００によるパケットデータの読み出しと書き込み動作を同時に行うことができない。
【０００７】
このように、メモリ９１０に対するパケットデータの読み出し／書き込み処理のオーバヘッドが、プロセッサ９００とメモリ９１０との間のパケットデータの転送処理において障害となり、パケット処理を高速に行うことができなかった。また、上述したプロセッサ９００を用いた従来のパケット処理装置では、１つのパケットに対して許容される処理時間が、連続して受信される２つのパケットの受信間隔に依存するため、パケットのデータ長が最も短い場合に許容される処理時間が短くなり、実行可能な命令手順のステップ数が少なくなるという問題があった。上述したメモリ９１０に処理待ちのパケットデータを格納しておくことにより、データ長が短いパケットが一時的に送られてきた場合に処理時間の調整を行うことは可能であるが、このようなデータ長が短いパケットが多数連続して送られてくると、未処理のパケットデータが徐々に増加して、メモリ９１０がオーバーフローする事態が生じる。このため、どのようなパケットが送受信される場合であっても、パケットのデータ長に依存せずに多くの命令手順を実行可能なパケット処理装置が望まれている。
【０００８】
本発明は、このような点に鑑みて創作されたものであり、その目的は、高速なパケット処理が可能であり、しかもパケットのデータ長に依存しない数の命令手順を有するパケット処理を行うことができるパケット処理装置を提供することにある。
【０００９】
【課題を解決するための手段】
上述した課題を解決するために、本発明のパケット処理装置は、命令を実行することにより所定のパケット処理を行うパケット処理プロセッサを有しており、このパケット処理プロセッサは、パケットアクセス機構と複数の命令手順実行部と選択信号生成部を備えて構成されている。パケットアクセス機構は、複数の第１のレジスタを含んでおり、受信したパケットデータを先頭から順にこれら第１のレジスタ間でシフトして伝送する。複数の命令手順実行部のそれぞれは、パケットアクセス機構内の第１のレジスタに保持されたパケットデータに基づいて、複数のパケットのそれぞれに対応する所定の演算を並列に実行する。選択信号生成部は、パケットの受信タイミングに同期して、このパケットに対応する演算を行う命令手順実行部を選択する選択信号を生成する。連続してパケットが入力されたときに、各パケットに対応する演算を行う命令手順実行部が順番に選択されて並列処理が行われるため、データ長が短いパケットが受信されるような場合であっても、このパケットのデータ長に依存しない各命令手順実行部の演算時間を確保することができ、多くの命令手順が実行可能になる。また、パケットアクセス機構を用いてパケットデータの保持および転送を行っており、各命令手順実行部とパケットアクセス機構内の第１のレジスタとの間で、演算の対象となるパケットデータの読み書きが行われるため、従来のパケット処理装置のように、プロセッサとメモリとの間でパケットデータの読み書きを行う場合に生じるオーバーヘッドを低減することができ、パケットデータの読み書き動作も含めた演算処理の高速化が可能になる。
【００１０】
また、パケットアクセス機構におけるパケットデータのシフト動作に同期して、命令手順実行部による処理結果である中間データを複数の第２のレジスタ間でシフトして転送する中間データ転送機構をさらに備えることが望ましい。演算処理において発生した中間データを演算途中で保持したり最終的に外部に出力する必要がある場合に、これらの中間データをメモリに書き込んだ後に読み出す場合に生じるオーバーヘッドを低減することができるため、中間データに関する一連の動作も含めた演算処理の高速化が可能になる。
【００１１】
また、上述したパケットアクセス機構は、複数の第１のレジスタに保持されたパケットデータを選択的に取り出して命令手順実行部に入力する第１のセレクタと、命令手順実行部によって特定の命令手順を実行したときに得られる結果データをこの命令手順の実行順序に対応した第１のレジスタに入力する第２のセレクタとを備えることが望ましい。第１および第２のセレクタを備えることにより、複数の第１のレジスタ間を順次シフトされるパケットデータを必要に応じて読み出して各命令手順実行部に入力したり、あるいは、各命令手順実行部から出力されたデータをいずれかの第１のレジスタに書き込むことができ、各命令手順実行部とパケットアクセス機構との間のパケットデータの入出力動作を効率よく行うことができる。
【００１２】
また、上述した中間データ転送機構は、複数の前記第２のレジスタに保持された中間データを選択的に取り出して命令手順実行部に入力する第３のセレクタと、命令手順実行部によって特定の命令手順を実行したときに得られる中間データを、この命令手順の実行順序に対応した第２のレジスタに入力する第４のセレクタとを備えることが望ましい。第３および第４のセレクタを備えることにより、複数の第２のレジスタ間を順次シフトされる中間データを必要に応じて読み出して各命令手順実行部に入力したり、あるいは、各命令手順実行部から出力された中間データをいずれかの第２のレジスタに書き込むことができ、各命令手順実行部と中間データ転送機構との間の中間データの入出力動作を効率よく行うことができる。
【００１３】
また、上述した複数の命令手順実行部のそれぞれは、複数の命令手順を順番にデコード処理する制御部と、この制御部によるデコード処理結果に対応する所定の演算処理を行う演算器と、この演算器の作業領域となる複数の汎用レジスタからなる汎用レジスタ群とを備えている。そして、一のパケットに対応する処理を行うために用意される複数の命令手順の数を、２つのパケットの最小受信間隔よりも長い時間に相当する数に設定することが望ましい。複数の命令手順実行部による演算処理が並行して行われるため、一のパケットに対する演算処理が終了する前に、次のパケットに対する演算処理を開始することができるため、各命令手順実行部が実行対象とする命令手順の数を、２つのパケットの最小受信間隔よりも長い時間に相当する数に設定することができ、複雑なパケット処理の実施が可能になる。
【００１４】
また、上述した第１および第２のレジスタの少なくとも一方について、外部から入力されるデータの書き込み位置を可変に設定する書き込み位置設定機構を備えることが望ましい。少ない数の命令手順で演算が終了するような場合に、パケットアクセス機構や中間データ転送機構の中段のレジスタにパケットデータや中間データを入力することにより、パケットアクセス機構や中間データ転送機構に各種のデータが入力されてから出力されるまでの時間を短くすることができる。
【００１５】
また、上述した第１および第２のレジスタの少なくとも一方について、外部に出力するデータの読み出し位置を可変に設定する読み出し位置設定機構を備えることが望ましい。少ない命令手順で演算が終了するような場合に、パケットアクセス機構や中間データ転送機構の中段のレジスタからパケットデータや中間データを取り出すことにより、パケットアクセス機構や中間データ転送機構に各種のデータが入力されてから出力されるまでの時間を短くすることができる。
【００１６】
また、複数のパケット処理プロセッサを複数個直列に接続することによりパケット処理装置を構成することが望ましい。一のパケット処理プロセッサ内の命令手順実行部の数をあまり多くすると各命令手順実行部とパケットアクセス機構や中間データ転送機構との間の配線が複雑になり、信号の遅延時間が長くなって好ましくない場合もある。これに対し、複数の命令手順実行部を有するパケット処理プロセッサを複数個直列に接続することにより、遅延時間を増加させることなく、多くの命令手順を有するパケット処理を一のパケットに対して行うことが可能になる。
【００１７】
【発明の実施の形態】
図１は、本発明を適用した第１の実施形態のパケット処理プロセッサの概略的な構成を示す図である。図１に示すように、本実施形態のパケット処理プロセッサ１００は、パケットアクセス機構１１０、中間データ転送機構１２０、選択信号生成部１３０、複数（例えば３つ）の命令手順実行部１４０、１５０、１６０を含んで構成されている。
【００１８】
パケットアクセス機構１１０は、外部から入力されるパケットデータを取り込んで保持するとともに、この保持されたパケットデータの部分的な読み出しや、部分的な書き換えを行うために用いられる。このために、パケットアクセス機構１１０は、縦続接続された複数（例えば２４個）のレジスタｐ０〜ｐ２３を含んで構成されている。外部から入力されたパケットデータは、先頭から所定ビットを単位として順番に各レジスタｐ０〜ｐ２３に取り込まれ、転送される。例えば、各レジスタｐ０〜ｐ２３に保持される１ワード分のデータのビット数を「３２」とすると、外部から入力されたパケットデータが３２ビット単位で初段のレジスタｐ２３に取り込まれ保持される。２段目以降の各レジスタｐ２２〜ｐ０は、初段のレジスタｐ２３に取り込んで保持した部分的なパケットデータを順番にシフトして保持する。このようなシフト動作の途中において、各命令手順実行部１４０、１５０、１６０からパケットデータが読み出されるとともに、各命令手順実行部１４０、１５０、１６０から出力されるデータを、転送中の部分的なパケットデータに置き換える処理が行われる。そして、最終段（２４段目）のレジスタｐ０からは、パケット処理プロセッサ１００による所定のパケット処理が終了したパケットデータが出力される。
【００１９】
また、中間データ転送機構１２０は、パケットデータに関連する各種の処理結果の保持、転送を行うために用いられ、縦続接続された複数（例えば２４個）のレジスタｅ０〜ｅ２３を含んで構成されている。これらのレジスタの個数は、上述したパケットアクセス機構１１０に含まれるレジスタｐ０〜ｐ２３の数と一致するように設定されている。例えば、パケットデータに関連する各種の処理結果が外部から入力されて初段のレジスタｅ２３に保持されると、２段目以降の各レジスタｅ２２〜ｅ０は、この初段のレジスタｅ２３に取り込んで保持した処理結果を順番にシフトして保持する。このようなシフト動作の途中において、各命令手順実行部１４０、１５０、１６０によってこの処理結果が読み出されるとともに、各命令手順実行部１４０、１５０、１６０から新たな処理結果が出力されていずれかのレジスタに書き込まれる。
【００２０】
選択信号生成部１３０は、外部からパケット到着信号が入力されると、３つの命令手順実行部１４０、１５０、１６０のいずれかに対して、命令手順実行動作の開始を指示する個別選択信号を出力する。例えば、選択信号生成部１３０は、最初のパケット到着信号が入力されると命令手順実行部１４０に向けて個別選択信号を出力し、２番目のパケット到着信号が入力されると命令手順実行部１５０に向けて個別選択信号を入力し、３番目のパケット到着信号が入力されると命令手順実行部１６０に向けて個別選択信号を入力する。個別選択信号の入力が３つの命令手順実行部１４０、１５０、１６０に対して順番に行われた後、４番目のパケット到着信号が入力されると、選択信号生成部１３０は、再び命令手順実行部１４０に向けて個別選択信号を入力する。このようにして、３つの命令手順実行部１４０、１５０、１６０に対する個別選択信号の入力動作が所定の順番に沿って巡回的に行われる。
【００２１】
命令手順実行部１４０は、個別選択信号の入力タイミングに同期して、パケットアクセス機構１１０に入力されたパケットデータに対する所定のパケット処理を行う。このために、命令手順実行部１４０は、演算器１４１、汎用レジスタ群１４２、命令手順格納部１４３を含んで構成されている。演算器１４１は、命令手順格納部１４３に格納されている複数の命令を順番に読み出して実行することにより、所定の演算を実行する。汎用レジスタ群１４２は、複数（例えば８個）の汎用レジスタｒ０〜ｒ７を含んでおり、これらの各汎用レジスタが必要に応じて演算器１４１の作業領域として用いられる。命令手順格納部１４３は、演算器１４１が実行する一連の命令を格納する。例えば、３０ステップ分の命令が格納されている。
【００２２】
同様に、命令手順実行部１５０は、演算器１５１、汎用レジスタ群１５２、命令手順格納部１５３を含んで構成されている。命令手順実行部１６０は、演算器１６１、汎用レジスタ群１６２、命令手順格納部１６３を含んで構成されている。これら命令手順実行部１５０、１６０は、上述した命令手順実行部１４０と基本的に同じ構成を有しており、その詳細な説明は省略する。
【００２３】
図２は、図１に示すパケット処理プロセッサを含むパケット中継装置の構成図である。図２に示すパケット中継装置２００は、複数のＬＡＮ３００のそれぞれに対応するように設けられたパケット処理装置１００Ａ、受信インタフェース２１０、ビットアライメント整合送出器２２０と、パケット・ヘッダ内の宛先アドレスに基づいて所定のルーティング処理を行うスイッチ部２３０と、スイッチ部２３０から送出されたパケットを対応するいずれかのＬＡＮ３２０に送信する複数の送信インタフェース２４０とを含んで構成されている。
【００２４】
受信インタフェース２１０は、パケット中継装置２００をＬＡＮ３００に接続するためのものであり、ＬＡＮ３００を介して送られてくるパケットを受信する。ビットアライメント整合送出器２２０は、受信インタフェース２１０によって受信されたパケットを先頭から順番に所定ビットずつ分割して、パケット中継装置２００内での処理単位となる１ワード単位のパケットデータを生成するためのものであり、この分割処理がなされた所定ビット数単位のパケットデータがパケット処理装置１００Ａに入力される。例えば、本実施形態では、パケット中継装置２００内で１ワードを３２ビットとした処理が行われており、ビットアライメント整合送出器２２０は、入力されるパケットデータを３２ビットずつに分割する。また、ビットアライメント整合送出器２２０は、受信インタフェース２１０によって受信された新たなパケットが入力されると、パケットの到着を示す所定のパケット到着信号をパケット処理装置１００Ａに向けて出力する。
【００２５】
パケット処理装置１００Ａは、ビットアライメント整合送出器２２０から出力されるパケットデータに基づいて所定のパケット処理を行う。本実施形態では、図１に示したパケット処理プロセッサ１００によってパケット処理装置１００Ａが構成されている。
【００２６】
パケット処理装置１００Ａを構成するパケット処理プロセッサ１００では、ビットアライメント整合送出器２２０からパケット到着信号が入力されると、選択信号生成部１３０から３つの命令手順実行部１４０、１５０、１６０のいずれかに向けて、巡回的に個別選択信号を出力する。この個別選択信号が入力された命令手順実行部１４０、１５０、１６０は、チェックサムの計算、宛先テーブルの検索、パケット・ヘッダの書き換え等の各種のパケット処理を、ビットアライメント整合送出器２２０から出力される各受信パケットのパケットデータに対して行った後、この各種のパケット処理がなされた後のパケットをスイッチ部２３０に向けて出力する。
【００２７】
図３は、ＩＰｖ４（バージョン４）に対応するパケットのフォーマットを示す図である。図３に示すように、ＩＰｖ４に対応するパケット・ヘッダには、Version（バージョン）、ＩＨＬ（Internet Header Length、ヘッダ長）、Type of Service（タイプオブサービス）、Total Length（全長）、Identification（識別名）、Flags（フラグ）、Fragment Offset（断片オフセット）、Time to Live（寿命）、Protocol（プロトコル）、Header Checksum（ヘッダチェックサム）、Source Address（送信元アドレス）、Destination Address（宛先アドレス）が含まれている。
【００２８】
上述したように、パケット・ヘッダの特定の位置にパケットを中継するために必要な各種のデータが含まれており、パケット処理プロセッサ１００は、このパケット・ヘッダを含むパケットデータの全体を所定ビット数を単位として先頭からパケットアクセス機構１１０のレジスタｐ２３〜ｐ０に順に取り込んで保持することにより、各種のパケット処理に必要な特定のデータを読み出したり、あるいは特定のデータを書き換えたりしている。なお、図３には、パケット・ヘッダに続くデータ領域に４ワード分の通信データが格納されている場合が示されており、本実施形態では５ワード分のパケット・ヘッダと４ワード分の通信データを含む９ワード分のパケットデータが、最も小さなサイズのパケットに対応しているものとする。
【００２９】
このように、本実施形態のパケット処理プロセッサ１００では、パケットが受信されてビットアライメント整合送出部２２０からパケット到着信号が出力される毎に、選択信号生成部１３０から命令手順実行部１４０、１５０、１６０に対して選択的かつ巡回的に個別選択信号を入力しており、命令手順実行部１４０、１５０、１６０のいずれかによるパケット処理が開始される。したがって、各命令手順実行部は、一のパケットに対応するパケット処理を、３つ先のパケットが到着するまでの間に終了させればよく、一のパケットに対して許容可能なパケット処理のステップ数を多く設定することができる。
【００３０】
例えば、図３に示した最小サイズのパケットが連続して受信された場合の最小パケット間隔（最小受信間隔）において実行可能な命令手順の数をｎとすると、本実施形態のパケット処理プロセッサ１００では、３つの命令手順実行部１４０、１５０、１６０のそれぞれにおいて一のパケットに対して許容可能な命令手順の数を３ｎとすることができるため、パケット処理プロセッサ１００は、受信パケットのサイズ（パケットのデータ長）に依存しない数の命令手順を有するパケット処理を行うことが可能になる。
【００３１】
次に、本実施形態のパケット処理プロセッサ１００の詳細な構成および動作の具体例について説明する。
図４は、パケット処理プロセッサ１００の詳細な構成を示す図である。図４に示すように、パケットアクセス機構１１０は、パケットデータを先頭からワード単位（３２ビット単位）で順番に保持する上述した２４個のレジスタｐ０〜ｐ２３の他に、これらのレジスタｐ０〜ｐ２３のそれぞれの前段に設けられた２４個のセレクタ（Ｓ）１０と、レジスタｐ０〜ｐ２３のそれぞれの出力データを選択するセレクタ（Ｓ）１２とを含んで構成されている。
【００３２】
レジスタｐ２３の前段に設けられた初段のセレクタ１０は、パケットアクセス機構１１０に入力された３２ビットのパケットデータと、３つの命令手順実行部１４０、１５０、１６０のそれぞによって所定の命令手順を実行したときに得られる３つの結果データとが入力されており、これら４つのデータの中からいずれかを選択してレジスタｐ２３に向けて出力する。レジスタｐ２３は、このようにして前段のセレクタ１０から出力されたデータを、クロック信号の次の立ち上がりに同期して取り込んで保持する。
【００３３】
また、レジスタｐ２２とレジスタｐ２３の間に設けられた２段目のセレクタ１０は、レジスタｐ２３から出力されるデータと、３つの命令手順実行部１４０、１５０、１６０のそれぞによって所定の命令手順を実行したときに得られる３つの結果データとが入力されており、これら４つのデータの中からいずれかを選択してレジスタｐ２２に向けて出力する。レジスタｐ２２は、このようにして前段のセレクタ１０から出力されたデータを、クロック信号の次の立ち上がりに同期して取り込んで保持する。
【００３４】
同様に、３段目以降の各セレクタ１０は、前段に接続されたレジスタから出力されるデータと、３つの命令手順実行部１４０、１５０、１６０のそれぞれによって所定の命令手順を実行したときに得られる３つの結果データとが入力されており、これら４つのデータの中からいずれかを選択して後段のレジスタに向けて出力する。この後段のレジスタは、このようにして前段のセレクタ１０から出力されたデータを、クロック信号の次の立ち上がりに同期して取り込んで保持する。
【００３５】
また、２４個のレジスタｐ０〜ｐ２３の出力側に共通に接続されたセレクタ１２は、各レジスタｐ０〜ｐ２３から出力されるデータが入力されており、その中からそれぞれ最大２個ずつを選択して、命令手順実行部１４０、１５０、１６０に向けて出力する。
【００３６】
また、図４に示すように、中間データ転送機構１２０は、中間データを保持する上述した２４個のレジスタｅ０〜ｅ２３の他に、これらのレジスタｅ０〜ｅ２３のそれぞれの前段に設けられた２４個のセレクタ（Ｓ）２０と、レジスタｅ０〜ｅ２３のそれぞれの出力データを選択するセレクタ（Ｓ）２２とを含んで構成されている。この中間データ転送機構１２０は、上述したパケットアクセス機構１１０と基本的に同じ構成を有している。
【００３７】
すなわち、レジスタｐ２３の前段に設けられた初段のセレクタ２０は、中間データ転送機構１２０に入力された中間データと、３つの命令手順実行部１４０、１５０、１６０のそれぞれによって所定の命令手順を実行したときに得られる３つの中間データとが入力されており、これら４つの中間データの中からいずれかを選択してレジスタｅ２３に向けて出力する。レジスタｅ２３は、このようにして前段のセレクタ２０から出力されたデータを、クロック信号の次の立ち上がりに同期して取り込んで保持する。
【００３８】
また、レジスタｅ２２とレジスタｅ２３の間に設けられた２段目のセレクタ２０は、レジスタｅ２３から出力される中間データと、３つの命令手順実行部１４０、１５０、１６０のそれぞれによって所定の命令手順を実行したときに得られる３つの中間データとが入力されており、これら４つの中間データの中からいずれかを選択してレジスタｅ２２に向けて出力する。レジスタｅ２２は、このようにして前段のセレクタ２０から出力されたデータを、クロック信号の次の立ち上がりに同期して取り込んで保持する。
【００３９】
同様に、３段目以降の各セレクタ２０は、前段に接続されたレジスタから出力される中間データと、３つの命令手順実行部１４０、１５０、１６０のそれぞによって所定の命令手順を実行したときに得られる３つの中間データとが入力されており、これら４つの中間データの中からいずれかを選択して後段のレジスタに向けて出力する。この後段のレジスタは、このようにして前段のセレクタ２０から出力された中間データを、クロック信号の次の立ち上がりに同期して取り込んで保持する。
【００４０】
また、２４個のレジスタｅ０〜ｅ２３の出力側に共通に接続されたセレクタ２２は、各レジスタｅ０〜ｅ２３から出力される中間データが入力されており、その中からそれぞれ最大２個ずつを選択して、命令手順実行部１４０、１５０、１６０に向けて出力する。
【００４１】
なお、本実施形態では、パケットアクセス機構１１０に含まれるレジスタｐ０〜ｐ２３の数と中間データ転送機構１２０に含まれるレジスタｅ０〜ｅ２３の数とを一致させており、しかも各レジスタは同じクロック信号に同期してデータの取り込みを行うように設定されている。このため、パケットデータがパケットアクセス機構１１０内の各レジスタ間を順にシフトして所定のパケット処理が行われているときに、そのパケット処理で生じた中間データもこのパケット処理に同期して中間データ転送機構１２０内を順にシフトするようになっている。
【００４２】
また、図４に示すように、命令手順実行部１４０は、パケットアクセス機構１１０に入力されたパケットデータに対して所定のパケット処理を行うために、上述した演算器１４１、汎用レジスタ群１４２の他に、各命令手順を入力順にデコードする命令デコーダ４０を含む制御部４２と、演算器１４１の処理ステップ数をカウントするプログラムカウンタ４４と、演算器１４１による演算結果の各状態を保持するフラグ・レジスタ４６とを含んで構成されている。また、汎用レジスタ群１４２は、８個の汎用レジスタｒ０〜ｒ７の中からデータの入力先となる汎用レジスタを切り替える入力セレクタ４８と、データの読み出し元となる汎用レジスタを切り替える出力セレクタ４９とを含んで構成されている。
【００４３】
制御部４２内の命令デコーダ４０は、クロック信号に同期して入力される一連の命令手順を順番にデコード処理する。制御部４２は、この処理結果に基づいて、命令手順実行部１４０内の他の構成部やパケットアクセス機構１１０内のセレクタ１０、１２あるいは中間データ転送機構１２０内のセレクタ２０、２２に対して、必要に応じて動作指示を与える。
【００４４】
なお、図４では、これらの動作指示を行うために必要な制御線が省略されており、各構成部間のデータ線のみが示されている。例えば、ある命令手順が実行されたときに、汎用レジスタｒ０に格納されたデータとレジスタｐ２３に格納されたデータとを加算し、その結果をレジスタｒ０に格納する処理が行われる場合を考える。この命令手順が命令デコーダ４０によってデコード処理されると、制御部４２は、まず出力セレクタ４９を制御して汎用レジスタｒ０のデータを演算器１４１の一方の入力端子に向けて出力するとともに、パケットアクセス機構１１０内のセレクタ１２を制御してレジスタｐ２３のデータを演算器１４１の他方の入力端子に向けて出力する。次に、制御部４２は、演算器１４１を制御して２つの入力端子に入力されたデータ同士を加算し、その後入力セレクタ４８と汎用レジスタｒ０を制御して、この加算結果を汎用レジスタｒ０に格納する。
【００４５】
また、図１に示した構成例では、一連の命令手順を命令手順実行部１４０内の命令手順格納部１４３に格納したが、これらの命令手順の保持方法については各種の変形が考えられる。例えば、命令手順実行部１４０の外部あるいはパケット処理プロセッサ１００の外部にメモリ（図示せず）を設けておいて、パケット処理の実施に先立ってこれらの命令手順を順番に読み出すようにしてもよい。
【００４６】
また、図４において、他の２つの命令手順実行部１５０、１６０は、上述した命令手順実行部１４０と基本的に同じ構成を有しており、同じ命令手順が入力された場合の動作も命令手順実行部１４０の対応する動作と同じである。したがって、入力されるパケットデータに対して、どの命令手順実行部１４０、１５０、１６０がパケット処理を行った場合であっても同じ処理結果を得ることができる。
【００４７】
図５は、各命令手順実行部１４０、１５０、１６０内の制御部４２に入力される命令の具体例を示す図である。また、図６は、図５に示した命令セット（命令の種類）を用いて構成される一連の命令手順を示す図であり、一例としてパケット・ヘッダのチェックサムを計算する場合のプログラムが示されている。
【００４８】
これらの図に示すように、本実施形態のパケット処理プロセッサ１００で実行される各命令の種類は、非実行、データ転送、整数演算、論理演算、ビット演算に大別される。
また、本実施形態では、図６に示すように、各命令を記述するときに用いる命令フォーマットに関しては、「ＭＯＶＥ」等で表現される命令ニモニックの前に必ず条件コードがつくように各命令手順の表記ルールが設定されている。パケット処理プロセッサ１００は、直前の命令の演算結果がこの条件コードで示される条件を満たす場合に、この条件コードの次に記述された命令を実行する。例えば、パケット処理プロセッサ１００が実行した直前の命令の演算結果が０である場合を考えると、パケット処理プロセッサ１００は、現在実行しようとしている命令の条件コードが「＝」（０に等しい）ならばこの命令を実行し、それ以外の条件コードが付されている場合にはその命令を実行せずに単にクロックに同期した時間のみが経過する。このような条件コードとしては、例えば「＝」以外に、「≠」（０と等しくない）、「＜」（０より小さい）、「＞」（０より大きい）「Ａ」（常に実行（Always））がある。各命令手順実行部１４０、１５０、１６０は、直前に実行した命令に対応する演算結果に対して、各条件コードの真偽を評価可能な（各条件コードを満たすか否かを判定可能な）数の評価フラグをフラグ・レジスタ４６として有している。また、各命令手順実行部１４０、１５０、１６０内の各フラグ・レジスタ４６には、キャリーを考慮した加算命令「ＡＤＣ」を実行したときに生じるキャリーを保持するキャリーフラグも含まれている。
【００４９】
また、各命令のフォーマットは、オペランドの数によって２種類存在する。３つのオペランドを有する命令のフォーマットは、条件コード、命令ニモニック、ディスティネーション・オペランド、ソース・オペランド１、ソース・オペランド２となる。また、２つのオペランドを有する命令のフォーマットは、条件コード、命令ニモニック、ディスティネーション・オペランド、ソース・オペランド１となる。
【００５０】
次に、図６に示した一連の命令手順を実行する場合のパケット処理プロセッサ１００の動作を説明する。なお、パケット・ヘッダのチェックサムを計算するパケット処理を実行する前に、図６に示した一連の命令手順（例えば、命令手順実行部１４０の場合は、通し番号１〜１１に対応する１１個の命令手順）が順番に制御部４２に入力され、命令デコーダ４０によって各命令手順に対するデコード処理が行われる。これらのデコード処理結果が制御部４２内に保持されており、１クロック毎に一つの命令手順に対応した演算が演算器１４１によって実施される。
【００５１】
パケット中継装置２００によってパケットが受信され、ビットアライメント整合送出器２２０からパケット到着信号がパケット処理装置１００Ａを構成するパケット処理プロセッサ１００に入力されると、選択信号生成部１３０は、命令手順実行部１４０に向けて個別選択信号を出力する。以後、命令手順実行部１４０内の演算器１４１によるパケット・ヘッダのチェックサムの計算が開始される。なお、このタイミングで、受信パケットの先頭データ（先頭の３２ビットデータａ０）がパケットアクセス機構１１０の初段のレジスタｐ２３に格納される。
【００５２】
順序１（通し番号１）
まず、演算器１４１は、順序１において、パケット・ヘッダの先頭データが格納されているパケットアクセス機構１１０内の初段のレジスタｐ２３の内容を、内蔵された汎用レジスタ群１４２に含まれる汎用レジスタｒ０に転送する。
【００５３】
順序２（通し番号２）
演算器１４１は、次のクロック信号に同期して、レジスタｐ２３の内容と、汎用レジスタｒ０の内容とを加算し、この加算結果を汎用レジスタｒ０に格納する。このとき、直前のクロック信号に同期して上述した順序１においてレジスタｐ２３に格納されたパケットの先頭データは次段のレジスタｐ２２に転送されており、初段のレジスタｐ２３にはあらたにＩＰヘッダの次のデータが格納されている。すなわち、この順序２によって実行される加算処理によって、パケットの先頭の１ワード分のデータと次の１ワード分のデータとが加算され、その結果が汎用レジスタｒ０に格納される。
【００５４】
順序３（通し番号３）〜順序５（通し番号５）
以後同様にして、順序３〜５における加算処理が繰り返され、パケットの先頭から５ワード目までの各データが加算される。
順序６（通し番号６）
次に、演算器１４１は、即値０と、汎用レジスタｒ０の内容と、直前の順序５の加算処理において発生したキャリーとを加算し、この加算結果を汎用レジスタｒ０に格納する。なお、即値とは、汎用レジスタ群１４２内の各汎用レジスタやパケットアクセス機構１１０内の各レジスタを指定するのではなく、値そのものを指定するものであり、図６では「＄」で表現されている。すなわち、＄０とは即値として指定される値「０」を示し、＄１６とは即値として指定される値「１６」を示す。
【００５５】
順序２〜６で実行される加算処理によって、パケットヘッダを構成する各ワードのデータについて、キャリーを考慮した加算処理が行われ、この加算結果が汎用レジスタｒ０に格納される。
順序７（通し番号７）
演算器１４１は、汎用レジスタｒ０の内容を汎用レジスタｒ１に転送する処理を実行する。
【００５６】
順序８（通し番号８）
演算器１４１は、汎用レジスタｒ０のデータを１６ビット右に（下位ビット側に）シフトし、空いた上位ビット側に“０”を詰めたデータを求め、その結果を汎用レジスタｒ０に格納する処理を実行する。この順序８と一つ前の順序７の処理によって、順序６までの加算処理によって得られた３２ビットデータの上位１６ビットと下位１６ビットが、汎用レジスタｒ０、ｒ１のそれぞれに格納される。
【００５７】
順序９（通し番号９）
演算器１４１は、汎用レジスタｒ０の内容と汎用レジスタｒ１の内容とを半ワード（本実施形態では１６ビット）単位で加算し、この加算結果を汎用レジスタｒ０に格納する。
【００５８】
順序１０（通し番号１０）
演算器１４１は、汎用レジスタｒ０に格納されたデータを半ワード単位で反転させ、その結果を汎用レジスタｒ０に格納する。この処理によって、汎用レジスタｒ０の内容に対して１の補数を求める演算が行われる。
【００５９】
順序１１（通し番号１１）
条件コードが「≠」なので、演算器１４１は、順序１０における処理結果が０でない場合には、即値１（＄１）を中間データ転送機構１２０内のレジスタｅ１３に格納する処理を行う。また、演算器１４１は、順序１０における処理結果が０の場合には、即値１をレジスタｅ１３に格納する処理を行わない。
【００６０】
なお、順序１〜１１の各順序の命令手順が実行される動作と並行して、パケットアクセス機構１１０に入力されたパケットデータがレジスタｐ２３、ｐ２２、…と順番にシフトされるため、順序１１の命令手順が実行されるタイミングでは、パケット・ヘッダのチェックサムの計算対象となっているパケットの先頭のパケットデータがレジスタｐ１３に格納される。
【００６１】
次のクロック信号に同期して、パケット処理プロセッサ１００は、中間データ転送機構１２０内のレジスタｅ１３の内容をレジスタｅ１２にシフトするとともに、パケットアクセス機構１１０内のレジスタｐ１３に格納された先頭のパケットデータをレジスタｐ１２にシフトする。このようにして、パケットアクセス機構１１０内の各レジスタ間をパケットデータがシフトする動作に同期して、中間データ転送機構１２０内の各レジスタ間をチェックサムの計算結果がシフトする動作が行われ、パケット処理プロセッサ１００からパケットデータが出力されるタイミングで、このパケットデータに付随する情報として、パケット・ヘッダのチェックサムの計算結果を外部に伝達することができる。
【００６２】
ところで、本実施形態では、最小パケット間隔が１０クロック分であるため、パケットが連続して受信された場合には、最初のパケットに対する命令手順実行部１４０によるチェックサム計算が終了する前に、次のパケットがパケット中継装置２００に到着してしまう。しかし、本実施形態では、２番目に受信されたパケットに対するパケット・ヘッダのチェックサム計算は、命令手順実行部１５０によって行われるため、２つの受信パケットに対するパケット・ヘッダのチェックサム計算が並行して実施されることになる。例えば、図６に示すように、通し番号１１に対応して、命令手順実行部１４０では順序１１の処理が行われているときに、命令手順実行部１５０では順序１の処理が行われる。
【００６３】
同様に、２番目の受信パケットに対する命令手順実行部１５０によるチェックサム計算が終了する前に、３番目のパケットがパケット中継装置２００に到着する場合がある。この場合には、例えば、図６に示すように、通し番号２１に対応して、命令手順実行部１５０では順序１１の処理が行われているときに、命令手順実行部１６０では順序１の処理が行われる。
【００６４】
このように、本実施形態のパケット処理プロセッサ１００では、最小パケット間隔に対応して実行可能な命令手順の数が１０である３つの命令手順実行部１４０、１５０、１６０を用いて、受信パケットに対する所定のパケット処理を選択的かつ巡回的に行っているため、命令手順実行部１４０、１５０、１６０のそれぞれにおいて実行可能なステップ数を３倍の３０ステップに増やすことができる。したがって、パケットの受信間隔に依存しない命令手順を有するパケット処理を行うことが可能であり、複雑なパケット処理を行うことができる。
【００６５】
また、本実施形態のパケット処理プロセッサ１００では、順番にパケットデータをシフトしながら各命令手順実行部による読み書きを行うためのパケットアクセス機構１２０を内蔵することにより、パケット処理に関してパケット処理プロセッサとメモリとの間のデータの読み書き時に生じるオーバーヘッドを低減することができ、高速なパケット処理が可能になる。
【００６６】
〔第２の実施形態〕
図７は、本発明を適用した第２の実施形態のパケット処理装置の概略的な構成を示す図である。
図７に示す本実施形態のパケット処理装置は、縦続接続された複数個（例えば６個）のパケット処理プロセッサ１００を含んで構成されている。それぞれのパケット処理プロセッサ１００は、図４に示した構成を有している。
【００６７】
本実施形態のパケット処理装置では、６個のパケット処理プロセッサ１００のそれぞれに含まれる各パケットアクセス機構１１０が直列に接続されている。これにより、ビットアライメント整合送出器２２０から入力されるパケットデータが、各段のパケットアクセス機構１１０内の各レジスタｐ０〜ｐ２３を順番に移動し、最終段（６段目）のパケットアクセス機構１１０内のレジスタｐ０からパケット処理装置の外部に出力される。
【００６８】
同様に、６個のパケット処理プロセッサ１００のそれぞれに含まれる各中間データ転送機構１２０が直列に接続されており、ビットアライメント整合送出器２２０から入力される中間データが、各段の中間データ転送機構１２０内の各レジスタｅ０〜ｅ２３を順番に移動し、最終段の中間データ転送機構１２０内のレジスタｅ０からパケット処理装置の外部に出力される。
【００６９】
これら６個のパケット処理プロセッサ１００は単一の集積回路によって形成されており、それぞれの間の配線はチップ内配線によって接続されているため、前段のパケット処理プロセッサ１００から出力されるパケットデータや中間データが次のクロック信号の立ち上がりに同期して、次段のパケット処理プロセッサ１００内のパケットアクセス機構１１０や中間データ転送機構１２０に取り込むことができるようになっている。
【００７０】
このように、ｍ個のパケット処理プロセッサ１００を直列接続することにより、一つのパケットに対して行われるパケット処理の命令手順の数をｍ倍に増やすことができる。特に、上述した第１の実施形態で説明したように、一のパケット処理プロセッサ内の命令手順実行部の数を増やすことにより、パケット処理の命令手順の数を増やすことが可能であるが、命令手順実行部の数をあまり多くすると、各命令手順実行部とパケットアクセス機構１１０や中間データ転送機構１２０との間の配線が複雑になりすぎて、回路の遅延時間が増えて１クロックで１命令を実行できなくなる場合も生じる。このような場合には、命令手順実行部の数を所定の許容数以下に抑えるとともに、複数のパケット処理プロセッサ１００を直列接続することにより、パケット処理の命令手順の数を増やすことが望ましい。これにより、回路の遅延時間を所定値以下に抑えて１クロックで１命令が実行できるようにするとともに、複雑なパケット処理に必要な命令手順の数を確保することができる。
【００７１】
なお、本発明は上記実施形態に限定されるものではなく、本発明の要旨の範囲内において種々の変形実施が可能である。例えば、上述した実施形態では、パケット中継装置２００に用いられるパケット処理装置１００Ａについて説明したが、その他の通信装置に用いられるパケット処理装置に本発明を適用することができる。
【００７２】
また、上述した実施形態では、受信したＩＰパケットに対して所定のパケット処理を行う場合を説明したが、ＩＰパケット以外のパケットに対してパケット処理を行うようにしてもよい。
また、上述した各実施形態では、パケット処理プロセッサ１００内のパケットアクセス機構１１０と中間データ転送機構１２０のそれぞれでは、外部から入力されるパケットデータや中間データが初段のレジスタに入力され、最終段のレジスタから出力されるデータがパケット処理プロセッサ１００から外部に出力されるようにしたが、パケットアクセス機構１１０や中間データ転送機構１２０のそれぞれの中段のレジスタに外部から入力されたデータを直接格納したり、中段のレジスタに格納されたデータを外部に直接取り出すようにしてもよい。
【００７３】
図８は、パケット処理プロセッサに含まれるパケットアクセス機構および中間データ転送機構の変形例を示す図である。図８に示すパケットアクセス機構１１０Ａは、図４に示したパケットアクセス機構１１０に対して、外部からパケットデータが入力される位置が変更可能になっている点が異なっている。具体的には、パケットアクセス機構１１０Ａでは、レジスタｐ０〜ｐ２３のそれぞれの前段に設けられたセレクタ（Ｓ）１０にパケット処理プロセッサ１００の外部からパケットデータが入力されており、外部から入力されるパケットデータをいずれかのセレクタ１０によって選択することにより、このセレクタ１０の後段に接続されたレジスタにパケットデータを直接入力することができる。同様に、中間データ転送機構１２０Ａでは、レジスタｅ０〜ｅ２３のそれぞれの前段に設けられたセレクタ（Ｓ）２０にパケット処理プロセッサ１００の外部から中間データが入力されており、外部から入力される中間データをいずれかのセレクタ２０によって選択することにより、このセレクタ２０の後段に接続されたレジスタに中間データを直接入力することができる。パケットアクセス機構１１０Ａ内の各セレクタ１０あるいは中間データ転送機構１２０Ａ内の各セレクタ２０が書き込み位置設定機構に対応する。
【００７４】
したがって、図６に示したＩＰヘッダのチェックサム計算のように少ないステップ数で演算が終了するような場合に、パケットアクセス機構１１０Ａや中間データ転送機構１１０Ａの中段のレジスタにパケットデータや中間データを入力することにより、パケットアクセス機構１１０Ａや中間データ転送機構１２０Ａに各種のデータが入力されてから出力されるまでの時間（タイムラグ）を短くすることができる。
【００７５】
図９は、パケット処理プロセッサに含まれるパケットアクセス機構および中間データ転送機構の他の変形例を示す図である。図９に示すパケットアクセス機構１１０Ｂは、図４に示したパケットアクセス機構１１０に対して、各レジスタｐ０〜ｐ２３に格納されたデータを直接取り出すことができるようになっている点が異なっている。具体的には、パケットアクセス機構１１０Ｂでは、レジスタｐ０〜ｐ２３のそれぞれから出力されるデータが後段の各セレクタ（Ｓ）１０に入力されているとともに、このデータがセレクタ１４にも入力されている。セレクタ１４は、パケット処理プロセッサの外部にパケットデータを取り出すレジスタを選択するためのものであり、選択されたレジスタに格納されたパケットデータは、後段の各レジスタを通すことなく、このセレクタ１４を通して出力される。同様に、中間データ転送機構１２０Ｂでは、レジスタｅ０〜ｅ２３のそれぞれから出力されるデータが後段の各セレクタ（Ｓ）２０に入力されているとともに、このデータがセレクタ２４にも入力されている。セレクタ２４は、パケット処理プロセッサの外部に中間データを取り出すレジスタを選択するためのものであり、選択されたレジスタに格納された中間データは、後段の各レジスタを通すことなく、このセレクタ２４を通して出力される。上述したパケットアクセス機構１１０Ｂ内のセレクタ１４あるいは中間データ転送機構１２０Ｂ内のセレクタ２４が読み出し位置設定機構に対応する。
【００７６】
したがって、図６に示したＩＰヘッダのチェックサム計算のように少ないステップ数で演算が終了するような場合に、パケットアクセス機構１１０Ｂや中間データ転送機構１１０Ｂの中段のレジスタからパケットデータや中間データを取り出すことにより、パケットアクセス機構１１０Ｂや中間データ転送機構１２０Ｂに各種のデータが入力されてから出力されるまでの時間を短くすることができる。
【００７７】
また、上述した実施形態では、パケット処理プロセッサ１００内に中間データ転送機構１２０を設けた場合を説明したが、中間データを外部に出力する必要がないパケット処理を行う場合等においてはこの中間データ転送機構１２０を省略してもよい。例えば、パケット・ヘッダに含まれる「Time to Live（寿命）」の値から１を減じる処理を行う場合には、入力されるパケットデータに含まれるこの「Time to Live」の値を読み出し、この読み出した値から１を減算し、さらにこの減算結果を元の「Time to Live」の領域に書き込む処理を行う。この処理結果に対応する中間データは特に必要ないため、このようなパケット処理を行う場合には中間データ転送機構１２０を省略することができる。
【００７８】
（付記１）  命令を実行することにより所定のパケット処理を行うパケット処理プロセッサを有するパケット処理装置であって、
前記パケット処理プロセッサは、
複数の第１のレジスタを含んで構成されており、受信したパケットデータを先頭から順に前記第１のレジスタ間でシフトして伝送するパケットアクセス機構と、
前記パケットアクセス機構内の前記第１のレジスタに保持された前記パケットデータに基づいて、複数のパケットのそれぞれに対応する所定の演算を並列に実行する複数の命令手順実行部と、
前記パケットの受信タイミングに同期して、このパケットに対応する前記演算を行う前記命令手順実行部を選択する選択信号を生成する選択信号生成部と、
を備えることを特徴とするパケット処理装置。
【００７９】
（付記２）  付記１において、
複数の第２のレジスタを含んで構成されており、前記パケットアクセス機構内の前記第１のレジスタを用いた前記パケットデータのシフト動作に同期して、前記パケットデータに対応する前記命令手順実行部による処理結果である中間データを前記第２のレジスタ間でシフトして転送する中間データ転送機構をさらに備えることを特徴とするパケット処理装置。
【００８０】
（付記３）  付記１または２において、
前記パケットアクセス機構は、
複数の前記第１のレジスタに保持された前記パケットデータを選択的に取り出して前記命令手順実行部に入力する第１のセレクタと、
前記命令手順実行部によって特定の命令手順を実行したときに得られる結果データを、この命令手順の実行順序に対応した前記第１のレジスタに入力する第２のセレクタと、
を備えることを特徴とするパケット処理装置。
【００８１】
（付記４）  付記２において、
前記中間データ転送機構は、
複数の前記第２のレジスタに保持された前記中間データを選択的に取り出して前記命令手順実行部に入力する第３のセレクタと、
前記命令手順実行部によって特定の命令手順を実行したときに得られる前記中間データを、この命令手順の実行順序に対応した前記第２のレジスタに入力する第４のセレクタと、
を備えることを特徴とするパケット処理装置。
【００８２】
（付記５）  付記１〜４のいずれかにおいて、
複数の前記命令手順実行部のそれぞれは、
複数の命令手順を順番にデコード処理する制御部と、
前記制御部によるデコード処理結果に対応する所定の演算処理を行う演算器と、
前記演算器の作業領域となる複数の汎用レジスタからなる汎用レジスタ群と、
を備え、一の前記パケットに対応する処理を行うために用意される前記複数の命令手順の数を、２つの前記パケットの最小受信間隔よりも長い時間に相当する数に設定することを特徴とするパケット処理装置。
【００８３】
（付記６）  付記１〜５のいずれかにおいて、
前記第１および第２のレジスタの少なくとも一方について、外部から入力されるデータの書き込み位置を可変に設定する書き込み位置設定機構を備えることを特徴とするパケット処理装置。
【００８４】
（付記７）  付記１〜５のいずれかにおいて、
前記第１および第２のレジスタの少なくとも一方について、外部に出力するデータの読み出し位置を可変に設定する読み出し位置設定機構を備えることを特徴とするパケット処理装置。
【００８５】
（付記８）  付記１〜７のいずれかにおいて、
直列に接続された複数の前記パケット処理プロセッサを有することを特徴とするパケット処理装置。
【００８６】
【発明の効果】
上述したように、本発明によれば、連続してパケットが入力されたときに、各パケットに対応する演算を行う命令手順実行部が順番に選択されて並列処理が行われるため、データ長が短いパケットが受信されるような場合であっても、このパケットのデータ長に依存しない各命令手順実行部の演算時間を確保することができ、多くの命令手順が実行可能になる。
【００８７】
また、パケットアクセス機構を用いてパケットデータの保持および転送を行っており、各命令手順実行部とパケットアクセス機構内の第１のレジスタとの間で、演算の対象となるパケットデータの読み書きが行われるため、従来のパケット処理装置のように、プロセッサとメモリとの間でパケットデータの読み書きを行う場合に生じるオーバーヘッドを低減することができ、パケットデータの読み書き動作も含めた演算処理の高速化が可能になる。
【図面の簡単な説明】
【図１】第１の実施形態のパケット処理プロセッサの概略的な構成を示す図である。
【図２】図１に示すパケット処理プロセッサを含むパケット中継装置の構成図である。
【図３】ＩＰｖ４に対応するパケットのフォーマットを示す図である。
【図４】本実施形態のパケット処理プロセッサの詳細な構成を示す図である。
【図５】各命令手順実行部内の制御部に入力される命令の具体例を示す図である。
【図６】図５に示した命令セットを用いて構成される一連の命令手順を示す図である。
【図７】第２の実施形態のパケット処理装置の概略的な構成を示す図である。
【図８】パケット処理プロセッサに含まれるパケットアクセス機構および中間データ転送機構の変形例を示す図である。
【図９】パケット処理プロセッサに含まれるパケットアクセス機構および中間データ転送機構の他の変形例を示す図である。
【図１０】従来のパケット処理装置の構成を示す図である。
【符号の説明】
１０、１２、２０、２２  セレクタ（Ｓ）
４０  命令デコーダ
４２  制御部
４４  プログラム・カウンタ
４６  フラグ・レジスタ
４８、４９  セレクタ
１００  パケット処理プロセッサ
１１０  パケットアクセス機構
１２０  中間データ転送機構
１４０、１５０、１６０  命令手順実行部
１４１、１５１、１６１  演算器
１４２、１５２、１６２  汎用レジスタ群
２００  パケット中継装置
２１０  受信インタフェース
２２０  ビットアライメント整合送出器
２３０  スイッチ部
２４０  送信インタフェース
３００、３２０  ＬＡＮ
【図１】
0004203979.tif 000002
【図２】
0004203979.tif 000003
【図３】
0004203979.tif 000004
【図４】
0004203979.tif 000005
【図５】
0004203979.tif 000006
【図６】
0004203979.tif 000007
【図７】
0004203979.tif 000008
【図８】
0004203979.tif 000009
【図９】
0004203979.tif 000010
【図１０】
0004203979.tif 000011