JP2003092591A - パケット処理プロセッサ及びパケット処理プロセッサシステム - Google Patents

パケット処理プロセッサ及びパケット処理プロセッサシステム

Info

Publication number
JP2003092591A
JP2003092591A JP2001283999A JP2001283999A JP2003092591A JP 2003092591 A JP2003092591 A JP 2003092591A JP 2001283999 A JP2001283999 A JP 2001283999A JP 2001283999 A JP2001283999 A JP 2001283999A JP 2003092591 A JP2003092591 A JP 2003092591A
Authority
JP
Japan
Prior art keywords
packet
program
instruction
processor
execution
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.)
Granted
Application number
JP2001283999A
Other languages
English (en)
Other versions
JP4342128B2 (ja
Inventor
Kenichi Abiru
健一 阿比留
Tetsuaki Tsuruoka
哲明 鶴岡
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 JP2001283999A priority Critical patent/JP4342128B2/ja
Priority to US10/124,828 priority patent/US20030053481A1/en
Priority to CNB021426864A priority patent/CN1199423C/zh
Publication of JP2003092591A publication Critical patent/JP2003092591A/ja
Application granted granted Critical
Publication of JP4342128B2 publication Critical patent/JP4342128B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • H04L49/9073Early interruption upon arrival of a fraction of a packet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9057Arrangements for supporting packet reassembly or resequencing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

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

Abstract

(57)【要約】 【課題】パケット中継装置等において、入力されたパケ
ットに対して所定のパケット処理を行うパケット処理プ
ロセッサ100及びパケット処理プロセッサシステムに関
し、実行可能命令数を増やすこと、アクセス可能なパケ
ット範囲を広げること、分岐処理を容易にすることによ
り、パケット処理のプログラミングを柔軟に記述する。 【解決手段】パケットデータ保持部70がパケット201を
その先頭から順次受信し、実行プログラム保持部20がパ
ケット201の処理手順を記述したプログラムを保持し、
プログラム実行制御部30が与えられたパケット201の長
さ及び該プログラムに基づいて実行するプログラムの命
令数を決定し、該プログラムの実行を制御する。また、
プログラム実行制御部30が、少なくとも前段及び後段の
内の一方のパケット処理プロセッサ100のプログラム実
行制御部30に対して、命令獲得タイミング及び命令獲得
位置を指示する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はパケット処理プロセ
ッサ及びパケット処理プロセッサシステムに関し、特
に、パケット中継装置等において、入力されたパケット
に対して所定のパケット処理を行うパケット処理プロセ
ッサ及びパケット処理プロセッサシステムに関するもの
である。
【0002】近年、通信技術の進歩に伴い、コンピュー
タやさまざまな情報処理機器(端末)間でデータを交換
するLAN(Local Area Network)等のプライベートなネッ
トワークを相互接続したグローバルなネットワークシス
テムが構築されている。このグローバルネットワークシ
ステムにおける通信は、例えば、OSI(Open Systems Int
erconnection)モデルにおける各層(レイヤ)毎に種々
の通信プロトコルに従って行われる。現在、主流の通信
プロトコルは、OSIモデルのトランスポート層/ネットワ
ーク層に相当する層においては、それぞれ、TCP/IP(Tra
nsportControl Protocol/Internet Protocol)プロトコ
ルである。
【0003】TCP/IPプロトコルによる端末間の通信は、
データ及びヘッダ情報で構成されたパケットで行われ
る。IPプロトコルはコネクションレス型のプロトコルで
あり、LAN間を相互接続するパケット中継装置(例え
ば、ルータ)は、パケットを宛先端末にルーティングす
るため、パケットのヘッダ情報に基づき、宛先テーブル
の検索やヘッダ書換処理等のパケット処理を行う必要が
ある。
【0004】
【従来の技術】IPプロトコルにおけるパケット処理に
は、上記の宛先テーブル検索処理及びヘッダ書換処理の
他に、入力されたパケットのヘッダのチェックサム計算
等のパケットを中継するために必要な処理、さらに、ネ
ットワークにおける通信を制限するためのパケットフィ
ルタリング処理等がある。また、このパケット処理は、
レイヤ毎の種々のプロトコルによって異なる。
【0005】レイヤ毎の種々のプロトコルに対応したパ
ケット処理を行う専用の回路をハードウェアのみで構成
した場合、回路構成は煩雑であり、さらに、プロトコル
自体の改訂に伴う処理手順の変更に対応することは極め
て困難である。そこで、種々のプロトコルに対応するた
め、また、プロトコル自体の改訂に対応するため、従
来、パケット処理は、汎用プロセッサによってソフトウ
ェア処理されるのが一般的である。
【0006】[1]パケット処理プロセッサ 図12は、従来の汎用プロセッサ102の構成例を示してい
る。このプロセッサ102は、演算部10、内部汎用レジス
タ11、内部状態保持部12、制御部13、及び外部バスバッ
ファ14で構成されている。また、プロセッサ102には、
外部のメモリ120がバス110によって接続されている。
【0007】入力パケット201は、メモリ120に一時的に
格納される。プロセッサ102は、パケット201又はその一
部をメモリ120から内部汎用レジスタ11に読み込み、所
定のパケット処理をソフトウェアで実行した後、処理後
のデータを内部汎用レジスタ11から外部メモリに書き込
み、パケット201からパケット202を再構成する。このパ
ケット202は、例えば、パケット中継装置に含まれる次
段のスイッチファブリック(図示せず)にバス110を経
由して出力される。
【0008】このような、汎用プロセッサ102、外部メ
モリ120、及びバス110で構成されたパケット処理には、
バス110を経由した入力パケット201/出力パケット202の
メモリ120に対する書込/読出と、同じバス110を経由し
たプロセッサ102からメモリ120に格納された入力パケッ
ト201/出力パケット202のアクセス(読出/書込)とに起
因するオーバヘッド(overhead)が発生する。
【0009】このオーバヘッドに加えて、メモリ120自
身のアクセス帯域幅の制限により、パケット処理の高速
化が難しいという問題点があった。この問題を解決する
ため、図13に示した特開2000-349816号におけるパケッ
ト処理プロセッサ101は、上記のメモリ120の代わりに入
力パケット201を直接取り込むパケットデータアクセス
レジスタ(パケットデータ保持部70に含まれているもの
であり、図示せず。)を備えている。
【0010】すなわち、プロセッサ101は、演算部10、
内部汎用レジスタ11、実行プログラム保持部20、プログ
ラム起動部30a、制御部40a、内部状態保持部50、パケッ
トデータ入力部60、パケットデータ保持部70、パケット
データ出力部80、及び中間データ保持部90で構成されて
いる。
【0011】以下に各構成要素の動作を説明する。パケ
ットデータ入力部60は、受信パケット201が到着したこ
とを外部からのパケット到着信号221によって検知し、
パケット201をパケットの先頭から、転送クロックに同
期して、順次、パケットデータ保持部70内のパケットデ
ータアクセスレジスタ群(図示せず)へ直接格納する。
【0012】プログラム起動部30aは、パケットデータ
入力部60からの受信パケット転送タイミング信号222に
同期してプログラムの起動を行う。パケットデータ保持
部70は、パケットデータ入力部60から入力したパケット
データの一部或いは全てをレジスタに格納する。中間デ
ータ保持部90は、該パケットデータに対する処理結果を
格納するレジスタ群(図示せず)を備えている。
【0013】保持部70,90が備えているこれらのレジス
タは、いずれもプログラムからアクセス可能なレジスタ
である。パケットデータ保持部70と中間データ保持部90
の各レジスタに保持されたデータは、レジスタ群内の隣
のレジスタへ、転送クロックに同期して順次、移動して
行きパケットデータ出力部80へ出力される。
【0014】パケットデータ出力部80は、入力パケット
201に対する処理結果であるパケット202をプロセッサ10
1外へ逐次送出する。演算部10は、四則演算などの各種
オペレーションを行い、内部汎用レジスタ11はプログラ
ムで使用する汎用のレジスタである。演算部10は、内部
汎用レジスタ11、保持部70のレジスタ、及び保持部90の
レジスタが使用できる。これらオペレーションの結果
(キャリーフラグ等)は、内部状態として内部状態保持
部に逐次保持される。
【0015】実行プログラム保持部20は、実行する命令
(例えば、マイクロコード等)で構成されたプログラム
を保持している。制御部40aは、プログラム起動部30aか
らの起動指示信号233によって、実行プログラム保持部2
0から命令の獲得を開始し、獲得した命令をデコードし
て処理を決定し、例えば、プログラムバンク値の切り替
え、所定のレジスタに対する演算、データ転送の処理を
実行するとともに、各部の内部状態に応じて次状態を決
定する。これらの内部状態は、内部状態保持部50に保持
される。
【0016】そして、制御部40aは、プログラムカウン
タを1つインクリメントして次の命令を獲得し、この命
令に対応する処理を実行することを繰り返し、予め定ま
っている命令数を実行すると動作を終了し、次パケット
に対する起動指示信号233を待つ。
【0017】図14は、命令を獲得するプログラム実行制
御例をより詳細に示している。このプログラム実行制御
は、制御部40aに含まれる+1加算器35及びプログラムカ
ウンタ33が行う。実行プログラム保持部20に含まれるメ
モリ21は、L個のバンク0,バンク1,…,バンクL-1で構
成され、このバンクの切替は、制御部40aからのバンク
切替信号224で行われる。
【0018】各バンク0〜(L-1)には、プロセッサ101に
おいて1パケットに対して実行可能な最大命令数Nのマ
イクロコードを格納することができる。このマイクロコ
ードは、条件及び命令で構成されている。マイクロコー
ドは、メモリ21にメモリアドレス225及びバンク切替信
号224を与えることにより獲得することができる。
【0019】メモリアドレス225を出力するプログラム
カウンタ33は、初期状態でアドレス0に設定され、命令
実行開始後、+1加算器35で命令実行クロック毎に“1”
だけ加算され、順次アドレス1,アドレス2,…,アドレ
スN-1を指定する。また、バンク切替信号224は、初期状
態でバンク0を出力し、命令実行開始後、例えば、プロ
グラムカウンタ33が、アドレス4,アドレス6,…を示し
た時点でそれぞれ、バンク1、バンクL-1,…を指定する
信号に切り替わる。この結果、命令は、マイクロコード
MC0,MC1,…,MC4,…,MC6,MC7,…の順で選択さ
れ、実行されることになる。
【0020】入力パケット201は、入力部60を経由し
て、パケットデータ保持部70のレジスタに格納され、こ
のパケットのデータ及びヘッダ情報は、マイクロコード
MC0,MC1,…に基づきパケット処理される。このとき、
パケット201のヘッダ情報及びデータは、演算部10及び
内部汎用レジスタ11に高速でアクセスされ、図12に示し
たプロセッサ102とメモリ120と間のパケットデータに関
する読出/書込処理のオーバヘッドを解消している。
【0021】このパケット処理プロセッサ101は、高速
なパケット処理を実現するばかりでなく、実行プログラ
ム保持部に保持されたマイクロコードによるパケット処
理手順記述が可能になるという柔軟性を備えている。[2]パケット処理プロセッサシステム 図15に示した特願2000-373732号のパケット処理プロセ
ッサシステムは、図13に示したパケット処理プロセッサ
101_1,101_2,…(以後、符号101で総称することがあ
る。)を直列接続し、現段のパケット処理プロセッサ10
1のパケット処理結果出力(パケット202、中間データ、
内部状態234等)を前段のパケット処理プロセッサ101の
データ入力としている。
【0022】ここで、パケット処理プロセッサシステム
におけるパケット処理プロセッサの「前段」および「後
段」について図8に基づき、次のように定義しておく。
すなわち、パケットデータ保持部(パケットレジスタ)
70内を移動するパケット201に対して順に起動されて行
く複数のパケット処理プロセッサ100の群において、あ
るパケット201に着目する時、現在このパケットの先頭
について駆動されているパケット処理プロセッサ100を
基準(現段)として、その後段のパケット処理プロセッ
サは時間軸上の過去に起動されたパケット処理プロセッ
サ100を指し、前段のパケット処理プロセッサは時間軸
上の未来に駆動されるパケット処理プロセッサ100を指
すものとする。
【0023】このパケット処理プロセッサシステムは、
例えば、所定のパケット処理が複雑であるため、プログ
ラムの命令ステップ数が大きい場合、パケット処理を分
割し、分割した処理の命令ステップを各パケット処理プ
ロセッサ101に割り当てるパイプライン処理(pipelinin
g)が可能である。
【0024】これにより、パケット処理プロセッサ101
一個当たりの命令ステップ数を一定値以下にすること
で、高い所要処理性能(スループット)を維持したま
ま、高速かつプログラマブルなパケット処理が可能とな
る。
【0025】
【発明が解決しようとする課題】[1]パケット処理プ
ロセッサ 従来のパケット処理プロセッサ101が1つのパケットに
対して実行可能な命令数Nは、要求スループット、命令
実行クロック速度、パケットデータ保持部70のデータ転
送幅、及びその転送クロック速度で決定される有限の値
である。
【0026】この値は、例えば、要求スループットが速
くなればなるほど小さくなり、プロセッサ101が実行す
るパケット処理内容が限定されてしまう。また、パケッ
ト処理プロセッサ101は、パケット201が到着したことを
示すパケット到着信号221に同期してプログラムの起動
を行うため、アクセス可能なパケットデータの範囲も、
命令実行クロック速度とパケットデータ保持部70のデー
タ転送幅および転送クロック速度によって制限される。
【0027】すなわち、実行可能なステップ数の命令を
実行する間に、パケットデータの先頭からパケットデー
タ保持部70に格納可能な位置までがアクセス可能な範囲
となる。従って、パケットデータ保持機構のデータ転送
幅/転送クロック速度/レジスタ(パケットデータ保持
部70に含まれる)段数が大きければ大きいほどアクセス
可能なパケット範囲は広がるが、このレジスタ幅/段数
は最終的にハード規模などを考慮して決定される有限の
値である。
【0028】従って、例えば、階層構造を持つネットワ
ークのモデルにおいて、より上位のプロトコル或いはデ
ータの中身にアクセスする必要がある場合、実行可能命
令数及びアクセス可能なパケット範囲が制限されると言
う問題がある。[2]パケット処理プロセッサシステム そこで、パケット処理に必要な命令数が実行可能命令数
を超える場合、図15に示したパケット処理プロセッサシ
ステムを構成し、パイプライン処理方式で1つのパケッ
トに対する実行可能な命令数を大きくした。
【0029】しかしながら、図15に示したパケット処理
プロセッサシステムにおいて一つのパケット処理プロセ
ッサ101当りの実行可能命令数(命令ステップ数)は有
限値であり、実行可能命令数及びアクセス可能なパケッ
ト範囲が制限されるという問題はある。
【0030】従って、パケット処理プロセッサ101を直
列に接続したパケット処理プロセッサシステム全体の処
理量も物理的なデバイスレベルでは有限の命令ステップ
数であり、ハードウェア製造後、或いは製品出荷後の機
能追加などに対応するには余剰ステップ内で実現可能な
処理にのみ対応可能である。
【0031】将来の機能追加を考慮する時、実装済みの
ハードウェアにおいて実現可能な命令ステップ数を越え
る処理を必要とする可能性がある場合には、充分な命令
ステップ数を確保するために、デバイスレベルでさらに
多段に接続しておく必要がある。
【0032】しかしながら、パケット処理の多くは基本
的な処理で十分であり、オプション処理や将来の機能追
加のためにハードウェア(デバイス)を追加配備するこ
とはハードウェア規模並びにコスト面からみても得策で
はない。上述したように、ネットワークの各プロトコル
は階層構造を持っている。これに伴い、データを伝送す
るパケットも、階層構造を持っている。さらに、特定の
プロトコルのパケットは、可変長のヘッダ構造を有する
ものがある。
【0033】現在主流であるIPv4(Internet Protocol v
ersion4)プロトコル以外にも、IPv6(Internet Protocol
version6)プロトコルやMPLS(Multi-Protocol Label Sw
itching)プロトコルといったプロトコルがある。図16
(1)は、IPv4プロトコルのヘッダを示している。このヘ
ッダは、バージョン、ヘッダ長、サービスタイプ、トー
タル長、識別子、フラグ、フラグメントオフセット、生
存時間、プロトコル、ヘッダチェックサム、送信元アド
レス、宛先アドレス、オプション(可変長)、及びパデ
ィングの各フィールドで構成されている。
【0034】ヘッダ長(IHI:Internet Header Length)フ
ィールドには、IPヘッダ自身の長さを示す情報が設定さ
れている。この情報によって、IPv4のヘッダ長を知るこ
とができる。同図(2)は、IPv6プロトコルのヘッダを示
している。このヘッダは、バージョン、優先度、フロー
ラベル、ペイロード長、次ヘッダ、ホップリミット、送
信元アドレス、及び宛先アドレスの各フィールドで構成
され、その長さは固定長の40バイトである。
【0035】次ヘッダフィールドには、拡張ヘッダを利
用する場合、IPv6ヘッダに続く拡張ヘッダのタイプを示
す情報が設定される。同図(3)は、IPv6プロトコルの拡
張ヘッダ例を示している。この拡張ヘッダは、次ヘッダ
及びヘッダ拡張長等のフィールドで構成され、拡張ヘッ
ダ長は、8バイト×nに任意バイト長であり、その長さ
は、ヘッダ拡張長フィールドに設定される。
【0036】次ヘッダフィールドには、さらに、拡張ヘ
ッダを利用する場合、自ヘッダに続く拡張ヘッダのタイ
プを示す情報が設定され、拡張ヘッダを利用しない場
合、上位のプロトコル番号が設定される。IPv6拡張ヘッ
ダを含めたIPv6ヘッダの長さを知るためには、同図(2)
に示したIPv6ヘッダ中の「次ヘッダフィールド」を参照
して、IPv6ヘッダ以後にIPv6拡張ヘッダが続くか否か、
続く場合にはどのようなタイプのIPv6拡張ヘッダである
かを識別すると共に、「ヘッダ拡張長さフィールド」の
値で現在の拡張ヘッダの長さを知る。
【0037】さらに、同図(3)に示した拡張ヘッダの次
ヘッダフィールドを参照し、IPv6拡張ヘッダが、さらに
続くか否か、続く場合にはどのようなタイプのIPv6拡張
ヘッダかを識別する。拡張ヘッダが続かない場合まで、
この識別を繰り返すことにより、拡張ヘッダを含めたIP
ヘッダの長さを知ることができる。
【0038】同様にして、固定長又は可変長のヘッダを
有するパケットの所定のフィールドのデータにアクセス
するが可能になる。図17(1)は、MPLSのシム(Shim)ヘッ
ダを示している。このシムヘッダは、ラベル、実験用予
備、Sビット、及び生存時間の各フィールドで構成され
ている。このシムヘッダでは、Sビットを参照して、さ
らにシムヘッダが続くか、或いはペイロードが続くかを
識別して、連続したシムヘッダの全体の長さを知ること
ができる。
【0039】図17(2)は、TCPプロトコルのヘッダを示し
ている。このヘッダは、送信元ポート番号、宛先ポート
番号、シーケンス番号、受信確認番号、データオフセッ
ト、予約、コントロールフラグ、ウインドウ、チェック
サム、緊急ポインタ、オプション、及びパディングの各
フィールドで構成されている。
【0040】図18は、階層化されたパケット例を示して
いる。この例では、上位相のTCPパケットが、IPv6パケ
ットのデータ(ペイロード)フィールドに収容されてい
る。また、IPv6ヘッダは、IPv6基本ヘッダ(固定長、図
16(2)参照)と任意段数のIPv6拡張ヘッダ(任意長、図1
6(3)参照)で構成されている。
【0041】このように階層化されたIPv6パケットの先
頭位置から、上位レイヤのパケットの開始位置やその種
類(同図ではTCPパケットであるが、UDP(User Datagram
Protocol)パケット等の場合もある。)を知るために
は、上述した手順でヘッダの長さを知る必要がある。
【0042】このためパケット処理プロセッサ101は、
一般的に、各プロトコルにおいて定まるパケットのフォ
ーマットに応じた処理を行う必要があると共に、例え
ば、上述した拡張ヘッダが繰り返されるような場合、定
型化した処理の繰り返しを行う必要がある。
【0043】図19は、パケット処理プロセッサ101の制
御部40aに含まれるプログラムカウンタ33及びプログラ
ム加算器34、並びに実行プログラム保持部20に含まれる
メモリ21を示している。パケット処理プロセッサ101の
命令(マイクロコード)セットは、ハードウェアの構成
によって、パケット処理を高速に行うようために必要な
機能セットにすることが可能である。例えば、ジャンプ
を指定するマイクロコードを、“con(ジャンプ命令の
実行条件)”+“jmp(ジャンプ命令を示すニモニッ
ク)”+“r(i)(ジャンプ先位置指定するオペラン
ド)”とすることが可能である。ここで、ジャンプ先位
置は、相対位置又は絶対位置で指定ようにすることが可
能である。
【0044】このマイクロコードのオペランドr(i)=
“正のインクリメント値(相対位置)”である場合、加
算器34は、現在のプログラムカウンタ33の値にインクリ
メント値を加算した値をプログラムカウンタ33に設定す
る。すなわち、プログラムは、現在の実行位置からイン
クリメント値だけ前の命令位置にジャンプする。
【0045】これは現在の実行位置から、ジャンプ実行
後の命令位置までの間の命令を実行しないことを意味す
る。逆に、該マイクロコードのオペランドr(i)=“負の
インクリメント値(相対位置)”である場合、このジャ
ンプ命令の実行後の位置から実行前の位置の間までの命
令を繰り返すことを意味する。
【0046】図20は、同じ命令が繰り返される場合のフ
ロー例を示しており、同図(1)は、ステップT13のジャン
プ命令が、con=“No”、且つ相対位置=“負”である
場合のフローを示している。同図(2)は、ステップT23の
ジャンプ命令が、con=“無条件”、且つ相対位置=
“負”である場合のフローを示している。
【0047】一般のプロセッサでは、これらを組み合わ
せてプログラミングすることで繰り返し処理を実現して
いる。しかし、従来のパケット処理プロセッサシステム
では、所定の命令数を実行した後のパケット処理プロセ
ッサ101は、次パケットの到着によってのみ処理を開始
する。これは、現在1つのパケットの処理を行っている
パケット処理プロセッサ101の「前段」及び「後段」の
パケット処理プロセッサ101は、そのパケットに対する
処理に関しては停止した状態にあることになる。
【0048】従って、複数のパケット処理プロセッサ10
1の間にまたがるプログラムの分岐命令を記述し実行す
ることができないと言う問題がある。従って本発明は、
入力されたパケットに対して所定のパケット処理を行う
パケット処理プロセッサ及びパケット処理プロセッサシ
ステムにおいて、実行可能命令数を増やすこと、アクセ
ス可能なパケット範囲を広げること、分岐処理を容易に
することにより、パケット処理のプログラミングを柔軟
に記述することを課題とする。
【0049】
【課題を解決するための手段】上記の課題を解決するた
め、本発明のパケット処理プロセッサは、パケットをそ
の先頭から順次受信するパケットレジスタと、該パケッ
トの処理手順を記述したプログラムを保持する実行プロ
グラム保持部と、与えられたパケットの長さ及び該プロ
グラムに基づいて実行するプログラムの命令数を決定
し、該プログラムの実行を制御するプログラム実行制御
部と、を備えたことを特徴としている(請求項1/付記
1)。
【0050】まず、本発明の原理を説明する。パケット
の長さに比例して、パケットがパケットレジスタの一点
を通過する時間は長くなる。すなわち、パケット処理プ
ロセッサがパケットにアクセスできる時間が長くなる。
従って、プログラムの処理内容及びこの処理でアクセス
するパケット内の位置に依存して、実行可能な命令数を
増やすことが可能になると共に、アクセス可能なパケッ
トの範囲を拡大することが可能になる。
【0051】そこで、本発明のパケット処理プロセッサ
は、一般的なプロセッサが備えている演算部、内部汎用
レジスタ、及び命令実行部の他に、直接アクセス可能な
パケットレジスタ、実行プログラム保持部、及びプログ
ラム実行制御部を備えると共に実行プログラム保持部
は、パケットの処理手順を記述したプログラムを保持
し、パケットレジスタは、パケットをその先頭から順次
受信し、プログラム実行制御部は、内部又は外部から与
えられたパケットの長さ及び該プログラムに基づいて実
行する命令数を決定し、該プログラムの実行を制御す
る。
【0052】これにより、実行可能な命令数を増やすこ
と及びアクセス可能なパケット範囲を広くすることが可
能になる。また、本発明のパケット処理プロセッサシス
テムは、パケットをその先頭から順次受信するパケット
レジスタと、該パケットの処理手順を記述したプログラ
ムを保持する実行プログラム保持部と、与えられたパケ
ットの長さ及び該プログラムに基づいて実行する命令数
を決定し、該プログラムの実行を制御するプログラム実
行制御部と、内部状態を保持する内部状態保持部とを備
えたパケット処理プロセッサを少なくとも2つ縦続接続
し、現段のパケット処理プロセッサの該内部状態及び出
力パケットを前段のパケット処理プロセッサに与えるこ
とを特徴としている(請求項2/付記2)。
【0053】すなわち、パケット処理プロセッサは、一
般的なプロセッサが備えている演算部、内部汎用レジス
タ、及び命令実行部の他に、パケットレジスタ、実行プ
ログラム保持部、及びプログラム実行制御部を備えると
共に、さらに、内部状態を保持する内部状態保持部を備
えている。
【0054】このパケット処理プロセッサを少なくとも
2つ縦続接続してパケット処理プロセッサシステムを構
成し、現段のパケット処理プロセッサの内部状態及び出
力パケットを前段のパケット処理プロセッサに与える。
前段のパケット処理プロセッサは、内部状態に基づき入
力した該出力パケットのパケット処理を実行する。
【0055】これにより、パケット処理プロセッサシス
テム全体として1つのパケットに対する実行可能な命令
数及びアクセス可能範囲を増やすことができる。また、
本発明のパケット処理プロセッサシステムは、パケット
をその先頭から順次受信するパケットレジスタと、該パ
ケットの処理手順を記述したプログラムを保持する実行
プログラム保持部と、該プログラムの実行を制御するプ
ログラム実行制御部とを備えたパケット処理プロセッサ
を、現段のパケット処理プロセッサの出力パケットが前
段のパケット処理プロセッサに与えられるように、少な
くとも2つ縦続接続し、該プログラム実行制御部が、少
なくとも前段及び後段の内の一方のパケット処理プロセ
ッサのプログラム実行制御部に対して、命令獲得タイミ
ング及び命令獲得位置を指示することを特徴としている
(請求項3/付記3)。
【0056】すなわち、パケット処理プロセッサは、一
般的なプロセッサが備えている演算部、内部汎用レジス
タ、及び命令実行部の他に、パケットレジスタ、実行プ
ログラム保持部、及びプログラム実行制御部を備えてい
る。このパケット処理プロセッサを少なくとも2つ縦続
接続してパケット処理プロセッサシステムを構成する。
このシステムにおいては、現段のパケット処理プロセッ
サには、前段のパケット処理プロセッサのみが接続され
ている場合、前段及び後段のパケット処理プロセッサが
共に接続されている場合、及び後段のパケット処理プロ
セッサのみが接続されている場合がある。
【0057】現段のパケット処理プロセッサのプログラ
ム実行制御部は、接続されたパケット処理プロセッサの
プログラム実行制御部に対して、命令獲得タイミング及
び命令獲得位置を指示する。これにより、パケット処理
プロセッサ間にまたがるプログラムの分岐命令を記述し
実行することが可能になり、パケット処理のプログラミ
ングを柔軟に行うことが可能になる。
【0058】また、本発明のパケット処理プロセッサシ
ステムは、上記の発明において、プログラム実行制御部
が、与えられたパケットの長さ及び該プログラムに基づ
いて実行するプログラムの命令数を決定することができ
る(請求項4/付記4)。これにより、パケットの長さ
及びプログラム内容に基づき、実行可能な命令数を増や
すこと及びアクセス可能なパケット範囲を広くすること
が可能になると共に、例えば、パケット処理プロセッサ
の段数を少なくすることが可能になる。
【0059】また、本発明のパケット処理プロセッサシ
ステムは、上記の発明において、該パケット処理プロセ
ッサが、さらに、内部状態を保持する内部状態保持部を
備え、現段のパケット処理プロセッサの該内部状態を前
段のパケット処理プロセッサに与えることができる。
(付記5)。
【0060】これにより、パケット処理プロセッサ間接
続が容易になる。また、本発明のパケット処理プロセッ
サシステムは、上記の発明において、該実行プログラム
保持部はバンク切替が可能であり、該内部状態がバンク
値とすることができる(付記6)。
【0061】すなわち、実行プログラム保持部は、バン
ク切替が可能である。例えば、現段の実行プログラム保
持部と前段の実行プログラム保持部の同じバンクに渡っ
て一連のプログラムを保持させる。現段のパケット処理
プロセッサは、現在実行しているプログラムを格納して
いるバンク値を、前段のパケット処理プロセッサに通知
する。
【0062】これにより、現段/前段のパケット処理プ
ロセッサは、バンク値に基き該一連のプログラムを選択
して実行することが可能になる。また、本発明は、上記
の発明において、該プログラム実行制御部は、処理中の
パケットが終了したことにより又は新規パケットが入力
されたことにより、該パケットに対する次の命令の獲得
を停止することができる(付記7、付記8)。
【0063】すなわち、パケットレジスタで処理中のパ
ケットが終了したとき、そのパケットに対するの処理
は、実行できない、また、新規のパケットが入力した場
合、その新規のパケットに対する処理を開始しなければ
ならないので、プログラム実行制御部は、現在処理中の
パケットに対する命令の獲得を停止する。
【0064】これにより、無意味なパケット処理動作を
無くすこと、次の新規のパケットに対するパケット処理
を確実に開始することができる。また、本発明は、上記
の発明において、該プログラム実行制御部は、命令獲得
を所定の命令実行クロック分だけ行わないことことが可
能である(請求項5/付記9、付記10)。
【0065】すなわち、プログラム実行制御部は、現在
の命令獲得と次の命令獲得の間に所定の命令実行クロッ
ク分だけの命令獲得を行わない。この所定の命令実行ク
ロック分だけの期間、パケットはパケットレジスタを移
動する。これにより、プログラム実行制御部は、次の命
令の処理対象であるパケットのフィールドがパケットレ
ジスタの内の処理対象パケットレジスタ位置に来たと
き、次の命令が実行されるように命令獲得を行うように
することが可能になる。
【0066】この結果、プログラムは、パケットをパケ
ットレジスタ内を移動させるための何もしない命令が必
要でなくなり命令数が少なくなる。パケット処理のプロ
グラミングを柔軟に行うことが可能になる。また、本発
明は、上記の発明において、該プログラム実行制御部
は、該パケットが入力されたタイミングを示す転送タイ
ミング信号を受信したときから、所定の命令実行クロッ
ク分だけ命令獲得を行わないようにすることが可能であ
る(付記11〜付記13)。
【0067】これにより、プログラム開始位置をプログ
ラムの先頭にする必要がなくなり、パケット処理プログ
ラムを柔軟に記述することが可能になる。なお、該所定
の命令実行クロックを該命令獲得位置としてもよい(付
記14)。これにより、パケット処理プロセッサ間に渡
る分岐のプログラム記述が容易になる。
【0068】また、本発明は、上記の発明において、該
プログラム実行制御部は、パケット処理プロセッサ自身
の内部状態及び該プログラムに基づき命令獲得位置を決
定することができる(付記15、付記16)。さらに、
本発明は上記の発明において、該内部状態を許容命令数
又は実行可能命令数とすることが可能である。(付記1
7、付記18)。
【0069】これらの発明によっても、パケット処理プ
ログラムを柔軟に記述することが可能になる。
【0070】
【発明の実施の形態】[1]パケット処理プロセッサの
実施例 図1は、本発明に係るパケット処理プロセッサ100の実
施例を示している。このプロセッサ100が図13に示した
従来のプロセッサ101と異なる点は、従来のプログラム
起動部30a及び制御部40aの代わりにプログラム実行制御
部30及び命令実行部40を備えていることである。
【0071】さらに、プログラム実行制御部30は、パケ
ットデータ入力部60から受信パケット長信号223を受信
していることが異なっている。これらのプログラム実行
制御部30及び命令実行部40を合わせた基本的な動作は、
プログラム起動部30a及び制御部40aを合わせた動作と同
じであるが、プログラム実行制御部30が、受信パケット
長信号223、パケットの受信パケット転送タイミング信
号222等に基づき実行プログラムの命令数を変更するこ
とが可能であることが従来と異なっている。
【0072】図2は、上記の実行プログラム保持部20、
プログラム実行制御部30、及びパケットデータ保持部70
の構成例を示している。実行プログラム保持部20のマイ
クロコード用メモリ21は、図14に示した従来のメモリの
メモリ21に対応する基本命令格納領域21_1の他に拡張命
令格納領域21_2〜21_4を含んでいる。
【0073】基本命令格納領域21_1には、従来のメモリ
21と同様に所定のスループットを維持したまま実行可能
な数N=“10”の命令(マイクロコード)を格納してお
き、拡張命令格納領域21_2〜21_4には拡張命令(マイク
ロコード)を格納しておく。この格納領域21_2〜21_4の
拡張命令を実行するか否かはプログラム実行制御部30か
らの指示による。
【0074】プログラム実行制御部30はデコーダ312を
備え、パケットデータ保持部70はパケットデータアクセ
スレジスタp0〜p9を備えている。パケットデータ入力部
60は、従来の入力部60と同様に、外部からのパケット到
着信号221によって受信パケット201が到着したことを検
知し、受信パケット201をパケットの先頭から、クロッ
クに同期して順次、レジスタp9〜p0へ直接格納する。
【0075】さらに、入力部60は、従来の入力部60とは
異なり、受信パケット転送タイミング信号222の他に受
信パケット長信号223をプログラム実行制御部30へ出力
する。この受信パケット長信号223は、新たなパケット
データがパケットデータ保持部70に出力するまで保持さ
れる。
【0076】なお、受信パケット長信号223は、パケッ
トデータ入力部60において計測して得てもよいし、パケ
ットの入力に同期して外部からプログラム実行制御部30
に直接与えてもよい。図3は、図2に示した実行プログ
ラム保持部20に格納されたプログラムを実行するための
制御例を示している。この保持部20においては、図2に
示した拡張命令格納領域21_3,21_4は、図を簡略化する
ため省略されている。
【0077】図3においては、基本命令格納領域21_1の
命令数N=“10”、拡張命令格納領域21_2の命令数M=
“30”である。プログラム実行制御部30は、後述する図
7に示すように、図14に示したプログラムカウンタ33及
び+1加算器35と同様のプログラムカウンタ33及び+1加算
器35を含んでいる。
【0078】制御部30は、受信パケット転送タイミング
信号222を受信したことを契機として、バンク切替信号2
24=“バンク0”及びメモリアドレス225=“アドレス
0”を実行プログラム保持部20に与え、命令データ226に
よって、基本命令格納領域21_1の先頭の命令=“マイク
ロコードMC0”を獲得する。
【0079】その後、制御部30は、プログラムカウンタ
33(図示せず)を1つインクリメントして次命令を獲得
する動作を基本命令格納領域21_1に格納された最終の命
令まで繰り返す。制御部30は、バンク切替等のプログラ
ム制御命令のみを実行する。命令実行部40がこれ以外の
命令を実行する。
【0080】プログラム実行制御部30は、獲得した命令
がバンク切替命令であるとき、バンク切替命令のオペラ
ンドで指定されたバンク値を、バンク切替信号224で保
持部20に与えバンク切替を実行する。このバンク値は、
次のバンク切替命令によって変更されるか又は新しい受
信パケット転送タイミング信号222が入力されるまで保
持される。
【0081】基本命令格納領域21_1に格納された命令の
処理が終了した後、プログラム実行制御部30は、拡張命
令格納領域21_2を実行するか否かを、要求スループッ
ト、命令実行クロック速度、パケットデータ保持部70の
データ転送幅、転送クロック速度、及びターゲットパケ
ット長(最小値)から得られる許容命令数とパケットデ
ータ入力部60からの受信パケット長信号223から得られ
る実行可能命令数とに応じて決定する。
【0082】例えば、要求スループットが2.5Gbps、パ
ケットデータ保持部70のデータ転送幅及び転送クロック
速度が、それぞれ32ビット及び100MHz、命令実行速度が
同じ100MHzである場合、40バイトのパケットに対する許
容命令数は“12”となる。また、基本命令格納領域21_1
のN=“12”、拡張命令格納領域21_2のM=“36”とすれ
ば、パケットデータ入力部60からの受信パケット長信号
223で示されたパケット長=80バイトのとき、実行可能
命令数は“24”であり、拡張命令格納領域21_2の“12”
命令分が実行可能になる。
【0083】さらに、パケット長が160バイトの場合、
実行可能命令数=“48”となるので、拡張命令格納領域
21_2の“36”命令分が実行可能になる。図4(1)は、プロ
グラム実行制御部30に含まれる命令獲得許可信号生成部
311を示している。この生成部311は、受信パケット転送
タイミング信号222、許容命令数227、受信したパケット
長から得られる実行可能命令数228に基づき、命令獲得
許可信号229を発生する。
【0084】許容命令数227=“12”が設定されてお
り、命令獲得許可信号生成部311は、実行可能命令数228
に応じたクロック数の命令獲得許可信号229を出力し、
拡張命令格納領域21_2を実行するか否かが決定される。
図4(2)は、プログラム実行制御部30及び命令実行部40
が、命令獲得許可信号229に基づき実行する命令数を変
更するタイミング例及びバンク切替例を示している。
【0085】クロック220は、命令実行クロック及び転
送クロックを兼ねており、このクロック220に同期して
プログラム実行制御部30及び命令実行部40は動作する。
レジスタp9〜p0(図2参照)は、受信パケット転送タイ
ミング信号222の立上りを契機として、パケット201のデ
ータD0〜D9をクロック220に同期して順次転送(シフ
ト)する。
【0086】制御部30は、メモリアドレス225=“メモ
リアドレス0”及びメモリバンク切替信号224=“バンク
0”を出力する。プログラム実行制御部30又は命令実行
部40は、“メモリアドレスAdr0”及び“バンク0”に格
納されたマイクロコードMC0を実行する。以下同様にし
て、マイクロコードMC1,MC2が実行される。
【0087】制御部30は、マイクロコードMC2が条件付
き分岐命令(バンク切替命令)である場合、その条件に
従って、メモリアドレス225=“アドレスAdr4”及びメ
モリバンク切替信号224=“バンク1”を出力し、コマン
ドコードMC4を獲得する。なお、制御部30は、その条件
がバンク切替を必要としない場合、メモリバンク切替信
号224=“バンク0”を変更せず、メモリアドレス225=
“アドレスAdr4”を出力し、“バンク0”の“アドレスA
dr4”以下のコマンドコードを獲得する(図3参照)。
【0088】以後、命令実行部40は、分岐したコマンド
MC4,コマンドMC5、…を順次実行する。以下同様に、制
御部30はバンク切替命令がある度に指定されたバンク切
替を実行し、命令実行部40は、バンク切替で選択された
コマンドを実行する。基本命令格納領域21_1に設定され
た全てのマイクロコードMC0〜MC9が実行される。例え
ば、破線で示すように命令獲得許可信号229が、さら
に、「命令獲得許可」を示している場合、マイクロコー
ドMC10から、命令獲得許可信号229の立下りから1クロ
ック分後のマイクロコードMC11までの処理が、順次実行
される。
【0089】すなわち、プログラム実行制御部30は、実
行可能命令数が許容命令数以下であれば、基本命令格納
領域21_1のみを実行して終了するが、そうでなければ
(実行可能命令数−許容命令数)分だけ更に拡張命令格
納領域21_2の命令を実行する。このようにして、本発明
におけるプロセッサ101は、プログラム実行制御部30が
受信パケット長信号223及びプログラムの処理内容に応
じて実行する命令数を変えることによって、実行可能な
命令数を増やすことができる。また、これにより、パケ
ット中のより後方のデータに対するアクセスが可能にな
る。
【0090】図4においては、命令獲得許可信号229で
実行可能命令数を変えたが、例えば、基本命令格納領域
21_1中のプログラムに許容命令数227を書き換える命令
を記述することによっても、実行可能命令数228を変え
ることができる。これについて以下に、IPv6ヘッダを含
むパケット201を処理する場合について説明する。
【0091】図12において、パケット201のIPv6基本ヘ
ッダの長さは固定長の40バイトである。従って、各レジ
スタp0〜p9の幅=“32ビット”、τ=“転送クロック
幅”=“命令実行クロック幅”とすれば、IPv6基本ヘッ
ダには、10τ分の命令(すなわち、10個の命令、この数
は基本命令格納領域21_1に格納された命令で実行可能な
命令数に等しい。)によるパケット処理が可能である。
【0092】IPv6基本ヘッダのパケット処理が終わった
後、基本命令格納領域21_1に格納された命令が全て実行
された時点の後、基本ヘッダの後には、IPv6拡張ヘッダ
又は上位レイヤ(TCP/UDPなど)のヘッダが続くことに
なる。これらのヘッダの内のどのヘッダが続きかを判定
するため、基本命令格納領域21_1中に、IPv6基本ヘッダ
についての処理を記述するとともに「次ヘッダフィール
ド」の値を抽出して、例えば、汎用レジスタ11(図1参
照)へ格納する命令も記述しておく。
【0093】この方法によれば、基本命令格納領域21_1
中のプログラム(命令)によって拡張ヘッダに対する処
理を実行するか否かを判別する必要はなく、拡張命令格
納領域21_1においても前述の汎用レジスタ11には次ヘッ
ダフィールドの値がセットされていることを前提にプロ
グラミングを行えばよい。
【0094】プログラミング例として、拡張命令格納領
域21_2のバンク0〜バンク2に、それぞれ、IPv6拡張ヘッ
ダ、TCPヘッダ、及びUDPヘッダに対応するパケット処理
プログラムを格納しておく。プログラム実行制御部30
は、汎用レジスタ11に格納された「次ヘッダフィール
ド」の値に基づき、IPv6拡張ヘッダ、TCPヘッダ、又はU
DPヘッダが続くかを判定し、判定したヘッダに対応した
パケット処理プログラムをバンク切替で選択して獲得す
ればよい。
【0095】以上のように、プログラミングにおける処
理のオーバーヘッドを抑え、所定のスループットを維持
したまま、オプション的な処理の実装が可能になる。[2−1]パケット処理プロセッサシステムの実施例
(1) 図5は、本発明に係るパケット処理プロセッサシステム
の実施例(1)を示している。この実施例(1)では、図1に
示したパケット処理プロセッサ100_1,100_2…(以下、
符号100で総称することがある。)を直列接続し、パケ
ット処理プロセッサシステムを構成している。
【0096】各パケット処理プロセッサ100のプログラ
ム実行制御部30の内部状態234は、内部状態保持部50に
保持され、前段のパケット処理プロセッサ100に引き継
ぐように構成されている。内部状態234として、許容命
令数、実行可能命令数、及びバンク値がある。なお、許
容命令数及び実行可能命令数は、内部状態で引き継ぐ代
わりに、実施の形態[1]で示したアルゴリズムに従って
判定した結果が、次命令を獲得するか否かを表している
ので、パケット処理プロセッサ100からその前段のパケ
ット処理プロセッサ100へパケット201(202)に同期して
中間データ235として渡してもよい。
【0097】また、現段のパケット処理プロセッサから
前段のパケット処理プロセッサ100へ渡す許容命令数、
実行可能命令数を前段のパケット処理プロセッサ100内
のプログラムで設定可能にしてもよい。本発明のパケッ
ト処理プロセッサシステムによれば、各パケット処理プ
ロセッサ100において、各パケット201に対する実行可能
命令数及びアクセス可能な範囲を大きくすることが可能
になると共に、システム全体として実行可能な命令数及
びアクセス可能なパケット範囲を大きくすることが可能
になる。
【0098】これにより、パケット処理プロセッサシス
テムの段数を減らすことも可能になる。[2−2]パケット処理プロセッサシステムの実施例
(2) 図6は、本発明のパケット処理プロセッサシステムの実
施例(2)を示している。このシステムは、図5に示した
実施例(1)のシステムと同様に複数のパケット処理プロ
セッサ100_1,100_2,…(符号100で総称することがあ
る。)が直列接続されている。
【0099】この実施例(2)のシステムが、実施例(1)の
システムと異なる点は、各パケット処理プロセッサ100
は、後段のプロセッサ100に「起動指示信号230_1」及び
「プログラムカウンタ値231_1」を与えると共に、前段
のプロセッサ100に「起動指示信号230_2」及び「プログ
ラムカウンタ値231_2」を与えていることである。
【0100】なお、最後段のパケット処理プロセッサ10
0_1は、後段のプロセッサ100が無いため、「起動指示信
号230_2」及び「プログラムカウンタ値231_2」を前段の
プロセッサ100に与えるのみである。同様に、最前段の
パケット処理プロセッサ100は、起動指示信号230_1及び
プログラムカウンタ値231_1を後段のパケット処理プロ
セッサ100に与えるのみである。
【0101】図7は、実施例(2)のシステムにおける各
パケット処理プロセッサ100の実行プログラム保持部20
及びプログラム実行制御部30の構成例を示している。保
持部20の構成は、図2に示した保持部20と同様であり、
マイクロコードを格納するメモリ21を備えている。
【0102】プログラム実行制御部30は、制御部31、メ
モリ制御部32、プログラムカウンタ33、加算器34、+1加
算器35、セレクタ36、セレクタ37、及びレジスタ38で構
成されている。制御部31は、命令獲得許可信号生成部31
1及びデコーダ312を備えており、タイミング信号222、
前段からの起動指示信号230_1及び後段からの起動指示
信号230_2、遅延クロック数232、及び命令データ226を
入力し、後段への起動指示信号230_1、後段へのプログ
ラムカウンタ値231_1、前段への起動指示信号230_2、前
段へのプログラムカウンタ値231_2、及び命令獲得許可
信号229を出力している。
【0103】メモリ制御部32は、命令獲得許可信号229
を入力し、バンク切替信号224及びプログラムカウンタ3
3を制御する信号を出力する。プログラムカウンタ33
は、メモリアドレス225を出力する。制御部31は、起動
指示信号230_1、起動指示信号230_2、又はタイミング信
号222が入力された場合、それぞれ、プログラムカウン
タ33の次の値として、“所定の初期値”、“カウンタ値
231_1”、又は“カウンタ値231_2”を選択するように指
示する信号をセレクタ36に与える。
【0104】起動指示信号230_1、起動指示信号230_2、
及びタイミング信号222のいずれも入力されていない場
合、制御部31は、デコーダ312において、メモリアドレ
ス225及びバンク切替信号224で指定されるメモリ21内の
命令データ226をデコードし、プログラムカウンタ33の
次の値として、「プログラムカウンタ33の値を+1加算器
35で1だけインクリメントした値」、「命令データ226
のオペランドで指定される絶対位置」、及び「命令デー
タ226のオペランドで指定される相対位置」のいずれに
するかを決定する。
【0105】図15に示した従来のパケット処理プロセッ
サシステムにおいて、所定の命令数を実行した後のパケ
ット処理プロセッサ101は、次パケット到着信号221によ
ってのみ処理を開始する。この結果、パケットデータ保
持部70内を移動するパケット201に対して順に起動され
て行く複数のパケット処理プロセッサ101において、或
る1つのパケット201に着目した場合、現在駆動されて
いるパケット処理プロセッサ101に対して、その前段及
び後段のパケット処理プロセッサ101は停止した状態に
ある。
【0106】従って、パケット処理プロセッサ101間に
またがる処理を記述して繰り返し処理を継続することが
できない。これを解決するために、本実施例(2)のパケ
ット処理プロセッサシステムにおけるパケット処理プロ
セッサ100のプログラム実行制御部30は、システムの実
施例(1)に示した、直ちに実行プログラム保持部20から
命令獲得を開始する通常の受信パケット転送タイミング
信号222による起動指示の他に、前段及び後段のパケッ
ト処理プロセッサ100からの起動指示を可能している。
【0107】すなわち、制御部30は、受信パケット転送
タイミング信号222による場合には基本命令格納領域21_
1の先頭位置から命令獲得を開始し、前段又は後段パケ
ット処理プロセッサ100から起動指示信号230_1,230_2
を受けた場合には、これとともに与えられたプログラム
カウンタ値231_1,231_2の位置から命令獲得を開始す
る。
【0108】制御部30は、獲得した命令データ226をデ
コーダ312でデコードするがバンク切替等のプログラム
制御命令に関してのみ処理を決定し、これ以外の命令デ
ータ226については命令実行部40(図6参照)で行う。
すなわち、制御部30は、命令データ226がプログラム制
御命令でなければ獲得した命令データ226を命令実行部4
0に出力し、プログラムカウンタ33を1つインクリメン
トして次命令データ226を獲得する。
【0109】また、制御部30は、獲得した命令データ22
6がバンク切替命令であれば命令で指定されたオペラン
ド(バンク値)に従って、そのバンクから次の命令デー
タを獲得する。このバンク値は、命令によって変更され
るか新しいパケットが入力されるまで保持される。
【0110】命令データ226は、プログラムカウンタ33
のインクリメント値(j)を指定することが可能である。
制御部30は、獲得した命令データ226が正又は負のイン
クリメント値jが指定された命令データ226を獲得した場
合、このインクリメント値(j)、この命令の配置位置
(i)、及びパケット処理プロセッサの格納命令数(N)から
パケット処理プロセッサ100間にまたがる分岐か否かを
判定する。
【0111】パケット処理プロセッサ100間にまたがら
ない場合、制御部30は、指定された正負符号を含めたイ
ンクリメント値(j)とプログラムカウンタ33の現在のカ
ウント値と加算した値でプログラムカウンタ33の更新を
行い、次の命令データ226を獲得する。
【0112】図8は、分岐命令に基づく命令の実行順の
一例を示している。同図(1)は、逆方向の分岐例を示し
ており、現段のプロセッサにおいて、配置位置iにある
命令データは、負のインクリメント値jを示している。
同図(2)は、順方向の分岐例を示しており、現段のプロ
セッサにおいて、配置位置iにある命令データは、正の
インクリメント値jを示している。
【0113】制御部30は、パケット処理プロセッサ100
間にまたがる場合で負のインクリメント値jが指定され
た場合、後段のパケット処理プロセッサ100に対して、
起動指示信号230_1及びプログラムカウンタ値231_1を出
力する。後段のパケット処理プロセッサ100に送信する
プログラムカウンタ値231_1(=“x”)は、指定された
インクリメント値j、この命令の配置位置i、及びパケッ
ト処理プロセッサ100の実行可能な命令数Nから求める
(図8(1)参照)。
【0114】制御部30は、パケット処理プロセッサ100
間にまたがる場合で正のインクリメント値jが指定され
た場合、前段のパケット処理プロセッサ100に対して、
起動指示信号230_2及びプログラムカウンタ値231_2を出
力する。前段のパケット処理プロセッサに送信するプロ
グラムカウンタ値231_2(=“x”)は、指定されたイン
クリメント値j、この命令の配置位置i、及びパケット処
理プロセッサの実行可能な命令数Nから求める(図8(2)
参照)。
【0115】なお、前段のパケット処理プロセッサ100
は、プログラムカウンタ値231_2をプログラム獲得開始
までの遅延時間としても用いる。図8を参照して、制御
部30がプログラムカウンタ値231_1,231_2を求める手順
を説明する。
【0116】(1)制御部30は、命令で指定されたインク
リメント値jが負の値であれば、iとj(絶対値)の大小
比較を行う(同図(1)参照)。 (1-1) i<jのとき、制御部30は、パケット処理プロセッ
サ100間にまたがる分岐と判定し、後段のパケット処理
プロセッサ100へ起動指示信号230_1、及びプログラムカ
ウンタ値231_1=“x”=“N−(j−i)”を出力する。
【0117】(1-2) i>jのとき、制御部30は、パケット
処理プロセッサ100間にまたがらない分岐と判定し、現
在のプログラムカウンタ値iからjを減算して、新しい
プログラムカウンタ値=“i-j”とする。 (2)制御部30は、命令で指定されたインクリメント値jが
正の値であれば、i+jとNの大小比較を行う(同図(2)参
照)。
【0118】(2-1) i+j>Nのとき、制御部30は、パケ
ット処理プロセッサ100間にまたがる分岐である判定
し、前段のパケット処理プロセッサ100へ起動指示信号2
30_2及びプログラムカウンタ値231_2=“x”=“i+j−
N”を出力する。 (2-2) i+j<Nのとき、制御部30は、パケット処理プロ
セッサ100間にはまたがらない分岐と判定し、現在のプ
ログラムカウンタ値iにjを加えて、新しいプログラムカ
ウンタ値=“i+j”とする。
【0119】制御部30は、以上の分岐手順を命令格納領
域のプログラムの最終アドレスの命令を獲得するまで繰
り返す。制御部30は、前述したように、図1の実施例と
同様に、受信パケット転送タイミング信号222を認識す
ると基本命令格納領域21_1の先頭から実行を開始するこ
とを基本とするが、前段のパケット処理プロセッサ100
からの起動指示信号230_1を受信した場合、この起動指
示信号230_1と同時に与えられるプログラムカウンタ値2
31_1のアドレスの命令を獲得する。
【0120】逆に、制御部30は、後段のパケット処理プ
ロセッサ100からの起動指示信号230_2を受信した場合、
受信パケット転送タイミング信号222の入力を認識後、
起動指示信号230_2と同時に与えられるプログラムカウ
ンタ値231_2と同じ命令実行クロック数分だけ遅延した
後、プログラムカウンタ値231_2のアドレスの命令を獲
得する。
【0121】これにより、本は発明のパケット処理プロ
セッサシステムは、パケット処理プロセッサ100の間に
またがる分岐命令を実行することが可能になる。図9
は、プログラム実行制御部30が、後段のパケット処理プ
ロセッサ100からの起動指示信号230_2を受信した場合の
命令実行タイミング例を示している。制御部30は、図7
に示したように制御部31を備え、この制御部31は命令獲
得許可信号生成部311を含んでいる。
【0122】同図(1)は、この生成部311を示しており、
受信パケット転送タイミング信号222、及びレジスタ38
(図7参照)からの遅延クロック数232を入力し、命令
獲得許可信号229を出力している。制御部30は、後段の
パケット処理プロセッサ100からのプログラムカウンタ
値231_2を遅延クロック数(命令実行クロック数)232と
してレジスタ38に設定することが可能なように構成され
ている。すなわち、図7に示したように、プログラムカ
ウンタ値231_2がセレクタ37を経由してレジスタ38に格
納されるように構成されている。
【0123】同図(2)において、タイミングは、遅延
クロック数=“0”の場合を示し、タイミングは、遅
延クロック数=“3”の場合を示している。なお、生成
部311は、クロック220に同期して動作している。タイミ
ングにおいては、生成部311は、受信パケット転送タ
イミング信号222の立上りから1クロック分だけ遅れ
て、命令獲得許可信号229を「アクティブ」にする。こ
の結果、メモリアドレス225=“Adr0”が出力され、1
クロック分だけ遅れて命令データ226=“マイクロコー
ドMC0”が出力される。
【0124】以下、同様に、メモリアドレス225=“Adr
1”,…,“Adr4”が順次が出力され、1クロック分だ
け遅れて、対応する命令データ226=“MC1”,…,“MC
4”が出力される。タイミングにおいては、生成部311
は、受信パケット転送タイミング信号222の立上りから
1クロック分だけ遅れたクロック220の立上りから、さ
らに、レジスタ38に格納された“遅延クロック数”=
“3”クロック分だけ遅れたクロック220の立上りに同
期して命令獲得許可信号229を「アクティブ」にしてい
る。
【0125】この結果、メモリアドレス225=“Adr
0”,“Adr1”,…が順次が出力され、1クロック分だ
け遅れて、対応する命令データ226=“MC0”,“MC
1”,…が出力される。これにより、受信パケット転送
タイミング信号222の後に所定の命令実行クロック分だ
けの期間、命令を実行しない区間を設けることが可能に
なる。
【0126】なお、制御部30は、パケットの先頭が入力
されてから、パケットデータ保持部70のデータ転送幅、
転送クロック速度、及び受信パケット長から得られる所
要転送クロック数を経過した場合には、次命令の獲得を
終了し、受信パケット転送タイミング信号222(すなわ
ち、次パケットの入力)又は起動指示信号230_1又は起
動指示信号230_2を待つ。
【0127】これにより、処理中のパケットが1つのプ
ロセッサ100のパケットデータ保持部70に存在しないに
も関わらず、無駄なパケット処理を行うと言う誤動作を
回避できる。図10(1)は、同一パケット処理プロセッサ1
00内で繰り返し処理を行うアルゴリズム例を示してい
る。このアルゴリズム例は、IPv6パケットにおいて任意
長の拡張ヘッダが付与された場合を考慮して、その上位
のプロトコルであるTCPの送信元/宛先ポート番号を獲得
するものである。
【0128】ここでは簡略化のため、命令実行クロック
速度は、パケットデータ保持部70におけるパケット201
の転送クロック速度の2倍であり、パケットデータ保持
部70内のレジスタp0〜p9幅は32ビットとする。図18に示
したように、IPv6のヘッダは、固定長(40バイト)の基本
ヘッダに8バイトの整数倍の長さを持つ各種拡張ヘッダ
がチェーンされた構成になっている。
【0129】従って、IPv6パケットから上位のプロトコ
ルであるUDP/TCPの送信元/宛先ポート番号を獲得するた
めには、制御部30は、基本ヘッダ中の「次ヘッダフィー
ルド」を基点として、基本ヘッダ又は拡張ヘッダ中の
「次ヘッダフィールド」に設定された“タイプ値”によ
って次に拡張ヘッダが続くか上位のプロトコルが続くか
を判別すると共に、「ヘッダ拡張長フィールド」の値に
よって次ヘッダフィールドを獲得するといった処理を逐
次繰り返す必要がある。
【0130】なお、「次ヘッダフィールド」に挿入され
る“ヘッダタイプ値”はRFC1700で定められており、例
えばTCPならば“6(Decimal)”、UDPならば“17(Decima
l)”である。従って、制御部30は、「次ヘッダフィール
ド」の値=“6”又は“17”である場合、次に上位のTC
P又はUDPパケットの次ヘッダが来ると判別できる。
【0131】ここで、各パケット処理プロセッサ100に
おいては、命令実行クロックによって逐次命令が実行さ
れる一方、制御部30は、対象パケット201のデータがパ
ケットデータ保持部70内のパケットデータアクセスレジ
スタp0〜p9中を転送クロックによって逐次転送されて行
くことを考慮して、IPv6拡張ヘッダの次ヘッダ及び次ヘ
ッダ拡張長フィールドの抽出を行う必要がある。
【0132】この抽出は、「パケットデータアクセスレ
ジスタp0〜p9の参照位置(例えば、レジスタp9)」をオ
ペランドとする演算命令で行われる。同様に、TCPヘッ
ダの「送信元/宛先ポート番号フィールド」は、「レジ
スタp0〜p9の参照位置」及び「転送先のレジスタ名」を
オペランドとするデータ転送命令で「転送先レジスタ」
に転送される。
【0133】これらの演算命令及びデータ転送命令をア
ルゴリズムで繰り返し実行するためには、オペランドと
して記述した参照位置(レジスタp9)は固定されること
になる。従って、プログラムは、演算命令及びデータ転
送命令を実行するタイミングに、レジスタp0〜p9の内の
参照位置に目的のフィールド(ここでは拡張ヘッダ内の
「次ヘッダフィールド」及び「ヘッダ拡張長フィール
ド」、又はTCPヘッダの「送信元/宛先ポート番号フィー
ルド」)が存在するよう演算命令又はデータ転送命令を
実行前にタイミングを調整するように構成されている必
要がある。
【0134】また、パケット処理プロセッサ100は、
「レジスタ38」及び「任意の遅延クロック数」をオペラ
ンドとするレジスタ更新命令を実行することで、「任意
の遅延クロック数」でレジスタ38を更新することが可能
である。すなわち、図7に示すように、命令データ226
(=レジスタ更新命令)のオペランド(遅延クロック
数)は、セレクタ37を経由してレジスタ38に格納され
る。
【0135】オペランドに「レジスタ38」及び「遅延ク
ロック数」設定したレジスタ更新命令が実行された場
合、「遅延クロック数」だけ命令の実行が停止された
後、このレジスタ更新命令の次の命令が実行される。制
御部30は、このレジスタ更新命令を実行した後、プログ
ラムカウンタ33(図7参照)を1つインクリメントして
次命令獲得開始を待てばよい。
【0136】これにより、任意の命令実行クロック分だ
けの期間、命令の実行を停止することが可能になる。図
10(2)は、プログラムメモリ21上の命令配置例を示して
いる。以下に、同図(1)及び(2)を参照してアルゴリズム
及び命令を説明する。なお、上記の参照位置はレジスタ
p9とする。
【0137】ステップS1:命令実行部40は、演算命令に
よってパケットデータアクセスレジスタ内の基本ヘッダ
中の次ヘッダフィールドの値とTCPの値を示す“6(Decim
al)”を比較し、その結果を内部状態(フラグ)に設定
する。ステップS2 :レジスタ更新命令が、「遅延クロック数」
でレジスタ38を更新し、レジスタp0〜p9内のパケット20
1のデータを「遅延クロック数」分だけ先送りし、ステ
ップS4でアクセスするレジスタp9にIPv6ヘッダの「次ヘ
ッダフィールド」が来るように調整する。ここで用いる
「遅延クロック数」はIPv6基本ヘッダのサイズから固定
的に求まる値=“16”である。
【0138】ステップS3:ステップS1又はステップS4の
演算結果のフラグの状態によって分岐する。フラグが一
致を示している場合、ステップS7へ進み。そうでない場
合、次ステップS4に進む。ステップS4 :演算命令が、レジスタp9内の拡張ヘッダの
「次ヘッダフィールド」の値とTCPを示す“6(Decima
l)”とを比較し、その結果をフラグに設定する。
【0139】ステップS5:レジスタ更新命令が、「遅延
クロック数」でレジスタ38を更新し、パケットデータア
クセスレジスタp0〜p9内のパケット201のデータを「遅
延クロック数」分だけ先送りする。ここで用いる「遅延
クロック数」は拡張ヘッダ中の「ヘッダ長フィールド」
から求まる可変の値である。例えば、ヘッダ長=“8”
ならば“0”、ヘッダ長=“16”ならば“4”というよう
な値になる。この結果、拡張ヘッダサイズ分だけの待ち
が行われる。
【0140】ステップS6:無条件分岐命令によって、ス
テップS3へジャンプする。ステップS7 :データ転送命令によってTCPヘッダの「送
信元/宛先ポート番号」が指定したレジスタに転送され
る。これにより、「送信元/宛先ポート番号」が獲得さ
れた。
【0141】図11は、IPv6パケットに含まれるTCPパケ
ットの送信先/宛先ポート番号を図10(1)に示したアルゴ
リズムに従って求める動作ステップ例を示している。同
図(1)〜(4)は、IPv6ヘッダが、それぞれ、基本ヘッダの
み、基本ヘッダ+8バイトの拡張ヘッダ、基本ヘッダ+
16バイトの拡張ヘッダ、及び基本ヘッダ+16バイトの拡
張ヘッダ+8バイトの拡張ヘッダである場合を示してい
る。
【0142】同図中の符号S0〜S7、及び符号w1〜w16
は、それぞれ、パケットの各フィールドが、パケットデ
ータアクセスレジスタの最初のレジスタp9(図2参照)
に保持された時に実行されるプログラムのステップ番号
(図10のステップ番号S0〜S9)、及び待ち状態を示して
いる。
【0143】以下に、同図(4)の動作例について説明す
る。<基本ヘッダ>ステップS1 :演算命令によって、基本ヘッダの「次ヘッ
ダフィールド」の値が所定の値と比較されて、拡張ヘッ
ダが続くことが確認される。
【0144】ステップS2:レジスタ更新命令によって、
基本ヘッダの固定長分だけの待ち状態w1〜w16が挿入さ
れる。ステップS3 :ステップS1で次ヘッダがTCPヘッダでない
ことが確認されているため、分岐命令によって、ステッ
プS4に進む。
【0145】<第1の拡張ヘッダ>ステップS4,ステップS5 :演算命令によって、次ヘッダ
が拡張ヘッダであることが確認され、レジスタ更新命令
によって、ヘッダ長フィールドの値に基づき待ち状態w1
〜W4が挿入されるステップS6 :無条件分岐命令によって、ステップS3に戻
る。
【0146】ステップS3:ステップS4で次ヘッダがTCP
ヘッダでないことが確認されているため、分岐命令によ
って、次のステップS4に進む。< 第2の拡張ヘッダ>ステップS4,ステップS5 :演算命令によって、次のヘッ
ダがTCPヘッダであることが確認され、レジスタ更新命
令によって、ヘッダ長フィールドの値に基づき待ち状態
の挿入を行われずにステップS6に進む。
【0147】ステップS6:無条件分岐命令によって、ス
テップS3に戻る。ステップS3 :ステップS4で次ヘッダがTCPヘッダである
ことが確認されているので、分岐命令でステップS7に進
む。< TCPヘッダ>ステップS7 :データ転送命令で「送信元/宛先ポート番
号」が所定のレジスタに格納される。
【0148】同様に、同図(1)〜(3)の動作例において
も、各動作例に示されたステップ番号の命令の実行、及
びこの命令に基づく待ち状態の挿入によって、TCPヘッ
ダの送信元/宛先ポート番号を知ることができる。すな
わち、図10(2)に示したプログラムは、様々なタイプの
ヘッダを有するIPv6パケットに含まれる上位のTCPヘッ
ダの送信先/宛先ポート番号を抽出することが可能であ
ることを示している。
【0149】図10及び図11に示した分岐命令を含むアル
ゴリズム例は、同一のパケット処理プロセッサ100内の
分岐のみについて説明した。すなわち、同一のパケット
処理プロセッサ100内の分岐が可能であることを示し
た。例えば、要求スループットが高速であるため、1つ
のパケット処理プロセッサ100の実行可能命令数=
“5”である場合、図10(2)に示したステップS0〜S7の
マイクロコードは、複数のパケット処理プロセッサ100
のメモリ21に分散して配置しなければならない。
【0150】そこで、ステップS0〜S4のマイクロコード
を、図8(1)に示した後段のパケット処理プロセッサ100
のメモリ21に配置し、ステップS5〜S7のマイクロコード
を現段のメモリ21に配置する。これを同図(2)で示せ
ば、ステップS0〜S4のマイクロコードが現段のメモリ21
に配置され、ステップS5〜S7のマイクロコードが前段の
メモリ21に配置されることになる。
【0151】ステップS6の無条件分岐命令(図10(1)参
照)によるステップS3への分岐は、図8(1)に示した逆方
向への分岐に相当し、ステップS3の条件付き分岐命令に
よるステップS7への分岐は、図8(2)に示した順方向への
分岐に相当する。各段のパケット処理プロセッサ100の
プログラム実行制御部30(図7参照)は、分岐命令に獲
得した場合、図8に示した手順で分岐命令を実行して、
対応するパケット処理プロセッサ100のプログラム実行
制御部30に起動指示信号及びプログラムカウンタ値を送
ればよい。
【0152】以上のように、従来のパケット処理プロセ
ッサシステムがパケットの先頭から一定範囲、すなわ
ち、許容命令数分の命令実行時間中にパケットデータ保
持部内を転送されるパケットのデータのみについての処
理を記述することが可能であったのに対し、本発明のパ
ケット処理プロセッサシステムは、対象パケットがパケ
ットデータ保持部70内を転送中である限り、分岐処理及
び繰返処理を記述することが可能となっている。
【0153】なお、上記の本発明の実施例では、TCP/IP
プロトコルのパケットに対するパケット処理について述
べたが、本発明のパケット処理プロセッサ及びパケット
処理プロセッサシステムは、他のプロトコル及び他の階
層のパケット(セル、データグラム、フレーム)等の処
理に適用することが可能である。
【0154】例えば、図11に示した動作例と同様の動作
で、本発明のパケット処理プロセッサシステムは、パケ
ットの最後尾にあるFCS(Frame Check Sequence)及び
チェックサム等のデータの抽出処理の記述、また、パケ
ット全体にわたる処理の記述が可能になる。
【0155】なお、上記のプロセッサ及びプロセッサシ
ステムの実施例では、パケットデータの実体が、パケッ
トアクセスレジスタ内を移動するように構成している
が、実際にパケットデータアクセスレジスタに格納する
ものは、パケットデータの実体に限定されず、パケット
データから抽出し、再構成したデータでもよい。
【0156】さらに、出願番号:特平12-240829号「パ
ケットデータ処理装置」で示したようにパケット処理プ
ロセッサシステム内の各パケット処理プロセッサ100の
パケットデータ保持部70の合計段数が処理対象とするパ
ケットの最大長よりも十分に大きければ、FIFO(First-
In-First-Out)型のパケット処理プロセッサ100間情報
伝達機構を組み合わせることで、前段のパケット処理プ
ロセッサで前述の処理結果を利用することも可能であ
る。
【0157】(付記1)パケットをその先頭から順次受
信するパケットレジスタと、該パケットの処理手順を記
述したプログラムを保持する実行プログラム保持部と、
与えられたパケットの長さ及び該プログラムに基づいて
実行するプログラムの命令数を決定し、該プログラムの
実行を制御するプログラム実行制御部と、を備えたこと
を特徴とするパケット処理プロセッサ。
【0158】(付記2)パケットをその先頭から順次受
信するパケットレジスタと、該パケットの処理手順を記
述したプログラムを保持する実行プログラム保持部と、
与えられたパケットの長さ及び該プログラムに基づいて
実行する命令数を決定し該プログラムの実行を制御する
プログラム実行制御部と、内部状態を保持する内部状態
保持部と、を備えたパケット処理プロセッサを少なくと
も2つ縦続接続し、現段のパケット処理プロセッサの該
内部状態及び出力パケットを前段のパケット処理プロセ
ッサに与えることを特徴としたパケット処理プロセッサ
システム。
【0159】(付記3)パケットをその先頭から順次受
信するパケットレジスタと、該パケットの処理手順を記
述したプログラムを保持する実行プログラム保持部と、
該プログラムの実行を制御するプログラム実行制御部
と、を備えたパケット処理プロセッサを、現段のパケッ
ト処理プロセッサの出力パケットが前段のパケット処理
プロセッサに与えられるように、少なくとも2つ縦続接
接続し、該プログラム実行制御部が、少なくとも前段及
び後段の内の一方のパケット処理プロセッサのプログラ
ム実行制御部に対して、命令獲得タイミング及び命令獲
得位置を指示することを特徴としたパケット処理プロセ
ッサシステム。
【0160】(付記4)上記の付記3において、プログ
ラム実行制御部が、与えられたパケットの長さ及び該プ
ログラムに基づいて実行するプログラムの命令数を決定
することを特徴としたパケット処理プロセッサシステ
ム。
【0161】(付記5)上記の付記3において、該パケ
ット処理プロセッサが、さらに、内部状態を保持する内
部状態保持部を備え、現段のパケット処理プロセッサの
該内部状態を前段のパケット処理プロセッサに与えるこ
とを特徴としたパケット処理プロセッサシステム。
【0162】(付記6)上記の付記2又は5において、
該実行プログラム保持部はバンク切替が可能であり、該
内部状態がバンク値であることを特徴としたパケット処
理プロセッサシステム。 (付記7)上記の付記1において、該プログラム実行制
御部は、処理中のパケットが終了したことにより又は新
規パケットが入力されたことにより、該パケットに対す
る次の命令の獲得を停止することを特徴としたパケット
処理プロセッサ。
【0163】(付記8)上記の付記2又は3において、
該プログラム実行制御部は、処理中のパケットが終了し
たことにより又は新規パケットが入力されたことによ
り、該パケットに対する次の命令の獲得を停止すること
を特徴としたパケット処理プロセッサシステム。
【0164】(付記9)上記の付記1において、該プロ
グラム実行制御部は、命令獲得を所定の命令実行クロッ
ク分だけ行わないことを特徴としたパケット処理プロセ
ッサ。 (付記10)上記の付記2又は3において、該プログラ
ム実行制御部は、命令獲得を所定の命令実行クロック分
だけ行わないことを特徴としたパケット処理プロセッサ
システム。
【0165】(付記11)上記の付記1において、該プ
ログラム実行制御部は、該パケットが入力されたタイミ
ングを示す転送タイミング信号を受信したときから、所
定の命令実行クロック分だけ命令獲得を行わないことを
特徴としたパケット処理プロセッサ。
【0166】(付記12)上記の付記2において、該プ
ログラム実行制御部は、該パケットが入力されたタイミ
ングを示す転送タイミング信号を受信したときから、所
定の命令実行クロック分だけ命令獲得を行わないことを
特徴としたパケット処理プロセッサシステム。
【0167】(付記13)上記の付記3において、該プ
ログラム実行制御部は、該パケットが入力されたタイミ
ングを示す転送タイミング信号を受信したときから、所
定の命令実行クロック分だけ命令獲得を行わないことを
特徴としたパケット処理プロセッサシステム。
【0168】(付記14)上記の付記13において、該
所定の命令実行クロックが、該命令獲得位置であること
を特徴としたパケット処理プロセッサシステム。 (付記15)上記の付記1において、該プログラム実行
制御部は、パケット処理プロセッサ自身の内部状態及び
該プログラムに基づき命令獲得位置を決定することを特
徴としたパケット処理プロセッサ。
【0169】(付記16)上記の付記2又は5におい
て、該プログラム実行制御部は、パケット処理プロセッ
サ自身の内部状態及び該プログラムに基づき命令獲得位
置を決定することを特徴としたパケット処理プロセッサ
システム。
【0170】(付記17)上記の付記15において、該
内部状態が、許容命令数又は実行可能命令数であること
を特徴としたパケット処理プロセッサ。 (付記18)上記の付記16において、該内部状態が、
許容命令数又は実行可能命令数であることを特徴とした
パケット処理プロセッサシステム。
【0171】
【発明の効果】以上説明したように、本発明に係るパケ
ット処理プロセッサ又はパケット処理プロセッサシステ
ムによれば、パケットレジスタがパケットをその先頭か
ら順次受信し、実行プログラム保持部が該パケットの処
理手順を記述したプログラムを保持し、プログラム実行
制御部が与えられたパケットの長さ及び該プログラムに
基づいて実行するプログラムの命令数を決定して該プロ
グラムの実行を制御するように構成したので、実行可能
な命令数を増やすこと及びアクセス可能なパケット範囲
を広くすることが可能になる。
【0172】特に、パケット処理プロセッサシステムお
いては、システム全体として1つのパケットに対する実
行可能な命令数及びアクセス可能範囲を増やすことがで
きるため、システムの段数を少なくすることが可能にな
る。この結果、ハードウェア資源を有効に活用すること
が可能になる。
【0173】また、該プログラム実行制御部が、少なく
とも前段及び後段の内の一方のパケット処理プロセッサ
のプログラム実行制御部に対して、命令獲得タイミング
及び命令獲得位置を指示することによって、パケット処
理プロセッサ間にまたがるプログラムの分岐命令を記述
し実行することが可能になり、パケット処理のプログラ
ミングを柔軟性に行うことが可能になる。
【0174】また、該プログラム実行制御部が、命令獲
得を所定の命令実行クロック分だけ行わないこと、転送
タイミング信号を受信したときから所定の命令実行クロ
ック分だけ命令獲得を行わないこと、パケット処理プロ
グラムを柔軟に記述することが可能になる。
【0175】このように本発明においては、各パケット
処理プロセッサ内の命令実行遅延機構、及び同一バンク
内での分岐命令、パケット処理プロセッサ間相互の起動
制御を可能にすることで、パケット処理のプログラミン
グを柔軟に行うことが可能になる。
【図面の簡単な説明】
【図1】本発明に係るパケット処理プロセッサの実施例
を示したブロック図である。
【図2】本発明に係るパケット処理プロセッサにおける
実行プログラム保持部、パケットデータ保持部、及びプ
ログラム実行制御部をより詳細に示したブロック図であ
る。
【図3】本発明に係るパケット処理プロセッサにおける
プログラム実行制御例を示した図である。
【図4】本発明に係るパケット処理プロセッサの命令実
行タイミング(バンク切替及び命令獲得(1)例を示した
図である。
【図5】本発明に係るパケット処理プロセッサシステム
の実施例(1)を示したブロック図である。
【図6】本発明に係るパケット処理プロセッサシステム
の実施例(2)を示したブロック図である。
【図7】本発明に係るパケット処理プロセッサシステム
におけるプログラム実行制御部の構成例を示したブロッ
ク図である。
【図8】本発明に係るパケット処理プロセッサシステム
における分岐命令に基づく命令実行順例を示した図であ
る。
【図9】本発明に係るパケット処理プロセッサシステム
の命令実行タイミング(命令獲得(2))例を示した図で
ある。
【図10】本発明に係るパケット処理プロセッサにおけ
るIPv6パケットに含まれるTCPポート番号獲得アルゴリ
ズム例を示した図である。
【図11】本発明に係るパケット処理プロセッサにおけ
るIPv6パケットに含まれるTCPポート番号獲得例を示し
た図である。
【図12】従来のパケット処理プロセッサの構成(1)を
示したブロック図である。
【図13】従来のパケット処理プロセッサの構成(2)を
示したブロック図である。
【図14】従来のパケット処理プロセッサのプログラム
実行制御を示した図である。
【図15】従来のパケット処理プロセッサシステムの構
成を示したブロック図である。
【図16】一般的なIPヘッダのフォーマット図である。
【図17】一般的なシムヘッダ及びTCPヘッダのフォー
マット図である。
【図18】一般的なTCPパケットを含むIPv6パケットの
ヘッダ構成例を示した図である。
【図19】一般的なパケット処理プロセッサの分岐命令
の概要を示した図である。
【図20】一般的な繰り返し処理のフローを示したフロ
ーチャート図である。
【符号の説明】
100,100_1,100_2,101,101_1,101_2,102 パケッ
ト処理プロセッサ 10 演算部 11 内部汎用レジ
スタ 12 内部状態保持部 13 制御部 14 外部バスバッファ 20 実行プログラ
ム保持部 21,21_1〜21_3 プログラムメモリ(マイクロコード用
メモリ) 21_1 基本命令格納領域 21_2〜21_4 拡張
命令格納領域 30 プログラム実行制御部 30a プログラム
起動部 31 制御部 311 命令獲得許
可信号生成部 312 デコーダ 32 メモリ制御部 33 プログラムカウンタ 34 加算器 35 +1加算器 36,37 セレクタ 38 レジスタ 40 命令実行部 40a 制御部 50 内部状態保持
部 60 パケットデータ入力部 70 パケットデー
タ保持部 p0〜p9 パケットデータアクセスレジスタ 80 パケットデータ出力部 90 中間データ保
持部 110 バス 120 メモリ 201,202 パケット 220 クロック 221 パケット到着信号 222 受信パケッ
ト転送タイミング信号 223 受信パケット長信号 224 バンク切替
信号(バンク値) 225 メモリアドレス 226 命令データ 227 許容命令数 228 実行可能命
令数 229 命令獲得許可信号 230,230_1,230_
2 起動指示信号 231,231_1,231_2 プログラムカウンタ値 232 遅延クロック数 233 起動指示信
号 234 内部状態 235 中間データ 図中、同一符号は同一又は相当部分を示す。
───────────────────────────────────────────────────── フロントページの続き Fターム(参考) 5K030 HA08 KA01 LE10 5K034 AA02 EE11 FF01 HH01 HH02 HH12 JJ02

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】パケットをその先頭から順次受信するパケ
    ットレジスタと、 該パケットの処理手順を記述したプログラムを保持する
    実行プログラム保持部と、 与えられたパケットの長さ及び該プログラムに基づいて
    実行するプログラムの命令数を決定し、該プログラムの
    実行を制御するプログラム実行制御部と、 を備えたことを特徴とするパケット処理プロセッサ。
  2. 【請求項2】パケットをその先頭から順次受信するパケ
    ットレジスタと、 該パケットの処理手順を記述したプログラムを保持する
    実行プログラム保持部と、 与えられたパケットの長さ及び該プログラムに基づいて
    実行する命令数を決定し、該プログラムの実行を制御す
    るプログラム実行制御部と、 内部状態を保持する内部状態保持部と、 を備えたパケット処理プロセッサを少なくとも2つ縦続
    接続し、現段のパケット処理プロセッサの該内部状態及
    び出力パケットを前段のパケット処理プロセッサに与え
    ることを特徴としたパケット処理プロセッサシステム。
  3. 【請求項3】パケットをその先頭から順次受信するパケ
    ットレジスタと、 該パケットの処理手順を記述したプログラムを保持する
    実行プログラム保持部と、 該プログラムの実行を制御するプログラム実行制御部
    と、 を備えたパケット処理プロセッサを、現段のパケット処
    理プロセッサの出力パケットが前段のパケット処理プロ
    セッサに与えられるように、少なくとも2つ縦続接接続
    し、 該プログラム実行制御部が、少なくとも前段及び後段の
    内の一方のパケット処理プロセッサのプログラム実行制
    御部に対して、命令獲得タイミング及び命令獲得位置を
    指示することを特徴としたパケット処理プロセッサシス
    テム。
  4. 【請求項4】請求項3において、 プログラム実行制御部が、与えられたパケットの長さ及
    び該プログラムに基づいて実行するプログラムの命令数
    を決定することを特徴としたパケット処理プロセッサシ
    ステム。
  5. 【請求項5】請求項2又は3において、 該プログラム実行制御部は、命令獲得を所定の命令実行
    クロック分だけ行わないことを特徴としたパケット処理
    プロセッサシステム。
JP2001283999A 2001-09-18 2001-09-18 パケット処理プロセッサ及びパケット処理プロセッサシステム Expired - Fee Related JP4342128B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2001283999A JP4342128B2 (ja) 2001-09-18 2001-09-18 パケット処理プロセッサ及びパケット処理プロセッサシステム
US10/124,828 US20030053481A1 (en) 2001-09-18 2002-04-18 Packet processor and packet processor system
CNB021426864A CN1199423C (zh) 2001-09-18 2002-09-17 分组处理器和分组处理器系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001283999A JP4342128B2 (ja) 2001-09-18 2001-09-18 パケット処理プロセッサ及びパケット処理プロセッサシステム

Publications (2)

Publication Number Publication Date
JP2003092591A true JP2003092591A (ja) 2003-03-28
JP4342128B2 JP4342128B2 (ja) 2009-10-14

Family

ID=19107402

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001283999A Expired - Fee Related JP4342128B2 (ja) 2001-09-18 2001-09-18 パケット処理プロセッサ及びパケット処理プロセッサシステム

Country Status (3)

Country Link
US (1) US20030053481A1 (ja)
JP (1) JP4342128B2 (ja)
CN (1) CN1199423C (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL130796A (en) * 1999-07-05 2003-07-06 Brightcom Technologies Ltd Packet processor
SE525183C2 (sv) * 2002-04-04 2004-12-21 Xelerated Ab Förfarande och medel för behandling med pipelining av datapaket
US7349435B2 (en) 2002-07-11 2008-03-25 Bay Microsystems, Inc. Multiport overhead cell processor for telecommunications nodes
US20040008673A1 (en) * 2002-07-11 2004-01-15 Ygal Arbel Overhead processing in telecommunications nodes
US20040008701A1 (en) * 2002-07-11 2004-01-15 Giacomini Peter J. Hierarchical finite-state machines
US20040008708A1 (en) * 2002-07-11 2004-01-15 Giacomini Peter J. Overhead engine for telecommunications nodes
KR100477698B1 (ko) * 2003-01-13 2005-03-18 삼성전자주식회사 IPv6 헤더 수신 장치 및 IPv6 헤더 처리 방법
CN101539771B (zh) * 2008-03-21 2012-09-19 鸿富锦精密工业(深圳)有限公司 主设备对从设备的自动定址系统
US11178261B1 (en) * 2019-08-23 2021-11-16 Fitbit, Inc. Device communication techniques
EP4002032B1 (en) * 2020-11-19 2023-08-09 Siemens Aktiengesellschaft A method for communicating with one or more field devices

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69329709D1 (de) * 1993-04-29 2001-01-04 Ibm Verfahren und Gerät für Mehrfachübertragung von Daten in einem Kommunikationssystem
US6870874B2 (en) * 1994-04-28 2005-03-22 Canon Kabushiki Kaisha Communication apparatus
US5490168A (en) * 1994-07-08 1996-02-06 Motorola, Inc. Method and system for automatic optimization of data throughput using variable packet length and code parameters
JP3203978B2 (ja) * 1994-07-25 2001-09-04 ソニー株式会社 データ送受信装置、データ受信装置及びデータ送信装置
US6577610B1 (en) * 1997-06-30 2003-06-10 Spacenet, Inc. Flex slotted Aloha transmission system and method
US6480497B1 (en) * 1998-11-23 2002-11-12 Ricochet Networks, Inc. Method and apparatus for maximizing data throughput in a packet radio mesh network
JP2000295279A (ja) * 1999-04-02 2000-10-20 Nec Corp パケットスイッチ
JP2000324164A (ja) * 1999-05-12 2000-11-24 Nec Corp パケットデータ転送装置
GB2356104B (en) * 1999-11-04 2001-10-10 3Com Corp Network switch including bandwidth controller
JP2001251349A (ja) * 2000-03-06 2001-09-14 Fujitsu Ltd パケットプロセッサ
US20030023960A1 (en) * 2001-07-25 2003-01-30 Shoab Khan Microprocessor instruction format using combination opcodes and destination prefixes
US7039038B2 (en) * 2001-01-18 2006-05-02 Texas Instruments Incorporated Adaptive fragmentation for wireless network communications
US7418536B2 (en) * 2001-07-30 2008-08-26 Cisco Technology, Inc. Processor having systolic array pipeline for processing data packets

Also Published As

Publication number Publication date
JP4342128B2 (ja) 2009-10-14
CN1406037A (zh) 2003-03-26
CN1199423C (zh) 2005-04-27
US20030053481A1 (en) 2003-03-20

Similar Documents

Publication Publication Date Title
US7283528B1 (en) On the fly header checksum processing using dedicated logic
US6654823B2 (en) Packet-data processing apparatus
US7616562B1 (en) Systems and methods for handling packet fragmentation
US8015392B2 (en) Updating instructions to free core in multi-core processor with core sequence table indicating linking of thread sequences for processing queued packets
US6032190A (en) System and method for processing data packets
US7239635B2 (en) Method and apparatus for implementing alterations on multiple concurrent frames
US7478223B2 (en) Symbol parsing architecture
US7680116B1 (en) Optimized buffer loading for packet header processing
US7936758B2 (en) Logical separation and accessing of descriptor memories
US20050232303A1 (en) Efficient packet processing pipeline device and method
JP2001251349A (ja) パケットプロセッサ
JP4203979B2 (ja) パケット処理装置
JP4342128B2 (ja) パケット処理プロセッサ及びパケット処理プロセッサシステム
US7239630B1 (en) Dedicated processing resources for packet header generation
US7158520B1 (en) Mailbox registers for synchronizing header processing execution
US20040246956A1 (en) Parallel packet receiving, routing and forwarding
US7180893B1 (en) Parallel layer 2 and layer 3 processing components in a network router
JP3742250B2 (ja) パケットデータ処理装置及びそれを用いたパケット中継装置
US7210008B2 (en) Memory controller for padding and stripping data in response to read and write commands
JP2002176440A (ja) パケット処理装置
US20010007559A1 (en) Interleaved processing system for processing frames within a network router
KR101353992B1 (ko) 데이터 패킷 조립을 위한 방법 및 디바이스
JP4183920B2 (ja) パケットデータ処理装置
JP3850773B2 (ja) 出力ポート判定装置
EP1523829A2 (en) Efficient packet processing pipeline device and method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061113

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081106

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090114

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090707

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: 20090707

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

Free format text: PAYMENT UNTIL: 20120717

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees