"パケットの通過を許可するか否かを判定する検索種別に対応した複数のルール情報のうちの第1ルール情報と、受信したパケットに関する情報とを比較する比較部を具備し、前記比較部は複数あり、比較部ごとに受信したパケットが異なり、比較部ごとに、複数の比較部で共通する前記第1ルール情報を受信した場合、前記比較部に比較処理をさせるように制御し、該第1ルール情報とパケットに関する情報との比較が完了した場合または該パケットを受信しなかった場合に処理が完了したことを示す第2信号を生成する比較回路制御部と、前記複数の比較部からの全ての第2信号を受信した場合、前記第1ルール情報とは異なる第2ルール情報を読み出し、該第2ルール情報を前記複数の比較部に送信する読出し部と、をさらに具備し、前記比較回路制御部は、前記複数のルール情報を全て受信するまで、前記比較部に順次前記比較処理を行わせ、前記第2信号を生成することを特徴とする非同期動作検索回路。前記比較回路制御部は、前記比較部において全てのルール情報と前記パケット情報との比較が完了したのちに、前記パケット情報と一致しかつ優先度が最も高い優先ルール番号を出力するように制御することを特徴とする請求項1に記載の非同期動作検索回路。前記読出し部は、少なくとも1つの前記比較部において該比較部に対応するパケットが受信されているときに、前記第2ルール情報を読み出すように制御することを特徴とする請求項1または請求項2に記載の非同期動作検索回路。しかしながら、非同期回路の場合、受信パケット情報とルール情報との比較処理の完了時間が比較回路ごとに異なる。そのため、複数の比較回路にルール情報を同時に送信すると、まだ比較処理が終了していない比較回路では、処理が間に合わず誤動作することがある。加えて、パケットフィルタリング処理では、1つの受信パケット情報と複数のルール情報との比較を行う必要があるが、受信パケット情報の受け入れ制御を行う制御部において、すべてのルール情報の比較が終了したことを検知できない。よって、すべてのルール情報との比較が終了する前に検索結果を出力して、次の受信パケット情報の受信を開始してしまい、正しく検索ができない可能性がある。この発明は上記事情に着目してなされたもので、その目的とするところは、低消費電力でかつ高性能に検索することができる非同期動作検索回路を提供することにある。上記目的を達成するためにこの発明の一つの観点は、パケットの通過を許可するか否かを判定する検索種別に対応した複数のルール情報のうちの第1ルール情報と、受信したパケットに関する情報とを比較する比較部を具備し、前記比較部は複数あり、比較部ごとに受信したパケットが異なり、比較部ごとに、複数の比較部で共通する前記第1ルール情報を受信した場合、前記比較部に比較処理をさせるように制御し、該第1ルール情報とパケットに関する情報との比較が完了した場合または該パケットを受信しなかった場合にも処理が完了したことを示す第2信号を生成する比較回路制御部と、前記複数の比較部からの全ての第2信号を受信した場合、前記第1ルール情報とは異なる第2ルール情報を読み出し、該第2ルール情報を前記複数の比較部に送信する読出し部と、をさらに具備し、前記比較回路制御部は、前記複数のルール情報を全て受信するまで前記比較部に順次前記比較処理を行わせ、前記第2信号を生成することを特徴とする。すなわちこの発明によれば、低消費電力でかつ高性能に検索することができる。以下、図面を参照しながら本発明の実施形態に係る非同期動作検索回路について詳細に説明する。なお、以下の実施形態では、同一の番号を付した部分については同様の動作を行うものとして、重ねての説明を省略する。本実施形態に係る非同期検索回路を含むパケット処理回路100について図1を参照して説明する。パケット処理回路100は、ネットワークインターフェース101,108、パーサ102、フレームコントローラ103、バッファメモリ104、非同期検索回路105、QoSQualityofService部106およびフレーム生成部107を含む。ネットワークインターフェース101,108は、WANWideAreaNetworkまたはLANとのインターフェースである。ネットワークインターフェース101は、WANまたはLANからパケットデータを受信する。ネットワークインターフェース108は、後述するフレーム生成部107からパケットデータを受信して、WANまたはLANに送信する。パーサ102は、ネットワークインターフェース101からパケットデータを受け取り、受信パケット情報を抽出する。受信パケット情報は、IPアドレスまたはポート番号といった、後述の非同期検索回路105における比較処理で必要とされるパケットに関する情報である。フレームコントローラ103は、パーサ102からパケットデータを受け取り、バッファメモリ104に格納するように制御する。バッファメモリ104は、フレームコントローラ103からパケットデータを受け取り、パケットデータを格納する。非同期検索回路105は、パーサ102から受信パケット情報を受け取り、受信パケット情報と様々なルール情報とを比較する。ルール情報は、ルール番号、優先度値および比較情報を含む。ルール番号は、例えば後述するルール蓄積部207に蓄積されたルール情報のアドレスのような、ルール情報を識別するIDである。優先度値は、受信パケット情報とルールとが一致する場合に、どれほど優先して適用されるかを示す。ここでは、優先度が高いほど値が小さいとする。比較情報は、受信パケット情報と比較するための情報であって、それぞれの検索種別に対応してパケットの通過を許可するか否かを判定する情報である。例えば、経路検索であれば送信元アドレス、宛先アドレスなどの情報である。非同期検索回路105は、パケットデータの廃棄/通過、出力インターフェースの決定、通信品質クラス分けといった受信したパケットデータの取り扱いを決定する。なお、ルール情報は、非同期検索回路105内部に予め格納されていてもよいし、外部のルール情報蓄積部図示せずから比較処理のたびにルール情報を抽出して比較してもよい。非同期検索回路105の詳細については、図3を参照して後述する。QoS部106は、非同期検索回路105からルール情報と比較された受信パケット情報を受け取る。取り扱いが廃棄の場合、フレームコントローラ103にパケットデータを廃棄するように廃棄要求を送り、バッファメモリ104において当該パケットが使用していたバッファ領域を解放する。取り扱いが通過の場合、決定された通信品質クラスに従い、キューイングされ、指定されたパケット送信タイミングでフレーム生成部107に送信要求を送る。フレーム生成部107は、QoS部106から送信要求と、ルール情報と比較された受信パケット情報とを受け取り、パケットデータの読み出しをフレームコントローラ103に要求する。フレーム生成部107は、フレームコントローラ103を介してバッファメモリ104から当該パケットデータを受け取るとともに、非同期検索回路105においてルール情報と比較された受信パケット情報に基づき、MACアドレスの書き換えや、IPアドレスの書き換え等を行い、非同期検索回路105において決定されたインターフェースにパケットを送る。次に、本実施形態に係る非同期検索回路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を含む。以下便宜上、第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ステージにおいて論理インターフェースとNATNetworkAddressTranslation検索を行い、第2ステージにおいて経路検索を行い、第3ステージにおいてパケット検索を行うことを想定する。しかし、これに限らず、各ステージにおいてどのような検索を行ってもよい。受信パケット情報振分け部201は、パーサ102から受信した受信パケット情報を、比較処理が実行されていない、すなわち、受信パケット情報ack信号を送信している第1ステージの比較回路に、受信パケット情報と受信パケット情報send信号とを送信する。受信パケット情報ack信号は、受信パケット情報と全てのルール情報との比較が終了したか否かを示す信号である。受信パケット情報send信号は、受信パケット情報を送信したか否かを示す信号である。なお、受信パケット情報send信号と受信パケット情報ack信号とは1ビットの信号とするが、何ビットの信号を用いてもよい。第1ステージの比較回路202は、受信パケット情報振分け部201から受信パケット情報send信号と受信パケット情報とを受け取り、ルール読出し回路203-1からルール情報とルール情報send信号とを受け取る。ルール情報send信号は、ルール情報を送信したか否かを示す信号である。比較回路202は、受信パケット情報とルール情報との比較を行う。また、比較回路202は、ルール蓄積部207に蓄積されるルール情報と受信パケット情報とを比較し、第1ルール読出し回路203-1にルール情報ack信号を送る。ルール情報ack信号は、受信パケット情報と1つのルール情報との比較処理が完了したか否かを示す信号である。ルール蓄積部207-1に蓄積されるすべてのルール情報について、受信パケット情報とルール情報とが一致したルール番号の中で最も優先度が高いルール番号優先ルール番号を決定する。全てのルールと比較処理が完了した場合は、受信パケット情報振分け部201に受信パケット情報ack信号を送信する。なお、ルール情報send信号とルール情報ack信号とは1ビットの信号とするが、何ビットの信号を用いてもよい。第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と同様の動作を行うため、ここでの説明を省略する。結果出力部204は、第3ステージの比較回路202-3から、第1ステージから第3ステージまでの検索結果となる優先ルール番号および受信パケット情報を受け取る。結果出力部204は、外部ここでは、図1のQoS部106に、第1ステージから第3ステージの優先ルール番号に対応する検索結果を出力するために、第1検索結果蓄積部205-1から第3検索結果蓄積部205-3にあらかじめ設定されている検索結果を優先ルール番号を用いて読み出し、外部に出力する。第1ルール読出し回路203-1のルール蓄積部207-1は、検索の種別に応じた複数のルール情報を予め蓄積する。第1ルール読出し回路203-1のルール読出し部206-1は、第1ステージに属する全ての比較回路202から、比較が終了したことを示すルール情報ack信号第2信号ともいうを受けとった場合に、ルール蓄積部207-1からルール情報を読み出し、各比較回路202へルール情報send信号とルール情報とを送る。ルール情報およびルール情報send信号は、同一ステージの各比較回路202へブロードキャストされるため、まだ比較処理が終了していない比較回路202へルール情報を送ることにより誤動作する可能性がある。よって、全ての比較回路202からのルール情報ack信号を受けてからルール情報を送ることで誤動作をなくすことができる。なお、比較回路202が受信パケット情報を受けておらず、ルール情報との比較が不要である場合でも、ルール情報ack信号を出力しないことによるルール読出し部203の読み出し処理のデッドロックを回避する必要があるため、比較回路202は、受信パケット情報を受信していない場合でも、受信パケット情報を受信して比較処理をしているときと同じように、ルール情報send信号に応じてルール情報ack信号を送信する。これにより、読み出し処理のデッドロックを避けることができる。なお、第2ルール読出し部206-2および第3ルール読出し部206-3、第2ルール蓄積部207-2および第3ルール蓄積部207-3については、ルール蓄積部207に格納されるルール情報が違うこと以外は第1ルール読出し回路203-1と同様の動作を行うため、詳細な説明は省略する。次に、比較回路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以外の部分を比較回路制御部と呼んでもよい。第1遅延素子308は、受信パケット情報send信号を受け取って、回路動作が不安定にならない程度に小さい遅延させ、比較回路制御部301からの出力out0と合わせてORゲート312に同時に入力されるようにする。第2遅延素子309は、比較回路制御部301、カウンタ302、比較部303の中で最も処理遅延の大きい遅延量に合わせ、処理後の値の確定を保証する。第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信号に同期して動作する。第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で処理を完了した優先ルール番号と受信パケット情報とを、後のステージへ出力する。比較回路制御部301は、レジスタ304と合わせてステートマシンを形成し、ルール情報send信号およびルール情報ack信号に同期して動作する。このステートマシンは、図3の示すプログラムのように、状態Idle、ST1およびST2の3つの状態情報を生成する。比較回路制御部301は、動作が開始すると初期状態である状態Idleから状態ST1へと移行する。状態ST1では、ダウンカウントされるカウンタ302のカウンタ値を参照して、カウンタ値が0となったとき、状態ST2に遷移する。状態ST2では、処理が終了すると状態Idleとなる。なお、図3に示すステートマシンの状態遷移のプログラムの記述は一例であり、これに限らずこのような動作を行うステートマシンであればよい。カウンタ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を参照して後述する。次に、比較回路202の動作の具体例に関するタイミングチャートについて図4を参照して説明する。なお、図4は、各信号の出力が時系列で示され、受信パケット情報send信号を受信したときのタイミングチャートを示す。また、図4に示すそれぞれの信号は、図3の同一符号の信号に対応している。ステップS401では、受信パケット情報send信号が入力されたとき、すなわち受信パケット情報send信号が0となったときに動作を開始し、比較回路制御部301が状態Idleから状態ST1に遷移する。ステップS402では、比較回路制御部301の状態がST1に遷移したことにより、比較部303の比較部出力360がクリアされ、カウンタ302の初期値がセットされる。ここでは、カウンタ出力358が、127となる。ステップ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となる。ステップ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は、以上のステップを新たな受信パケット情報を受け取るたびに繰り返し行う。次に、比較部303の詳細な動作について図5を参照して説明する。比較部303は、パケット情報比較部501、優先度値比較部502、論理積部503、第1選択部504および第2選択部505を含む。パケット情報比較部501は、受信パケット情報振分け部201または前のステージの比較回路202から受信パケット情報を、ルール読出し部206からルール情報をそれぞれ受け取り、受信パケット情報とルール情報中の比較情報とを比較して一致するかどうかを判定する。パケット情報比較部501は、受信パケット情報が一致する場合には、1を出力し、受信パケット情報が一致しない場合には、0を出力する。優先度値比較部502は、ルール読出し回路203からルール情報中の優先度値を、優先度レジスタからの出力をそれぞれ受け取り、優先度レジスタ値と優先度値とを比較する。優先度レジスタ値が優先度値よりも大きい優先度値の方が優先度レジスタ値よりも優先度が高い場合は、1を出力し、優先度レジスタ値が優先度値以下である場合は、0を出力する。論理積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が選択され、番号レジスタ値が受け取った新たなルール番号で書き換えられる。第2選択部505は、比較回路制御部301の状態がIdleの場合、優先度初期値を設定する。更新信号が0である場合は、第2選択部505において1が選択され、優先度レジスタ値はそのまま保持される。更新信号が1である場合は、第2選択部505において2が選択され、優先度レジスタ値が受け取った新たな優先度値で書き換えられる。以上の処理を全てのルール情報について比較し、全てのルール情報について完了した場合、受信パケット情報がルール情報に一致し、かつ最も優先度の高いルール番号を有する優先ルール番号を得ることができる。比較回路制御部301の状態がST2の場合、次のステージに比較回路202の検索結果となるルール番号を保持し続ける。なお、優先度レジスタおよび番号レジスタは、値を保持できる記憶素子であればよく、本実施形態では、第3レジスタ306のことである。次に、ルール読出し部206およびルール蓄積部207の一例について図6を参照して説明する。ルール読出し部206は、有限ステートマシン601以下、FSMFiniteStateMachine、ANDゲート602、第1C素子C1603、第2C素子C2-0、C2-1、C2-N604、マージ回路605、および遅延素子D2606を含む。なお、Nは2以上の自然数である。ルール蓄積部207は、インクリメント素子651、アドレスレジスタ652、およびSRAM653を含む。ANDゲート602は、受信パケット情報send信号を論理積する。FSM601は、各比較回路202から0である受信パケット情報send信号を受け取ることにより動作を開始する。本回路は、複数の比較回路202のうち1つでも受信パケット情報を受け取ったとき、つまり0である受信パケット情報send信号を1つでも受け取ったときに動作を開始する必要があるため、各比較回路202からの受信パケット情報send信号は、ANDゲート602により論理積されてFSM601に入力される。これにより、FSM601は、いずれか1つでも受信パケット情報を受け取った比較回路202があることを認識することができる。第1C素子603は、第2C素子604C2-0、C2-1、C2-Nのルール情報ack信号がマージされた信号を受け取る。そして、第1C素子603は、第2C素子604C2-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へ送る。第2C素子604C2-0からC2-Nは、それぞれが接続される比較回路202からのルール情報ack信号が1の場合、すなわち各々の比較回路202において先に送ったルール情報と受信パケット情報との比較が完了している場合に、遅延素子D2により遅延させられたC1のsend信号が0すなわち、各比較回路へのルール情報送信要求があった場合、ルール情報ack信号を0にして、send信号を受け取ったことをマージ回路605を介してC1に送る。また、ハンドシェイクにより1となったルール情報send信号を受信した各第2C素子604は、ルール蓄積部207から読み出したルール情報をレジスタに蓄積または保存するためのラッチ信号を生成する。これと同時に、各比較回路202に対して新たなルール情報で比較を開始させるために、ルール情報send信号を各比較回路202に送る。マージ回路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つのルール情報と受信パケット情報との比較を完了したことを保証して次のルール情報を各比較回路に送ることができ、誤動作をなくすことができる。遅延素子D2606は、ルール蓄積部207のメモリアクセス遅延にあわせた遅延量を加えて第2C素子604へ送る。インクリメント素子651は、アドレスレジスタ652の値を1つインクリメントする。アドレスレジスタ652は、インクリメント素子651により更新の度にアドレスがインクリメントされるので、本動作を繰り返すことにより、SRAM653に記憶されるルール情報を順次変更することができる。SRAM653は、複数のルール情報が記憶されるメモリであり、インクリメントされたアドレスレジスタ651の値に応じた次のルール番号となるアドレス値のルール情報を出力する。次に、ルール読出し部206におけるFSM601の状態について図7を参照して説明する。図7はFSM601の状態遷移図を示し、Idle、req_Lおよびreq_Hの3つの状態が存在する。状態Idleにおいて、ルール情報send信号およびルール情報ack信号ともに1である場合で、かつ、いずれかの比較回路202からの検索要求がある場合すなわち、受信パケット情報send信号が0search_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信号が1search_reqが1であり、どの比較回路202においても比較処理を行わないような場合には、状態Idleに戻り、次の検索要求が来るまでルール情報の送出を停止する。これによって、無駄な電力消費を押さえることができる。ここで、一般的な非同期回路の一例である、一線式束データ方式の非同期回路ブロックと各信号のタイミングチャートを図8に示す。図8上側は、一般的な非同期回路のブロック図の一例を示し、図8下側は、図8上側のブロック図におけるタイミングチャートを示す。非同期回路は、同期回路のように各レジスタに供給されるクロック信号に代わり、レジスタと対に置かれるC素子間のハンドシェイクによってレジスタのラッチ信号を生成して、処理を行う。レジスタに供給されるラッチ信号がすぐ近くに配置される制御回路から供給される点と、データが入力されない場合は制御回路間のハンドシェイクが発生せずラッチ信号も生成されない点から、非同期回路のほうが、クロック信号を用いた同期回路の電力消費よりも電力消費が少なく、大幅に削減することができる。以下、基本的な束データ方式の非同期回路とC素子の動作タイミングとについて説明する。i-1ステージからの送信要求を受け取るとiステージでの処理が開始される。はじめに、sendioutが0となりステップS1、delay時間経過後sendiinが0となるステップS2。そのときのacki1inが1なので、送信要求を受け取ったことを伝えるべく、ackioutを0とするステップS3。このとき、ackiinも0となるステップS4。それと同時に、sendi1outを0にするステップS5。ackiin信号は0となっているので、sendioutが1となるステップS806。続いて、sendiinは、delay時間遅延して1になるステップS7。このタイミングでラッチまたはレジスタにおいてデータの更新または保持を行うために、clkiが立ち上がるステップS8。その後ackioutは、1に変わりステップS9、clkiをたち下げる。このとき、ackiinも1となるステップS10。以上によりデータパスの信号伝播処理が制御される。続いて、sendioutを0にして次のデータ処理を開始しようとする場合ステップS13、delay時間遅れて、sendiinが1になるステップS14。このとき、sendi1outは1でありステップS12、次のステージからのacki1inは0であるためステップS11、次段で先ほどのデータ伝播処理が完了していないことがわかる。そのため、acki1inが1になるまで、ackioutを0にするのを待つ。acki1inが1になりステップS15、その後ackioutが0となりステップS16、データ処理が完了したことが通知されたときに、sendi1outを0にしてステップS17、次段にデータを転送する。その後は同様の動作を行えばよい。以上に示した本実施形態に係る非同期動作検索回路によれば、クロック信号を必要とせずにハンドシェイクにより制御を行うことができるので、同期回路よりも大幅に低い消費電力で検索回路を動作させることができる。また、全ての比較回路からのack信号を受信してから次のルール情報を送ることで、誤動作することがなく正確な検索処理を行うことができる。さらに、ステージごとに全てのルール情報と比較完了してから検索結果を出力することにより、正確な検索処理を行うことができる。よって、処理性能が高く低消費電力で検索処理を行うことができる。要するにこの発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態に亘る構成要素を適宜組み合せてもよい。"