JP4203979B2 - パケット処理装置 - Google Patents

パケット処理装置 Download PDF

Info

Publication number
JP4203979B2
JP4203979B2 JP2000234075A JP2000234075A JP4203979B2 JP 4203979 B2 JP4203979 B2 JP 4203979B2 JP 2000234075 A JP2000234075 A JP 2000234075A JP 2000234075 A JP2000234075 A JP 2000234075A JP 4203979 B2 JP4203979 B2 JP 4203979B2
Authority
JP
Japan
Prior art keywords
packet
data
instruction
register
registers
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2000234075A
Other languages
English (en)
Other versions
JP2002051072A (ja
Inventor
祐治 小島
哲明 鶴岡
康之 梅崎
善知 下園
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2000234075A priority Critical patent/JP4203979B2/ja
Priority to US09/792,304 priority patent/US7089407B2/en
Publication of JP2002051072A publication Critical patent/JP2002051072A/ja
Application granted granted Critical
Publication of JP4203979B2 publication Critical patent/JP4203979B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/60Router architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、パケット中継装置等において、入力されるパケットデータに対して所定のパケット処理を行うパケット処理装置に関する。
【0002】
【従来の技術】
従来から、ネットワークを介して接続された端末間の通信が盛んであり、特に最近では、ネットワーク規模の拡大に伴ってネットワーク間の中継を行う必要が生じている。例えば、LAN(Local Area Network)とLAN、あるいはLANと専用線を相互接続したネットワークが構築されている。特に最近では、IP(Internet Protocol)によるネットワークが主流となっている。IPはISO(International Organization for Standardization)のOSI(Open System Interconnection)モデルにおけるネットワーク層に相当するコネクションレス型のプロトコルである。あらかじめ端末間で通信路を確保する場合に用いられるコネクション型のプロトコルと異なり、コネクションレス型のIP通信では、LAN間を相互接続するパケット中継装置が、通信データが含まれるパケットを中継処理することによって端末間の通信が実現する。IPネットワークおける中継処理では、宛先テーブルの検索やヘッダ書き換え処理等の各種のパケット処理が必要になる。
【0003】
上述したパケット中継装置において行われるパケット処理には、パケット・ヘッダのチェックサムの計算、宛先テーブルの検索、パケット・ヘッダの書き換え等のパケットを中継するために必要な各種の処理に加え、ネットワークにおける通信を制限するパケットフィルタリングの処理が含まれる。これらの処理は専用のハードウェアで行うには煩雑であり、従来はプロセッサを用いたソフトウェア処理によって実現していた。
【0004】
図10は、プロセッサを用いてパケット処理を行う従来のパケット処理装置の構成を示す図である。図10に示すように、従来のパケット処理装置は、プロセッサ900とメモリ910とがバス920を介して接続されている。このような構成においてプロセッサ900がメモリ910内に格納されたパケットを読み出すことにより、パケット中継装置における各種のパケット処理が実行される。
【0005】
【発明が解決しようとする課題】
ところで、上述したプロセッサ900を用いた従来のパケット処理装置では、メモリ910に対するパケットデータの読み出し処理や書き込み処理が頻繁に行われるため、パケット処理の高速化が難しいという問題があった。すなわち、プロセッサ900は、パケットデータをメモリ910に格納した後、この格納されたパケットデータを適時読み出してその内容に対して所定の処理を実行し、さらにその処理結果をメモリ910に書き込む必要がある。また、プロセッサ900は、メモリ910に対して読み出しアドレスを与えてから、格納されたパケットデータの読み出しを行う。同様に、プロセッサ900は、メモリ910に対して書き込みアドレスを与えてから、パケットデータの書き込みを行う。このとき、プロセッサ900がメモリ910に対してアドレスを与えてからデータの読み出しや書き込みが可能になるまでに、プロセッサ900のサイクルタイムと比較して時間がかかる。
【0006】
また、逐次実行型のプロセッサ900は、同時に実行できる処理が単一であって読み出し動作と書き込み動作を同時に実行できないことや、メモリ910に対しても読み出しと書き込みの同時動作ができる回路は作りにくいことなどに起因して、通常はメモリ910に対して、プロセッサ900によるパケットデータの読み出しと書き込み動作を同時に行うことができない。
【0007】
このように、メモリ910に対するパケットデータの読み出し/書き込み処理のオーバヘッドが、プロセッサ900とメモリ910との間のパケットデータの転送処理において障害となり、パケット処理を高速に行うことができなかった。また、上述したプロセッサ900を用いた従来のパケット処理装置では、1つのパケットに対して許容される処理時間が、連続して受信される2つのパケットの受信間隔に依存するため、パケットのデータ長が最も短い場合に許容される処理時間が短くなり、実行可能な命令手順のステップ数が少なくなるという問題があった。上述したメモリ910に処理待ちのパケットデータを格納しておくことにより、データ長が短いパケットが一時的に送られてきた場合に処理時間の調整を行うことは可能であるが、このようなデータ長が短いパケットが多数連続して送られてくると、未処理のパケットデータが徐々に増加して、メモリ910がオーバーフローする事態が生じる。このため、どのようなパケットが送受信される場合であっても、パケットのデータ長に依存せずに多くの命令手順を実行可能なパケット処理装置が望まれている。
【0008】
本発明は、このような点に鑑みて創作されたものであり、その目的は、高速なパケット処理が可能であり、しかもパケットのデータ長に依存しない数の命令手順を有するパケット処理を行うことができるパケット処理装置を提供することにある。
【0009】
【課題を解決するための手段】
上述した課題を解決するために、本発明のパケット処理装置は、命令を実行することにより所定のパケット処理を行うパケット処理プロセッサを有しており、このパケット処理プロセッサは、パケットアクセス機構と複数の命令手順実行部と選択信号生成部を備えて構成されている。パケットアクセス機構は、複数の第1のレジスタを含んでおり、受信したパケットデータを先頭から順にこれら第1のレジスタ間でシフトして伝送する。複数の命令手順実行部のそれぞれは、パケットアクセス機構内の第1のレジスタに保持されたパケットデータに基づいて、複数のパケットのそれぞれに対応する所定の演算を並列に実行する。選択信号生成部は、パケットの受信タイミングに同期して、このパケットに対応する演算を行う命令手順実行部を選択する選択信号を生成する。連続してパケットが入力されたときに、各パケットに対応する演算を行う命令手順実行部が順番に選択されて並列処理が行われるため、データ長が短いパケットが受信されるような場合であっても、このパケットのデータ長に依存しない各命令手順実行部の演算時間を確保することができ、多くの命令手順が実行可能になる。また、パケットアクセス機構を用いてパケットデータの保持および転送を行っており、各命令手順実行部とパケットアクセス機構内の第1のレジスタとの間で、演算の対象となるパケットデータの読み書きが行われるため、従来のパケット処理装置のように、プロセッサとメモリとの間でパケットデータの読み書きを行う場合に生じるオーバーヘッドを低減することができ、パケットデータの読み書き動作も含めた演算処理の高速化が可能になる。
【0010】
また、パケットアクセス機構におけるパケットデータのシフト動作に同期して、命令手順実行部による処理結果である中間データを複数の第2のレジスタ間でシフトして転送する中間データ転送機構をさらに備えることが望ましい。演算処理において発生した中間データを演算途中で保持したり最終的に外部に出力する必要がある場合に、これらの中間データをメモリに書き込んだ後に読み出す場合に生じるオーバーヘッドを低減することができるため、中間データに関する一連の動作も含めた演算処理の高速化が可能になる。
【0011】
また、上述したパケットアクセス機構は、複数の第1のレジスタに保持されたパケットデータを選択的に取り出して命令手順実行部に入力する第1のセレクタと、命令手順実行部によって特定の命令手順を実行したときに得られる結果データをこの命令手順の実行順序に対応した第1のレジスタに入力する第2のセレクタとを備えることが望ましい。第1および第2のセレクタを備えることにより、複数の第1のレジスタ間を順次シフトされるパケットデータを必要に応じて読み出して各命令手順実行部に入力したり、あるいは、各命令手順実行部から出力されたデータをいずれかの第1のレジスタに書き込むことができ、各命令手順実行部とパケットアクセス機構との間のパケットデータの入出力動作を効率よく行うことができる。
【0012】
また、上述した中間データ転送機構は、複数の前記第2のレジスタに保持された中間データを選択的に取り出して命令手順実行部に入力する第3のセレクタと、命令手順実行部によって特定の命令手順を実行したときに得られる中間データを、この命令手順の実行順序に対応した第2のレジスタに入力する第4のセレクタとを備えることが望ましい。第3および第4のセレクタを備えることにより、複数の第2のレジスタ間を順次シフトされる中間データを必要に応じて読み出して各命令手順実行部に入力したり、あるいは、各命令手順実行部から出力された中間データをいずれかの第2のレジスタに書き込むことができ、各命令手順実行部と中間データ転送機構との間の中間データの入出力動作を効率よく行うことができる。
【0013】
また、上述した複数の命令手順実行部のそれぞれは、複数の命令手順を順番にデコード処理する制御部と、この制御部によるデコード処理結果に対応する所定の演算処理を行う演算器と、この演算器の作業領域となる複数の汎用レジスタからなる汎用レジスタ群とを備えている。そして、一のパケットに対応する処理を行うために用意される複数の命令手順の数を、2つのパケットの最小受信間隔よりも長い時間に相当する数に設定することが望ましい。複数の命令手順実行部による演算処理が並行して行われるため、一のパケットに対する演算処理が終了する前に、次のパケットに対する演算処理を開始することができるため、各命令手順実行部が実行対象とする命令手順の数を、2つのパケットの最小受信間隔よりも長い時間に相当する数に設定することができ、複雑なパケット処理の実施が可能になる。
【0014】
また、上述した第1および第2のレジスタの少なくとも一方について、外部から入力されるデータの書き込み位置を可変に設定する書き込み位置設定機構を備えることが望ましい。少ない数の命令手順で演算が終了するような場合に、パケットアクセス機構や中間データ転送機構の中段のレジスタにパケットデータや中間データを入力することにより、パケットアクセス機構や中間データ転送機構に各種のデータが入力されてから出力されるまでの時間を短くすることができる。
【0015】
また、上述した第1および第2のレジスタの少なくとも一方について、外部に出力するデータの読み出し位置を可変に設定する読み出し位置設定機構を備えることが望ましい。少ない命令手順で演算が終了するような場合に、パケットアクセス機構や中間データ転送機構の中段のレジスタからパケットデータや中間データを取り出すことにより、パケットアクセス機構や中間データ転送機構に各種のデータが入力されてから出力されるまでの時間を短くすることができる。
【0016】
また、複数のパケット処理プロセッサを複数個直列に接続することによりパケット処理装置を構成することが望ましい。一のパケット処理プロセッサ内の命令手順実行部の数をあまり多くすると各命令手順実行部とパケットアクセス機構や中間データ転送機構との間の配線が複雑になり、信号の遅延時間が長くなって好ましくない場合もある。これに対し、複数の命令手順実行部を有するパケット処理プロセッサを複数個直列に接続することにより、遅延時間を増加させることなく、多くの命令手順を有するパケット処理を一のパケットに対して行うことが可能になる。
【0017】
【発明の実施の形態】
図1は、本発明を適用した第1の実施形態のパケット処理プロセッサの概略的な構成を示す図である。図1に示すように、本実施形態のパケット処理プロセッサ100は、パケットアクセス機構110、中間データ転送機構120、選択信号生成部130、複数(例えば3つ)の命令手順実行部140、150、160を含んで構成されている。
【0018】
パケットアクセス機構110は、外部から入力されるパケットデータを取り込んで保持するとともに、この保持されたパケットデータの部分的な読み出しや、部分的な書き換えを行うために用いられる。このために、パケットアクセス機構110は、縦続接続された複数(例えば24個)のレジスタp0〜p23を含んで構成されている。外部から入力されたパケットデータは、先頭から所定ビットを単位として順番に各レジスタp0〜p23に取り込まれ、転送される。例えば、各レジスタp0〜p23に保持される1ワード分のデータのビット数を「32」とすると、外部から入力されたパケットデータが32ビット単位で初段のレジスタp23に取り込まれ保持される。2段目以降の各レジスタp22〜p0は、初段のレジスタp23に取り込んで保持した部分的なパケットデータを順番にシフトして保持する。このようなシフト動作の途中において、各命令手順実行部140、150、160からパケットデータが読み出されるとともに、各命令手順実行部140、150、160から出力されるデータを、転送中の部分的なパケットデータに置き換える処理が行われる。そして、最終段(24段目)のレジスタp0からは、パケット処理プロセッサ100による所定のパケット処理が終了したパケットデータが出力される。
【0019】
また、中間データ転送機構120は、パケットデータに関連する各種の処理結果の保持、転送を行うために用いられ、縦続接続された複数(例えば24個)のレジスタe0〜e23を含んで構成されている。これらのレジスタの個数は、上述したパケットアクセス機構110に含まれるレジスタp0〜p23の数と一致するように設定されている。例えば、パケットデータに関連する各種の処理結果が外部から入力されて初段のレジスタe23に保持されると、2段目以降の各レジスタe22〜e0は、この初段のレジスタe23に取り込んで保持した処理結果を順番にシフトして保持する。このようなシフト動作の途中において、各命令手順実行部140、150、160によってこの処理結果が読み出されるとともに、各命令手順実行部140、150、160から新たな処理結果が出力されていずれかのレジスタに書き込まれる。
【0020】
選択信号生成部130は、外部からパケット到着信号が入力されると、3つの命令手順実行部140、150、160のいずれかに対して、命令手順実行動作の開始を指示する個別選択信号を出力する。例えば、選択信号生成部130は、最初のパケット到着信号が入力されると命令手順実行部140に向けて個別選択信号を出力し、2番目のパケット到着信号が入力されると命令手順実行部150に向けて個別選択信号を入力し、3番目のパケット到着信号が入力されると命令手順実行部160に向けて個別選択信号を入力する。個別選択信号の入力が3つの命令手順実行部140、150、160に対して順番に行われた後、4番目のパケット到着信号が入力されると、選択信号生成部130は、再び命令手順実行部140に向けて個別選択信号を入力する。このようにして、3つの命令手順実行部140、150、160に対する個別選択信号の入力動作が所定の順番に沿って巡回的に行われる。
【0021】
命令手順実行部140は、個別選択信号の入力タイミングに同期して、パケットアクセス機構110に入力されたパケットデータに対する所定のパケット処理を行う。このために、命令手順実行部140は、演算器141、汎用レジスタ群142、命令手順格納部143を含んで構成されている。演算器141は、命令手順格納部143に格納されている複数の命令を順番に読み出して実行することにより、所定の演算を実行する。汎用レジスタ群142は、複数(例えば8個)の汎用レジスタr0〜r7を含んでおり、これらの各汎用レジスタが必要に応じて演算器141の作業領域として用いられる。命令手順格納部143は、演算器141が実行する一連の命令を格納する。例えば、30ステップ分の命令が格納されている。
【0022】
同様に、命令手順実行部150は、演算器151、汎用レジスタ群152、命令手順格納部153を含んで構成されている。命令手順実行部160は、演算器161、汎用レジスタ群162、命令手順格納部163を含んで構成されている。これら命令手順実行部150、160は、上述した命令手順実行部140と基本的に同じ構成を有しており、その詳細な説明は省略する。
【0023】
図2は、図1に示すパケット処理プロセッサを含むパケット中継装置の構成図である。図2に示すパケット中継装置200は、複数のLAN300のそれぞれに対応するように設けられたパケット処理装置100A、受信インタフェース210、ビットアライメント整合送出器220と、パケット・ヘッダ内の宛先アドレスに基づいて所定のルーティング処理を行うスイッチ部230と、スイッチ部230から送出されたパケットを対応するいずれかのLAN320に送信する複数の送信インタフェース240とを含んで構成されている。
【0024】
受信インタフェース210は、パケット中継装置200をLAN300に接続するためのものであり、LAN300を介して送られてくるパケットを受信する。ビットアライメント整合送出器220は、受信インタフェース210によって受信されたパケットを先頭から順番に所定ビットずつ分割して、パケット中継装置200内での処理単位となる1ワード単位のパケットデータを生成するためのものであり、この分割処理がなされた所定ビット数単位のパケットデータがパケット処理装置100Aに入力される。例えば、本実施形態では、パケット中継装置200内で1ワードを32ビットとした処理が行われており、ビットアライメント整合送出器220は、入力されるパケットデータを32ビットずつに分割する。また、ビットアライメント整合送出器220は、受信インタフェース210によって受信された新たなパケットが入力されると、パケットの到着を示す所定のパケット到着信号をパケット処理装置100Aに向けて出力する。
【0025】
パケット処理装置100Aは、ビットアライメント整合送出器220から出力されるパケットデータに基づいて所定のパケット処理を行う。本実施形態では、図1に示したパケット処理プロセッサ100によってパケット処理装置100Aが構成されている。
【0026】
パケット処理装置100Aを構成するパケット処理プロセッサ100では、ビットアライメント整合送出器220からパケット到着信号が入力されると、選択信号生成部130から3つの命令手順実行部140、150、160のいずれかに向けて、巡回的に個別選択信号を出力する。この個別選択信号が入力された命令手順実行部140、150、160は、チェックサムの計算、宛先テーブルの検索、パケット・ヘッダの書き換え等の各種のパケット処理を、ビットアライメント整合送出器220から出力される各受信パケットのパケットデータに対して行った後、この各種のパケット処理がなされた後のパケットをスイッチ部230に向けて出力する。
【0027】
図3は、IPv4(バージョン4)に対応するパケットのフォーマットを示す図である。図3に示すように、IPv4に対応するパケット・ヘッダには、Version(バージョン)、IHL(Internet Header Length、ヘッダ長)、Type of Service(タイプオブサービス)、Total Length(全長)、Identification(識別名)、Flags(フラグ)、Fragment Offset(断片オフセット)、Time to Live(寿命)、Protocol(プロトコル)、Header Checksum(ヘッダチェックサム)、Source Address(送信元アドレス)、Destination Address(宛先アドレス)が含まれている。
【0028】
上述したように、パケット・ヘッダの特定の位置にパケットを中継するために必要な各種のデータが含まれており、パケット処理プロセッサ100は、このパケット・ヘッダを含むパケットデータの全体を所定ビット数を単位として先頭からパケットアクセス機構110のレジスタp23〜p0に順に取り込んで保持することにより、各種のパケット処理に必要な特定のデータを読み出したり、あるいは特定のデータを書き換えたりしている。なお、図3には、パケット・ヘッダに続くデータ領域に4ワード分の通信データが格納されている場合が示されており、本実施形態では5ワード分のパケット・ヘッダと4ワード分の通信データを含む9ワード分のパケットデータが、最も小さなサイズのパケットに対応しているものとする。
【0029】
このように、本実施形態のパケット処理プロセッサ100では、パケットが受信されてビットアライメント整合送出部220からパケット到着信号が出力される毎に、選択信号生成部130から命令手順実行部140、150、160に対して選択的かつ巡回的に個別選択信号を入力しており、命令手順実行部140、150、160のいずれかによるパケット処理が開始される。したがって、各命令手順実行部は、一のパケットに対応するパケット処理を、3つ先のパケットが到着するまでの間に終了させればよく、一のパケットに対して許容可能なパケット処理のステップ数を多く設定することができる。
【0030】
例えば、図3に示した最小サイズのパケットが連続して受信された場合の最小パケット間隔(最小受信間隔)において実行可能な命令手順の数をnとすると、本実施形態のパケット処理プロセッサ100では、3つの命令手順実行部140、150、160のそれぞれにおいて一のパケットに対して許容可能な命令手順の数を3nとすることができるため、パケット処理プロセッサ100は、受信パケットのサイズ(パケットのデータ長)に依存しない数の命令手順を有するパケット処理を行うことが可能になる。
【0031】
次に、本実施形態のパケット処理プロセッサ100の詳細な構成および動作の具体例について説明する。
図4は、パケット処理プロセッサ100の詳細な構成を示す図である。図4に示すように、パケットアクセス機構110は、パケットデータを先頭からワード単位(32ビット単位)で順番に保持する上述した24個のレジスタp0〜p23の他に、これらのレジスタp0〜p23のそれぞれの前段に設けられた24個のセレクタ(S)10と、レジスタp0〜p23のそれぞれの出力データを選択するセレクタ(S)12とを含んで構成されている。
【0032】
レジスタp23の前段に設けられた初段のセレクタ10は、パケットアクセス機構110に入力された32ビットのパケットデータと、3つの命令手順実行部140、150、160のそれぞによって所定の命令手順を実行したときに得られる3つの結果データとが入力されており、これら4つのデータの中からいずれかを選択してレジスタp23に向けて出力する。レジスタp23は、このようにして前段のセレクタ10から出力されたデータを、クロック信号の次の立ち上がりに同期して取り込んで保持する。
【0033】
また、レジスタp22とレジスタp23の間に設けられた2段目のセレクタ10は、レジスタp23から出力されるデータと、3つの命令手順実行部140、150、160のそれぞによって所定の命令手順を実行したときに得られる3つの結果データとが入力されており、これら4つのデータの中からいずれかを選択してレジスタp22に向けて出力する。レジスタp22は、このようにして前段のセレクタ10から出力されたデータを、クロック信号の次の立ち上がりに同期して取り込んで保持する。
【0034】
同様に、3段目以降の各セレクタ10は、前段に接続されたレジスタから出力されるデータと、3つの命令手順実行部140、150、160のそれぞれによって所定の命令手順を実行したときに得られる3つの結果データとが入力されており、これら4つのデータの中からいずれかを選択して後段のレジスタに向けて出力する。この後段のレジスタは、このようにして前段のセレクタ10から出力されたデータを、クロック信号の次の立ち上がりに同期して取り込んで保持する。
【0035】
また、24個のレジスタp0〜p23の出力側に共通に接続されたセレクタ12は、各レジスタp0〜p23から出力されるデータが入力されており、その中からそれぞれ最大2個ずつを選択して、命令手順実行部140、150、160に向けて出力する。
【0036】
また、図4に示すように、中間データ転送機構120は、中間データを保持する上述した24個のレジスタe0〜e23の他に、これらのレジスタe0〜e23のそれぞれの前段に設けられた24個のセレクタ(S)20と、レジスタe0〜e23のそれぞれの出力データを選択するセレクタ(S)22とを含んで構成されている。この中間データ転送機構120は、上述したパケットアクセス機構110と基本的に同じ構成を有している。
【0037】
すなわち、レジスタp23の前段に設けられた初段のセレクタ20は、中間データ転送機構120に入力された中間データと、3つの命令手順実行部140、150、160のそれぞれによって所定の命令手順を実行したときに得られる3つの中間データとが入力されており、これら4つの中間データの中からいずれかを選択してレジスタe23に向けて出力する。レジスタe23は、このようにして前段のセレクタ20から出力されたデータを、クロック信号の次の立ち上がりに同期して取り込んで保持する。
【0038】
また、レジスタe22とレジスタe23の間に設けられた2段目のセレクタ20は、レジスタe23から出力される中間データと、3つの命令手順実行部140、150、160のそれぞれによって所定の命令手順を実行したときに得られる3つの中間データとが入力されており、これら4つの中間データの中からいずれかを選択してレジスタe22に向けて出力する。レジスタe22は、このようにして前段のセレクタ20から出力されたデータを、クロック信号の次の立ち上がりに同期して取り込んで保持する。
【0039】
同様に、3段目以降の各セレクタ20は、前段に接続されたレジスタから出力される中間データと、3つの命令手順実行部140、150、160のそれぞによって所定の命令手順を実行したときに得られる3つの中間データとが入力されており、これら4つの中間データの中からいずれかを選択して後段のレジスタに向けて出力する。この後段のレジスタは、このようにして前段のセレクタ20から出力された中間データを、クロック信号の次の立ち上がりに同期して取り込んで保持する。
【0040】
また、24個のレジスタe0〜e23の出力側に共通に接続されたセレクタ22は、各レジスタe0〜e23から出力される中間データが入力されており、その中からそれぞれ最大2個ずつを選択して、命令手順実行部140、150、160に向けて出力する。
【0041】
なお、本実施形態では、パケットアクセス機構110に含まれるレジスタp0〜p23の数と中間データ転送機構120に含まれるレジスタe0〜e23の数とを一致させており、しかも各レジスタは同じクロック信号に同期してデータの取り込みを行うように設定されている。このため、パケットデータがパケットアクセス機構110内の各レジスタ間を順にシフトして所定のパケット処理が行われているときに、そのパケット処理で生じた中間データもこのパケット処理に同期して中間データ転送機構120内を順にシフトするようになっている。
【0042】
また、図4に示すように、命令手順実行部140は、パケットアクセス機構110に入力されたパケットデータに対して所定のパケット処理を行うために、上述した演算器141、汎用レジスタ群142の他に、各命令手順を入力順にデコードする命令デコーダ40を含む制御部42と、演算器141の処理ステップ数をカウントするプログラムカウンタ44と、演算器141による演算結果の各状態を保持するフラグ・レジスタ46とを含んで構成されている。また、汎用レジスタ群142は、8個の汎用レジスタr0〜r7の中からデータの入力先となる汎用レジスタを切り替える入力セレクタ48と、データの読み出し元となる汎用レジスタを切り替える出力セレクタ49とを含んで構成されている。
【0043】
制御部42内の命令デコーダ40は、クロック信号に同期して入力される一連の命令手順を順番にデコード処理する。制御部42は、この処理結果に基づいて、命令手順実行部140内の他の構成部やパケットアクセス機構110内のセレクタ10、12あるいは中間データ転送機構120内のセレクタ20、22に対して、必要に応じて動作指示を与える。
【0044】
なお、図4では、これらの動作指示を行うために必要な制御線が省略されており、各構成部間のデータ線のみが示されている。例えば、ある命令手順が実行されたときに、汎用レジスタr0に格納されたデータとレジスタp23に格納されたデータとを加算し、その結果をレジスタr0に格納する処理が行われる場合を考える。この命令手順が命令デコーダ40によってデコード処理されると、制御部42は、まず出力セレクタ49を制御して汎用レジスタr0のデータを演算器141の一方の入力端子に向けて出力するとともに、パケットアクセス機構110内のセレクタ12を制御してレジスタp23のデータを演算器141の他方の入力端子に向けて出力する。次に、制御部42は、演算器141を制御して2つの入力端子に入力されたデータ同士を加算し、その後入力セレクタ48と汎用レジスタr0を制御して、この加算結果を汎用レジスタr0に格納する。
【0045】
また、図1に示した構成例では、一連の命令手順を命令手順実行部140内の命令手順格納部143に格納したが、これらの命令手順の保持方法については各種の変形が考えられる。例えば、命令手順実行部140の外部あるいはパケット処理プロセッサ100の外部にメモリ(図示せず)を設けておいて、パケット処理の実施に先立ってこれらの命令手順を順番に読み出すようにしてもよい。
【0046】
また、図4において、他の2つの命令手順実行部150、160は、上述した命令手順実行部140と基本的に同じ構成を有しており、同じ命令手順が入力された場合の動作も命令手順実行部140の対応する動作と同じである。したがって、入力されるパケットデータに対して、どの命令手順実行部140、150、160がパケット処理を行った場合であっても同じ処理結果を得ることができる。
【0047】
図5は、各命令手順実行部140、150、160内の制御部42に入力される命令の具体例を示す図である。また、図6は、図5に示した命令セット(命令の種類)を用いて構成される一連の命令手順を示す図であり、一例としてパケット・ヘッダのチェックサムを計算する場合のプログラムが示されている。
【0048】
これらの図に示すように、本実施形態のパケット処理プロセッサ100で実行される各命令の種類は、非実行、データ転送、整数演算、論理演算、ビット演算に大別される。
また、本実施形態では、図6に示すように、各命令を記述するときに用いる命令フォーマットに関しては、「MOVE」等で表現される命令ニモニックの前に必ず条件コードがつくように各命令手順の表記ルールが設定されている。パケット処理プロセッサ100は、直前の命令の演算結果がこの条件コードで示される条件を満たす場合に、この条件コードの次に記述された命令を実行する。例えば、パケット処理プロセッサ100が実行した直前の命令の演算結果が0である場合を考えると、パケット処理プロセッサ100は、現在実行しようとしている命令の条件コードが「=」(0に等しい)ならばこの命令を実行し、それ以外の条件コードが付されている場合にはその命令を実行せずに単にクロックに同期した時間のみが経過する。このような条件コードとしては、例えば「=」以外に、「≠」(0と等しくない)、「<」(0より小さい)、「>」(0より大きい)「A」(常に実行(Always))がある。各命令手順実行部140、150、160は、直前に実行した命令に対応する演算結果に対して、各条件コードの真偽を評価可能な(各条件コードを満たすか否かを判定可能な)数の評価フラグをフラグ・レジスタ46として有している。また、各命令手順実行部140、150、160内の各フラグ・レジスタ46には、キャリーを考慮した加算命令「ADC」を実行したときに生じるキャリーを保持するキャリーフラグも含まれている。
【0049】
また、各命令のフォーマットは、オペランドの数によって2種類存在する。3つのオペランドを有する命令のフォーマットは、条件コード、命令ニモニック、ディスティネーション・オペランド、ソース・オペランド1、ソース・オペランド2となる。また、2つのオペランドを有する命令のフォーマットは、条件コード、命令ニモニック、ディスティネーション・オペランド、ソース・オペランド1となる。
【0050】
次に、図6に示した一連の命令手順を実行する場合のパケット処理プロセッサ100の動作を説明する。なお、パケット・ヘッダのチェックサムを計算するパケット処理を実行する前に、図6に示した一連の命令手順(例えば、命令手順実行部140の場合は、通し番号1〜11に対応する11個の命令手順)が順番に制御部42に入力され、命令デコーダ40によって各命令手順に対するデコード処理が行われる。これらのデコード処理結果が制御部42内に保持されており、1クロック毎に一つの命令手順に対応した演算が演算器141によって実施される。
【0051】
パケット中継装置200によってパケットが受信され、ビットアライメント整合送出器220からパケット到着信号がパケット処理装置100Aを構成するパケット処理プロセッサ100に入力されると、選択信号生成部130は、命令手順実行部140に向けて個別選択信号を出力する。以後、命令手順実行部140内の演算器141によるパケット・ヘッダのチェックサムの計算が開始される。なお、このタイミングで、受信パケットの先頭データ(先頭の32ビットデータa0)がパケットアクセス機構110の初段のレジスタp23に格納される。
【0052】
順序1(通し番号1)
まず、演算器141は、順序1において、パケット・ヘッダの先頭データが格納されているパケットアクセス機構110内の初段のレジスタp23の内容を、内蔵された汎用レジスタ群142に含まれる汎用レジスタr0に転送する。
【0053】
順序2(通し番号2)
演算器141は、次のクロック信号に同期して、レジスタp23の内容と、汎用レジスタr0の内容とを加算し、この加算結果を汎用レジスタr0に格納する。このとき、直前のクロック信号に同期して上述した順序1においてレジスタp23に格納されたパケットの先頭データは次段のレジスタp22に転送されており、初段のレジスタp23にはあらたにIPヘッダの次のデータが格納されている。すなわち、この順序2によって実行される加算処理によって、パケットの先頭の1ワード分のデータと次の1ワード分のデータとが加算され、その結果が汎用レジスタr0に格納される。
【0054】
順序3(通し番号3)〜順序5(通し番号5)
以後同様にして、順序3〜5における加算処理が繰り返され、パケットの先頭から5ワード目までの各データが加算される。
順序6(通し番号6)
次に、演算器141は、即値0と、汎用レジスタr0の内容と、直前の順序5の加算処理において発生したキャリーとを加算し、この加算結果を汎用レジスタr0に格納する。なお、即値とは、汎用レジスタ群142内の各汎用レジスタやパケットアクセス機構110内の各レジスタを指定するのではなく、値そのものを指定するものであり、図6では「$」で表現されている。すなわち、$0とは即値として指定される値「0」を示し、$16とは即値として指定される値「16」を示す。
【0055】
順序2〜6で実行される加算処理によって、パケットヘッダを構成する各ワードのデータについて、キャリーを考慮した加算処理が行われ、この加算結果が汎用レジスタr0に格納される。
順序7(通し番号7)
演算器141は、汎用レジスタr0の内容を汎用レジスタr1に転送する処理を実行する。
【0056】
順序8(通し番号8)
演算器141は、汎用レジスタr0のデータを16ビット右に(下位ビット側に)シフトし、空いた上位ビット側に“0”を詰めたデータを求め、その結果を汎用レジスタr0に格納する処理を実行する。この順序8と一つ前の順序7の処理によって、順序6までの加算処理によって得られた32ビットデータの上位16ビットと下位16ビットが、汎用レジスタr0、r1のそれぞれに格納される。
【0057】
順序9(通し番号9)
演算器141は、汎用レジスタr0の内容と汎用レジスタr1の内容とを半ワード(本実施形態では16ビット)単位で加算し、この加算結果を汎用レジスタr0に格納する。
【0058】
順序10(通し番号10)
演算器141は、汎用レジスタr0に格納されたデータを半ワード単位で反転させ、その結果を汎用レジスタr0に格納する。この処理によって、汎用レジスタr0の内容に対して1の補数を求める演算が行われる。
【0059】
順序11(通し番号11)
条件コードが「≠」なので、演算器141は、順序10における処理結果が0でない場合には、即値1($1)を中間データ転送機構120内のレジスタe13に格納する処理を行う。また、演算器141は、順序10における処理結果が0の場合には、即値1をレジスタe13に格納する処理を行わない。
【0060】
なお、順序1〜11の各順序の命令手順が実行される動作と並行して、パケットアクセス機構110に入力されたパケットデータがレジスタp23、p22、…と順番にシフトされるため、順序11の命令手順が実行されるタイミングでは、パケット・ヘッダのチェックサムの計算対象となっているパケットの先頭のパケットデータがレジスタp13に格納される。
【0061】
次のクロック信号に同期して、パケット処理プロセッサ100は、中間データ転送機構120内のレジスタe13の内容をレジスタe12にシフトするとともに、パケットアクセス機構110内のレジスタp13に格納された先頭のパケットデータをレジスタp12にシフトする。このようにして、パケットアクセス機構110内の各レジスタ間をパケットデータがシフトする動作に同期して、中間データ転送機構120内の各レジスタ間をチェックサムの計算結果がシフトする動作が行われ、パケット処理プロセッサ100からパケットデータが出力されるタイミングで、このパケットデータに付随する情報として、パケット・ヘッダのチェックサムの計算結果を外部に伝達することができる。
【0062】
ところで、本実施形態では、最小パケット間隔が10クロック分であるため、パケットが連続して受信された場合には、最初のパケットに対する命令手順実行部140によるチェックサム計算が終了する前に、次のパケットがパケット中継装置200に到着してしまう。しかし、本実施形態では、2番目に受信されたパケットに対するパケット・ヘッダのチェックサム計算は、命令手順実行部150によって行われるため、2つの受信パケットに対するパケット・ヘッダのチェックサム計算が並行して実施されることになる。例えば、図6に示すように、通し番号11に対応して、命令手順実行部140では順序11の処理が行われているときに、命令手順実行部150では順序1の処理が行われる。
【0063】
同様に、2番目の受信パケットに対する命令手順実行部150によるチェックサム計算が終了する前に、3番目のパケットがパケット中継装置200に到着する場合がある。この場合には、例えば、図6に示すように、通し番号21に対応して、命令手順実行部150では順序11の処理が行われているときに、命令手順実行部160では順序1の処理が行われる。
【0064】
このように、本実施形態のパケット処理プロセッサ100では、最小パケット間隔に対応して実行可能な命令手順の数が10である3つの命令手順実行部140、150、160を用いて、受信パケットに対する所定のパケット処理を選択的かつ巡回的に行っているため、命令手順実行部140、150、160のそれぞれにおいて実行可能なステップ数を3倍の30ステップに増やすことができる。したがって、パケットの受信間隔に依存しない命令手順を有するパケット処理を行うことが可能であり、複雑なパケット処理を行うことができる。
【0065】
また、本実施形態のパケット処理プロセッサ100では、順番にパケットデータをシフトしながら各命令手順実行部による読み書きを行うためのパケットアクセス機構120を内蔵することにより、パケット処理に関してパケット処理プロセッサとメモリとの間のデータの読み書き時に生じるオーバーヘッドを低減することができ、高速なパケット処理が可能になる。
【0066】
〔第2の実施形態〕
図7は、本発明を適用した第2の実施形態のパケット処理装置の概略的な構成を示す図である。
図7に示す本実施形態のパケット処理装置は、縦続接続された複数個(例えば6個)のパケット処理プロセッサ100を含んで構成されている。それぞれのパケット処理プロセッサ100は、図4に示した構成を有している。
【0067】
本実施形態のパケット処理装置では、6個のパケット処理プロセッサ100のそれぞれに含まれる各パケットアクセス機構110が直列に接続されている。これにより、ビットアライメント整合送出器220から入力されるパケットデータが、各段のパケットアクセス機構110内の各レジスタp0〜p23を順番に移動し、最終段(6段目)のパケットアクセス機構110内のレジスタp0からパケット処理装置の外部に出力される。
【0068】
同様に、6個のパケット処理プロセッサ100のそれぞれに含まれる各中間データ転送機構120が直列に接続されており、ビットアライメント整合送出器220から入力される中間データが、各段の中間データ転送機構120内の各レジスタe0〜e23を順番に移動し、最終段の中間データ転送機構120内のレジスタe0からパケット処理装置の外部に出力される。
【0069】
これら6個のパケット処理プロセッサ100は単一の集積回路によって形成されており、それぞれの間の配線はチップ内配線によって接続されているため、前段のパケット処理プロセッサ100から出力されるパケットデータや中間データが次のクロック信号の立ち上がりに同期して、次段のパケット処理プロセッサ100内のパケットアクセス機構110や中間データ転送機構120に取り込むことができるようになっている。
【0070】
このように、m個のパケット処理プロセッサ100を直列接続することにより、一つのパケットに対して行われるパケット処理の命令手順の数をm倍に増やすことができる。特に、上述した第1の実施形態で説明したように、一のパケット処理プロセッサ内の命令手順実行部の数を増やすことにより、パケット処理の命令手順の数を増やすことが可能であるが、命令手順実行部の数をあまり多くすると、各命令手順実行部とパケットアクセス機構110や中間データ転送機構120との間の配線が複雑になりすぎて、回路の遅延時間が増えて1クロックで1命令を実行できなくなる場合も生じる。このような場合には、命令手順実行部の数を所定の許容数以下に抑えるとともに、複数のパケット処理プロセッサ100を直列接続することにより、パケット処理の命令手順の数を増やすことが望ましい。これにより、回路の遅延時間を所定値以下に抑えて1クロックで1命令が実行できるようにするとともに、複雑なパケット処理に必要な命令手順の数を確保することができる。
【0071】
なお、本発明は上記実施形態に限定されるものではなく、本発明の要旨の範囲内において種々の変形実施が可能である。例えば、上述した実施形態では、パケット中継装置200に用いられるパケット処理装置100Aについて説明したが、その他の通信装置に用いられるパケット処理装置に本発明を適用することができる。
【0072】
また、上述した実施形態では、受信したIPパケットに対して所定のパケット処理を行う場合を説明したが、IPパケット以外のパケットに対してパケット処理を行うようにしてもよい。
また、上述した各実施形態では、パケット処理プロセッサ100内のパケットアクセス機構110と中間データ転送機構120のそれぞれでは、外部から入力されるパケットデータや中間データが初段のレジスタに入力され、最終段のレジスタから出力されるデータがパケット処理プロセッサ100から外部に出力されるようにしたが、パケットアクセス機構110や中間データ転送機構120のそれぞれの中段のレジスタに外部から入力されたデータを直接格納したり、中段のレジスタに格納されたデータを外部に直接取り出すようにしてもよい。
【0073】
図8は、パケット処理プロセッサに含まれるパケットアクセス機構および中間データ転送機構の変形例を示す図である。図8に示すパケットアクセス機構110Aは、図4に示したパケットアクセス機構110に対して、外部からパケットデータが入力される位置が変更可能になっている点が異なっている。具体的には、パケットアクセス機構110Aでは、レジスタp0〜p23のそれぞれの前段に設けられたセレクタ(S)10にパケット処理プロセッサ100の外部からパケットデータが入力されており、外部から入力されるパケットデータをいずれかのセレクタ10によって選択することにより、このセレクタ10の後段に接続されたレジスタにパケットデータを直接入力することができる。同様に、中間データ転送機構120Aでは、レジスタe0〜e23のそれぞれの前段に設けられたセレクタ(S)20にパケット処理プロセッサ100の外部から中間データが入力されており、外部から入力される中間データをいずれかのセレクタ20によって選択することにより、このセレクタ20の後段に接続されたレジスタに中間データを直接入力することができる。パケットアクセス機構110A内の各セレクタ10あるいは中間データ転送機構120A内の各セレクタ20が書き込み位置設定機構に対応する。
【0074】
したがって、図6に示したIPヘッダのチェックサム計算のように少ないステップ数で演算が終了するような場合に、パケットアクセス機構110Aや中間データ転送機構110Aの中段のレジスタにパケットデータや中間データを入力することにより、パケットアクセス機構110Aや中間データ転送機構120Aに各種のデータが入力されてから出力されるまでの時間(タイムラグ)を短くすることができる。
【0075】
図9は、パケット処理プロセッサに含まれるパケットアクセス機構および中間データ転送機構の他の変形例を示す図である。図9に示すパケットアクセス機構110Bは、図4に示したパケットアクセス機構110に対して、各レジスタp0〜p23に格納されたデータを直接取り出すことができるようになっている点が異なっている。具体的には、パケットアクセス機構110Bでは、レジスタp0〜p23のそれぞれから出力されるデータが後段の各セレクタ(S)10に入力されているとともに、このデータがセレクタ14にも入力されている。セレクタ14は、パケット処理プロセッサの外部にパケットデータを取り出すレジスタを選択するためのものであり、選択されたレジスタに格納されたパケットデータは、後段の各レジスタを通すことなく、このセレクタ14を通して出力される。同様に、中間データ転送機構120Bでは、レジスタe0〜e23のそれぞれから出力されるデータが後段の各セレクタ(S)20に入力されているとともに、このデータがセレクタ24にも入力されている。セレクタ24は、パケット処理プロセッサの外部に中間データを取り出すレジスタを選択するためのものであり、選択されたレジスタに格納された中間データは、後段の各レジスタを通すことなく、このセレクタ24を通して出力される。上述したパケットアクセス機構110B内のセレクタ14あるいは中間データ転送機構120B内のセレクタ24が読み出し位置設定機構に対応する。
【0076】
したがって、図6に示したIPヘッダのチェックサム計算のように少ないステップ数で演算が終了するような場合に、パケットアクセス機構110Bや中間データ転送機構110Bの中段のレジスタからパケットデータや中間データを取り出すことにより、パケットアクセス機構110Bや中間データ転送機構120Bに各種のデータが入力されてから出力されるまでの時間を短くすることができる。
【0077】
また、上述した実施形態では、パケット処理プロセッサ100内に中間データ転送機構120を設けた場合を説明したが、中間データを外部に出力する必要がないパケット処理を行う場合等においてはこの中間データ転送機構120を省略してもよい。例えば、パケット・ヘッダに含まれる「Time to Live(寿命)」の値から1を減じる処理を行う場合には、入力されるパケットデータに含まれるこの「Time to Live」の値を読み出し、この読み出した値から1を減算し、さらにこの減算結果を元の「Time to Live」の領域に書き込む処理を行う。この処理結果に対応する中間データは特に必要ないため、このようなパケット処理を行う場合には中間データ転送機構120を省略することができる。
【0078】
(付記1) 命令を実行することにより所定のパケット処理を行うパケット処理プロセッサを有するパケット処理装置であって、
前記パケット処理プロセッサは、
複数の第1のレジスタを含んで構成されており、受信したパケットデータを先頭から順に前記第1のレジスタ間でシフトして伝送するパケットアクセス機構と、
前記パケットアクセス機構内の前記第1のレジスタに保持された前記パケットデータに基づいて、複数のパケットのそれぞれに対応する所定の演算を並列に実行する複数の命令手順実行部と、
前記パケットの受信タイミングに同期して、このパケットに対応する前記演算を行う前記命令手順実行部を選択する選択信号を生成する選択信号生成部と、
を備えることを特徴とするパケット処理装置。
【0079】
(付記2) 付記1において、
複数の第2のレジスタを含んで構成されており、前記パケットアクセス機構内の前記第1のレジスタを用いた前記パケットデータのシフト動作に同期して、前記パケットデータに対応する前記命令手順実行部による処理結果である中間データを前記第2のレジスタ間でシフトして転送する中間データ転送機構をさらに備えることを特徴とするパケット処理装置。
【0080】
(付記3) 付記1または2において、
前記パケットアクセス機構は、
複数の前記第1のレジスタに保持された前記パケットデータを選択的に取り出して前記命令手順実行部に入力する第1のセレクタと、
前記命令手順実行部によって特定の命令手順を実行したときに得られる結果データを、この命令手順の実行順序に対応した前記第1のレジスタに入力する第2のセレクタと、
を備えることを特徴とするパケット処理装置。
【0081】
(付記4) 付記2において、
前記中間データ転送機構は、
複数の前記第2のレジスタに保持された前記中間データを選択的に取り出して前記命令手順実行部に入力する第3のセレクタと、
前記命令手順実行部によって特定の命令手順を実行したときに得られる前記中間データを、この命令手順の実行順序に対応した前記第2のレジスタに入力する第4のセレクタと、
を備えることを特徴とするパケット処理装置。
【0082】
(付記5) 付記1〜4のいずれかにおいて、
複数の前記命令手順実行部のそれぞれは、
複数の命令手順を順番にデコード処理する制御部と、
前記制御部によるデコード処理結果に対応する所定の演算処理を行う演算器と、
前記演算器の作業領域となる複数の汎用レジスタからなる汎用レジスタ群と、
を備え、一の前記パケットに対応する処理を行うために用意される前記複数の命令手順の数を、2つの前記パケットの最小受信間隔よりも長い時間に相当する数に設定することを特徴とするパケット処理装置。
【0083】
(付記6) 付記1〜5のいずれかにおいて、
前記第1および第2のレジスタの少なくとも一方について、外部から入力されるデータの書き込み位置を可変に設定する書き込み位置設定機構を備えることを特徴とするパケット処理装置。
【0084】
(付記7) 付記1〜5のいずれかにおいて、
前記第1および第2のレジスタの少なくとも一方について、外部に出力するデータの読み出し位置を可変に設定する読み出し位置設定機構を備えることを特徴とするパケット処理装置。
【0085】
(付記8) 付記1〜7のいずれかにおいて、
直列に接続された複数の前記パケット処理プロセッサを有することを特徴とするパケット処理装置。
【0086】
【発明の効果】
上述したように、本発明によれば、連続してパケットが入力されたときに、各パケットに対応する演算を行う命令手順実行部が順番に選択されて並列処理が行われるため、データ長が短いパケットが受信されるような場合であっても、このパケットのデータ長に依存しない各命令手順実行部の演算時間を確保することができ、多くの命令手順が実行可能になる。
【0087】
また、パケットアクセス機構を用いてパケットデータの保持および転送を行っており、各命令手順実行部とパケットアクセス機構内の第1のレジスタとの間で、演算の対象となるパケットデータの読み書きが行われるため、従来のパケット処理装置のように、プロセッサとメモリとの間でパケットデータの読み書きを行う場合に生じるオーバーヘッドを低減することができ、パケットデータの読み書き動作も含めた演算処理の高速化が可能になる。
【図面の簡単な説明】
【図1】第1の実施形態のパケット処理プロセッサの概略的な構成を示す図である。
【図2】図1に示すパケット処理プロセッサを含むパケット中継装置の構成図である。
【図3】IPv4に対応するパケットのフォーマットを示す図である。
【図4】本実施形態のパケット処理プロセッサの詳細な構成を示す図である。
【図5】各命令手順実行部内の制御部に入力される命令の具体例を示す図である。
【図6】図5に示した命令セットを用いて構成される一連の命令手順を示す図である。
【図7】第2の実施形態のパケット処理装置の概略的な構成を示す図である。
【図8】パケット処理プロセッサに含まれるパケットアクセス機構および中間データ転送機構の変形例を示す図である。
【図9】パケット処理プロセッサに含まれるパケットアクセス機構および中間データ転送機構の他の変形例を示す図である。
【図10】従来のパケット処理装置の構成を示す図である。
【符号の説明】
10、12、20、22 セレクタ(S)
40 命令デコーダ
42 制御部
44 プログラム・カウンタ
46 フラグ・レジスタ
48、49 セレクタ
100 パケット処理プロセッサ
110 パケットアクセス機構
120 中間データ転送機構
140、150、160 命令手順実行部
141、151、161 演算器
142、152、162 汎用レジスタ群
200 パケット中継装置
210 受信インタフェース
220 ビットアライメント整合送出器
230 スイッチ部
240 送信インタフェース
300、320 LAN

Claims (4)

  1. 命令を実行することにより所定のパケット処理を行うパケット処理プロセッサを有するパケット処理装置であって、
    前記パケット処理プロセッサは、
    複数の第1のレジスタを含んで構成されており、受信したパケットデータを先頭から順に前記第1のレジスタ間でシフトして伝送するパケットアクセス機構と、
    前記パケットアクセス機構に直接接続されており、前記パケットアクセス機構内の前記第1のレジスタに保持された前記パケットデータに基づいて、複数のパケットのそれぞれに対応する所定の演算を並列に実行する複数の命令手順実行部と、
    前記パケットの受信タイミングに同期して、このパケットに対応する前記演算を行う前記命令手順実行部を選択する選択信号を生成する選択信号生成部と、
    複数の第2のレジスタを含んで構成されており、前記パケットアクセス機構内の前記第1のレジスタを用いた前記パケットデータのシフト動作に同期して、前記パケットデータに対応する前記命令手順実行部による処理結果である中間データを前記第2のレジスタ間でシフトして転送する中間データ転送機構と、
    を備えることを特徴とするパケット処理装置。
  2. 請求項1において、
    前記第1および第2のレジスタの少なくとも一方について、外部から入力されるデータの書き込み位置を可変に設定する書き込み位置設定機構を備えることを特徴とするパケット処理装置。
  3. 請求項1において、
    前記第1および第2のレジスタの少なくとも一方について、外部に出力するデータの読み出し位置を可変に設定する読み出し位置設定機構を備えることを特徴とするパケット処理装置。
  4. 請求項1〜3のいずれかにおいて、
    直列に接続された複数の前記パケット処理プロセッサを有することを特徴とするパケット処理装置。
JP2000234075A 2000-08-02 2000-08-02 パケット処理装置 Expired - Fee Related JP4203979B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2000234075A JP4203979B2 (ja) 2000-08-02 2000-08-02 パケット処理装置
US09/792,304 US7089407B2 (en) 2000-08-02 2001-02-23 Packet processing device processing input packet data in a packet routing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000234075A JP4203979B2 (ja) 2000-08-02 2000-08-02 パケット処理装置

Publications (2)

Publication Number Publication Date
JP2002051072A JP2002051072A (ja) 2002-02-15
JP4203979B2 true JP4203979B2 (ja) 2009-01-07

Family

ID=18726503

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000234075A Expired - Fee Related JP4203979B2 (ja) 2000-08-02 2000-08-02 パケット処理装置

Country Status (2)

Country Link
US (1) US7089407B2 (ja)
JP (1) JP4203979B2 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9900734B2 (en) 1999-10-28 2018-02-20 Lightwaves Systems, Inc. Method for routing data packets using an IP address based on geo position
US8085813B2 (en) 1999-10-28 2011-12-27 Lightwaves Systems, Inc. Method for routing data packets using an IP address based on geo position
US6868419B1 (en) 1999-10-28 2005-03-15 Lightwaves Systems Inc. Method of transmitting data including a structured linear database
US6976034B1 (en) * 1999-10-28 2005-12-13 Lightwaves Systems, Inc. Method of transmitting data including a structured linear database
US7983349B2 (en) 2001-03-20 2011-07-19 Lightwaves Systems, Inc. High bandwidth data transport system
US7571211B1 (en) 2002-04-15 2009-08-04 Lightwaves Systems, Inc. Method for routing messages over a network based on location
US7545868B2 (en) 2001-03-20 2009-06-09 Lightwaves Systems, Inc. High bandwidth data transport system
US8766773B2 (en) 2001-03-20 2014-07-01 Lightwaves Systems, Inc. Ultra wideband radio frequency identification system, method, and apparatus
US7180893B1 (en) 2002-03-22 2007-02-20 Juniper Networks, Inc. Parallel layer 2 and layer 3 processing components in a network router
US7236501B1 (en) 2002-03-22 2007-06-26 Juniper Networks, Inc. Systems and methods for handling packet fragmentation
US7212530B1 (en) 2002-03-22 2007-05-01 Juniper Networks, Inc. Optimized buffer loading for packet header processing
US7215662B1 (en) * 2002-03-22 2007-05-08 Juniper Networks, Inc. Logical separation and accessing of descriptor memories
US7239630B1 (en) * 2002-03-22 2007-07-03 Juniper Networks, Inc. Dedicated processing resources for packet header generation
US7158520B1 (en) * 2002-03-22 2007-01-02 Juniper Networks, Inc. Mailbox registers for synchronizing header processing execution
US7283528B1 (en) 2002-03-22 2007-10-16 Raymond Marcelino Manese Lim On the fly header checksum processing using dedicated logic
US7961705B2 (en) * 2003-04-30 2011-06-14 Lightwaves Systems, Inc. High bandwidth data transport system
JP4460867B2 (ja) 2003-09-26 2010-05-12 東芝ストレージデバイス株式会社 インターフェース装置及びパケット転送方法
JP4387815B2 (ja) 2004-01-30 2009-12-24 富士通株式会社 シリアルタイプのインターフェイス回路、そのパワーセーブ方法及びシリアルインターフェイスを持つデバイス
GB2421092B (en) * 2004-12-07 2008-12-03 Hewlett Packard Development Co Bufferless writing of data to memory
JP2007122626A (ja) * 2005-10-31 2007-05-17 Matsushita Electric Ind Co Ltd マイクロプロセッサ
JP4509068B2 (ja) * 2006-07-24 2010-07-21 富士通株式会社 パケット処理装置
US7944978B2 (en) * 2007-10-29 2011-05-17 Lightwaves Systems, Inc. High bandwidth data transport system

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4128880A (en) * 1976-06-30 1978-12-05 Cray Research, Inc. Computer vector register processing
US4071706A (en) * 1976-09-13 1978-01-31 Rca Corporation Data packets distribution loop
JPS60134974A (ja) * 1983-12-23 1985-07-18 Hitachi Ltd ベクトル処理装置
JPS6123275A (ja) * 1984-07-11 1986-01-31 Nec Corp ベクトル処理装置
US5630154A (en) * 1994-10-11 1997-05-13 Hughes Aircraft Company Programmable systolic array system arranged in a found arrangement for passing data through programmable number of cells in a time interleaved manner
US6401194B1 (en) * 1997-01-28 2002-06-04 Samsung Electronics Co., Ltd. Execution unit for processing a data stream independently and in parallel
DE69841486D1 (de) * 1997-05-31 2010-03-25 Texas Instruments Inc Verbesserte Paketvermittlung
JP3233353B2 (ja) 1998-01-23 2001-11-26 日本電気株式会社 ヘッダ処理装置とそのヘッダ処理方法

Also Published As

Publication number Publication date
JP2002051072A (ja) 2002-02-15
US20020016905A1 (en) 2002-02-07
US7089407B2 (en) 2006-08-08

Similar Documents

Publication Publication Date Title
JP4203979B2 (ja) パケット処理装置
US6654823B2 (en) Packet-data processing apparatus
US7283528B1 (en) On the fly header checksum processing using dedicated logic
JP2001251349A (ja) パケットプロセッサ
JP4558879B2 (ja) テーブルを用いたデータ処理装置および処理システム
US7236501B1 (en) Systems and methods for handling packet fragmentation
US7680116B1 (en) Optimized buffer loading for packet header processing
US20100215046A1 (en) Logical separation and accessing of descriptor memories
US9083641B2 (en) Method and apparatus for improving packet processing performance using multiple contexts
JP2001134527A (ja) バススイッチ用アダプタ、バススイッチ用ブリッジ、バススイッチ、およびバススイッチシステム
CN114296707A (zh) 基于p4语言实现的可编程硬件逻辑架构和逻辑实现方法
CN110535847B (zh) 网络处理器及网络数据的入栈处理方法
US7239630B1 (en) Dedicated processing resources for packet header generation
KR100510030B1 (ko) 간단한회로로분기해저드의저감을실현한파이프라인프로세서
JP3742250B2 (ja) パケットデータ処理装置及びそれを用いたパケット中継装置
JP4342128B2 (ja) パケット処理プロセッサ及びパケット処理プロセッサシステム
JP4342100B2 (ja) パケット処理装置
US7158520B1 (en) Mailbox registers for synchronizing header processing execution
JP3773804B2 (ja) データ幅変換装置及びデータ処理装置
US7180893B1 (en) Parallel layer 2 and layer 3 processing components in a network router
JPH10255485A (ja) 連想メモリおよびネットワークフレーム中継器
JP2002335275A (ja) パケット処理装置
US20240193117A1 (en) Coarse grained reconfigurable architecture
JPS60105050A (ja) パイプライン制御方式
JP2002247095A (ja) パケットデータ処理装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050606

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051003

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060523

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060724

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20060821

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20060908

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081009

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111024

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111024

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121024

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121024

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131024

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees