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

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

Info

Publication number
JP4342128B2
JP4342128B2 JP2001283999A JP2001283999A JP4342128B2 JP 4342128 B2 JP4342128 B2 JP 4342128B2 JP 2001283999 A JP2001283999 A JP 2001283999A JP 2001283999 A JP2001283999 A JP 2001283999A JP 4342128 B2 JP4342128 B2 JP 4342128B2
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.)
Expired - Fee Related
Application number
JP2001283999A
Other languages
English (en)
Other versions
JP2003092591A (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 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

Images

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)

Description

【0001】
【発明の属する技術分野】
本発明はパケット処理プロセッサ及びパケット処理プロセッサシステムに関し、特に、パケット中継装置等において、入力されたパケットに対して所定のパケット処理を行うパケット処理プロセッサ及びパケット処理プロセッサシステムに関するものである。
【0002】
近年、通信技術の進歩に伴い、コンピュータやさまざまな情報処理機器(端末)間でデータを交換するLAN(Local Area Network)等のプライベートなネットワークを相互接続したグローバルなネットワークシステムが構築されている。
このグローバルネットワークシステムにおける通信は、例えば、OSI(Open Systems Interconnection)モデルにおける各層(レイヤ)毎に種々の通信プロトコルに従って行われる。現在、主流の通信プロトコルは、OSIモデルのトランスポート層/ネットワーク層に相当する層においては、それぞれ、TCP/IP(Transport Control 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をプロセッサ101外へ逐次送出する。
演算部10は、四則演算などの各種オペレーションを行い、内部汎用レジスタ11はプログラムで使用する汎用のレジスタである。演算部10は、内部汎用レジスタ11、保持部70のレジスタ、及び保持部90のレジスタが使用できる。これらオペレーションの結果(キャリーフラグ等)は、内部状態として内部状態保持部に逐次保持される。
【0015】
実行プログラム保持部20は、実行する命令(例えば、マイクロコード等)で構成されたプログラムを保持している。
制御部40aは、プログラム起動部30aからの起動指示信号233によって、実行プログラム保持部20から命令の獲得を開始し、獲得した命令をデコードして処理を決定し、例えば、プログラムバンク値の切り替え、所定のレジスタに対する演算、データ転送の処理を実行するとともに、各部の内部状態に応じて次状態を決定する。これらの内部状態は、内部状態保持部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で総称することがある。)を直列接続し、現段のパケット処理プロセッサ101のパケット処理結果出力(パケット202、中間データ、内部状態234等)を前段のパケット処理プロセッサ101のデータ入力としている。
【0022】
ここで、パケット処理プロセッサシステムにおけるパケット処理プロセッサの「前段」および「後段」について図8に基づき、次のように定義しておく。すなわち、パケットデータ保持部(パケットレジスタ)70内を移動するパケット201に対して順に起動されて行く複数のパケット処理プロセッサ100の群において、あるパケット201に着目する時、現在このパケットの先頭について駆動されているパケット処理プロセッサ100を基準(現段)として、その後段のパケット処理プロセッサは時間軸上の過去に起動されたパケット処理プロセッサ100を指し、前段のパケット処理プロセッサは時間軸上の未来に駆動されるパケット処理プロセッサ100を指すものとする。
【0023】
このパケット処理プロセッサシステムは、例えば、所定のパケット処理が複雑であるため、プログラムの命令ステップ数が大きい場合、パケット処理を分割し、分割した処理の命令ステップを各パケット処理プロセッサ101に割り当てるパイプライン処理(pipelining)が可能である。
【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 version4)プロトコル以外にも、IPv6(Internet Protocol version6)プロトコルやMPLS(Multi-Protocol Label Switching)プロトコルといったプロトコルがある。
図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拡張ヘッダ(任意長、図16(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】
従って、複数のパケット処理プロセッサ101の間にまたがるプログラムの分岐命令を記述し実行することができないと言う問題がある。
従って本発明は、入力されたパケットに対して所定のパケット処理を行うパケット処理プロセッサ及びパケット処理プロセッサシステムにおいて、実行可能命令数を増やすこと、アクセス可能なパケット範囲を広げること、分岐処理を容易にすることにより、パケット処理のプログラミングを柔軟に記述することを課題とする。
【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)。
さらに、本発明は上記の発明において、該内部状態を許容命令数又は実行可能命令数とすることが可能である。(付記17、付記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を受信したことを契機として、バンク切替信号224=“バンク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”の“アドレスAdr4”以下のコマンドコードを獲得する(図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ヘッダ、又はUDPヘッダが続くかを判定し、判定したヘッダに対応したパケット処理プログラムをバンク切替で選択して獲得すればよい。
【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】
なお、最後段のパケット処理プロセッサ100_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は、命令獲得許可信号生成部311及びデコーダ312を備えており、タイミング信号222、前段からの起動指示信号230_1及び後段からの起動指示信号230_2、遅延クロック数232、及び命令データ226を入力し、後段への起動指示信号230_1、後段へのプログラムカウンタ値231_1、前段への起動指示信号230_2、前段へのプログラムカウンタ値231_2、及び命令獲得許可信号229を出力している。
【0103】
メモリ制御部32は、命令獲得許可信号229を入力し、バンク切替信号224及びプログラムカウンタ33を制御する信号を出力する。プログラムカウンタ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を命令実行部40に出力し、プログラムカウンタ33を1つインクリメントして次命令データ226を獲得する。
【0109】
また、制御部30は、獲得した命令データ226がバンク切替命令であれば命令で指定されたオペランド(バンク値)に従って、そのバンクから次の命令データを獲得する。このバンク値は、命令によって変更されるか新しいパケットが入力されるまで保持される。
【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へ起動指示信号230_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と同時に与えられるプログラムカウンタ値231_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)において、タイミング▲1▼は、遅延クロック数=“0”の場合を示し、タイミング▲2▼は、遅延クロック数=“3”の場合を示している。
なお、生成部311は、クロック220に同期して動作している。
タイミング▲1▼においては、生成部311は、受信パケット転送タイミング信号222の立上りから1クロック分だけ遅れて、命令獲得許可信号229を「アクティブ」にする。この結果、メモリアドレス225=“Adr0”が出力され、1クロック分だけ遅れて命令データ226=“マイクロコードMC0”が出力される。
【0124】
以下、同様に、メモリアドレス225=“Adr1”,…,“Adr4”が順次が出力され、1クロック分だけ遅れて、対応する命令データ226=“MC1”,…,“MC4”が出力される。
タイミング▲2▼においては、生成部311は、受信パケット転送タイミング信号222の立上りから1クロック分だけ遅れたクロック220の立上りから、さらに、レジスタ38に格納された“遅延クロック数”=“3”クロック分だけ遅れたクロック220の立上りに同期して命令獲得許可信号229を「アクティブ」にしている。
【0125】
この結果、メモリアドレス225=“Adr0”,“Adr1”,…が順次が出力され、1クロック分だけ遅れて、対応する命令データ226=“MC0”,“MC1”,…が出力される。
これにより、受信パケット転送タイミング信号222の後に所定の命令実行クロック分だけの期間、命令を実行しない区間を設けることが可能になる。
【0126】
なお、制御部30は、パケットの先頭が入力されてから、パケットデータ保持部70のデータ転送幅、転送クロック速度、及び受信パケット長から得られる所要転送クロック数を経過した場合には、次命令の獲得を終了し、受信パケット転送タイミング信号222(すなわち、次パケットの入力)又は起動指示信号230_1又は起動指示信号230_2を待つ。
【0127】
これにより、処理中のパケットが1つのプロセッサ100のパケットデータ保持部70に存在しないにも関わらず、無駄なパケット処理を行うと言う誤動作を回避できる。
図10(1)は、同一パケット処理プロセッサ100内で繰り返し処理を行うアルゴリズム例を示している。このアルゴリズム例は、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(Decimal)”である。従って、制御部30は、「次ヘッダフィールド」の値=“6”又は“17”である場合、次に上位のTCP又は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(Decimal)”を比較し、その結果を内部状態(フラグ)に設定する。
ステップ S2:レジスタ更新命令が、「遅延クロック数」でレジスタ38を更新し、レジスタp0〜p9内のパケット201のデータを「遅延クロック数」分だけ先送りし、ステップS4でアクセスするレジスタp9にIPv6ヘッダの「次ヘッダフィールド」が来るように調整する。ここで用いる「遅延クロック数」はIPv6基本ヘッダのサイズから固定的に求まる値=“16”である。
【0138】
ステップ S3:ステップS1又はステップS4の演算結果のフラグの状態によって分岐する。フラグが一致を示している場合、ステップS7へ進み。そうでない場合、次ステップS4に進む。
ステップ S4:演算命令が、レジスタp9内の拡張ヘッダの「次ヘッダフィールド」の値とTCPを示す“6(Decimal)”とを比較し、その結果をフラグに設定する。
【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 中間データ
図中、同一符号は同一又は相当部分を示す。

Claims (5)

  1. パケットをその先頭から順次受信するパケットレジスタと、
    該パケットの処理手順を記述したプログラムを保持する実行プログラム保持部と、
    与えられたパケットの長さ及び該プログラムに基づいて実行するプログラムの命令数を決定し、該プログラムの実行を制御するプログラム実行制御部と、
    を備えたことを特徴とするパケット処理プロセッサ。
  2. パケットをその先頭から順次受信するパケットレジスタと、
    該パケットの処理手順を記述したプログラムを保持する実行プログラム保持部と、
    与えられたパケットの長さ及び該プログラムに基づいて実行する命令数を決定し、該プログラムの実行を制御するプログラム実行制御部と、
    内部状態を保持する内部状態保持部と、
    を備えたパケット処理プロセッサを少なくとも2つ縦続接続し、現段のパケット処理プロセッサの該内部状態及び出力パケットを前段のパケット処理プロセッサに与えることを特徴としたパケット処理プロセッサシステム。
  3. 現在、パケットの先頭について駆動しているパケット処理プロセッサを指称する現段のパケット処理プロセッサと、時間軸上の未来に駆動するパケット処理プロセッサを指称する前段のパケット処理プロセッサ又は時間軸上の過去に起動されたパケット処理プロセッサを指称する後段のパケット処理プロセッサと、を有するパケット処理プロセッサシステムにおいて、
    該パケット処理プロセッサは、パケットをその先頭から順次受信するパケットレジスタと、該パケットの処理手順を記述したプログラムを保持する実行プログラム保持部と、該プログラムの実行を制御するプログラム実行制御部と、を備え
    現段のパケット処理プロセッサの出力パケットが、該前段のパケット処理プロセッサに与えられるように、該パケット処理プロセッサを少なくとも2つ縦続続し、
    現段のパケット処理プロセッサのプログラム実行制御部が、前段のパケット処理プロセッサ又は該後段のケット処理プロセッサのプログラム実行制御部に対して、命令獲得タイミング及び命令獲得位置を指示することを特徴としたパケット処理プロセッサシステム。
  4. 請求項3において、
    プログラム実行制御部が、与えられたパケットの長さ及び該プログラムに基づいて実行するプログラムの命令数を決定することを特徴としたパケット処理プロセッサシステム。
  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 JP2003092591A (ja) 2003-03-28
JP4342128B2 true 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
US20040008701A1 (en) * 2002-07-11 2004-01-15 Giacomini Peter J. Hierarchical finite-state machines
US20040008673A1 (en) * 2002-07-11 2004-01-15 Ygal Arbel Overhead processing in telecommunications nodes
US7349435B2 (en) 2002-07-11 2008-03-25 Bay Microsystems, Inc. Multiport overhead cell processor for telecommunications nodes
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 鸿富锦精密工业(深圳)有限公司 主设备对从设备的自动定址系统
US11616850B1 (en) 2019-08-23 2023-03-28 Fitbit, Inc. Connection management 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
EP0622922B1 (en) * 1993-04-29 2000-11-29 International Business Machines Corporation Method and device of multicasting data in a communications system
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
US20030053481A1 (en) 2003-03-20
CN1406037A (zh) 2003-03-26
JP2003092591A (ja) 2003-03-28
CN1199423C (zh) 2005-04-27

Similar Documents

Publication Publication Date Title
US6654823B2 (en) Packet-data processing apparatus
US7283528B1 (en) On the fly header checksum processing using dedicated logic
US9912590B2 (en) In-line packet processing
US7916632B1 (en) Systems and methods for handling packet fragmentation
US7239635B2 (en) Method and apparatus for implementing alterations on multiple concurrent frames
JP2001251349A (ja) パケットプロセッサ
KR100647949B1 (ko) 네트워크 패킷 전달 방법 및 패킷 캡슐화 - 캡슐 해제 방법과 컴퓨터 판독 가능한 매체 및 프로세서
US8015392B2 (en) Updating instructions to free core in multi-core processor with core sequence table indicating linking of thread sequences for processing queued packets
JP4203979B2 (ja) パケット処理装置
US7680116B1 (en) Optimized buffer loading for packet header processing
US7936758B2 (en) Logical separation and accessing of descriptor memories
US20040037302A1 (en) Queuing and de-queuing of data with a status cache
JP4342128B2 (ja) パケット処理プロセッサ及びパケット処理プロセッサシステム
US7239630B1 (en) Dedicated processing resources for packet header generation
US7185153B2 (en) Packet assembly
US7158520B1 (en) Mailbox registers for synchronizing header processing execution
US7210008B2 (en) Memory controller for padding and stripping data in response to read and write commands
JP3742250B2 (ja) パケットデータ処理装置及びそれを用いたパケット中継装置
US20040246956A1 (en) Parallel packet receiving, routing and forwarding
US7180893B1 (en) Parallel layer 2 and layer 3 processing components in a network router
JP2002247095A (ja) パケットデータ処理装置
Van Renterghem et al. A scalable network ASIP enabling flow awareness in Ethernet access
EP1523829A2 (en) Efficient packet processing pipeline device and method
Van Renterghem et al. Development of an ASIP enabling flows in ethernet access using a retargetable compilation flow
JP2006115068A (ja) パケット処理装置

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