説明

非同期動作検索回路

【課題】低消費電力でかつ高性能に検索できる。
【解決手段】本実施形態に係る非同期検索回路は、パケットの通過を許可するか否かを判定する検索種別に対応した複数のルール情報のうち第1ルール情報と、受信したパケットに関する情報とを比較する比較部であり、比較部は複数かつ比較部ごとに受信したパケットが異なり、比較部ごとに、複数の比較部で共通する第1ルール情報を受信した場合、比較部に比較処理をさせるように制御し、第1ルール情報とパケットに関する情報との比較が完了した場合又はパケットを受信しなかった場合に処理が完了したことを示す第2信号を生成する比較回路制御部と、複数の比較部からの全ての第2信号を受信した場合、第1ルール情報と異なる第2ルール情報を読み出し、第2ルール情報を複数の比較部に送信する読出し部とを具備し、比較回路制御部は、前記複数のルール情報を全て受信するまで順次比較処理させて第2信号を生成する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、例えばIP(Internet Protocol)網で使用されるルータ等のように、パケットフィルタリング機能を用いたパケットの転送処理に用いる非同期動作検索回路に関する。
【背景技術】
【0002】
近年、インターネットに代表されるIP網の利用拡大に伴い、企業および家庭内にLAN(Local Area Network)を構築し、このLANをインターネット等を介して外部のネットワークに接続させ、パケット転送を行うことが多い。しかし、LANに収容された端末を外部のネットワークに接続すると、外部のネットワークからの不正アクセスにより、個人情報等の機密情報の漏えいまたは改竄が発生するおそれがあるため、LAN内部のセキュリティの確保が重要な課題となる。
そこで従来では、LANと外部ネットワークとの間でパケットを中継転送するルータなどのパケット転送処理装置に、パケットフィルタリング機能を持たせるようにしている。パケットフィルタリング機能は、受信されたパケットを予め設定されているルール情報と比較することにより、上記パケットの通過を許可するか否かを判定する。ルール情報は、パケット転送に使用される通信パラメータにより定義され、例えば、送信元アドレス、宛先アドレス、プロトコル、送信元ポート番号及び宛先ポート番号などがある。パケットフィルタリング処理の性能は、ルール情報の数の増加に伴って低下するため、ルール情報と受信パケットとの比較処理回路を並列化し、性能向上を狙う回路構成が存在する(例えば、非特許文献1参照)。
【0003】
ところが、ルールの読み出し処理や比較処理回路は同期して動作する必要があり、通常はクロック信号に同期して動作する。このクロックは、動作タイミングをそろえるために回路に供給され、データ処理に対して直接関与しない。それにも関わらず、クロック信号は、LSIチップ全体に供給されるため、大きく電力を消費する。例えば、受信パケットが入力されておらず、処理としてはアイドル状態にも関わらず、クロックがLSI全体に供給されるために電力が大きく消費されてしまう。
【0004】
そこで、電力消費を削減する観点から、クロック信号を用いずに、処理段ごとに送信信号(send信号)と応答信号(ack信号)とのハンドシェイクにより処理を進める非同期回路の適用が考えられる。非同期回路は、クロック信号が不要であり、さらにデータ入力されない場合は、制御回路間のハンドシェイクも発生しないので、電力消費を大きく削減することができる。
さらに、LSI製造技術の微細化により、リーク電流に起因する静的消費電力の増加が問題となっているが、非同期回路は、制御部のハンドシェイクにより処理を行っている処理段において有効なデータが存在しているか否かを知ることが容易である。従って、有効なデータが存在しない場合、処理段の電源を遮断するいわゆるパワーゲーティングを容易に実現することができる。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】西田享邦,川合健治,小池恵一,大山勝一,“1Gbit/sホームルータ用LSIの開発”,信学技報,ICD2007−58,pp.123−128,Jul.2007
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、非同期回路の場合、受信パケット情報とルール情報との比較処理の完了時間が比較回路ごとに異なる。そのため、複数の比較回路にルール情報を同時に送信すると、まだ比較処理が終了していない比較回路では、処理が間に合わず誤動作することがある。加えて、パケットフィルタリング処理では、1つの受信パケット情報と複数のルール情報との比較を行う必要があるが、受信パケット情報の受け入れ制御を行う制御部において、すべてのルール情報の比較が終了したことを検知できない。よって、すべてのルール情報との比較が終了する前に検索結果を出力して、次の受信パケット情報の受信を開始してしまい、正しく検索ができない可能性がある。
【0007】
この発明は上記事情に着目してなされたもので、その目的とするところは、低消費電力でかつ高性能に検索することができる非同期動作検索回路を提供することにある。
【課題を解決するための手段】
【0008】
上記目的を達成するためにこの発明の一つの観点は、パケットの通過を許可するか否かを判定する検索種別に対応した複数のルール情報のうちの第1ルール情報と、受信したパケットに関する情報とを比較する比較部を具備し、前記比較部は複数あり、比較部ごとに受信したパケットが異なり、比較部ごとに、複数の比較部で共通する前記第1ルール情報を受信した場合、前記比較部に比較処理をさせるように制御し、該第1ルール情報とパケットに関する情報との比較が完了した場合または該パケットを受信しなかった場合にも処理が完了したことを示す第2信号を生成する比較回路制御部と、前記複数の比較部からの全ての第2信号を受信した場合、前記第1ルール情報とは異なる第2ルール情報を読み出し、該第2ルール情報を前記複数の比較部に送信する読出し部と、をさらに具備し、前記比較回路制御部は、前記複数のルール情報を全て受信するまで前記比較部に順次前記比較処理を行わせ、前記第2信号を生成することを特徴とする。
【発明の効果】
【0009】
すなわちこの発明によれば、低消費電力でかつ高性能に検索することができる。
【図面の簡単な説明】
【0010】
【図1】本実施形態に係る非同期動作検索回路を含むパケット処理回路を示すブロック図。
【図2】本実施形態に係る検索部を示すブロック図。
【図3】本実施形態に係る比較回路を示すブロック図。
【図4】比較回路の動作の一例を示すタイミングチャート。
【図5】本実施形態に係る比較部を示すブロック図。
【図6】本実施形態に係るルール読み出し部を示すブロック図。
【図7】ルール読出し部の状態遷移の一例を示す図。
【図8】一般的なC素子を用いた非同期回路のタイミングチャート。
【発明を実施するための形態】
【0011】
以下、図面を参照しながら本発明の実施形態に係る非同期動作検索回路について詳細に説明する。なお、以下の実施形態では、同一の番号を付した部分については同様の動作を行うものとして、重ねての説明を省略する。
本実施形態に係る非同期検索回路を含むパケット処理回路100について図1を参照して説明する。
パケット処理回路100は、ネットワークインターフェース101,108、パーサ102、フレームコントローラ103、バッファメモリ104、非同期検索回路105、QoS(Quality of Service)部106およびフレーム生成部107を含む。
【0012】
ネットワークインターフェース101,108は、WAN(Wide Area Network)またはLANとのインターフェースである。ネットワークインターフェース101は、WANまたはLANからパケットデータを受信する。ネットワークインターフェース108は、後述するフレーム生成部107からパケットデータを受信して、WANまたはLANに送信する。
パーサ102は、ネットワークインターフェース101からパケットデータを受け取り、受信パケット情報を抽出する。受信パケット情報は、IPアドレスまたはポート番号といった、後述の非同期検索回路105における比較処理で必要とされるパケットに関する情報である。
フレームコントローラ103は、パーサ102からパケットデータを受け取り、バッファメモリ104に格納するように制御する。
【0013】
バッファメモリ104は、フレームコントローラ103からパケットデータを受け取り、パケットデータを格納する。
非同期検索回路105は、パーサ102から受信パケット情報を受け取り、受信パケット情報と様々なルール情報とを比較する。ルール情報は、ルール番号、優先度値および比較情報を含む。ルール番号は、例えば後述するルール蓄積部207に蓄積されたルール情報のアドレスのような、ルール情報を識別するIDである。優先度値は、受信パケット情報とルールとが一致する場合に、どれほど優先して適用されるかを示す。ここでは、優先度が高いほど値が小さいとする。比較情報は、受信パケット情報と比較するための情報であって、それぞれの検索種別に対応してパケットの通過を許可するか否かを判定する情報である。例えば、経路検索であれば送信元アドレス、宛先アドレスなどの情報である。非同期検索回路105は、パケットデータの廃棄/通過、出力インターフェースの決定、通信品質クラス分けといった受信したパケットデータの取り扱いを決定する。なお、ルール情報は、非同期検索回路105内部に予め格納されていてもよいし、外部のルール情報蓄積部(図示せず)から比較処理のたびにルール情報を抽出して比較してもよい。非同期検索回路105の詳細については、図3を参照して後述する。
【0014】
QoS部106は、非同期検索回路105からルール情報と比較された受信パケット情報を受け取る。取り扱いが廃棄の場合、フレームコントローラ103にパケットデータを廃棄するように廃棄要求を送り、バッファメモリ104において当該パケットが使用していたバッファ領域を解放する。取り扱いが通過の場合、決定された通信品質クラスに従い、キューイングされ、指定されたパケット送信タイミングでフレーム生成部107に送信要求を送る。
【0015】
フレーム生成部107は、QoS部106から送信要求と、ルール情報と比較された受信パケット情報とを受け取り、パケットデータの読み出しをフレームコントローラ103に要求する。フレーム生成部107は、フレームコントローラ103を介してバッファメモリ104から当該パケットデータを受け取るとともに、非同期検索回路105においてルール情報と比較された受信パケット情報に基づき、MACアドレスの書き換えや、IPアドレスの書き換え等を行い、非同期検索回路105において決定されたインターフェースにパケットを送る。
【0016】
次に、本実施形態に係る非同期検索回路105について図2のブロック図を参照して説明する。
本実施形態に係る非同期検索回路105は、受信パケット情報振分け部201、比較回路202、第1ルール読出し回路203−1、第2ルール読出し回路203−2、第3ルール読出し回路203−3、結果出力部204、第1検索結果蓄積部205−1、第2検索結果蓄積部205−2および第3検索結果蓄積部205−3を含む。さらに、第1ルール読出し回路203−1は、第1ルール読出し部206−1および第1ルール蓄積部207−1を含む。同様に、第2ルール読出し回路203−2は、第2ルール読出し部206−2および第1ルール蓄積部207−2を含み、第3ルール読出し回路203−3は、第2ルール読出し部206−3および第1ルール蓄積部207−3を含む。
【0017】
以下便宜上、第1ルール読出し回路203−1および4個の比較回路202を第1ステージと呼び、第2ルール読出し回路203−2および4個の比較回路202を第2ステージと呼び、第3ルール読出し回路203−3および4個の比較回路202を第3ステージと呼ぶ。本実施形態では、各ステージにおいて比較回路202を4個並列させ、第1ステージから第3ステージまでの3段階の並列処理を行う例を示すが、これに限らず、1つのステージで並列させる比較回路の数およびステージ数は、いくつでもよい。このように比較回路を並列させることで、比較回路ごとに読出し回路を接続させずに、各ステージで1つの読出し回路が存在すればよく、回路規模を縮小させることができる。さらに各比較回路に、それぞれ別の受信パケット情報が入力され処理されるので、並列処理によりパフォーマンスを向上させることができる。
本実施形態に係る3つのステージの処理は、例えば、第1ステージにおいて論理インターフェースとNAT(Network Address Translation)検索を行い、第2ステージにおいて経路検索を行い、第3ステージにおいてパケット検索を行うことを想定する。しかし、これに限らず、各ステージにおいてどのような検索を行ってもよい。
【0018】
受信パケット情報振分け部201は、パーサ102から受信した受信パケット情報を、比較処理が実行されていない、すなわち、受信パケット情報ack信号を送信している第1ステージの比較回路に、受信パケット情報と受信パケット情報send信号とを送信する。受信パケット情報ack信号は、受信パケット情報と全てのルール情報との比較が終了したか否かを示す信号である。受信パケット情報send信号は、受信パケット情報を送信したか否かを示す信号である。なお、受信パケット情報send信号と受信パケット情報ack信号とは1ビットの信号とするが、何ビットの信号を用いてもよい。
【0019】
第1ステージの比較回路202は、受信パケット情報振分け部201から受信パケット情報send信号と受信パケット情報とを受け取り、ルール読出し回路203−1からルール情報とルール情報send信号とを受け取る。ルール情報send信号は、ルール情報を送信したか否かを示す信号である。比較回路202は、受信パケット情報とルール情報との比較を行う。また、比較回路202は、ルール蓄積部207に蓄積されるルール情報と受信パケット情報とを比較し、第1ルール読出し回路203−1にルール情報ack信号を送る。ルール情報ack信号は、受信パケット情報と1つのルール情報との比較処理が完了したか否かを示す信号である。
ルール蓄積部207−1に蓄積されるすべてのルール情報について、受信パケット情報とルール情報とが一致したルール番号の中で最も優先度が高いルール番号(優先ルール番号)を決定する。全てのルールと比較処理が完了した場合は、受信パケット情報振分け部201に受信パケット情報ack信号を送信する。なお、ルール情報send信号とルール情報ack信号とは1ビットの信号とするが、何ビットの信号を用いてもよい。
【0020】
第2ステージの比較回路202−2は、第2ステージにおいて比較処理が完了している場合は、第1ステージの比較回路202−1へ受信パケット情報ack信号を送り、第2ルール読出し回路203−2へルール情報ack信号を送る。その後、第2ステージの比較回路202−2は、第1ステージの比較回路202−1から受信パケット情報とパケット情報send信号と優先ルール番号とを受け取り、ルール読出し回路203−2からルール情報とルール情報send信号とを受け取る。第2ステージの比較回路202−2も第1ステージの比較回路202−1と同様に、第2ステージのルール情報と受信パケット情報とを比較し、受信パケット情報と第2ステージの全てのルール情報との比較が終了後、検索結果となる優先ルール番号を生成する。その後、前段の第1ステージの比較回路202−1に受信パケット情報ack信号を送る。
第3ステージの比較回路202−3は、第2ステージの比較回路202−2と同様の動作を行うため、ここでの説明を省略する。
【0021】
結果出力部204は、第3ステージの比較回路202−3から、第1ステージから第3ステージまでの検索結果となる優先ルール番号および受信パケット情報を受け取る。結果出力部204は、外部(ここでは、図1のQoS部106)に、第1ステージから第3ステージの優先ルール番号に対応する検索結果を出力するために、第1検索結果蓄積部205−1から第3検索結果蓄積部205−3にあらかじめ設定されている検索結果を優先ルール番号を用いて読み出し、外部に出力する。
第1ルール読出し回路203−1のルール蓄積部207−1は、検索の種別に応じた複数のルール情報を予め蓄積する。
【0022】
第1ルール読出し回路203−1のルール読出し部206−1は、第1ステージに属する全ての比較回路202から、比較が終了したことを示すルール情報ack信号(第2信号ともいう)を受けとった場合に、ルール蓄積部207−1からルール情報を読み出し、各比較回路202へルール情報send信号とルール情報とを送る。
ルール情報およびルール情報send信号は、同一ステージの各比較回路202へブロードキャストされるため、まだ比較処理が終了していない比較回路202へルール情報を送ることにより誤動作する可能性がある。よって、全ての比較回路202からのルール情報ack信号を受けてからルール情報を送ることで誤動作をなくすことができる。
なお、比較回路202が受信パケット情報を受けておらず、ルール情報との比較が不要である場合でも、ルール情報ack信号を出力しないことによるルール読出し部203の読み出し処理のデッドロックを回避する必要があるため、比較回路202は、受信パケット情報を受信していない場合でも、受信パケット情報を受信して比較処理をしているときと同じように、ルール情報send信号に応じてルール情報ack信号を送信する。これにより、読み出し処理のデッドロックを避けることができる。
【0023】
なお、第2ルール読出し部206−2および第3ルール読出し部206−3、第2ルール蓄積部207−2および第3ルール蓄積部207−3については、ルール蓄積部207に格納されるルール情報が違うこと以外は第1ルール読出し回路203−1と同様の動作を行うため、詳細な説明は省略する。
【0024】
次に、比較回路202について図3のブロック図を参照して説明する。
比較回路202は、比較回路制御部301、カウンタ302、比較部303、第1レジスタ304、第2レジスタ305、第3レジスタ306、第4レジスタ307、第1遅延素子308、第2遅延素子309、第1C素子310、第2C素子311およびORゲート312を含む。また、比較部303以外の部分を比較回路制御部と呼んでもよい。
【0025】
第1遅延素子308は、受信パケット情報send信号を受け取って、回路動作が不安定にならない程度に小さい遅延させ、比較回路制御部301からの出力(out0)と合わせてORゲート312に同時に入力されるようにする。
第2遅延素子309は、比較回路制御部301、カウンタ302、比較部303の中で最も処理遅延の大きい遅延量に合わせ、処理後の値の確定を保証する。
【0026】
第1C素子310は、受信した受信パケット情報と検索結果の優先ルール番号とを後段のステージに送るため、データ保持を行うラッチ信号を生成し、第4レジスタ307へ送るとともに、受信パケット情報send信号と受信パケット情報ack信号とを制御する。なお、C素子は、レジスタと対に設置される一般的な制御回路であり、C素子の動作は図8に後述するような一般的な動作を行うためここでの説明は省略する。
第2C素子311は、比較回路制御部301、カウンタ302、比較部303の出力にそれぞれ接続されている、第1レジスタ304、第2レジスタ305および第3レジスタ306へのラッチ信号を生成するとともに、ルール情報send信号およびルール情報ack信号を制御する。これにより、比較回路制御部301、カウンタ302および比較部303は、第2C素子311で送受されるルール情報send信号およびルール情報ack信号に同期して動作する。
【0027】
第1レジスタ304は、後述する比較回路制御部301からステートマシンの状態を示す状態情報を受け取って保持し、再び比較回路制御部301へ出力するとともにカウンタ302および比較部303へ出力する。
第2レジスタ305は、カウンタ302からの出力であるカウンタ値を保持し、再びカウンタ302へ出力するとともに、比較回路制御部301へカウンタ値を出力する。
第3レジスタ306は、比較部303からの出力(優先ルール番号や優先度)を保持し、再び比較部303へ出力する。
第4レジスタ307は、第3レジスタ306から検索結果となる優先ルール番号を、受信パケット情報振分け部201または前ステージの比較回路202から受信パケット情報をそれぞれ受け取って値を保持し、優先ルール番号と受信パケット情報とを出力する。第2ステージ以降の比較部303である場合は、第4レジスタ307では、受信パケット情報と前ステージの検索結果である優先ルール番号とをあわせて受け取り、前ステージの優先ルール番号とともに、比較部303で処理を完了した優先ルール番号と受信パケット情報とを、後のステージへ出力する。
【0028】
比較回路制御部301は、レジスタ304と合わせてステートマシンを形成し、ルール情報send信号およびルール情報ack信号に同期して動作する。このステートマシンは、図3の示すプログラムのように、状態「Idle」、「ST1」および「ST2」の3つの状態情報を生成する。比較回路制御部301は、動作が開始すると初期状態である状態「Idle」から状態「ST1」へと移行する。状態「ST1」では、ダウンカウントされるカウンタ302のカウンタ値を参照して、カウンタ値が0となったとき、状態「ST2」に遷移する。状態「ST2」では、処理が終了すると状態「Idle」となる。なお、図3に示すステートマシンの状態遷移のプログラムの記述は一例であり、これに限らずこのような動作を行うステートマシンであればよい。
【0029】
カウンタ302は、レジスタ305と合わせてカウンタ動作を行い、比較回路制御部301から状態情報を受け取り、比較回路制御部301(実際はレジスタ304の出力)が状態「Idle」の場合、レジスタ305の初期値を保持するように動作する。ここでは、カウンタ値の初期値は、ルール蓄積部207に蓄えられているルール情報の数とするが任意の値でもよい。比較回路制御部301(レジスタ304の出力)が状態「ST1」の場合、ダウンカウントする。レジスタ305の値が「0」となると比較回路制御部301の状態が「ST2」に遷移し、状態「ST2」の場合、状態「Idle」と同様に初期値を設定する。
比較部303は、ルール読出し部206からルール情報を、受信パケット情報振分け部201または前ステージの比較回路202から受信パケット情報を、比較回路制御部301から状態情報を、およびレジスタ306の出力をそれぞれ受け取る。比較部303は、ルール情報と受信パケット情報とを比較し、優先ルール番号と優先度を出力する。具体的な動作については、図5を参照して後述する。
【0030】
次に、比較回路202の動作の具体例に関するタイミングチャートについて図4を参照して説明する。なお、図4は、各信号の出力が時系列で示され、受信パケット情報send信号を受信したときのタイミングチャートを示す。また、図4に示すそれぞれの信号は、図3の同一符号の信号に対応している。
ステップS401では、受信パケット情報send信号が入力されたとき、すなわち受信パケット情報send信号が「0」となったときに動作を開始し、比較回路制御部301が状態「Idle」から状態「ST1」に遷移する。
ステップS402では、比較回路制御部301の状態が「ST1」に遷移したことにより、比較部303の比較部出力360がクリアされ、カウンタ302の初期値がセットされる。ここでは、カウンタ出力358が、「127」となる。
【0031】
ステップS403では、比較部303が、ルール情報ごとに、ルール情報と受信パケット情報とを比較する。このとき、第2C素子311では、ルール情報send信号が「0」となり、これに伴い、ルール情報ack信号が「0」となり、第2C素子311にルール情報send信号を送出したC素子がそのルール情報ack信号を受信し、ルール情報send信号を「1」にし、それが遅延素子で遅延された後、第2C素子311のルール情報send信号が「1」になったとき、ラッチ信号が生成され、これに伴いルール情報ack信号が「1」となったときラッチ信号が立ち下がる。またこの際、カウンタの値が1ずつダウンカウントされる。なお、本実施形態では、128個のルール情報があるので128回の比較が行われることになる。
ステップS404では、128回の比較が行われて、カウンタレジスタ出力359が「0」となった場合に、比較回路制御部301の状態が「ST1」から「ST2」に遷移する。
ステップS405では、比較回路制御部301の状態「ST2」では、out0信号が「0」となる。out0信号と受信パケット情報send信号とが入力されたORゲート312から、受信パケット情報send信号362が「0」となって第1C素子310に送られる。その後、第1C素子310において、受信パケット情報send信号354が「0」となる。
【0032】
ステップS406では、受信パケット情報send信号362の入力が「0」であり、受信パケット情報ack信号の入力(図示せず)が「1」である場合、第1C素子310は、出力である受信パケット情報ack信号363を「0」とし、前のステージに受信パケット情報send信号を受け取ったことを通知する。
ステップS407では、前のステージからの受信パケット情報send信号354が「1」となり、その信号が第1C素子310で受信されると、第1C素子310は、ラッチ信号を生成し、受信パケット情報と優先ルール番号とが第4レジスタ307に保持され、比較部レジスタ出力361となる。ここでは、ルール番号「13」であるルール情報が優先ルール番号として選択される例を示す。
ステップS408では、一連のハンドシェイクを終了するため、第1C素子310は、受信パケット情報ack信号363を「1」にして、前のステージの比較回路に処理が終了したことを通知する。
比較部303は、以上のステップを新たな受信パケット情報を受け取るたびに繰り返し行う。
【0033】
次に、比較部303の詳細な動作について図5を参照して説明する。
比較部303は、パケット情報比較部501、優先度値比較部502、論理積部503、第1選択部504および第2選択部505を含む。
パケット情報比較部501は、受信パケット情報振分け部201または前のステージの比較回路202から受信パケット情報を、ルール読出し部206からルール情報をそれぞれ受け取り、受信パケット情報とルール情報中の比較情報とを比較して一致するかどうかを判定する。パケット情報比較部501は、受信パケット情報が一致する場合には、「1」を出力し、受信パケット情報が一致しない場合には、「0」を出力する。
優先度値比較部502は、ルール読出し回路203からルール情報中の優先度値を、優先度レジスタからの出力をそれぞれ受け取り、優先度レジスタ値と優先度値とを比較する。優先度レジスタ値が優先度値よりも大きい(優先度値の方が優先度レジスタ値よりも優先度が高い)場合は、「1」を出力し、優先度レジスタ値が優先度値以下である場合は、「0」を出力する。
【0034】
論理積503は、パケット情報比較部501からの出力と優先度値比較部502からの出力とを受け取り、これらを論理積して1ビットの更新信号を生成する。比較回路制御部301の状態「ST1」の場合、受信パケット情報とルール情報とが一致し、かつ優先度値が優先度レジスタ値より優先(優先値が小さい)である場合、すわなち、パケット情報比較部501および優先度値比較部502の値が共に「1」である場合、論理積部503は、値が「1」である更新信号を生成する。パケット情報比較部501および優先度値比較部502の出力がどちらか少なくとも「0」である場合は、論理積部503は、値が「0」である更新番号が生成される。
第1選択部504は、比較回路制御部301の状態が「Idle」の場合、ルール番号初期値を設定する。更新信号が「0」である場合は、第1選択部504において「1」が選択され、番号レジスタ値はそのまま保持される。更新信号が「1」である場合は、第1選択部504において「2」が選択され、番号レジスタ値が受け取った新たなルール番号で書き換えられる。
【0035】
第2選択部505は、比較回路制御部301の状態が「Idle」の場合、優先度初期値を設定する。更新信号が「0」である場合は、第2選択部505において「1」が選択され、優先度レジスタ値はそのまま保持される。更新信号が「1」である場合は、第2選択部505において「2」が選択され、優先度レジスタ値が受け取った新たな優先度値で書き換えられる。
以上の処理を全てのルール情報について比較し、全てのルール情報について完了した場合、受信パケット情報がルール情報に一致し、かつ最も優先度の高いルール番号を有する優先ルール番号を得ることができる。比較回路制御部301の状態が「ST2」の場合、次のステージに比較回路202の検索結果となるルール番号を保持し続ける。
なお、優先度レジスタおよび番号レジスタは、値を保持できる記憶素子であればよく、本実施形態では、第3レジスタ306のことである。
【0036】
次に、ルール読出し部206およびルール蓄積部207の一例について図6を参照して説明する。
ルール読出し部206は、有限ステートマシン601(以下、FSM(Finite State Machine))、ANDゲート602、第1C素子(C1)603、第2C素子(C2−0、C2−1、C2−N)604、マージ回路605、および遅延素子(D2)606を含む。なお、Nは2以上の自然数である。
【0037】
ルール蓄積部207は、インクリメント素子651、アドレスレジスタ652、およびSRAM653を含む。
ANDゲート602は、受信パケット情報send信号を論理積する。
FSM601は、各比較回路202から「0」である受信パケット情報send信号を受け取ることにより動作を開始する。本回路は、複数の比較回路202のうち1つでも受信パケット情報を受け取ったとき、つまり「0」である受信パケット情報send信号を1つでも受け取ったときに動作を開始する必要があるため、各比較回路202からの受信パケット情報send信号は、ANDゲート602により論理積されてFSM601に入力される。これにより、FSM601は、いずれか1つでも受信パケット情報を受け取った比較回路202があることを認識することができる。
【0038】
第1C素子603は、第2C素子604(C2−0、C2−1、C2−N)のルール情報ack信号がマージされた信号を受け取る。そして、第1C素子603は、第2C素子604(C2−0からC2−Nまで)のマージされたルール情報ack信号が1のとき、すなわち、前回第2C素子が制御するレジスタに送出したルール情報が各比較回路202へ送出完了し、比較処理が完了し第2C素子が次のルール情報を受け入れ可能になった場合、key_ackを「1」にし、送信要求を受け入れられることをFSM601へ送る。「1」のkey_ackを受けたFSM601により「0」となり、FSMと第1C素子との間のハンドシェイクにより、key_reqが「1」、key_ackが「0」を受けた第1C素子603は、ルール蓄積部207のアドレスレジスタ652の値を更新または保持するためのラッチ信号をアドレスレジスタ652へ送る。
【0039】
第2C素子604(C2−0からC2−N)は、それぞれが接続される比較回路202からのルール情報ack信号が「1」の場合、すなわち各々の比較回路202において先に送ったルール情報と受信パケット情報との比較が完了している場合に、遅延素子D2により遅延させられたC1のsend信号が「0」すなわち、各比較回路へのルール情報送信要求があった場合、ルール情報ack信号を「0」にして、send信号を受け取ったことをマージ回路605を介してC1に送る。また、ハンドシェイクにより「1」となったルール情報send信号を受信した各第2C素子604は、ルール蓄積部207から読み出したルール情報をレジスタに蓄積または保存するためのラッチ信号を生成する。これと同時に、各比較回路202に対して新たなルール情報で比較を開始させるために、ルール情報send信号を各比較回路202に送る。
【0040】
マージ回路605は、例えば、MullerのC素子であり、第2C素子604のルール情報ack信号をマージする。MullerのC素子を用いる理由は、複数入力されるルール情報ack信号の中で、最後に立ち下がった(1から0への遷移)信号に合わせて出力を立ち下げ、最後に立ち上がった(0から1への遷移)信号に合わせて出力を立ち上げるためである。つまり、第2C素子のC2−0からC2−Nが受け取ったルール情報ack信号うち、どのack出力が遅くなるのかわからないのでMullerのC素子を用いることが望ましい。マージされたルール情報ack信号は、C2−0からC2−Nのack出力の中で最も遅いルール情報ack信号に合わせることができるので、全ての比較回路が1つのルール情報と受信パケット情報との比較を完了したことを保証して次のルール情報を各比較回路に送ることができ、誤動作をなくすことができる。
遅延素子(D2)606は、ルール蓄積部207のメモリアクセス遅延にあわせた遅延量を加えて第2C素子604へ送る。
インクリメント素子651は、アドレスレジスタ652の値を1つインクリメントする。
アドレスレジスタ652は、インクリメント素子651により更新の度にアドレスがインクリメントされるので、本動作を繰り返すことにより、SRAM653に記憶されるルール情報を順次変更することができる。
SRAM653は、複数のルール情報が記憶されるメモリであり、インクリメントされたアドレスレジスタ651の値に応じた次のルール番号となるアドレス値のルール情報を出力する。
【0041】
次に、ルール読出し部206におけるFSM601の状態について図7を参照して説明する。
図7はFSM601の状態遷移図を示し、「Idle」、「req_L」および「req_H」の3つの状態が存在する。
状態「Idle」において、ルール情報send信号およびルール情報ack信号ともに1である場合で、かつ、いずれかの比較回路202からの検索要求がある場合(すなわち、受信パケット情報send信号が「0」(search_reqが「0」)となった場合)、状態「req_L」に遷移する(ステップS701)。FSM601の状態が状態「Req_L」に遷移した場合、ルール情報を送るためにルール情報send信号を「0」にする(key_reqを0にする)。次段は読み出しアドレスを生成する回路となっており、前回の読み出しアドレス生成が終了している場合、すぐにack信号を返す(key_ackが0)。FSM601におけるkey_reqおよびkey_ackがともに0となるため、状態が「req_H」に遷移する(ステップS702)。状態「req_H」では、ルール情報send信号を1にし、ルール情報ack信号が1になるタイミングを監視し、さらに、search_reqの状態により、状態「Idle」に遷移するか(ステップS703)、状態「req_L」に遷移し(ステップS704)、次のルール番号(読み出しアドレス)となるルール情報を送るため、ルール情報send信号を0にする(key_reqを0にする)。「Req_L」、「req_H」の繰り返しにより次々と読み出しアドレスを生成する。但し、受信パケットsend信号が「1」(search_reqが「1」)であり、どの比較回路202においても比較処理を行わないような場合には、状態「Idle」に戻り、次の検索要求が来るまでルール情報の送出を停止する。これによって、無駄な電力消費を押さえることができる。
【0042】
ここで、一般的な非同期回路の一例である、一線式束データ方式の非同期回路ブロックと各信号のタイミングチャートを図8に示す。図8上側は、一般的な非同期回路のブロック図の一例を示し、図8下側は、図8上側のブロック図におけるタイミングチャートを示す。
非同期回路は、同期回路のように各レジスタに供給されるクロック信号に代わり、レジスタと対に置かれるC素子間のハンドシェイクによってレジスタのラッチ信号を生成して、処理を行う。レジスタに供給されるラッチ信号がすぐ近くに配置される制御回路から供給される点と、データが入力されない場合は制御回路間のハンドシェイクが発生せずラッチ信号も生成されない点から、非同期回路のほうが、クロック信号を用いた同期回路の電力消費よりも電力消費が少なく、大幅に削減することができる。
【0043】
以下、基本的な束データ方式の非同期回路とC素子の動作タイミングとについて説明する。
i−1ステージからの送信要求を受け取るとiステージでの処理が開始される。はじめに、send i outが0となり(ステップS1)、delay時間経過後send i inが0となる(ステップS2)。そのときのack i+1 inが1なので、送信要求を受け取ったことを伝えるべく、ack i outを0とする(ステップS3)。このとき、ack i inも0となる(ステップS4)。それと同時に、send i+1 outを0にする(ステップS5)。ack i in信号は0となっているので、send i outが1となる(ステップS806)。続いて、send i inは、delay時間遅延して1になる(ステップS7)。このタイミングでラッチまたはレジスタにおいてデータの更新または保持を行うために、clk iが立ち上がる(ステップS8)。その後ack i outは、1に変わり(ステップS9)、clk iをたち下げる。このとき、ack i inも1となる(ステップS10)。以上によりデータパスの信号伝播(処理)が制御される。
【0044】
続いて、send i outを0にして次のデータ処理を開始しようとする場合(ステップS13)、delay時間遅れて、send i inが1になる(ステップS14)。このとき、send i+1 outは1であり(ステップS12)、次のステージからのack i+1 inは0であるため(ステップS11)、次段で先ほどのデータ伝播(処理)が完了していないことがわかる。そのため、ack i+1 inが1になるまで、ack i outを0にするのを待つ。ack i+1 inが1になり(ステップS15)、その後ack i outが0となり(ステップS16)、データ処理が完了したことが通知されたときに、send i+1 outを0にして(ステップS17)、次段にデータを転送する。その後は同様の動作を行えばよい。
【0045】
以上に示した本実施形態に係る非同期動作検索回路によれば、クロック信号を必要とせずにハンドシェイクにより制御を行うことができるので、同期回路よりも大幅に低い消費電力で検索回路を動作させることができる。また、全ての比較回路からのack信号を受信してから次のルール情報を送ることで、誤動作することがなく正確な検索処理を行うことができる。さらに、ステージごとに全てのルール情報と比較完了してから検索結果を出力することにより、正確な検索処理を行うことができる。よって、処理性能が高く低消費電力で検索処理を行うことができる。
【0046】
要するにこの発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【0047】
100・・・パケット処理回路、101,108・・・ネットワークインターフェース、102・・・パーサ、103・・・フレームコントローラ、104・・・バッファメモリ、105・・・非同期検索回路、106・・・QoS部、107・・・フレーム生成部、108・・・ネットワークインターフェース、201・・・受信パケット振分け部、202−1,202−2,202−3・・・比較回路、203・・・ルール読出し回路、204・・・結果出力部、205・・・検索結果蓄積部、206・・・ルール読出し部、207・・・ルール蓄積部、301・・・比較回路制御部、302・・・カウンタ、303・・・比較部、304,305,306,307・・・レジスタ、308,309・・・遅延素子、310,311,603,604・・・C素子、312・・・ORゲート、501・・・パケット情報比較部、502・・・優先度値比較部、503・・・論理積部、504,505・・・選択部、601・・・有限ステートマシン(FSM)、602・・・ANDゲート、605・・・マージ回路、651・・・アドレスレジスタ、652・・・SRAM、653・・・インクリメント素子。

【特許請求の範囲】
【請求項1】
パケットの通過を許可するか否かを判定する検索種別に対応した複数のルール情報のうちの第1ルール情報と、受信したパケットに関する情報とを比較する比較部を具備し、前記比較部は複数あり、比較部ごとに受信したパケットが異なり、
比較部ごとに、複数の比較部で共通する前記第1ルール情報を受信した場合、前記比較部に比較処理をさせるように制御し、該第1ルール情報とパケットに関する情報との比較が完了した場合または該パケットを受信しなかった場合に処理が完了したことを示す第2信号を生成する比較回路制御部と、
前記複数の比較部からの全ての第2信号を受信した場合、前記第1ルール情報とは異なる第2ルール情報を読み出し、該第2ルール情報を前記複数の比較部に送信する読出し部と、をさらに具備し、
前記比較回路制御部は、前記複数のルール情報を全て受信するまで、前記比較部に順次前記比較処理を行わせ、前記第2信号を生成することを特徴とする非同期動作検索回路。
【請求項2】
前記比較回路制御部は、前記比較部において全てのルール情報と前記パケット情報との比較が完了したのちに、前記パケット情報と一致しかつ優先度が最も高い優先ルール番号を出力するように制御することを特徴とする請求項1に記載の非同期動作検索回路。
【請求項3】
前記読出し部は、少なくとも1つの前記比較部において該比較部に対応するパケットが受信されているときに、前記第2ルール情報を読み出すように制御することを特徴とする請求項1または請求項2に記載の非同期動作検索回路。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate