(57)【要約】本発明のビットストリングの照合方法においては，検索対象のビットストリングを複数の部分対象ビットストリングに分けて，登録されたビットパターンと多段階で照合する．多段階の一つの照合段階である現段階では，部分対象ビットストリングを取り得る全ての値と照合し，前記照合の結果と，部分登録ビットパターンが登録されたパターンテーブルとにより，少なくとも部分対象ビットストリングに一致する部分登録ビットパターンの有無を示す判定結果を得て，前記判定結果により，現段階の次の段階のパターンテーブルのアドレスを含む照合継続情報を出力する．
2004032435.tif 000002
【特許請求の範囲】
【請求項１】
検索対象のビットストリングを複数ビットの部分対象ビットストリングに分けて、予め登録された複数の登録ビットパターンと多段階で照合する過程を有するビットストリングの照合方法であって、
前記多段階に含まれる１つの照合段階である現段階は、
前記検索対象のビットストリングから、前記現段階の前記部分対象ビットストリングを選択し、前記現段階の部分対象ビットストリングが取り得る全ての値と照合する全照合工程と、
前記複数の登録ビットパターンの各々の部分登録ビットパターンを示すためのパターンテーブルであって、前記現段階に対して先行する段階から得られる照合継続情報により決まる、前記現段階のパターンテーブルを、前記全照合工程と前後して、または並列に、メモリよりロードするパターンロード工程と、
前記全照合工程の結果と前記現段階のパターンテーブルとにより、前記現段階の部分対象ビットストリングに一致する前記現段階の前記部分登録ビットパターンの有無を少なくとも示す照合結果を得る判定工程と、
前記照合結果により、前記現段階のパターンテーブルに対応するアドレステーブルから、前記現段階の次の段階の前記パターンテーブルのアドレスを含む前記照合継続情報を出力する出力工程とを有する照合方法。
【請求項２】
前記パターンテーブルは、前記部分登録ビットパターンの有効無効を示すビットフラグからなるマスクデータである、請求項１の照合方法。
【請求項３】
前記出力工程では、前記一致する現段階の部分登録ビットパターンに続く前記次の段階の前記パターンテーブルのアドレスを含む前記照合継続情報を出力する、請求項１の照合方法。
【請求項４】
前記判定工程では、前記部分対象ビットストリングに値が最も近い最大または最小の前記現段階の部分登録ビットパターンの有無を含む前記照合結果が得られ、
前記出力工程では、前記最大または最小の現段階の部分登録ビットパターンに続く前記次の段階の範囲検索のパターンテーブルのアドレスを含む前記照合継続情報を出力する、請求項１の照合方法。
【請求項５】
前記一致する現段階の部分登録ビットパターンがあり、さらに、前記最大または最小の現段階の部分登録ビットパターンがあるときに、前記範囲検索のパターンテーブルのアドレスを候補アドレスとして記憶する候補アドレス記憶工程を有し、
前記一致する現段階の部分登録ビットパターンおよび前記最大または最小の現段階の部分登録ビットパターンがないときには、前記出力工程において、前記候補アドレスを含む前記照合継続情報を出力する、請求項４の照合方法。
【請求項６】
前記範囲検索のパターンテーブルのアドレスを含む前記照合継続情報が与えられたときは、前記全照合工程および判定工程をバイパスする工程を有し、
前記出力工程では、前記範囲検索のパターンテーブルに対応する前記アドレステーブルから、そのパターンテーブルに示された最大または最小の部分登録ビットパターンに続く次の段階のパターンテーブルのアドレスを含む前記照合継続情報を出力する、請求項４の照合方法。
【請求項７】
前記パターンテーブルは、そのパターンテーブルに示された最大また最小の部分登録ビットパターンに対応して決まる最大または最小の前記登録ビットパターンを示すバイパスデータを有し、
前記範囲検索のパターンテープルのアドレスを含む前記照合継続情報が与えられたときは、前記全照合工程、前記パターンロード工程および前記判定工程をバイパスする工程を有し、
前記出力工程では、前記範囲検索のパターンテーブルに対応する前記バイパスデータを含む最終照合情報を出力して前記検索対象のビットストリングの照合を終了する、請求項４の照合方法。
【請求項８】
前記パターンテーブルおよび前記アドレステーブルを更新することにより、前記登録ビットパターンを追加または削除する更新工程を有する、請求項１の照合方法。
【請求項９】
前記全照合工程と前記パターンロード工程とを並列に行う、請求項１の照合方法。
【請求項１０】
複数の前記照合段階がパイプライン方式で実行される、請求項１の照合方法。
【請求項１１】
それぞれの前記照合段階の前記パターンテーブルおよび前記アドレステーブルを含む照合テーブルを更新することにより、前記登録ビットパターンを追加または削除する更新工程を有し、前記照合段階と並列にパイプライン方式で実行される、請求項１０の照合方法。
【請求項１２】
前記照合テーブルは、前記パターンテーブルに示された最大また最小の部分登録ビットパターンに対応して決まる最大または最小の前記登録ビットパターンを示すバイパスデータを有し、
前記更新工程においては、上位の前記照合段階の前記照合テーブルから下位の前記照合段階の前記照合テーブルを更新し、その際、前記バイパスデータの更新が発生する可能性のある前記照合段階の前記照合テーブルの更新は、前記下位の前記照合段階の前記照合テーブルの更新を待ってから行う、請求項１１の照合方法。
【請求項１３】
前記照合テーブルは、前記パターンテーブルに示された最大また最小の部分登録ビットパターンに対応して決まる最大または最小の前記登録ビットパターンを示すバイパスデータを有し、
前記更新工程においては、上位の前記照合段階の前記照合テーブルから下位の前記照合段階の前記照合テーブルを更新する工程と、前記下位の照合テーブルの更新により前記上位の照合テーブルの前記バイパスデータの更新が発生した場合は、双方向リンクにより前記上位の照合テーブルの更新を行う工程とを有する、請求項１１の照合方法。
【請求項１４】
複数の前記照合段階の間では、前記照合継続情報を含むデータがパケット化されて伝達される、請求項１の照合方法。
【請求項１５】
請求項４に記載の照合段階を複数備えた分類過程を有し、前記登録ビットパターンは複数の分類結果を含む範囲を示している分類方法。
【請求項１６】
複数の前記分類過程と、
前記複数の分類過程により得られる複数の前記範囲に含まれる前記複数の分類結果の論理積を演算し、最終の分類結果を得る論理演算過程とを有する、請求項１５の分類方法。
【請求項１７】
前記論理演算過程では、前記複数の分類結果の論理積を行列演算し、前記最終の分類結果を得る、請求項１６の分類方法。
【請求項１８】
請求項１５に記載の分類方法により、ＩＰアドレス、ポート番号およびプロトコルの少なくともいずれかを含むパケットを管理するためのビットストリングを前記検索対象のビットストリングとし、前記検索対象のビットストリングが属する前記範囲を照合する工程と、
前記検索対象のビットストリングが属する前記範囲の前記分類結果に基づき前記検索対象のビットストリングを備えた前記パケットを管理する工程とを有するデータ管理方法。
【請求項１９】
請求項１に記載の照合方法により、前記検索対象のビットストリームを照合する工程と、
その照合する工程の照合結果に基づき前記検索対象のビットストリングを備えたデータを管理する工程とを有するデータ管理方法。
【請求項２０】
請求項１に記載の照合方法により、状態遷移の評価元となるデータを前記検索対象のビットストリングとし、複数の状態遷移条件を示すデータを前記複数の登録ビットパターンとして照合する工程と、
前記照合する工程の照合結果によりデータ処理回路の状態を遷移する工程とを有するデータ処理装置の制御方法。
【請求項２１】
検索対象のビットストリングを複数ビットの部分対象ビットストリングに分けて、予め登録された複数の登録ビットパターンと多段階で照合するために、前記多段階に含まれる少なくとも１つの段階を実行する照合装置であって、
前記検索対象のビットストリングから、前記多段階の１つの現段階の前記部分対象ビットストリングを選択し、その部分対象ビットストリングが取り得る全ての値と照合する全照合手段と、
前記複数の登録ビットパターンの部分登録ビットパターンを示すためのパターンテーブルであって、前記現段階に対して先行する段階から得られる照合継続情報により決まる、前記現段階のパターンテーブルをメモリよりロードするパターンロード手段と、
前記全照合手段の結果と前記現段階のパターンテーブルとにより、前記現段階の部分対象ビットストリングに一致する前記現段階の部分登録ビットパターンの有無を少なくとも示す照合結果を出力する判定手段と、
前記照合結果により、前記現段階のパターンテーブルに対応するアドレステーブルから、前記現段階の次の段階の前記パターンテーブルのアドレスを含む前記照合継続情報を出力する出力手段とを有する照合装置。
【請求項２２】
前記パターンテーブルは、前記部分登録ビットパターンの有効無効を示すビットフラグからなるマスクデータである、請求項２１の照合装置。
【請求項２３】
前記出力手段は、前記一致する現段階の部分登録ビットパターンに続く前記次の段階の前記パターンテーブルのアドレスを含む前記照合継続情報を出力する、請求項２１の照合装置。
【請求項２４】
前記判定手段は、前記部分対象ビットストリングに値が最も近い最大または最小の前記現段階の部分登録ビットパターンの有無を含む前記照合結果を出力し、
前記出力手段は、前記最大または最小の現段階の部分登録ビットパターンに続く前記次の段階の範囲検索のパターンテーブルのアドレスを含む前記照合継続情報を出力する、請求項２１の照合装置。
【請求項２５】
前記出力手段は、さらに、前記一致する部分登録ビットパターンがあり、前記最大または最小の現段階の部分登録ビットパターンがあるときに、前記範囲検索のパターンテーブルのアドレスを候補アドレスとして出力し、さらに、
前記一致する現段階の部分登録ビットパターンおよび前記最大または最小の現段階の部分登録ビットパターンがないときに、前記候補アドレスを含む前記照合継続情報を出力する、請求項２４の照合装置。
【請求項２６】
前記出力手段は、前記範囲検索のパターンテーブルのアドレスを含む前記照合継続情報が与えられたときは、前記範囲検索のパターンテーブルに対応する前記アドレステーブルから、そのパターンテーブルに示された最大または最小の部分登録ビットパターンに続く次の段階のパターンテーブルのアドレスを含む前記照合継続情報を出力する、請求項２４の照合装置。
【請求項２７】
前記パターンテーブルは、そのパターンテーブルに示された最大また最小の部分登録ビットパターンに対応して決まる最大または最小の前記登録ビットパターンを示すバイパスデータを有し、
前記出力手段は、前記範囲検索のパターンテーブルのアドレスを含む前記照合継続情報が与えられたときは、前記範囲検索のパターンテーブルに対応する前記バイパスデータを最終照合情報として出力する、請求項２４の照合装置。
【請求項２８】
前記パターンテーブルおよび前記アドレステーブルを更新することにより、前記登録ビットパターンを追加または削除する更新手段を有する、請求項２１の照合装置。
【請求項２９】
前記全照合手段と、前記パターンロード手段とは並列に動作する、請求項２１の照合装置。
【請求項３０】
請求項２１に記載の照合装置を複数有する分類装置。
【請求項３１】
前記複数の照合装置はパイプラインで接続されている、請求項３０の分類装置。
【請求項３２】
前記複数の照合装置の間では、前記照合継続情報を含むデータがパケット化されて伝達される、請求項３０の分類装置。
【請求項３３】
前記メモリに対してデータを入出力するキャッシュ装置を有する、請求項３０の分類装置。
【請求項３４】
前記メモリには、前記パターンテーブルおよび前記アドレステーブルを含む照合テーブルが記憶されており、前記キャッシュ装置のキャッシュラインのサイズが前記照合テーブルのサイズと同一である、請求項３３の分類装置。
【請求項３５】
最初の照合テーブルを指定する検索種別情報を受信する手段を有し、
前記キャッシュ装置は、それぞれの検索種別および前記照合段階の単位で前記キャッシュラインを割り当て、前記検索種別および照合段階の単位で前記キャッシュラインを管理する管理手段を備えている、請求項３４の分類装置。
【請求項３６】
最初の照合テーブルを指定する検索種別情報を受信する手段を有し、
前記メモリには、それぞれの検索種別および前記照合段階の単位で割り当てられた個別アドレス領域に前記照合テーブルが記憶されており、
前記キャッシュ装置の前記キャッシュラインは、前記個別アドレス領域単位で割り当てられている、請求項３４の分類装置。
【請求項３７】
前記キャッシュ装置は、照合テーブルがオンキャッシュでなければ前記照合装置にその旨を通知し、その照合装置の処理を中断して待ち行列に戻す、請求項３３の分類装置。
【請求項３８】
当該分類装置の分類結果を記憶した履歴キャッシュ装置であって、前記検索対象ビットストリングを前記照合装置に供給する前に、当該分類装置の分類結果と前記検索対象のビットストリングとを比較する履歴キャッシュ装置を有する、請求項３０の分類装置。
【請求項３９】
請求項３０に記載の分類装置を有し、前記登録ビットパターンは複数の分類結果を含む範囲を示しており、前記検索対象のビットストリングが属する分類結果を出力する検索装置。
【請求項４０】
複数の前記分類装置と、
前記複数の分類装置により得られる複数の前記範囲に含まれる複数の分類結果の論理積を演算し、最終の分類結果を得る論理演算装置を有する、請求項３９の検索装置。
【請求項４１】
前記論理演算装置は、前記複数の分類結果の論理積を行列演算し、最終の分類結果を得る、請求項４０の検索装置。
【請求項４２】
前記メモリに対してデータを入出力するキャッシュ装置を有する、請求項３９の検索装置。
【請求項４３】
当該検索装置の検索結果を記憶した履歴キャッシュ装置であって、前記検索対象ビットストリングを前記分類装置に供給する前に、当該検索装置の検索結果と前記検索対象のビットストリングとを比較する履歴キャッシュを有する、請求項３９の検索装置。
【請求項４４】
請求項４０に記載の検索装置を有し、
前記検索装置に、ＩＰアドレス、ポート番号およびプロトコルの少なくともいずれかを含むパケットを管理するためのビットストリングを前記検索対象のビットストリングとして供給する手段と、
前記検索装置から出力された分類結果に基づき前記検索対象のビットストリングを備えた前記パケットを管理する手段とを有するデータ管理装置。
【請求項４５】
請求項３０に記載の分類装置と、
前記分類装置の出力に基づき前記検索対象のビットストリングを備えたデータを管理する手段とを有するデータ管理装置。
【請求項４６】
請求項３０に記載の分類装置を有し、前記複数の登録ビットパターンは、複数の状態遷移条件を示すデータであり、
前記分類装置に対し、状態遷移の評価元となるデータを前記検索対象のビットストリングとして供給する検索対象供給手段と、
前記分類装置の出力により状態が遷移するデータ処理回路とを有するデータ処理装置。
【請求項４７】
前記メモリには、前記パターンテーブルおよび前記アドレステーブルを含む照合テーブルが記憶されており、
前記分類装置の出力または前記検索対象供給手段により、最初の前記照合装置に供給される前記照合テーブルが指定される、請求項４６のデータ処理装置。
【請求項４８】
前記メモリには、前記パターンテーブルおよび前記アドレステーブルを含む照合テーブルが記憶されており、
前記データ処理回路により前記メモリの照合テーブルが書き換えられる、請求項４７のデータ処理装置。
【請求項４９】
状態遷移の評価元となる現状態の検索対象のビットストリングを、予め登録された複数の状態遷移条件を示す登録ビットパターンと照合する照合装置と、
前記照合装置に対し、前記検索対象のビットストリングを供給する検索対象供給手段と、
前記照合装置の出力により状態が遷移するデータ処理回路とを有するデータ処理装置であって、
前記現状態の検索対象のビットストリングが取り得る全ての値と照合する全照合手段と、
前記複数の登録ビットパターンを示すためのパターンテーブルであって、先行する状態から得られる照合継続情報により決まる、現状態のパターンテーブルをメモリよりロードするパターンロード手段と、
前記全照合手段の結果と前記現状態のパターンテーブルとにより、前記現状態の検索対象ビットストリングに一致する前記現状態の登録ビットパターンの有無を少なくとも示す照合結果を出力する判定手段と、
前記照合結果により、前記現状態のパターンテーブルに対応するアドレステーブルから、前記現状態の次の状態の前記パターンテーブルのアドレスを含む前記照合継続情報を出力する出力手段とを備えている、データ処理装置。
【請求項５０】
前記メモリには、前記パターンテーブルおよび前記アドレステーブルを含む照合テーブルが記憶されており、
前記検索対象供給手段により、前記照合装置に供給される前記照合テーブルが指定される、請求項４９のデータ処理装置。
【請求項５１】
前記メモリには、前記パターンテーブルおよび前記アドレステーブルを含む照合テーブルが記憶されており、
前記データ処理回路により前記メモリの照合テーブルが書き換えられる、請求項４９のデータ処理装置。
【発明の詳細な説明】
【技術分野】  本発明は、ＩＰアドレスなどのビットストリングを検索あるいは照合に適した装置および方法に関するものである。
【背景技術】  インターネットなどのコンピュータネットワークを介してデータを送受信する際には種々のプロトコルが用いられる。その１つは、インターネットのネットワーク層におけるプロトコルであり、インターネットプロトコル（ＩＰ）と呼ばれている。このＩＰは、情報をパケット化して所定の目的地まで移動させるが、そのために、情報を格納したペイロードにＩＰヘッダをつけたパケットを、情報の送受信のために用いる。各々のパケットは、ＩＰヘッダの情報に基づいて、所定のルートに配送され、受信先では、ＩＰヘッダの情報に基づいてペイロードの情報が送信元の状態となるように組み立てられる。
ＩＰヘッダの情報は、ルータおよびファイアウォールなどのネットワークを管理する装置あるいはソフトウェア（プログラムあるいはプログラム製品）で参照され、ルーティング、パケットフィルタリング、ＳＰＤ（セキュリティ・ポリシーデータベース）、ポリシールーティング、ＱｏＳなどの様々な目的のために照合される。このように、ＩＰヘッダの情報は、パケットの送受信あるいは転送については常に参照され、利用される。
今後、モバイルＩＰが実現されると、ルーティングテーブルは動的に変動する可能性がある。また、現状のＩＰｖ４（バージョン４）では、受信先アドレス（ＳＩＰ）および送信元アドレス（ＤＩＰ）は３２ビットであるのに対し、ＩＰｖ６（バージョン６）では１２８ビットに拡張される。したがって、ＩＰアドレスの検索における処理速度をさらに向上させることが、インターネットなどのコンピュータネットワークを用いてデータ交換をする上で、今後、さらに重要な技術となる。
たとえば、特開平１１−８８４２７号公報には、ソートされた複数のエントリからなるルーティングテーブルに対して検索ＩＰアドレスを大小比較しながら一致するＩＰアドレスを検索する技術が開示されている。この方法によりルーティングあるいはその他の目的のために１２８ビットのＩＰアドレスを複数含むビットストリングを検索しようとすると膨大な時間が必要になり、少なくとも、今後の情報伝達経路に用いるには適していない。
ＩＰアドレスに限らず、検索対象となるビットストリング（ビットストリームあるいはビットパターン）の情報量は、今後、さらに増大する傾向にあり、光通信が本格化する場合は、Ｇ（ギガ）ビットクラスのビットストリングの検索機能が要求される。膨大なデータ量のビットストリングの検索方法は幾つか提案されている。
まず、ソフトウェア方式は、検索機能は十分だが、速度的には不十分である。ハードウェアを用いた方式では、ＣＡＭ（Ｃｏｎｔｅｎｔ−Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）方式がある。１個のＣＡＭを使った繰り返し検索により最長一致検索を行ったり、複数個のＣＡＭを並列に使っての最長一致検索を行うことは現実的である。しかしながら、パケットフィルタリングやステートフルインスペクションに要求される多次元範囲、たとえば、ソースＩＰ・デスティネーションＩＰ・ソースポート・デスティネーションポート・プロトコルを含む範囲の一致検索を実現するのは非常に困難である。
また、最長一致検索の対象としてＩＰルーティングを考えた場合、ＣＩＤＲ（Ｃｌａｓｓｌｅｓｓ  Ｉｎｔｅｒ−Ｄｏｍａｉｎ  Ｒｏｕｔｉｎｇ）形式での可変プレフィックス長への対応は、繰り返し型の繰り返し回数を増やすか、多数個ＣＡＭ並列型でおこなうことになるであろう。前者であればスループットやレイテンシ面での性能が不足することになる。後者であれば経路エントリの分布ばらつきにより、ＣＡＭエントリ利用率が悪くなるという問題点がある。
登録エントリ数の増加に対しては複数ＣＡＭチップのカスケード接続でしか対応できない。被検索キーのビット長の増加に対しては、チップ自体のスペック変更でしか対応できず、全エントリのＣＡＭメモリビット増が必要である。多チップ構成で対応しようとすると、ＣＡＭは多数のエントリが並列に照合されるため、複数のチップ間で連動した照合をおこなうには各エントリの照合状態をチップ間で継承しなければならない。したがって、ＣＡＭに求められる大量のエントリ数を考えると現実的ではない。
部分的にＣＡＭを利用する方法もある。たとえば、ＣＡＭにより検索対象のエントリを絞り込み、その後、パトリシアツリー等をソフトウェアにより検索するという方式がある。この方式では、ツリー検索にソフトウェアを用いるため、完全ソフトウェア方式と同様の問題がある。また、ツリー検索部をハードウェア化した場合でも、例えばツリー構造がパトリシアであれば、エントリの登録および／または削除に複雑なツリー再構成が伴い、上位アプリケーションソフトウェアに過度なテーブル管理コストを強いることになる。
マスキングが可能で、階層型の検索を可能としたターナリーＣＡＭ（ＴＣＡＭ）方式がある。この場合、ハードウェアそのものが提供する検索機能は、完全一致（ＣＡＭ）と最長一致である。ＴＣＡＭは原理的にはエントリのＤＣ（ドントケア）ビットをも一致と見なす完全一致であり、照合部からは複数の一致エントリが出力される。そのため、照合部の後段に、プレフィックス長あるいはエントリＮｏ等による何らかのプライオリティエンコーダがないと、「複数ヒットから最長一致」の絞り込みをおこなえない。
従って、ＴＣＡＭにおいてはエントリの登録および／または削除についての管理が煩雑となる。特に、エントリＮｏがプライオリティとなる方式のＴＣＡＭの場合、エントリの追加にともない、既存エントリの再配置を上位アプリケーションソフトウェア側が自発的に行わねばならない。この既存エントリの再配置はプレフィックス長をキーとしたソートであり、複数回のエントリ位置交換が要求される。プレフィックス長だけが問題なので通常のソートよりは低コストであるが、ソートそのものは排除できない。すなわち、ＴＣＡＭで範囲一致は実現できるが、それはエントリ管理をおこなう上位アプリケーションソフトウェアによるものである。したがって、範囲表現を複数の最長一致表現へと分割し、最長一致へ還元して実現することになる。そのため、範囲一致のルール管理（削除・登録）が煩雑となる。つまり、ＴＣＡＭにおける範囲一致は、静的なエントリからなる検索については実用性があったとしても、動的に変化するエントリからなる検索については、上位アプリケーションソフトウェアへの負荷がかなり高いといえる。あるいは、これら複雑なテーブル管理をおこなう専用のコプロセッサをＴＣＡＭ自体とは別途用意することになる。
以上のことから、範囲一致は無論、最長一致であっても、登録エントリがダイナミックに追加削除されていく性質のある検索にはＴＣＡＭは向かないといえる。登録エントリ数の増加に対しては、複数のＴＣＡＭチップのカスケード接続でしか対応できないことはＣＡＭと同様である。被検索キーのビット長の増加に対しても、チップ自体のスペック変更でしか対応できず、全エントリのＴＣＡＭメモリビットを増加する必要がある。多チップ構成で対応しようとすれば、ＴＣＡＭは多エントリが並列に照合されるため、複数チップ間で連動した照合をおこなうには各エントリの照合状態をチップ間で継承しなければならない。したがって、ＴＣＡＭに求められる大量エントリ数を考えると現実的ではない。
そこで、本発明の目的の１つは、範囲一致を始め、完全一致および最長一致といった検索機能を提供可能であり、パケットフィルタリングやステートフルインスペクションにおいても、上位アプリケーションソフトウェアの負担が軽いビットストリングの照合方法および照合装置を提供するである。エントリの追加・削除にともなうエントリ移動により発生する、上位アプリケーションによるテーブル管理のオーバヘッドを縮小または排除できるビットストリングの照合方法および照合装置を提供することも本発明の目的の１つである。
さらに、メモリとして、ＳＤＲＡＭ等の通常のＤＲＡＭ（あるいはＳＲＡＭ）を使用可能とし、十分な検索速度を提供しながら、ＣＡＭ系の専用メモリよりもはるかに廉価で大容量を実現できる照合方法および装置を提供することも本発明の目的の１つである。そのような照合装置は、収容可能なエントリ数はＳＤＲＡＭ容量にのみ規定されるため、スケーラブル性が高い。また、メモリ管理が柔軟に行えるため、複数種の検索を単一のハードウェアセットで柔軟に行えるものになる。
また、検索対象となる被検索ビットストリング（キー）のビット長の増加に対しても、ハードウェア自体のアルゴリズム的な変更は不要で、ユニットを追加したり、一連の処理を繰り返すことにより対応可能な照合方法および照合装置を提供することも本発明の目的の１つである。
【発明の開示】
本発明のビットストリングの照合方法においては、検索対象のビットストリング（被検索ビットストリング）を複数ビットの部分対象ビットストリング（部分被検索対象ビットストリング）に分けて、予め登録された複数の登録ビットパターンと多段階で照合するプロセスを有する方法を採用する。多段階に含まれる１つの照合段階である現段階は、検索対象のビットストリングから、現段階の部分対象ビットストリングを選択し、その現段階の部分対象ビットストリングが取り得る全ての値と照合する全照合工程と、複数の登録ビットパターンの部分登録ビットパターンを示すためのパターンテーブルであって、現段階に先行する段階から得られる照合継続情報により決まる現段階のパターンテーブルを、全照合工程と前後して、または並列に、メモリよりロードするパターンロード工程とを有する。この現段階のパターンテーブルは、現段階の部分対象ビットストリングに対して照合対象となる部分登録ビットパターンを示す。
現段階は、さらに、全照合工程の結果と現段階のパターンテーブルとにより、現段階の部分対象ビットストリングに一致する部分登録ビットパターンの有無を少なくとも示す照合結果を得る判定工程と、この照合結果により、現段階のパターンテーブルに対応するアドレステーブルから、現段階の次の段階のパターンテーブルのアドレスを含む照合継続情報を出力する出力工程とを有する。アドレステーブルには、現段階のパターンテーブルに示された部分登録ビットパターンのそれぞれに続く次の段階のパターンテーブルのアドレスが示されている。このため、アドレステーブルの中から、現段階において一致する部分登録ビットパターンに続く、次の段階で照合する部分登録ビットパターンを示す次の段階のパターンテーブルのアドレスを含む照合継続情報を出力することができる。
この照合方法を実現する照合装置として、本発明においては、検索対象のビットストリングを複数ビットの部分対象ビットストリングに分けて、予め登録された複数の登録ビットパターンと多段階で照合するための照合装置であって、多段階の少なくとも１つの照合する段階を実行する照合装置を提供する。この照合装置は、検索対象のビットストリングから、多段階の１つの現段階の部分対象ビットストリングを選択し、その部分対象ビットストリングが取り得る全ての値と照合する全照合手段と、先行する段階から得られる照合継続情報により決まる現段階のパターンテーブルをメモリよりロードするパターンロード手段と、全照合手段の結果と現段階のパターンテーブルとにより、部分対象ビットストリングに一致する部分登録ビットパターンの有無を少なくとも示す照合結果を出力する判定手段と、照合結果により、現段階のパターンテーブルに対応して記録されたアドレステーブルから、次の段階のパターンテーブルのアドレスを含む照合継続情報を出力する出力手段とを有する。
これらの照合方法および照合装置は、現段階で一致する部分登録ビットパターンに続く次の段階のパターンテーブルのアドレスを含む照合継続情報を出力することにより完全一致および最長一致の検索機能を提供する。さらに、判定工程および判定手段において、部分対象ビットストリングに値が最も近い最大または最小の部分登録ビットパターンの有無を含む照合結果が得られると、出力工程および出力手段では、一致する部分登録ビットパターンがないときに、アドレステーブルから、最大または最小の現段階の部分登録ビットパターンに続く次の段階のパターンテーブルのアドレスを含む照合継続情報を出力できる。これにより、検索機能として範囲一致を含めた照合方法および照合装置を提供できる。
ここで、部分対象ビットストリングに値が最も近い最大の部分登録ビットパターンとは、部分対象ビットストリングより値が小さくて最大の部分登録ビットパターンを意味する。また、部分対象ビットストリングに値が最も近い最小の部分登録ビットパターンとは、部分対象ビットストリングより値が大きくて最小の部分登録ビットパターンを意味する。最大の部分登録ビットパターンに続くパターンテーブルのアドレスが選択されることにより、以下で説明する右倒れの範囲検索が可能となる。また、最小の部分登録ビットパターンに続くパターンテーブルのアドレスが選択されることにより、以下で説明する左倒れの範囲検索が可能となる。したがって、右倒れ型の検索においては、以下で説明する最大の側が選択され、左倒れ型の検索においては、以下で説明する最小の側が選択される。
また、本発明の照合方法および照合装置においては、多段階の照合の１つの段階（現段階）において、全照合工程および全照合手段により、部分対象ビットストリングが取り得る全ての値と照合する。その結果と、現段階の部分対象ビットストリングと照合する対象となる、現段階の部分登録ビットパターン（以降ではエントリとも称する）を示す現段階のパターンテーブルとから完全一致または範囲一致を導く。
パターンテーブルは、部分エントリのビット列そのものである必要はなく、むしろ、部分エントリの値を直接またはビットパターンあるいはフラグなどにより部分エントリと対応するような形式で示すデータであることがデータ量の点から望ましい。本発明においては、部分対象ビットストリングが取り得る全ての値と照合する全照合工程あるいは全照合手段を備えている。したがって、全照合の際に照合の対象となる値の範囲において、パターンテーブルは、部分登録ビットパターンの有効無効を示すビットフラグからなるマスクデータで与えることができる。すなわち、全照合の際に、予め部分対象ビットストリングが取り得る値の範囲が決まっているので、そのようなマスクデータでメモリに記憶し、またメモリからロードすることが可能である。したがって、パターンロード工程および手段においては、マスクデータをメモリからロードする。
また、この照合方法および装置においては、部分対象ビットストリングが取り得る全ての値と照合するので、パターンテーブルの量あるいは領域としては、部分対象ビットストリングが取り得る全ての値をカバーできる量あるいは領域が予め確保される。したがって、エントリを追加する際は、基本的にはマスクパターンを更新するだけで良く、エントリの追加削除にともなうエントリ移動は発生しない。このため、上位アプリケーションによるテーブル管理のオーバヘッドを縮小または排除できる。したがって、パケットフィルタリングやステートフルインスペクションにおいても上位アプリケーションソフトウェアの負担が軽いビットストリングの照合方法および照合装置を提供できる。
特に、マスクデータの場合は、１ビットで１エントリを表現することも可能となるので、パターンテーブルの記憶容量は大幅に削減され、また、パターンテーブルをロードする時間も短縮される。さらに、更新する際も、エントリの追加削除の処理に書き換えるビット量は大幅に少なくなり、処理は簡略化され、処理時間も短縮される。したがって、パターンテーブルをマスクデータ化することは有効である。
部分対象ビットストリングが取り得る全ての値と照合する処理（全照合工程および手段）は、比較器やルックアップテーブルを用いてハードウェアで高速に実行可能であり、多段階に分割することによりハードウェアの規模も大きくならない。部分対象ビットストリングのビット長は限定されるものではないが、ビット長が長くなればハードウェアは大きくなり、ビット長が短ければ照合段数が増加する。ハードウェアの適切な規模は、ハードウェアの目的、経済的な価値、実現可能な配線ルールなどに依存して変わる。現状では、部分対象ビットストリングのビット長としては４から５ビット程度が好ましいと考えられる。さらに、検索対象となる被検索ビットストリング（以降ではキーとも称する）のビット長増に対してもハードウェア自体のアルゴリズム的な変更は必要なく、ユニットを追加したり、一連の処理を繰り返すことで対応可能となる。
本発明の照合方法および照合装置は、簡易な構成で高速化できるという大きな効果を備えている。まず、全照合工程とパターンロード工程とを並列に行うことが可能であり、多段階に分割することに伴い発生するメモリからパターンテーブルをロードするオーバヘッドの時間も大幅に削減できる。したがって、特殊な構造で高速なメモリを使わなくても、十分に速い検索速度を発揮でき、廉価で大容量の検索を高速に実行する照合方法および装置を提供できる。そのような照合装置は、収容可能なエントリ数はＳＤＲＡＭ容量にのみ規定されるため、スケーラブル性が高く、また、メモリ管理が柔軟に行える。したがって、複数種の検索を単一のハードウェアセットで柔軟におこなえるものになる。
メモリに対してデータを入出力するキャッシュ装置を設けることにより、パターンテーブルをロードする時間のオーバヘッドをさらに削減できる。キャッシュメモリの効率を向上し、ミスヒット率を低減するには、パターンテーブル、特にマスクデータ、およびアドレステーブルを含み、メモリ上の記憶単位である照合テーブルのサイズとキャッシュラインのサイズが同一であることが好ましい。
さて、範囲一致検索においては、現段階では、一致する部分登録ビットパターンがあり、さらに、最大または最小の部分登録ビットパターンがあるときには、最大または最小の部分登録ビットパターンに続く次の段階のパターンテーブル（範囲検索のパターンテーブル）のアドレスを候補アドレスとして記憶あるいは出力しておくことが望ましい。照合継続のときの現段階（候補アドレスを記憶した照合段階に対しては次の照合段階）において、一致する部分登録ビットパターンがなく、最大または最小の部分登録ビットパターンもないときには、最大または最小の部分登録ビットパターンが発生する段階まで遡るバックトラックが発生する。そのときに、候補アドレスが記憶されていれば、照合継続の現段階の出力工程において、先行する段階における候補アドレスを含む照合継続情報を出力することにより、バックトラックにより照合を継続する段階まで最短の処理時間で到達できる。
範囲一致検索において、最大または最小の部分登録ビットパターンに続く現段階のパターンテーブル（範囲検索のパターンテーブル）のアドレスを含む照合継続情報が与えられたときは、現段階のパターンテーブルに示された最大または最小の部分登録ビットパターンに続く次の段階のパターンテーブルのアドレスを辿ることにより、検索対象のビットストリングよりも値が小さくて最大の登録ビットパターン（最大の登録ビットパターン）、または、検索対象のビットストリングよりも値が大きくて最小の登録ビットパターン（最小の登録ビットパターン）に到達することができる。したがって、その状態、すなわち、範囲検索のパターンテーブルが得られた現段階では、全照合工程および判定工程をバイパスすることができる。そして、出力工程および出力手段により、範囲検索のパターンテーブルを現段階のパターンテーブルとし、それに対応するアドレステーブルから、そのパターンテーブルに示された最大または最小（パターンテーブルの中での最大または最小）の部分登録ビットパターンに続く次の段階のパターンテーブルのアドレスを含む照合継続情報を出力する処理を繰り返せば良い。
このように段階毎のパターンテーブルの最大または最小を辿りながら最大または最小の登録ビットパターンにたどり着く処理は、エントリの登録、削除がない限りパターンテーブルが決まれば、たどり着く登録ビットパターンは同一になる。したがって、パターンテーブルと共に、そのパターンテーブルに示された最大また最小の部分登録ビットパターンに対応して決まる最大または最小の登録ビットパターンを示すバイパスデータをメモリに記憶しておくことが望ましい。最大または最小の部分登録ビットパターンに続く範囲検索のパターンテーブルのアドレスを含む照合継続情報が与えられたときは、全照合工程、パターンロード工程および判定工程をバイパスし、出力工程および出力手段において、範囲検索のパターンテーブルに対応するバイパスデータを含む最終照合情報を出力して検索対象のビットストリングの照合を終了することができる。したがって、中間の段階のパターンテーブルを辿る処理を省くことができる。
特に、上述したバックトラックが発生したときでも、その後の処理は候補アドレスに示されたパターンテーブルに対応するバイパスデータを出力するという処理で終了し、ほとんどバックトラックによるペナルティーは発生しない。
本発明の照合方法および照合装置は、さらに、検索対象となるビットストリングのビット長増に対してもハードウェア自体のアルゴリズム的な変更は必要なく、照合ユニット、すなわち、多段階の１あるいは複数段階を実行する照合装置を追加したり、上述した現段階の一連の工程を繰り返すことで対応できる。したがって、本発明において、複数の照合段階を直列および／または並列に行う分類過程を有する分類方法は、検索目的、検索対象のビットストリングの種類、および登録ビットパターンの種類などの条件に応じて極めてフレキシブルに設計できる。同様に、複数の照合装置を直列および／または並列に組み合わせた分類装置も目的に応じて極めてフレキシブルに設計できる。
これらの分類過程あるいは分類装置においては、複数の照合段階あるいは照合装置をパイプライン方式で接続することにより、検索時間の実質的な短縮を実現でき、この点でも、検索処理の高速化を図ることが容易である。すなわち、複数の照合段階または照合装置の間では、照合継続情報を含むデータをパケット化して伝達することにより、データフロー型の処理で検索処理を実行できる。
さらに、本発明の照合方法および照合装置においては、登録ビットパターンを追加あるいは削除する際に、エントリの移動は発生せず、単に、パターンテーブルおよびアドレステーブルを更新することにより、登録ビットパターンを追加または削除できる。したがって、そのような更新工程を実行する更新手段を設けておくことにより、更新するためのデータをパケットとして上流から下流に流して、エントリの追加削除を行うことができる。したがって、パイプライン方式で実行される、それぞれの照合段階の照合テーブルを更新する処理（更新過程）もパイプライン方式により照合段階と並列に行うことができる。すなわち、本発明においては、パイプライン方式で実行される、それぞれの照合段階の照合テーブル（パターンテーブルおよびアドレステーブルを含む）を更新することにより、登録ビットパターンを追加または削除する更新過程を有し、この更新過程は、照合段階と並列にパイプライン方式で実行できる。
照合テーブルが、パターンテーブルに示された最大また最小の部分登録ビットパターンに対応して決まる最大または最小の登録ビットパターンを示すバイパスデータを有する場合は、下位の照合段階の照合テーブルが更新されないとバイパスデータが決定されない場合がある。したがって、更新過程においては、上位の照合段階の照合テーブルから下位の照合段階の照合テーブルを更新する際に、バイパスデータの更新が発生する可能性のある照合段階の照合テーブルの更新は、下位の照合段階の照合テーブルの更新を待ってから行う、待ち合わせ方式が採用できる。また、更新過程においては、上位の照合段階の照合テーブルから下位の照合段階の照合テーブルを更新する工程と、下位の照合テーブルの更新により上位の照合テーブルのバイパスデータの更新が発生した場合は、双方向リンクにより上位の照合テーブルの更新を行う工程とを有する、双方向リンク方式を採用することも可能である。
複数の照合装置を備えた分類装置により多段階の照合方法により検索を行うことができる。照合装置は１または複数の照合段階を実行するものであるが、１つの照合段階をそれぞれ実行する複数の照合装置（照合段階）をパイプライン方式などで接続する分類過程を用いた分類方法、および分類過程を実装した分類装置は、各照合段階の管理および制御が容易であり、本発明の好ましい形態の１つである。複数種類の検索対象のビットストリングを対象とする検索を実行する必要がある場合、照合装置を複数有する１つの分類装置において複数種類の検索を順番に実行することができる。複数の分類過程を有する分類方法、および複数の分類装置を備えた検索装置を提供することはさらに有用である。複数の分類過程および分類装置により分類処理を並列に実行することも可能である。複数種類の検索対象のビットストリングを連結して１つの検索対象のビットストリングとして照合を行うことも可能である。しかしながら、検索対象のビットストリングのデータ長が増えるほど、下流におけるパターンテーブルの数が膨大になる可能性がある。
登録ビットパターンが１つまたは複数の分類結果（ルール）を示している場合は、範囲検索により検索対象のビットストリングが属する範囲が決まれば、その検索対象のビットストリングの分類結果が決まる。複数の分類過程を備えた分類方法においては、複数の分類結果が得られる。したがって、複数の分類結果の論理積を演算し、最終の分類結果を得る論理演算過程を設ける必要がある。この論理演算過程および論理演算手段においては、複数の分類結果の論理積を行列演算し、最終の分類結果を得ることができる。このような論理演算過程（論理演算工程）および手段により、処理速度を向上でき、構成を簡易にできる。複数の分類装置を備えた検索装置においても同様である。
分類装置において、さらに処理速度を向上するのに最も効果的であると考えられるのは、メモリに対してデータを入出力するキャッシュ装置である。そして、パターンテーブル、特にマスクデータおよびアドレステーブルを含む照合テーブルのサイズとキャッシュ装置のキャッシュラインサイズが同一であることが望ましい。さらに、異なる種類の検索を行う分類装置においては、最初の照合テーブルを指定する検索種別情報を受信する手段を設けることが望ましい。キャッシュ装置は、それぞれの検索種別および照合段階の単位でキャッシュラインを割り当て、検索種別および照合段階の単位でキャッシュラインを管理する管理手段を備えていることが望ましい。メモリの、それぞれの検索種別および照合段階の単位で割り当てられた個別アドレス領域に照合テーブルを記憶しておき、キャッシュ装置のキャッシュラインを、個別アドレス領域単位で割り当てることも可能である。
ビットストリングの検索においては、全体が同一または上位が同一のビットストリングが供給されることが多い。このため、従来のＣＰＵ用のキャッシュシステムのように、メモリ上のデータの局所性を期待したキャッシュシステムを採用するよりは、検索種別および段階に区分けして、その単位で過去の参照テーブルを保存するキャッシュ装置の方が、キャッシュヒット率が高く、検索あるいは照合処理速度の向上に効果がある。
また、キャッシュ装置としては、照合テーブルがオンキャッシュでなければ照合装置にその旨を通知し、その照合装置の処理を中断して待ち行列に戻す、要求応答型のデータキャッシュも有効である。照合テーブルがオンキャッシュでないときに、照合装置、データキャッシュおよびメモリが、そのアクセスに占有されてしまい、処理が遅れることを防止できる。パイプライン的に照合装置が接続されている場合は、１つ遅れると、その遅れは後段に影響するからである。また、検索対象のビットストリングに識別情報を付加することにより、入出力の順序が保障される必要はなくなるので、待ち行列で待機させても照合処理には影響がない。検索対象のビットストリングに識別情報を付加して照合する方法は、範囲一致検索において、バックトラックが発生したときにも有効である。
また、全体が同一の検索対象のビットストリングが供給される頻度も高い。したがって、分類装置の分類結果を記憶した履歴キャッシュ装置を設置することも有効である。検索対象のビットストリングを照合装置に供給する前に、当該分類装置の分類結果と検索対象のビットストリングとを比較する履歴キャッシュを設けることにより、検索あるいは照合処理速度を向上できる。
ビットストリングの検索あるいは照合を高速で処理することができる本発明は、デジタルデータを取り扱うすべての処理、アプリケーション、装置、システムにおいて有用である。本発明の適用範囲を限定するものではないが、その１つとしては、ＭＰＥＧなどの画像データを示すビットストリームから特定のビットストリングを検索したり、膨大な文字データから特定の条件を検索するなどの多様なアプリケーションが考えられる。高速性が要求されるコンピュータネットワークを対象とするデータ管理装置の分野にも有効である。たとえば、分類装置や検索装置の照合あるいは検索により特定されたルートにパケットを送出する機能を備えた、高速ルーティングが可能なデータ管理装置あるいは管理方法を提供できる。また、ルータやサーバなどで必要となるパケットフィルタリングＳＰＤ検索、ＱｏＳといった範囲検索を高速で実行できるデータ管理装置を提供できる。さらに、ＴＣＰパケットのリアセンブルのように、データブロックの先頭アドレスおよび末尾アドレスが一致するだけでなく、前後および包含関係になることもあるフラグメント化されたデータブロックを再構成するアプリケーションにおいても有効である。
さらに、本発明の照合方法および照合装置は、大規模なデータベースから有用なルールあるいはパターンを高速に発見するデータマイニングと呼ばれる分野でも有効である。さらに、本発明の照合方法および照合装置を用いた検索がツリーの一方向遷移に限定される必要はない。このような視点はミクロ的なものであり、マクロ的な視点では双方向ネットワークの遷移先などを検索する方法および装置も本発明に含まれる。その１つは、状態遷移マシンであり、有限状態オートマトンである。したがって、本発明の照合方法により、状態遷移の評価元となるデータを検索対象のビットストリングとし、複数の状態遷移条件を示すデータを複数の登録ビットパターンとして照合する工程と、その照合結果によりデータ処理回路の状態を遷移する工程とを有するデータ処理装置の制御方法を提供できる。
本発明により、状態遷移の評価元となる現状態の検索対象のビットストリングを、予め登録された複数の状態遷移条件を示す登録ビットパターンと照合する照合装置と、照合装置に対し、検索対象のビットストリングを供給する検索対象供給手段と、照合装置の出力により状態が遷移するデータ処理回路とを有するデータ処理装置を提供できる。このデータ処理装置は遷移状態マシンあるいはオートマトンプロセッサであり、分類器プロセッサとも称することができる。この場合、照合装置は、現状態の検索対象のビットストリングが取り得る全ての値と照合する全照合手段と、複数の登録ビットパターンを示すためのパターンテーブルであって、先行する状態から得られる照合継続情報により決まる、現状態のパターンテーブルをメモリよりロードするパターンロード手段と、全照合手段の結果と現状態のパターンテーブルより、現状態の検索対象ビットストリングに一致する現状態の登録ビットパターンの有無を少なくとも示す照合結果を出力する判定手段と、照合結果により、現状態のパターンテーブルに対応するアドレステーブルから、現状態の次の状態の前記パターンテーブルのアドレスを含む照合継続情報を出力する出力手段とを備えている。
１つの状態遷移を決定するのに、複数の照合装置を用いた設計も可能であり、その場合は、本発明の分類装置が遷移先の検索に用いられる。照合する内部状態、すなわち、状態遷移条件を外部条件や内部条件で変更することが可能であり、検索対象供給手段により、照合装置に供給される照合テーブルが指定されるようにしても良い。データ処理回路によりメモリの照合テーブルが書き換えられるようにしても良い。ＱｏＳの検索などに本発明の状態遷移（オートマトン）プロセッサを用いると、ＱｏＳの検索とプロセッサとしてのアドレッシングが一体となったアーキテクチャを実現することができる。
【図面の簡単な説明】  図１は、管理装置の例としてルータの概要を示す図である。
図２（ａ）〜図２（ｆ）は、一致検索の照合状態を説明する図である。
図３は、バイナリビットツリー上の照合状態を示す図である。
図４（ａ）〜図４（ｆ）は、右倒れ一致型の近似について説明する図である。
図５（ａ）〜図５（ｆ）は、左倒れ一致型の近似について説明する図である。
図６は、バイナリビットツリーをテーブル分割した様子を示す図である。
図７（ａ）〜図７（ｃ）は、照合テーブル（部分テーブル）を示す図である。
図８（ａ）および図８（ｂ）は、ＭＩＮ／ＭＡＸサーチを説明する図である。
図９（ａ）および図９（ｂ）は、部分テーブルでＭＩＮ／ＭＡＸサーチを行う様子を示す図である。
図１０は、圧縮テーブルでＭＩＮ／ＭＡＸサーチを行う様子を示す図である。
図１１（ａ）および図１１（ｂ）は、バイパス処理を示す図である。
図１２は、照合過程でバックトラックが発生する様子を示す図である。
図１３は、バックトラックが発生した後に、バイパス処理を実行する様子を示す図である。
図１４は、検索装置の概要を示す図である。
図１５は、メモリ共用型の分類装置を示す図である。
図１６は、メモリ分離型の分類装置を示す図である。
図１７は、繰り返し型の分類装置を示す図である。
図１８は、照合装置の概要を示す図である。
図１９は、照合装置の処理を示すフローチャートである。
図２０は、照合装置における処理の進行を説明する図である。
図２１は、比較ユニットを示す図である。
図２２は、比較器の論理を示す図である。
図２３は、比較ユニットの異なる例を示す図である。
図２４は、マスク器を示す図である。
図２５は、マスク器の論理を示す図である。
図２６は、選択回路の一致論理を示す図である。
図２７（ａ）〜図２７（ｃ）は、選択回路の範囲検索（右倒れ）の論理を示す図である。
図２８（ａ）〜図２８（ｃ）は、選択回路の範囲検索（左倒れ）の論理を示す図である。
図２９（ａ）〜図２９（ｇ）は、比較ユニット、マスク器、選択回路の出力（右倒れ）を示す図である。
図３０（ａ）〜図３０（ｇ）は、比較ユニット、マスク器、選択回路の出力（左倒れ）を示す図である。
図３１は、コマンドの例を示す図である。
図３２は、バイパス処理用のバスでバックトラックを処理する様子を示す図である。
図３３は、メモリ共有型の分類装置でバックトラックを処理する様子を示す図である。
図３４は、分類装置においてスルーを処理する様子を示す図である。
図３５は、異なる方式でスルーを処理する様子を示す図である。
図３６は、さらに異なる方式でスルーを処理する様子を示す図である。
図３７は、さらに異なる方式でスルーを処理する様子を示す図である。
図３８は、待ち合わせ方式でエントリを追加する処理を示す図である。
図３９は、待ち合わせ方式でパイプラインに沿って処理を進める様子を示す図である。
図４０は、待ち合わせ方式でエントリを追加する更新ユニットの機能を示す図である。
図４１は、待機管理ユニットの機能を示す図である。
図４２は、双方向リンク方式でエントリを追加する処理を示す図である。
図４３は、双方向リンク方式でパイプラインに沿って処理を進める様子を示す図である。
図４４は、双方向リンク方式でエントリを追加する更新ユニットの機能を示す図である。
図４５は、待ち合わせ方式でエントリを削除する処理を示す図である。
図４６は、待ち合わせ方式でエントリを削除する更新ユニットの機能を示す図である（コマンドがＤＥＬのとき）。
図４７は、待ち合わせ方式でエントリを削除する更新ユニットの機能を示す図である（コマンドがＤＥＬＵＰＤＴのとき）。
図４８は、待ち合わせ方式でコマンドがＤＥＬＲＤＢＰおよびＤＥＬＷＲＢＰの処理を示す図である。
図４９は、双方向リンク方式でエントリを削除する更新ユニットの機能を示す図である（コマンドがＤＥＬのとき）。
図５０は、双方向リンク方式でエントリを削除する更新ユニットの機能を示す図である（コマンドがＤＥＬＵＰＤＴのとき）。
図５１は、双方向リンク方式でコマンドがＤＥＬＲＤＢＰおよびＤＥＬＷＲＢＰの処理を示す図である。
図５２は、データキャッシュを備えた分類装置を示す図である。
図５３は、データキャッシュのラインサイズを示す図である。
図５４は、データキャッシュの管理を示す図である。
図５５は、メモリの管理を示す図である。
図５６は、空テーブル管理キューの応答を示す図である。
図５７は、ＳＤＲＡＭ共用型履歴キャッシュシステムを備えた分類装置を示す図である。
図５８は、ＳＤＲＡＭ共用型履歴キャッシュシステムの概要を示す図である。
図５９は、履歴ＳＲＡＭキャッシュ付き分類装置を示す図である。
図６０は、履歴ＳＲＡＭキャッシュの概要を示す図である。
図６１は、行列演算の一例を示す図である。
図６２は、行列演算の左行列を示す図である。
図６３は、ＬＳＩ化に適して行列演算の概要を示す図である。
図６４は、ＡＮＤ化器のハードウェアを示す図である。
図６５は、下位テーブルを省略する様子を示した図である。
図６６は、要求応答方式のメモリアクセスを採用した照合装置の概要を示す図である。
図６７は、要求応答方式のメモリアクセスを採用した照合装置の異なる例を示す図である。
図６８（ａ）〜図６８（ｃ）は、照合テーブルの改良型を示す図である。
図６９は、非リニアメモリアドレッシングを示す図である。
図７０は、単純状態遷移を示す図である。
図７１は、イベント連動型単純状態遷移を示す図である。
図７２（ａ）〜図７２（ｃ）は、状態遷移の概要を示す図である。
図７３（ａ）および図７３（ｂ）は、ネットワーク状の状態遷移の概要を示す図である。
図７４は、分類装置を採用したプロセッサの概要を示す図である。
図７５（ａ）および図７５（ｂ）は、ＱｏＳに適応する概要を示す図である。
図７６は、検索ツリーとクラスツリーの対応を示す図である。
図７７は、従来のＣＰＵによる検索処理の概要を示す図である。
図７８は、分類装置を採用したプロセッサによる検索処理の概要を示す図である。
【発明を実施するための最良の形態】  以下では、本発明に係るビットストリングの検索装置をルーティングテーブル検索に使用したルータ（ルーティング装置）について説明する。図１に示すルータ１は、ネットワーク上のパケットデータを管理する装置であり、パケットφｐの入出力を制御および管理するパケット管理機能３と、パケットφｐの転送先を判断するためのルーティング検索機能４と、パケットφｐを転送する条件を判断する条件判断機能９とを備えている。ルーティング検索機能４は、入力されたパケットの経路を示すエントリ（登録ビットパターン）を複数備えたルーティングテーブルが記憶されたメモリ（ＳＤＲＡＭ）１１と、検索装置１０と、検索装置１０に対して検索種別を設定するなどの機能を備えた制御ユニット１２とを備えている。ルーティング検索機能４では、パケットφｐに含まれる検索対象のビットストリング（被検索ビットストリング）φｏ、たとえば、ＩＰヘッダの受信先アドレス（ＤＩＰ）をメモリ１１に記録されたルーティングテーブルの各エントリと一致検索を行う。そして、その結果φｒに基づき、パケット管理機能３が一致したエントリに設定された経路（インタフェース）へパケットデータを送出する。
条件判断機能９は、さらに幾つかの機能に分割されている。本例の条件判断機能９は、ネットワーク上のセキュリティーサービスを提供するＩＰセキュリティー（ＩＰｓｅｃ）機能８と、ネットワーク上のクオリティーサービスを提供するＱｏＳ機能７と、ファイアウォール機能６を備えている。これらの条件を判断する機能の多くは、パケットφｐを管理するＩＰヘッダのビットストリングを検索対象のビットストリングφｏとして、その検索対象のビットストリングφｏが属する範囲を検索することが要求される。ＩＰｓｅｃ（ＳＰＤ）機能８では、制御ユニット８ｃの制御のもと、検索対象として供給されたビットストリングφｏと、メモリ８ｍに記憶されたＳＰＤテーブルとを検索装置８ｓにより照合する。ＱｏＳ機能７では、ＱｏＳ制御ユニット７ｃの制御のもと、検索対象のビットストリングφｏと、メモリ７ｍに記録されたフロー検索テーブルとを検索装置７ｓにより照合する。さらに、ファイアウォール機能６では、制御ユニット６ｃの制御のもと、検索対象のビットストリングφｏと、メモリ６ｍに記録されたパケットフィルタリングテーブルとを検索装置６ｓにより照合する。
パケット管理機能３は、ネットワークを介してパケットφｐを受信および／または送信可能な１つまたは複数のパケット入出力部２ａと、受信したパケットφｐをキューイングするメモリ２ｂとを備えている。キューイングされたパケットφｐは、ルーティング検索機能４でルーティング先が決まる。さらに、ＳＰＤ機能８、ＱｏＳ機能７およびファイアウォール機能６などにおける処理が決定された後に、それらの機能で決定された適切なタイミングで、パケットφｐは、パケット管理部３の何れかのパケット入出力部２ａから適切なルートあるいはネクストホップに送出される。また、ＳＰＤ機能８などの照合結果によってはキューイングされたパケットφｐが出力されずに破棄されることもある。
本発明の照合方法を採用した検索装置は、これらの各機能４、６、７および８の検索装置１０、６ｓ、７ｓおよび８ｓとして適用可能であり、ＩＰｖ６に基づいて検索対象のビットストリングφｏのビット長が増した状況したでも、高速でサーチし、その結果φｒをパケット管理部３に返すことができる。条件判定機能９に含まれる機能６、７および８の検索装置６ｓ、７ｓおよび８ｓにおいては、検索対象のビットストリングφｏが属するルールを見出すために、範囲一致検索あるいは照合が実行される。一方、ルーティング検索機能４においては、ルートを特定するために完全一致検索または最長一致検索が実行される。ルーティング検索機能４において、プレフィックス以降の最長一致の結果を得る最長一致検索は、プレフィックス以降のすべてのビットを最小側と最大側に展開した範囲一致検索に還元される。なお、本明細書において、バイナリビットツリーの「０」の方向を最小側（ＭＩＮ）と呼び、「１」の方向を最大側（ＭＡＸ）と呼ぶ。
検索装置の基本原理
以降においては、本発明に係る検索装置の概要を説明する。本発明の検索装置は複数種類の検索を単一のハードウェアで行えるものであり、いずれの機能の検索装置としてもほとんど構成を変えずに適用可能である。したがって、以降においては検索装置１０を、完全一致検索および範囲一致検索が可能な装置として説明するが、範囲検索も同様のハードウェアで実行できる。
検索装置１０は、バイナリビットツリーを構成するエントリ群と被検索キー（検索対象キー、検索対象のビットストリング、以降においてはターゲットキーあるいはキーと称することもある）の間の大小判定アルゴリズムを用い、エントリ（登録ビットパターン）群が表現する範囲（ルール）のどこに対象キーが属するかを判定するハードウェアである。バイナリビットツリーに基づく照合を実行するアルゴリズムをハードウェアで実現するにあたり、バイナリビットツリーを短いビット長のテーブルに分け、多段階で照合を行う。各照合段階では、各段のテーブル内の大小判定を並列ビット照合により行う。多段階の照合にすることにより、検索対象となるビットストリングのビット長の制限はなくなり、汎用的な利用が見込まれる。また、多段階の照合にすることにより、各段階で比較するビット長を限定でき、予めすべてのエントリが登録されているものとして並列に照合しても処理時間への影響はなく、ハードウェアが増大することも無い。そして、各段に登録されているエントリが含まれたパターンテーブルを示すデータ（以降ではマスクデータ）は圧縮することが可能であり、バイナリビットツリー作成（登録・削除）コストが軽減され、多段テーブルによる圧縮効果と相まって必要メモリ量も抑えられる。
照合過程の各段階における並列ビット照合は逐次実行プロセッサ上のソフトウェアでは実現不可能であり、並列処理ハードウェアあるいは並列実行型のプロセッサで実行することになる。並列ビット照合に必要とされるハードウェアは簡易なものであり、並列実行型のプロセッサを用いずに、経済的、コンパクトに実現することができる。
バイナリビットツリーによる同値および大小の判定
以下で述べる範囲検索において、右倒れ型近似ロジック、左倒れ型近似ロジックはハードウェア設計時にどちらかを選んで設計する。どちらを選んでも等価な範囲検索が可能である。両方式を切り替えられるよう設計することも可能である。一度に両方の近似で検索することも可能である。本明細書では、特に記載しない限り、右倒れ型近似ロジックに基づき設計された装置により説明する。
図２（ａ）から図２（ｆ）に、バイナリビットツリー上での完全一致検索のロジックを示してある。ツリーの１段が１ビットに相当するバイナリビットツリーにおいては、上位から１ビットずつ被検索キーとエントリとの間で照合していく。この上位とは照合を開始するビットであり、必ずしも最上位のビット（ＭＳＢ）でなくても良く、最下位のビット（ＬＳＢ）であっても良い。バイナリビットツリーのあるノードから次ノードへの接続は「両方向あり」、「０方向のみあり」および「１方向のみあり」の３通りしかない。１ノードが１エントリを意味するバイナリツリー（２分木）とは異なり、バイナリビットツリーではノードはエントリの１ビットを意味するに過ぎない。エントリは全て等ビット長なのでツリー上でのノード段数も等しく、上位ノードからの接続が存在するノードを辿っていく途中で下位ノードに対する接続が「両方向なし」となることはありえない。
本明細書において、図２（ａ）および図２（ｂ）に示すように、「検索対象キー２１のビットとエントリ２２のビットが一致」となるエントリは「照合候補」と定義する。また、図２（ｃ）および図２（ｄ）に示すように、「検索対象キー２１のビットとエントリ２２のビットとが不一致」となるエントリは「照合失格」と定義する。図２（ｅ）および図２（ｆ）に示すように、ノード接続が両方向である場合は、検索対象キー２１のビットとエントリ２２ａのビットが一致」となるエントリ２２ａは照合候補で、「検索対象キー２１のビットとエントリ２２ｂのビットが不一致」となるエントリ２２ｂは照合失格である。
完全一致ロジックにおいては、各ビット（各ノード）で照合をおこない、照合候補が存在する間、照合候補の次ノードを辿り、照合を継続する。照合候補が無くなればそこで照合は終了し、検索ミスヒットという最終照合結果が得られる。最終ビット（最終ノード）の照合完了後に照合候補があれば（状態が照合継続であれば）、それに対応するエントリが検索ヒットである。
図３は、バイナリビットツリーにおける完全一致検索の照合ロジックを表すものである。バイナリビットツリーに登録された４ビットのエントリ群２２（値０，２，８，１５）に対し、検索対象キー２１ａとして値８（「１０００」）を投入し、値８に対応するエントリが完全一致検索ヒットと判定される例と、検索対象キー２１ｂとして値４（「０１００」）を投入し、検索ミスヒットと判定される例を示してある。最初のビットであるノードＡで検索対象キー２１ａは１方向に進む。値０および２のエントリ２２は０方向、値８および１５のエントリ２２は１方向なのでエントリ２２は両方向に延び、前者のエントリ２２は検索対象キー２１のビットと異なるので照合失格、後者のエントリ２２は検索対象キー２１のビットと一致するので照合継続である。そして、このノードＡでの照合後に照合候補エントリが存在するため、照合継続である。
次のノードＥでは、検索対象キー２１ａは０方向に進み、値８のエントリ２２が０方向、値１５のエントリ２２が１方向に延びている。したがって、ノードＥでも照合候補が存在するので照合継続である。ノードＦでは、検索対象キー２１ａは０方向に進み、エントリ２２は片方向であるが、その値８のエントリ２２が検索対象キー２１ａと同じく０方向なので照合候補が存在し、照合継続である。ノードＧでも同様であり、最終ノードである。したがって、最終ノードＧの照合後に照合候補があるので、完全一致検索は値８のエントリ２２にヒットし終了する。
検索対象キー２１ｂでは、ノードＡでは照合候補があるため照合が継続する。ノードＢでは、検索対象キー２１ｂが１方向、値０および２のエントリ２２は片方向で０方向に延びている。したがって、照合継続となっていた値０および２のエントリ２２は照合失格となり、このノードでの照合後に照合候補が残らない。このため、検索ミスヒットとなる。
範囲検索でも完全一致検索同様にバイナリビットツリーを上位から１ビットずつ検索対象キーとエントリとの間で照合していくが、範囲検索の場合は「照合候補」に加え、「近似候補」および「近似失格」の概念がある。完全一致検索での「照合失格」が「近似候補」と「近似失格」に区別されることになる。また、ロジック上の必要性から「近似仮定」も定義する。
右倒れ近似（ＭＡＸサーチ）
図４（ａ）から図４（ｆ）に右倒れ近似の類型を示してある。図４（ａ）および図４（ｂ）に示すように、「検索対象キー２１のビットとエントリ２２のビットが一致」となるエントリは「照合候補」と定義する（これは完全一致検索と同様である）。この照合候補がある間、右倒れ型近似ロジックによる照合は継続する。また、図４（ｅ）および図４（ｆ）に示すように、「エントリ２２が両方向あり」の場合も、「検索対象キー２１のビットとエントリ２２のビットが一致」である側のエントリ２２は照合候補となり、照合継続である。
一方、図４（ｃ）および図４（ｄ）に示すように、「検索対象キー２１のビットとエントリ２２のビットが不一致」となるエントリは照合候補から外れる。完全一致検索ではいずれの場合も「照合失格」としていたが、右倒れ型近似の場合、図４（ｃ）のように「検索対象キー２１のビットが１でエントリ２２のビットが０」となるエントリ２２を「近似候補」と定義する。逆に、図４（ｄ）のように「検索対象キー２１のビットが０でエントリ２２のビットが１」となるエントリ２２を「近似失格」と定義する。近似ロジックでは、最新の近似候補を「近似仮定」として保持しておく。実際に「近似仮定」として保存が必要な値は、近似候補の指す次ノード位置である。近似候補でも近似失格でも、図４（ｃ）および図４（ｄ）に示すようにエントリ２２が片方向で照合候補がなければ、照合過程は終了する。
図４（ｅ）および図４（ｆ）に示すように、エントリ２２が「両方向あり」の場合は、「検索対象キー２１のビットとエントリ２２のビットが不一致」となる側のエントリ２２も同様に、定義に従い近似失格あるいは近似候補となる。「両方向あり」なので「検索対象キー２１のビットとエントリ２２のビットが一致」側のエントリ２２も存在し、それが照合候補となるので照合は継続する。それと共に、「近似候補」となるエントリ２２、すなわち、図４（ｅ）の「近似候補」のエントリ２２が「近似仮定」となり、それまでの「近似仮定」の値は更新される。
最終ビットの後に照合継続（照合候補あり）ならば、そのエントリに完全一致したことになる。途中（あるいは最終ビット）で照合終了となった場合、保持してある近似仮定（最新の近似候補）を見て近似ヒットがありえるかどうかを判定する。近似仮定がなければ検索ミスヒットである。範囲検索の意味的には、定義された全ての範囲の外である。近似仮定があれば近似ヒットである。しかし、近似仮定が途中のノードを指す場合は、そのノードの下に複数のエントリ２２が存在する可能性があるため、近似仮定のエントリ群２２から近似決定をおこなわねばならない。この過程は、近似照合とは別のロジックで処理できる。右倒れ近似においては、以下で最大値検索（ＭＡＸサーチ）として説明している処理を行い、検索対象キー２１の値以下の値のエントリの中から、最大の値のエントリ（検索対象キーに近い最大のエントリ）を選択して近似エントリとして確定する。
図３を、バイナリビットツリーにおける右倒れ型近似ロジックによる範囲検索を表すものとすると以下のようになる。値４の検索対象キー２１ｂについては、ノードＡで０方向の値０または２のエントリ２２は照合候補、１方向の値８または１５のエントリ２２は近似失格となる。ノードＡでは、照合候補が存在するため照合継続となる。次にノードＢでは、０方向の値０または２のエントリが近似候補となり、近似候補なので近似仮定（最新の近似候補を保持）の更新を行い、近似候補の指す次ノードであるノードＣを近似仮定として保持する。
ノードＢの照合後に照合候補がなく、照合過程はいったん終了する。近似仮定があるので、近似ヒットである。従って、近似仮定となるエントリ群からＭＡＸサーチにより近似確定をおこなう。この場合、値０と値２のエントリ２２から値２のエントリを選択することになる。図３に示したように、検索対象キー２１ｂは２≦キー値≦７の範囲の値であれば、同じ結果である値２のエントリ２２を得ることができる。つまり、値２のエントリ２２は（２〜７）という範囲を意味するエントリとなっている。このため右倒れ近似が範囲検索になるのである。
次に、値８の検索対象キー２１ａにおいては、ノードＡでは、０方向のエントリ２２（値０と２が属する）が近似候補となり、近似仮定（ノードＢを指す）が更新される。１方向のエントリ２２（値８と１５が属する）が照合候補となり、照合候補も存在するため照合継続となる。ノードＥでは、ビット値０方向のエントリ２２が照合継続、ビット値１方向のエントリが近似失格となる。近似候補はないため、近似仮定は更新されない。ノードＦ以降は単方向で照合継続となり、近似候補が発生しないため、近似仮定は更新されない。そして、最終ビット後に照合継続（照合候補あり）なので、値８のエントリ２２に完全一致するという最終照合結果が得られる。
さらに、値１４の検索対象キー２１ｃを投入した場合を考える。ノードＡでは、ビット値０方向のエントリ２２（値０と２が属する）が近似候補となるので、近似仮定（ノードＢを指す）が更新される。また、ビット値１方向のエントリ（値８と１５）が照合候補となり照合継続となる。ノードＥでは、ビット値０方向の値８のエントリ２２が近似候補となり、近似仮定は更新される（ノードＦを指す）。また、１方向の値１５のエントリ２２が照合候補となるので、照合継続となる。ノードＨでは、単方向で値１５のエントリ２２が照合候補となり、近似候補が発生しないので、近似仮定は更新しないで、照合継続となる。ノードＩでは、単方向で照合失格となる。従って、いったん照合過程は終了する。
このとき、近似仮定はノードＥでの更新でノードＦを指している。近似確定のため、ノードＦ以下をＭＡＸサーチし、値８に対応するエントリ２２が近似ヒットと決定される。したがって、この検索対象キー２１は、値８のエントリ２２がカバーする範囲（８〜１４）に属することが判明し、範囲一致検索が実行されたことになる。
左倒れ近似（ＭＩＮサーチ）
図５（ａ）から図５（ｆ）に、左倒れ近似における「照合候補」「近似候補」「近似失格」の定義を示してある。右倒れ近似と「近似候補」「近似失格」のビットが入れ替わっただけである。照合ロジックも、上記の入れ替わり以外は右倒れ近似と同様である。ただし、右倒れ型近似では近似確定するため近似仮定に対するＭＡＸサーチをおこなうのに対し、左倒れ近似の場合、近似確定のために近似仮定に対するＭＩＮサーチをおこなう点が異なる。ＭＩＮサーチでは、検索対象キー２１の値以上の値のエントリの中から、最小の値のエントリ（検索対象キーに近い最小のエントリ）を選択して近似エントリとして確定する。
最終ビットまで「エントリのビットと検索対象キーのビットが一致」であった場合、つまり最終ビットの照合後に照合継続であった場合、これも範囲検索としてはヒットとする。つまり、右倒れ型近似による範囲検索とは、完全一致ヒットと近似一致ヒットを区別せず、「キー≧エントリ」となる最大エントリを検索するものである。ただし、検索の用途によっては「＝」を含まない、「キー＞エントリ」の右倒れ近似とすることもできる。また、「＝」一致なのか「＞」一致なのかを区別した結果とすることもできる。
範囲検索におけるエントリデータの形式
右倒れ型近似による範囲検索では、領域は右倒れ近似ロジックに適合するよう正規化されエントリ登録される。正規化とは、複数のルールが与えられたときに、相互に重複しない新たな範囲であって、その新たな範囲に属するルールの重複を許した、新たな範囲を設定することを言う。そして、検索対象ビットストリングが属する範囲を判断することにより検索対象ビットストリングに適用されるルールを発見する。また、検索対象のビットストリングが属する新たな範囲に複数のルールがあるときは、優先度の高いルールに基づき検索対象のビットストリングが属するパケットを管理するという方法でも用いられる。
さらに説明すると、ルールを正規化するとは、照合処理のために範囲の数値表現をＦＲＯＭ／ＴＯ表現からＦＲＯＭ／ＮＥＸＴ表現にすることを意味する。すなわち、ルールと範囲の関係を、ルールの重複は許し、範囲の重複は許さないで分割した領域表現に変換する。たとえば、Ｐｉを領域中の値とし、範囲［Ｐａ，Ｐａ′］と範囲［Ｐｘ，Ｐｘ′］が与えられたときに、Ｐａ＜Ｐｘ＜Ｐａ′の関係があるときは、［Ｐａ，Ｐｘ−１］、［Ｐｘ，Ｐａ′］、［Ｐａ′＋１，Ｐｘ′］の３つの新たな範囲を定義する。このような正規化により、新たな範囲のいずれかに属することが分かれば、それに対応するルール（優先するルール）を一義的に決定することができる。すなわち、範囲［Ｐａ，Ｐａ′］は、［Ｐａ，Ｐｘ−１］および［Ｐｘ，Ｐａ′］の２つの新たな範囲に分割される。従って、ｍ個のルールが与えられたときは、領域数（新たな範囲の数）を最大で２ｍ＋１に分割することにより、重複することのない新たな範囲を設定することができる。最大となる条件は、すべてのルールの範囲のＦＲＯＭ／ＴＯがユニークな場合であり、実際は、重複することが多いために新たな範囲の数はかなり少ない。
また、この新たな範囲には、ルールが与えられていない範囲も、ルールが与えられていない範囲として意味を持つことになる。したがって、ＦＲＯＭ／ＴＯによる範囲は［Ｆｒｏｍ，＊］および［Ｎｅｘｔ，＊］という範囲に変換する必要がある。つまり、ＦＲＯＭ／ＴＯのペアで１範囲を表現していたものが、Ｆｒｏｍ値／Ｎｅｘｔ値それぞれが独立領域を表現することになる。Ｆｒｏｍ値は元のルール範囲のＦｒｏｍ値と同値であり、ルール範囲の開始位置（左端点）を示す。Ｎｅｘｔ値はルール範囲のＴｏ（範囲終了位置）＋１であり、ルール範囲の右側の範囲外領域の開始位置（左端点）である。これにより、Ｆｒｏｍ値／Ｎｅｘｔ値は新たな範囲の端点として独立した存在となり、新たな範囲は常に左端点（下位のビットストリング）の１点で表現され、正規化された定義となる。すなわち、新たな範囲の右端点はＮｅｘｔ領域左端点−１で暗黙に表現される。なお、ルール領域の右端点を中心に考えて、新たな範囲を上位のビットストリングの１点で表現することも可能である。その場合は、以下の説明を上位と下位を逆転させて考えれば良い。
正規化により、ＦＲＯＭ／ＴＯのルールエントリは、ＦＲＯＭ／ＮＥＸＴのエントリに変換される。この際、デフォルトのエントリとして［０，ＮＡ］を追加する。したがって、ルール数がｎであれば、エントリはデフォルトも含めｎ＋１エントリとなる。正規化する処理は、範囲により照合されるものがルールに限定されることはなく、範囲に対応して出力する値が特定される検索であれば全ての場合に応用することができる。
この正規化は領域を表す２値（［ＦＲＯＭ，ＴＯ］）のうちＴＯ（大値）側の補正ということができる。例えば［ａ，ｂ］で表される領域Ｒは値「ａ」のエントリＡと値「ｂ＋１」のエントリＢとして登録される。エントリＡは領域Ｒを表現し、エントリＢは領域Ｓ［ｂ＋１，∞］を表現する。エントリＡに右倒れ型近似ヒットすることは、領域Ｒに範囲検索ヒットすることである。エントリＢに近似ヒットすることは、領域Ｓにヒット、つまり範囲検索ミスヒット（領域Ｒ外）を意味する。近似ミスヒットは領域Ｑ［０，ａ−１］、つまり範囲検索ミスヒット（領域Ｒ外）を意味する。
一点を表す領域Ｕ［ｃ，ｃ］も定義可能であり、値「ｃ」のエントリＣと値「ｃ＋１」のエントリＤとして登録される。エントリＣは領域Ｕを表現し、エントリＤは領域Ｖ［ｃ＋１，∞］を表現する。値「ｃ」と値「ｃ＋１」の隣接するエントリが登録されるため、値「ｃ」であるエントリＣへのヒットは完全一致ヒットでしかありえず、点領域Ｕに範囲検索ヒットを意味する。エントリＤへの近似ヒットは領域Ｖにヒット、つまり範囲検索ミスヒット（領域Ｕ外）である。近似ミスヒットは領域Ｔ［０，ｃ−１］、つまり範囲検索ミスヒット（領域Ｕ外）を意味する。
左倒れ型近似でも領域の正規化はおこなわれる。ただし、右倒れ型とは逆にＦＲＯＭ（小値）側を補正する。
エントリと集合の関係を、エントリＩは集合ＳＥＴ（Ｉ）［ｉ，∞］を意味すると定義する。このとき、領域Ｒ［ａ，ｂ］は、値「ａ」のエントリＡすなわち集合ＳＥＴ（Ａ）［ａ，∞］と、値「ｂ＋１」のエントリＢすなわち集合ＳＥＴ（Ｂ）［ｂ＋１，∞］との差集合（ＳＥＴ（Ａ）−ＳＥＴ（Ｂ））で表せる。エントリＡに右倒れ近似ヒットするということは、エントリＡにヒットし、エントリＢにミスヒットということである。
照合方法
図６に分割テーブルを示してある。多ビットのバイナリビットツリー２４は、多段階または多階層に分けて、さらに各段階を適当な数のエントリが表れるビット幅に分割することにより、パターンテーブル化できる。一定の短ビット長を単位とする分割テーブルまたは部分テーブル（パターンテーブル）２５を規定することにより、多ビットのバイナリビットツリーを、上位の部分テーブル２５から指定される各段階の部分テーブル２５の組み合わせにより表現できる。固定ビット数の部分テーブルにすることで、並列処理対象エントリは有限固定となり、部分テーブル２５に含まれるエントリをハードウェアにより並列照合することができる。さらには、部分テーブル２５に含まれる最大エントリ数は有限固定になるので、実際に部分テーブル２５に含まれるエントリの有無にかかわらず、検索対象キーが部分テーブル２５に含まれ得るエントリのいずれと一致するかを、ある部分テーブル２５が選択されると自動的にハードウェアで照合することも可能となる。
図６では、３ビットの部分テーブル２５によりバイナリビットツリー２４を表現している。各部分テーブル２５に収容される部分エントリ２６の最大値は、値０〜７の８エントリである。ハードウェア実装としては、メモリのワードのビット長や検索キーのビット長などを考慮し適切なテーブルビット長を決定する。テーブルビット長がｎビットになると並列処理対象であるテーブル内のエントリ数が２ｎになるため、一般的には４ビットテーブル程度が適切である。
部分テーブル化することにより、各段の部分テーブルでの検索は有限固定エントリ数でのサーチになる。また、検索対象キーが固定ビット幅であれば、エントリを示すバイナリビットツリー２４は固定長となり、それを表現する部分テーブル２５の段数は予め定まった有限固定段数となる。このため、一致検索においてはバックトラックの発生しないバイナリビットツリー検索となる。したがって、検索に要するワースト時間はエントリ数にかかわらず一定時間となる。
図７（ａ）に、バイナリビットツリー２４が部分テーブル化されている論理イメージを示す。図７（ｂ）は、部分テーブル（パターンテーブル）２５を汎用テーブル２７として構成した様子を示してある。この汎用テーブル２７では、１エントリはビットパターンの値２７ａと、それに対応する下位テーブル２７へのポインタ２７ｂで構成され、それが最大ｎ個あるテーブル構造となる。さらに、図７（ｃ）に、汎用テーブル２７を圧縮したテーブル２８で部分テーブル２５を実現した様子を示してある。この圧縮テーブル２８は、エントリの有効無効を示すビットフラグ（マスクデータ）２８ａと下位へのポインタ２８ｂで１エントリが構成される。下位の圧縮テーブル２８へ続くポインタ２８ｂは、圧縮テーブル２８が記憶されているＲＡＭのアドレスなどになり、アドレステーブルを生成する。
汎用テーブル２７と圧縮テーブル２８の違いは、汎用テーブル２７では登録ごとにエントリにビットパターンをセットしていくのに対し、圧縮テーブル２８では、テーブルは固定ビット幅のテーブルであり、ビットパターンを省略している点である。部分テーブル２５が固定ビット幅の場合、ビット幅に対応して上限エントリ数が決まる。したがって、例えば４ビットテーブルの場合、エントリＮｏ０はビットパターン００００、エントリＮｏ１はビットパターン０００１というようにエントリＮｏとビットパターンの関係を一対一に固定できる。したがって、アクティブなエントリＮｏを示すことだけで、部分テーブル２５に含まれる部分エントリ２６を指定することができる。エントリＮｏを示すデータはいくつか考えられるが、図７（ｃ）に示すようにエントリＮｏに対応したビット位置にオンオフのフラグとなるビットを配置したビットパターン（マスクパターン）２８ａはハードウェアで利用しやすい形態の情報である。また、マスクパターン２８ａにより部分エントリの有無を示すことにより、実際の部分エントリのビットパターンを登録する処理および登録するためのハードウェアおよびソフトウェアを省略できる。
この部分テーブル２５をマスクパターンを用いた圧縮テーブル２８とした最適化により、部分テーブル２５をそれに対応する検索対象キーの部分（部分対象キー）と照合するハードウェアが単純化される。４ビットの部分テーブル２５であれば、４ビットの部分エントリ、すなわち、値０から１５までの部分エントリが取りうる値と部分対象キーとの照合を並列に行うハードウェアを採用することにより、照合作業およびハードウェアが単純化される。すなわち、全エントリハードウェア並列照合が可能となり、それが単純化される。また、エントリＮｏとビットパターンの関係が固定でソート済なので、エントリ（部分エントリ）の追加削除は、基本的にはマスクデータ２８ａを更新するだけで実現できる。そして、テーブル内でのＭＩＮ／ＭＡＸサーチはビットパターンの比較なしにエントリＮｏのみでおこなえる。したがって、範囲一致検索において、近似候補となる部分テーブル２５までバックトラックが発生したとしても、その後は、エントリが有効か無効かのフラグ（マスクデータ）２８ａの参照だけでテーブル内におけるＭＩＮ／ＭＡＸサーチは終わることができるので、実質的にはバックトラックが発生しない照合方法ということも可能である。
ＭＩＮ／ＭＡＸサーチとそのバイパス
ＭＩＮ／ＭＡＸサーチの原理
バイナリビットツリーにおけるＭＩＮ／ＭＡＸサーチの原理は以下の通りである。図８（ａ）に、右倒れ近似におけるＭＡＸサーチの概要を示してある。ビット位置（ノード）Ａ１にて、検索対象キー２１に対してエントリ２２がなくなり、右倒れ型範囲検索の照合候補がなくなる。そのため、照合は途中で終了し、近似仮定エントリに対するＭＡＸサーチを開始する。エントリ２２が片方向しかない場合はその方向に辿る。ノードＡ２においては、０方向にしかエントリ２２がないので、それを辿る。次のノードＡ３においては、エントリ２２が０および１の両方向にあるので、大きい方向（０＜１なので１の方向）を優先して辿る。各ノードに対して同様の処理を行い、最下段ビット位置Ａ６まで辿り着き、得られるエントリ２２がＭＡＸエントリ（検索対象キーの値よりも小さくて最大の値をとるエントリであり、検索対象キーに近い最大のエントリ）である。
図８（ｂ）は、左倒れ近似におけるＭＩＮサーチの概要を示してある。左倒れ型範囲検索の場合、同種のロジックで小さな方向（０の方向）を優先して辿り、ＭＩＮエントリ（検索対象キーの値よりも大きくて最小の値をとるエントリであり、検索対象キーに近い最小のエントリ）を取得するＭＩＮサーチをおこなう。
テーブルにおけるＭＩＮ／ＭＡＸサーチ
バイナリビットツリーをテーブル化すると、ＭＩＮ／ＭＡＸサーチのロジックもテーブル対応にしなければならない。図９（ａ）に汎用テーブルでのＭＩＮ／ＭＡＸサーチのうち、右倒れ型近似におけるＭＡＸサーチを示してある。テーブルＡ１にて照合失格（キー値２１と同値のエントリ２２が無い状態）となる。テーブル内で「キー値＞エントリ値」となるエントリの中から、最大値であるエントリ（「キー値＞エントリ値」の中でエントリ値が最もキー値に近いエントリ）を選択し、近似候補エントリ２２ｘとする。近似候補２２ｘの指す次テーブルが近似仮定エントリ２２ｙである。そして、その近似仮定エントリ２２ｙ以下に対するＭＡＸサーチを開始する。
まず、近似仮定エントリ２２ｙのテーブルであるテーブルＡ２に移る。テーブルＡ２内のエントリを調べ、最大値をもつエントリを選択する。そのエントリの次段テーブルに移り、以下、最大値を持つエントリ選択と下段への移動を繰り返し、最下段まで到達する。最下段でも最大値エントリを選択し、最大値エントリの登録データに辿りつき、ＭＡＸエントリを出力する。図９（ｂ）は、左倒れ型範囲検索の場合であり、同種のロジックでＭＩＮサーチをおこなう。
図１０に、圧縮テーブル２８のＭＩＮ／ＭＡＸサーチのロジックのうち、右倒れ型近似に対応したＭＡＸサーチのプロセスを示してある。まず、圧縮テーブル２８ではマスクデータ２８ａにおいてエントリＮｏとビットパターンの関係が固定であり、ソート済の状態に等しいので、テーブル内での最小値／最大値エントリの選択はビットパターンの比較なしに、マスクデータ２８ａの対応するエントリＮｏにフラグを立てるだけで行うことができる。つまり、有効無効フラグの参照だけでテーブル内における最小値／最大値エントリの選択は終わる。そして、追加したエントリＮｏに対応するアドレステーブル２８ｂのレコードにそのエントリＮｏに続く圧縮テーブル２８のアドレスを記録することにより圧縮テーブル２８をリストで繋ぐことが可能となり、リニアアドレス上のテーブルでなくてもバイナリビットツリーの多段階検索が可能となる。
右倒れ型範囲検索におけるＭＡＸサーチを説明する。先の照合段階において、テーブルＡ１のマスクデータ２８ａにおいて照合候補がなくなり、照合が終了すると、次の現段階においては、近似仮定エントリに対するＭＡＸサーチを開始する。近似候補の選択は、テーブルＡ１のマスクデータ２８ａの内で「キー値＞エントリ値」となるエントリのうち最大値をもつエントリ（最大のエントリ）を選択することでおこなう。ビットマップによる圧縮テーブルなので、「エントリＮｏ＝エントリ値」であり、上記条件に合致するエントリはキー値エントリから左にみていって最初に１が立っているエントリが近似候補２２ｘである。この例では照合が終了したのと同じテーブルＡ１に近似候補エントリ２２ｘが存在する。近似候補エントリ２２ｘの指す次テーブルが近似仮定エントリ２２ｙである。
これにより、次の照合段階では、近似仮定エントリ２２ｙであるテーブルＡ２に移動する。テーブルＡ２内で最大値をもつエントリを選択する。「エントリＮｏ＝エントリ値」なので、右端からみて最初に１の立つエントリが最大値エントリ２２ｍである。最大値エントリ２２ｍの指す次段テーブルＡ３に移り、エントリ選択と下段への移動を繰り返し、最下段エントリまで到達する。最下段でも同様に最大値エントリ２２ｍを選択し、最下段での最大値エントリ２２ｍの指すデータに到達する。これにより最大のエントリを得ることができる。左倒れ型範囲検索では、同種のロジックでＭＩＮサーチを行う。
ＭＩＮ／ＭＡＸサーチのバイパス
圧縮テーブル２８ではエントリＮｏとビットパターンの関係が固定でソート済なので、ＭＩＮ／ＭＡＸサーチはビットパターンの比較なしにエントリＮｏのみでおこなえる。有効無効フラグの参照だけでテーブル内におけるＭＩＮ／ＭＡＸサーチは終わる。しかしながら、エントリの登録・削除がない限り、下位の部分テーブル２８を辿って到達する最終的な最大のエントリあるいは最小のエントリは不変である。したがって、毎回、ＭＩＮ／ＭＡＸサーチをするのは無駄であり、図１１（ａ）および図１１（ｂ）に示すように、各テーブルにバイパスＴＡＧ（ＢＰ）を設け、そのテーブル２８以下でＭＩＮ／ＭＡＸサーチした結果、すなわち、最大なエントリあるいは最小なエントリを記録しておくことによりＭＩＮ／ＭＡＸサーチを省略することが可能となる。これにより、最大のエントリ、あるいは最小のエントリを検索するプロセスは、近似仮定した圧縮テーブル２８にアクセスするだけのプロセスに代わり、検索時間は大幅に短縮される。
したがって、近似仮定したエントリを近似確定させる際、近似仮定エントリ２２ｙの指すアドレステーブル２８ｂのアドレス（以降においてはＴＡＧ（次段テーブルを指すＴＡＧ）と称することがある）を使い、次段テーブルのバイパスＴＡＧ（ＢＰ）により近似確定する最大または最小のエントリを決定することができる。範囲検索の論理として右倒れ型でおこなう場合はバイパスＢＰには最大のエントリが記録され、左倒れ型でおこなう場合はバイパスＢＰには最少のエントリが記録される。複数の範囲検索系があった場合、照合のロジック構成としては右倒れ型か左倒れ型かのいずれかに統一する。バイパスＢＰに両値を記録することにより、テーブルに記録する情報量の増加、照合用のロジックの追加、エントリの登録削除用のロジックの追加などが発生するが、左右両方式を混在させることも可能である。
さらに、バイパスＢＰを記録することにより、ＭＩＮ／ＭＡＸサーチにおけるバックトラックの遅延も解消することができる。ＭＩＮ／ＭＡＸサーチとは、近似候補エントリ群から近似結果を確定させるための検索である。ところで、右倒れ型であっても左倒れ型であっても、テーブル型ビットツリーの場合、照合継続中に毎段で近似候補が更新されていくわけではない。ある段で近似候補が更新され、その後、数段の近似候補更新を伴わない照合継続があり、下段のほうで照合失敗となった段階で、上段で更新された近似候補を使い、結果を確定するためにさらにＭＩＮ／ＭＡＸサーチをおこなう必要がある場合がある。
図１２に一例を示してある。上位のテーブル２８から下位のテーブル２８に照合継続し、照合失格となった段階で、近似仮定に基づき上位のテーブル２８に戻り、別ロジック（ＭＩＮ／ＭＡＸサーチ）で再びツリー状にテーブル２８を降りていくことになる。これはバックトラックということができる。照合失敗によりＭＩＮ／ＭＡＸサーチでツリーを辿るロジックが変わるので、ＭＩＮ／ＭＡＸサーチでは再度のバックトラックは発生しないが、照合失敗位置と近似仮定位置が離れている場合、バックトラックと目されるＭＩＮ／ＭＡＸサーチのコストは重い。
これに対し、図１３に示すように、バイパスＢＰを記録しておけば、一度バイパスＢＰの値を読むことにより、最大または最小のエントリが確定するため、実質的にはサーチプロセスとなるような時間の係る処理は不要となり、実質的にはバックトラックの発生を抑えられる。図１３は、右倒れ型の例であり、テーブルＡ１で近似仮定更新・照合継続となり、テーブルＡ２では近似仮定更新無し・照合継続となり、テーブルＡ３で近似仮定更新無し・照合失敗となる。このとき、テーブルＡ３での照合失敗で近似確定のため、ＭＡＸサーチに移行するが、最新の近似仮定はテーブルＡ２′であるため、テーブルＡ２′にアクセスする。そして、テーブルＡ２′にバイパスＢＰが記録されていれば、それにより直接、最下段の最大のエントリまで移動でき、照合過程は終了する。
検索装置、分類装置およびバイナリビットツリー照合器
図１４に検索装置１０の概要を示してある。この検索装置１０は、各種の検索を行う分類器１５を複数備えており、各種の検索を並列に行えるようになっている。したがって、検索装置１０には、複数の分類器１５により実現される複数の分類過程を有する分類方法が実装されている。１つの分類器１５により各種の検索をシーケンシャルに行うことも可能であり、本発明の検索装置はこれに限定されるものではない。
この検索装置１０に対しては上流のアプリケーション、たとえば、図１に示した制御ユニット１２、８ｃ、７ｃ、６ｃから検索対象ビットストリングであるキー２１と、その検索種別を示すルートＴＡＧ３１と、検索ジョブを識別する情報（ＩＤ）３２とが供給される。たとえば、ＳＰＤ検索機能８であれば、１つのパケットデータφｐを管理するために、ソースＩＰ、デスティネーションＩＰ、ソースポート、デスティネーションポートおよびプロトコルを示すビットストリングを少なくとも照合して、それらの全てを満足するルールを検索する必要がある。このような場合は、ソースＩＰ、デスティネーションＩＰ、ソースポート、デスティネーションポートおよびプロトコルを示すビットストリングをそれぞれ異なる分類装置１５に対して検索対象ビットストリング（検索対象キー）２１として供給し、それぞれのビットストリングと比較するビットパターン（エントリ）２２が登録されたバイナリビットツリーの最上位の部分テーブル２５（２８）を示すメモリ１１あるいは８ｍのアドレスをルートタグ３１として供給する。これにより各々の分類装置１５においては、供給された検索対象キー２１を、その検索対象キー２１の範囲検索に用いるべく予め登録されているビットパターン（エントリ）２２と照合することができる。
さらに、検索装置１０は、複数の分類装置１５に供給された検索対象キー２１の照合結果により得られるルールの論理積を求めて最終結果を取得するための論理演算装置（ＡＮＤ化器）１９を備えている。したがって、この検索装置１０は、複数の分類器１５により実現される複数の分類過程と、ＡＮＤ化器１９により実現される論理演算過程とを有する分類方法が実装されている。各々の分類装置１５における検索処理時間は、各々の分類装置１５に供給される検索対象キー２１のビット長により異なり、さらに、照合過程において上位の部分テーブル２８に戻るバックトラックが発生するか否かによっても異なる。したがって、分類装置１５から同期して検索結果が出力されない可能性がある。このため、分類装置１５に供給される検索対象キー２１にＩＤ３２を付加することにより、論理演算装置１９における論理演算を可能とし、さらに、パケット管理装置３において管理されるパケットデータφｐとの関連付けも可能なようにしている。
本例の分類装置１５は、パイプライン状に接続された複数の照合装置５０を備えており、これらの照合装置５０の間ではデータパケットとして標準化された照合継続情報（入出力パラメータ）３３が伝達され、パケット駆動される構成となっている。したがって、分類装置１５は、複数の照合装置５０により形成されたデータフローを備えており、複数の照合段階を備えた分類過程を有する分類方法が実装されている。また、それぞれの照合装置５０が各照合段階の処理を行うので、複数の照合段階により多段階の照合を行う照合方法が分類装置１５に実装されているということもできる。この分類装置１５は、クロック同期のハードウェアで実現することも可能であるし、データフロー型のハードウェアで実現することも可能である。分類装置１５は、さらに、圧縮された部分テーブル２８が記録されたメモリ１１と照合装置５０との間の入出力速度を向上するためのバースト転送バッファ１６も備えている。
以下で説明する検索装置１０、分類装置１５および照合装置５０の構成は、ソフトウェアで実現することも可能であるし、ソフトウェアを主体として部分的にハードウェアを用いて実現することも可能である。しかしながら、実行速度を考慮した場合、できるかぎりハードウェアで実現することが望ましい。本部分テーブル２５あるいは２８を用いた検索方法は、単一、あるいはほぼ単一な構成の照合装置（照合器）５０をパイプライン状に接続することによりビット長の変化に対応でき、また、ルートタグ３１といった検索種別を示す情報が提供されることにより単一な構成の照合装置５０により多種類の検索を実行できるようになっている。したがって、この照合方法は、非常にハードウェア化しやすい照合方法であり、経済的で、処理速度の速い検索装置を提供できる。また、上位のソフトウェアあるいはアプリケーションからは、検索対象キー２１と、検索種別情報３１を提供するだけで、所望の検索を実行できるので、上位のアプリケーションの負荷も非常に小さい。
分類器の構成
図１５に、８個の４ビット型の照合器５０をパイプライン状に繋いで３２ビットの検索対象キー２１に対する検索を行う分類装置１５の概略構成を示してある。この分類装置１５は、複数の照合器５０をハードウェアとして備えており、それらの照合器５０をソフトウェアあるいはハードウェアで接続している構成である。照合継続情報３３に含まれるルートタグ（ＲｏｏｔＴＡＧ）３１および照合タグ（ＮｅｘｔＴＡＧ）３４は、ＳＤＲＡＭメモリ１１の上の圧縮テーブル２８を指すポインタ（アドレス）である。それぞれが照合段階を実行する各照合装置５０は、照合継続情報３３に含まれる検索対象キー２１から順番に４ビットずつを部分対象キー３６として受け取り、ルートタグ３１または照合タグ３４により指定されるテーブル２８からマスクデータ２８ａを読み取り、近似一致による比較を行う。比較によりヒットしたエントリ（部分エントリ）２６に対応する次段の圧縮テーブル２８のポインタ（ＮｅｘｔＴＡＧ）３４を、圧縮テーブル２８のアドレステーブル２８ｂから読み取り、照合継続情報３３に含めて次の照合装置５０に供給する。
検索対象キー２１や照合タグ３４などの照合継続情報３３は、別々に供給されても良い。しかしながら、データパケットとしてまとめて入力することにより、データフロー化しやすい。また、検索対象となる部分対象キー３６は、上位のプログラムにより予め分割された状態で照合装置５０に供給されても良い。しかしながら、検索対象キー２１の値は全ビットが照合継続情報３３に含められ、シフトしながら必要なビット数ずつを部分対象キー３６として使用していくことが望ましい。これは、照合器パイプライン構成の途中でパイプラインステージを逆流（バイパス等によるバックトラック）する可能性があり、検索対象キー２１を照合器５０の外部で切り分けたのでは、パイプラインの進行（クロック）同期で適切なステージ（段階）へ投入していくことができないためである。また、ＳＤＲＡＭ１１に対するアクセスの状態（競合・排他）や、データキャッシュをつけた場合のオンキャッシュかどうか等で各照合装置５０における処理速度は変動する可能性が高い。したがって、照合器パイプラインの進行自体をクロック同期ではなく要求応答型（データフロー型）とした方が処理効率は高く、この点でも、検索対象キー２１を照合継続情報３３に含め、さらに、照合検索情報３３をデータパケット化して次の段階の照合装置５０に供給するメリットがある。
図１６には、分類装置１５の異なる例を示してある。この分類装置１５はＭＡＸ／ＭＩＮサーチを実行する際のバイパス用のバス（ＢＰバス）３９を備えており、照合装置５０は、ＢＰバス３９に出力するインターフェイスを備えている。したがって、この分類装置１５においては、各照合装置５０が非同期でテーブル２８にアクセスする頻度が上昇する。図１５に示したように、各段のテーブル２８を同一のＳＤＲＡＭ１１におくと、パイプラインを構成する各照合器５０のメモリアクセス競合があるため、パイプラインが有効に機能しない。従って、各段のテーブル２８を個別のメモリ１１ａにおき、各照合器５０のメモリアクセスを独立としたほうがパイプラインの有効性が高い。この照合装置パイプラインを備えた分類装置１５では、１つの照合器５０の処理に要する時間（メモリアクセスを含む）を「Ｔ」とし、３２ビットの検索対象キー２１が途切れなく入力されれば、検索のスループットは「Ｔ」（本当は１／Ｔ）となり、レイテンシは「８Ｔ」となる。
照合器５０の構成は、ＳＤＲＡＭ１１を除いて処理時間が一定するので、パイプラインを組みやすい。データキャッシュ制御によりＳＤＲＡＭアクセスを排除する履歴キャッシュ方式や専用ＳＲＡＭ型履歴キャッシュ方式を使えば、ＳＲＡＭ１１に対する実質のアクセス時間を一定化でき、パイプラインをさらに構成しやすい。これに対し、共有型データキャッシュであれば、キャッシュのスループットと全パイプラインステージのスループットの合計が等しいか、あるいは共有型データキャッシュの方がスループットを高くする必要がある。
図１７に、分類装置１５のさらに異なる例を示してある。上記の例では、複数の照合器５０を処理パイプラインとして並べた構成であるが、省リソースを優先した場合は、図１７に示したように、１個の照合器５０を繰り返し使う構成も可能である。この場合、照合器５０からのメモリアクセスはある時点では常に１アクセスとなるので、テーブル２８を全て同一のＳＤＲＡＭ１１に置くことで処理速度の優劣はない。
照合装置の構成
図１８に照合装置５０の構成を示してある。この照合装置５０は、検索対象ビットストリング（検索対象キー）２１を複数ビットの部分対象ビットストリング（部分対象キー）３６に分けて、予め登録された複数の登録ビットパターン（エントリ）２２と多段階で照合するための１つの照合段階を実行する照合装置である。照合装置５０は、照合継続情報３３に含まれるコマンド３７をデコードして照合装置５０における処理を制御するコマンドデコードユニット５１と、検索対象キー２１から、現段階の部分対象キー３６を選択し、その部分対象キー３６が取り得る全ての値と照合する比較ユニット（全照合手段）５２と、メモリ１１からその照合段階の圧縮テーブル２８のマスクデータ２８ａをロードするロードユニット（パターンロード手段）５３とを備えている。ロードユニット５３は、圧縮テーブル２８をメモリ１１からバッファ５９に格納するテーブルロード部５３ａと、バッファ５９に格納された圧縮テーブル２８からマスクデータ２８ａを読み出すマスク読み出し部５３ｂとを備えている。圧縮テーブル２８にマスクデータ２８ａと共に格納されているアドレステーブル２８ｂおよびバイパスデータＢＰは多くの処理で必要になる。このため、本例では圧縮テーブル２８をバッファ５９にロードしている。マスクデータ２８ａは、上述したように、エントリ２２の部分ビットパターン２６であって、先行する段階から得られる照合継続情報３３により決まる、部分対象キー３６に対応する段階（現段階）の部分登録ビットパターン（部分エントリ）２６をフラグ（ビットパターン）により示すものである。
照合装置５０は、さらに、比較ユニット５２における全照合結果とマスクデータ２８ａにより、部分対象キー３６に一致する部分エントリ２６の有無、すなわち一致を含む照合結果を示すことができる判定ユニット５４を備えている。また、照合装置５０は、判定ユニット５４の照合結果により、アドレステーブル２８ｂから、照合により特定された部分エントリ２６に続く次の段階のマスクデータ２８ａのアドレス（タグ（本例では圧縮テーブル２８のアドレス））を照合タグ（照合候補）３４として出力する出力ユニット５５を備えている。この照合装置５０は、一致検索のみではなく範囲検索も行えるように、判定ユニット５４は、部分対象キー３６に値が最も近い最大（右倒れ型近似について記載し、左倒れ型近似については、最大を最小に変更することによりほぼ対応できる）の部分エントリ２６の有無を示すことが可能である。本例の判定ユニット５４は、比較ユニット５２の出力をマスクデータ２８ａによりマスク処理するマスク器（ＶＬＤ、ＶａＬｉＤａｔｉｏｎ）５４ａと、マスク器５４ａの出力から状態を選択する選択器５４ｂとを備えている。
出力ユニット５５は、判定ユニット５４により一致と判断された部分エントリ２６に続く次の段階のマスクデータ２８ａのアドレス（圧縮テーブルのアドレス）を照合タグ３４として出力する。さらに、出力ユニット５５は、判定ユニット５４において、最大の部分エントリ２６が見つかったときは、その最大の部分エントリ２６に続く次の段階のマスクデータ２８ａのアドレス（圧縮テーブル２８のアドレス）を範囲検索のための候補アドレス（候補タグ、近似候補）３５として出力し、照合継続情報３３のパケットデータに保存する。したがって、一致する部分エントリ２６があり照合継続の場合であっても、最大の部分エントリ２６が見つかると範囲検索用の候補タグ３５がパケットデータに保存される。このため、次の照合段階において、一致する部分エントリ２６がなく、照合終了で、さらに、その照合段階では最大の部分エントリ２６がないときに、候補タグ３５を照合タグ３４として照合継続情報３３に出力することが可能となる。この照合タグ３４によりＭＡＸサーチに移行することができる。
さらに、照合装置５０の出力ユニット５４は、ＭＡＸサーチに移行したときに、圧縮テーブル２８からバイパスデータＢＰを読み取って最終照合結果として出力することができる機能も備えている。したがって、出力ユニット５５は、照合状態などを反映したコマンド３７を生成するコマンド更新部５５ａと、照合タグ３４を更新する照合タグ更新部５５ｂと、候補タグ３５を更新する候補タグ更新部５５ｃと、バイパス読み出し出力部５５ｄとを備えている。そして、出力インターフェイス５６からは、出力ユニット５５により更新されるパラメータ３４、３５および３７と、入力された照合継続情報３３に含まれるＩＤ３２と、検索対象キー２１とを含むデータパケットが照合継続情報３３として、パイプラインの下流に位置し、次の段階の照合を行う照合装置５０に供給される。
圧縮テーブル２８にバイパスデータＢＰが設定されていないときは、照合終了を示すコマンド３７を受け取ると、出力ユニット５５の照合タグ更新部５５ｂがマスクデータ２８の最大の部分エントリ２６に続く次の段階のマスクデータのアドレスを照合タグ３４として出力し、ＭＡＸサーチが継続される照合装置５０のパイプラインを制御する。
さらに、本例の照合装置５０は、マスクデータ２８ａおよびアドレステーブル２８ｂを更新することにより、エントリを追加または削除する更新ユニット６０と、更新されたテーブル２８をメモリ１１に書き込むテーブルライトユニット６１とを備えている。更新ユニット６０の動作については、以下でさらに詳しく説明する。
照合装置における処理
図１９に、照合装置５０における照合処理（照合方法）５０ｍをフローチャートにより示してある。この照合装置５０は、各々の照合装置５０が１つの照合段階を受け持ち、図１９に示す照合処理５０ｍは１つの照合段階（現段階）の処理を示している。ステップ１０１で、コマンド３７がエントリの追加削除を示しているときは、ステップ１０２で、更新ユニット６０によりテーブル２８を更新する（更新工程および更新過程）。ステップ１０３で、コマンド３７から、現段階に先行する前段階の照合が近似で照合終了していることが判明すると、以下に説明する現段階の照合のステップ１０４、１０５および１０６をバイパスし、出力ステップ１１０に含まれるステップ１１１でバイパス読み出し出力部５５ｄによりバイパスデータＢＰを図１６に示したバイパスバス３９に出力して照合を終了する（バイパスする工程）。
コマンド３７より、現段階の照合を継続する場合は、ステップ１０４において、比較ユニット５２により現段階の部分対象キー３６を比較する（全照合工程）。ステップ１０５において、ロードユニット５３により現段階のマスクデータ２８ａをロードし（パターンロード工程）、ステップ１０６において、判定ユニット（ＶＬＤユニット）５４により現段階の照合結果を得る（判定工程またはＶＬＤ工程）。そして、ステップ１０７において、一致する部分エントリ２６があれば照合継続なので、ステップ１０９において候補タグ更新部５５ｃにより候補タグ３５を更新し（候補アドレス記憶工程）、出力過程１１０のステップ１１４で照合タグ更新部５５ｂにより照合タグ３４を更新し、コマンド３７をコマンド更新部５５ａにより照合継続にセットして出力する（出力工程）。
一致する部分エントリ２６がない場合は原則としては照合終了である。しかしながら、ステップ１０８で、近似の部分エントリ（最大の部分エントリ）２６がある場合は、出力ステップ１１０に含まれるステップ１１３において、照合タグ更新部５５ｂが近似の部分エントリ２６に続くタグアドレスを照合タグ３４にセットして出力する。ステップ１０８で、近似の部分エントリ２６がない場合は、出力ステップ１１０に含まれるステップ１１２において、照合タグ更新部５５ｂが、上流の照合段階で得られ、照合継続情報３３に含まれて伝達された候補タグ３５を照合タグ３４にセットしてバイパスバス３９に出力する。これにより、ＭＡＸサーチが開始される。
これらの工程を備えた照合方法５０ｍでは、実際には、独立して処理できる工程は並列に実行される。たとえば、コマンドを解釈する工程１０１および１０２、部分対象キー３６を比較する工程１０４と、マスクデータをロードする工程１０５とは独立した処理であるので、並列に実行できる。テーブルをロードするフェーズはＳＤＲＡＭアクセスであるため時間がかかり、比較フェーズなどとは並列に実行することによりメモリアクセスのオーバヘッドを緩和できる。したがって、読み出し速度が非常に速い特殊なメモリを用いなくても、本例の照合装置５０においては十分な検索スピードを確保できる。また、出力ステップ１１０において異なるパラメータを更新するフェーズも相互独立であり、コマンド更新部５５ａ、照合タグ更新部５５ｂおよび候補タグ更新部５５ｃも独立しており、これらにおける処理は並列に実行可能である。したがって、図２０に示すように、通常の照合モードの場合、照合装置５０においては、テーブルロード５３と比較５２などが並列で実行される。
本例のロードユニット５３は、照合タグ３４の指示により、ＳＤＲＡＭメモリ１１の上の圧縮テーブル２８を照合器５０の内部のテーブルバッファ５９にロードする。圧縮テーブル２８のデータは、必ずしも全て利用されるものではないが、少なくともマスクデータ２８ａと、アドレステーブル２８ｂの１個あるいは２個のアドレス（タグ）の値は参照される。したがって、各照合器５０において共有資源であるＳＤＲＡＭ１１に対し、２〜３回のリードが発生するよりは、バーストリードにより１回だけＳＤＲＡＭ１１からリードし、照合器内部で必要値を読み出すほうが効率的である。上述したように、ＳＤＲＡＭからバーストリードするには時間がかかるため、このテーブルロードのフェーズからマスクデータ読み出しフェーズは、比較フェーズと並列に実行される。詳しくは後述するが、ＳＤＲＡＭ１１との間にデータキャッシュを置いた場合、照合器５０に内蔵のテーブルバッファは不要であるが、その場合でも、共有資源たるデータキャッシュへのアクセスを複数回おこなうよりも、やはりローカルにコピーしてアクセスするほうが効率的な場合がありえる。
比較ユニットの構成
図２１に、比較ユニット５２をさらに詳しく示してある。この照合装置５０においては、部分対象キー３６のビット数が固定なので１テーブルのエントリ数は固定である。また、圧縮テーブルなのでエントリとビットパターンの対応も固定である。したがって、部分対象キー３６の値と各エントリとの比較は固定論理回路により構成可能である。
この照合装置５０は４ビットの比較を行う。このため、１６個の比較器ＣＭＰ０からＣＭＰ１５を備えており、比較器ＣＭＰ０（エントリＮｏ．０）は入力検索対象キー３６と値０との比較、比較器ＣＭＰ１（エントリＮｏ．１）は入力検索対象キー３６と値１との比較、そして、比較器ＣＭＰ１５（エントリＮｏ．１５）は入力検索対象キー３６と値１５との比較を行う。このように各比較器ＣＭＰｉで、入力値ｘと固有値ｉとの比較をおこなう。つまり、比較器ＣＭＰｉ（ｉは０〜１５）はそれぞれのエントリに固有の論理回路である。
比較ユニット５２は、比較器の代わりにルックアップテーブルＬＵＴを用いたハードウェアなどの他のハードウェアで構成することも可能であり、本例に限定されるものではない。
図２２に示すように、各比較器ＣＭＰｉは入力値ｘとして対象キー４ビットを取り、それぞれのＣＭＰｉは、それぞれの固有値ｉとの比較を行う。各ＣＭＰｉは、入力値ｘと固有値ｉとの比較結果「＜」「＝」「＞」の３値（２ビット）をＣＭＰｉ出力として出力する。各比較器ＣＭＰｉは、この比較論理に基づき、比較結果を出力するよう比較器毎に論理圧縮され、最適化された回路で構成される。
図２３は、比較ユニット５２の異なる例を示している。並列に実行されるテーブルロードフェーズ〜マスク読み出しフェーズに時間がかかることを考えれば、必ずしも上記のように１６個の比較器ＣＭＰｉを並列する必要はない場合がある。図２３は、１個の比較器ＣＭＰｘにより比較動作を１６回繰り返す構成である。他の処理との処理時間のバランスが取れるのであればハードウェアを削減できる。もちろん、テーブルロードフェーズ〜マスク読み出しフェーズの所要時間との兼ね合いで、比較ユニットに使用される比較器ＣＭＰｉの必要個数は１個に限定されることはなく、２個以上であっても良い。
判定ユニットの構成
図２４に、判定ユニット５４のマスク器５４ａの構成を示してある。マスクフェーズではマスク器ＶＬＤ５４ａにより無効エントリのマスク処理がおこなわれる。各エントリをマスクするマスクエレメント５４ｅは、各エントリに対し同一の論理回路である。マスクデータ２８ａは、実際のエントリ（部分エントリ）２６の有効・無効を各１ビットのマスク値で表現したものである。マスクデータ２８ａにより、比較フェーズでの各エントリ（仮想的なエントリ）の比較結果から、無効エントリの比較結果を取り除き、実際に登録されている各エントリ２６との比較結果に変換する。
各マスクエレメント５４ｅは、図２５に示すように、比較フェーズのＣＭＰｉ出力（２ビット）とマスク値（１ビット）の合計３ビットを入力とし、「×」「＜」「＝」「＞」の４値（２ビット）を出力とする。ここで、「×」は無効エントリ、「＜」「＝」「＞」は有効エントリである。
図２６から図２８に、判定ユニット５４の選択回路５４ｂの選択論理を示してある。マスクフェーズ後の各エントリのＶＬＤ出力は、「×」（無効）、「＜」（キー３６＜エントリ２６）、「＝」（キー３６＝エントリ２６）、「＞」（キー３６＝エントリ２６）の４状態である。選択フェーズでは、これらのＶＬＤ出力の中から完全一致検索、範囲一致検索の照合結果を得て、次段へ繋がるエントリを選択する。図２６に示した選択論理は、完全一致検索の選択論理であり、マスク器ＶＬＤ出力が「０１」となるエントリを選択する。完全一致を示す出力関数Ｇｆ（ｉ）、出力Ｇｆ（ｉ）が１となるエントリがあったかどうかを意味する出力関数Ｓｆ、完全一致のエントリを示す関数Ｎｆは以下の通りである。
2004032435.tif 000003
図２６に示したように、ＶＬＤ出力が「０１」のエントリのみの出力Ｇｆ（ｉ）（完全一致を示す出力）が「１」となる。したがって、出力Ｇｆ（ｉ）が１となったエントリＮｏを取得することにより、完全一致のエントリＮｆを得ることができる。バイナリビットツリー方式ではエントリとしての重複登録はありえない。従って、Ｇｆ（ｉ）の１６出力のうち、完全一致エントリがあれば、唯一であることは保証される。出力Ｇｆ（ｉ）による「＝」の選択は範囲検索においても照合継続処理で使用する。
図２７（ａ）に右倒れ一致検索型の範囲検索の照合継続選択論理を示し、図２７（ｂ）および図２７（ｃ）に、中間出力と漸化式により近似候補の出力が得られる論理を示してある。また、図２８（ａ）に左倒れ一致検索型の範囲検索の照合継続選択論理を示し、図２８（ｂ）および図２８（ｃ）に、中間出力と漸化式により近似候補の出力が得られる論理を示してある。右倒れ一致検索の場合の近似候補を示す出力Ｇｒ（ｉ）、中間出力Ｆｒ（ｉ）、漸化式Ｈｒ（ｉ）、近似候補のエントリＮｏを示す出力Ｎｒ、出力Ｇｒ（ｉ）が「１」となるエントリの有無を意味する出力Ｓｒは以下の通りである。
2004032435.tif 000004
また、左倒れ一致検索の場合の近似候補を示す出力Ｇｌ（ｉ）、中間出力Ｆｌ（ｉ）、漸化式Ｈｌ（ｉ）、近似候補のエントリＮｏを示す出力Ｎｌ、出力Ｇｌ（ｉ）が「１」となるエントリの有無を意味する出力Ｓｌは以下の通りである。
2004032435.tif 000005
範囲検索の場合、照合継続は完全一致同様の「キー３６＝エントリ２６」の選択であり、照合終了の選択は、範囲検索を右倒れ一致型でおこなうのであれば「キー３６＞エントリ２６」となる最大エントリを選択する。左倒れ一致型であれば、「キー３６＜エントリ２６」となる最小エントリを選択する。したがって、右倒れ一致の場合はＶＬＤ出力が「１１」のエントリのみの中間出力Ｆｒ（ｉ）が「１」となり、左倒れ一致の場合はＶＬＤ出力が「１０」のエントリのみが出力Ｆｌ（ｉ）が「１」となる。
そして、範囲検索において、近似候補を示す出力Ｇｒ（ｉ）では、出力Ｆｒ（ｉ）が「１」のエントリのうち、最大値のエントリ（エントリ番号が最大のエントリ）のみが「１」となり、その近似候補のエントリＮｏを示す出力Ｎｒが決定する。
同様に左倒れ一致型の場合は、出力Ｇｌ（ｉ）では、出力Ｆｌ（ｉ）が「１」のエントリのうち、最小値のエントリ（エントリ番号が最小のエントリ）のみが「１」となり、近似候補となるエントリＮｏを示す出力Ｎ１が決定する。
図２９に、右倒れ一致型の場合の出力の変化を示してある。図２９（ａ）は比較フェーズ後のＣＭＰｉ出力であり、図２９（ｂ）は、テーブルより読み出したマスクデータ２８ａである。図２９（ｃ）はＶＬＤ出力を示し、ビット毎の（ａ）×（ｂ）となる。図２９（ｄ）は「キー値＞エントリ値」となるエントリ群の抽出（中間出力）Ｆｒであり、図２９（ｅ）の中間出力Ｈｒは、出力Ｆｒから右エッジ（「キー値＞エントリ値」となる最大エントリ）を抽出したものである。図２９（ｆ）は、最終出力Ｇｒであり、出力Ｈｒを利用し、「キー値＞エントリ値」となる最大エントリのみを出力する。これを見てもＧｒ（ｉ）が「１」となるエントリ、すなわち近似候補となるエントリは１箇所であることは明らかである。
図２９（ｇ）は一致検索の出力Ｇｆを示しており、ＶＬＤ出力をもとに「キー値＝エントリ値（０１）」となる一致エントリを抽出している。この照合方法においては、テーブル２８への重複登録がない構造なので、この一致エントリの唯一性は自明である。出力Ｇｒでも出力Ｇｆでも、演算の結果、該当エントリは存在しないか唯一存在のいずれかとなる。
図３０（ａ）から図３０（ｇ）に、左倒れ一致型の場合の出力変化を示してある。右倒れ一致型の場合と同様にＧｌの１６出力のうち、Ｇｌ（ｉ）が「１」となる近似候補のエントリは唯一であることは保証される。
出力ユニットの構成
出力ユニット５５においては、判定ユニット５４から得られる上記の照合結果に基づいて各パラメータを更新する。照合タグ更新部５４ｂにおいては、選択回路５４ｂにより得られるエントリＮｏ（出力Ｎｆ）に従い照合タグ３４を更新する。選択回路５４ｂより得られる出力Ｓｆを見て、出力Ｓｆが「０」であれば更新はおこなわない。照合継続となるエントリがなく候補が確定するからである。出力Ｓｆが「１」であれば、照合器５０にロード済みの現段階の圧縮テーブル２８のアドレステーブル２８ｂから、エントリＮｆに対応するタグ情報（アドレス）を読み出し、照合タグ３４を更新する。圧縮テーブル２８においては、「ワード位置＋０」がマスクデータ２８ａであり、「ワード位置＋１」からタグ情報２８ｂが記録されている。
候補タグ更新部５５ｃにおいては、選択回路５４ｂにより得られるエントリＮｏ（出力Ｎｒ）に従い候補タグ３５を更新する。候補更新情報である出力Ｓｒを見て、出力Ｓｒが「０」であれば更新はおこなわない。新規候補となるエントリがないからである。候補更新情報Ｓｒが「１」であれば、照合器５０にロード済みの現段階の圧縮テーブルから、エントリＮｒに対応するタグ情報を読み出し、候補タグ３５を更新する。ここで候補タグ情報３５には、タグ情報だけでなく、照合段階を示す候補段階情報も記録することが有効である。この候補段階情報は、候補タグに対応するテーブル段位置に設定する。つまり、候補タグがどのテーブル段であるかを示す情報である。この候補段階情報は、パイプラインが照合段数でフィックスされている分類装置１５においては、候補確定後のバイパス処理で必要となるものである。
タグアドレスからテーブル段位置が一意に決定できるようにテーブル２８が配置されている場合は、候補段階情報は候補タグ情報に含まれるため、別処理は不要である。そうではない場合、照合器５０は自分がどのテーブル段数の処理を担当するのかの情報を保持し、その情報に従い、次段の情報を候補段階情報として候補タグ情報３５の中にセットする。照合器５０をパイプライン状に接続して利用する場合、テーブル段位置とはつまり照合器ＩＤであるので、自器ＩＤが分かり、自器に対しパイプライン次段にあたる照合器ＩＤが分かればよい。パイプラインの次段の照合器との関係は固定なので、照合器ＩＤは、照合器の初期化時に定めればよい。次段の照合器ＩＤを使用するよりは、テーブルのタグアドレスに照合段階ＩＤを含めてしまうほうが簡素である。データキャッシュを用い、データキャッシュのコントロールをおこなう場合、テーブルは段位置別にグループ化されたアドレスとなるので、それを流用できる。
コマンド更新部５５ａは、選択回路５４ｂにより得られる照合継続情報である出力Ｓｆに従い、次段に供給するコマンド３７を更新する。照合継続情報である出力Ｓｆが「０」であれば、照合継続がなくなり、候補が確定したことを意味するする。したがって、「ＣＭＤ＝ＭＡＴＣＨＲＤＢＰ」を出力する。これにより、次段の照合装置５０では候補タグ３５と一致している照合タグ情報３４によるバイパス処理が行われ最終結果が出力される。照合継続情報Ｓｆが「１」であれば、照合継続であるので、「ＣＭＤ＝ＭＡＴＣＨＥＸＥＣ」を出力する。これにより、次段の照合器装置でも照合タグ３４により継続して照合が行われる。
出力ユニット５５は、さらに、コマンド更新部５５ａにより決定した次のコマンド３７の値に従い、出力先を決定する。次コマンド３７が「ＣＭＤ＝ＭＡＴＣＨＥＸＥＣ」であれば、照合は継続するので次段の照合装置５０にパケット化された照合継続情報３３を出力する。次コマンド３７が「ＣＭＤ＝ＭＡＴＣＨＦＩＮ」であれば、バイパス読み出し後の出力処理であるから、出力をスルーとして最終段の小照合器５０の次（出力器）に送り出す。スルー出力が照合器パイプラインを順次通過しながら出力されるのであれば、次の照合器５０に最終出力を送り出す。バス３９を使ってショートカットするのであれば、バス３９に最終出力を出力する。
次コマンド３７が「ＣＭＤ＝ＭＡＴＣＨＲＤＢＰ」であれば、照合は終了し候補が確定するので、候補タグ情報３５によるバイパス処理をおこない、検索結果を決定する。この際、候補タグ情報３５は必ずしも次段テーブルを指しているわけではなく、それ以前の段を指している場合がありうる。したがって、次段の照合装置５０に出力できるとは限らず、候補段階情報により候補タグを扱える段階の照合装置５０を特定し、照合継続情報３３を出力する。
図３１にコマンド３７の一覧を示してある。なお、これは完全一致検索、１次元範囲検索に加え、後述する登録・削除も含めたものである。
バイパス処理とショートカット処理
図３２に、図１６に示した分類装置１５においてバックトラックのあるバイパス処理を実行している様子を示してある。この分類装置１５においては、バイパス用のバス３９を備えており、バス３９に照合継続情報３３を出力することによりバックトラックを発生させている。図１６に示した分類装置１５はメモリアクセスタイムを改善するためにメモリ分離型にしている。このため、あるタグアドレスの指すテーブル２８は、それに対応する段階の照合装置５０からしかアクセスできない。ところが、バイパス処理移行（候補確定）時に得られる候補タグ情報３５は、照合器パイプライン上の次段とは無関係に、自器より前のいずれかの照合器５０に属するものである。従って、バイパスバス３９により候補タグ３５に従って処理パイプラインを逆行できるようにしている。
図３３に、図１５に示したメモリ共用型の照合器パイプラインを備えた分類装置１５においてバイパス処理を実行する様子を示してある。メモリ共用型の照合器パイプラインを備えた分類装置１５の場合、全ての照合器５０がメモリ１１に格納された任意のテーブル２８にアクセスできるので、バックトラック用のバイパスバスは必要ない。メモリ共用型の照合器パイプラインでは、次段の照合器５０がバイパス処理をおこなう。したがって、最終段での次段のバイパス処理発生に対応するため、最終段の照合器５０の次にバイパス専用のバイパス処理器５８を設ける。Ｆ番目の照合器５０で照合失敗、すなわち、Ａ〜Ｆ番目の照合器５０のうち最後に更新された候補が確定することにより次段で候補タグバイパス処理が発生した場合、次のＧ番目の照合器５０がバイパス処理をおこなう。Ｇ番目の照合器５０は本来、ある段のテーブル２８の処理パイプラインを構成しているが、メモリ共用型のため、任意の段のテーブル２８にアクセスできる。従って、Ｆ番目の照合器５０で照合失敗し、候補確定が発生し、Ｇ番目の照合器５０にてバイパス処理をおこなう場合、テーブルＢ〜Ｇのどの位置の候補であっても、そのテーブルにアクセス可能である。
バイパス処理が完了し結果タグ情報（最終照合結果）が得られて以降の照合器５０は、結果タグ情報のスルーのみを行う。最終段のＧ番目の照合器５０では、照合継続が検索成功（完全一致エントリ）を意味し、照合失敗がテーブルＢ〜Ｇあるいは結果タグのいずれかを指す候補タグが得られる事を意味する。Ｇ番目の照合器５０で照合継続により検索成功の場合、照合器５０から出力されるタグ情報は結果タグ情報であり、それを受けた最終段バイパス処理器５８では、検索終了としてステータスだけを更新し、バイパス処理は不要である。
一方、Ｇ番目の照合器５０で照合失敗により候補確定の場合、候補タグ情報３５がテーブルＢ〜Ｇのいずれかを指すタグ情報である可能性がある。したがって、バイパス処理器５８はバイパス処理を行い、候補タグ情報３５の指すエントリからテーブル２８にアクセスしてバイパス値（ＢＰ）を読み取り、検索終了ステータスにする。Ｇ番目の照合器５０で候補確定であり、候補タグ情報がＧ番目の照合器５０で更新された場合は、テーブルＧに記されたタグが結果タグ情報となる。このため、更新された候補タグ情報は結果タグ情報、すなわち最終照合結果となっている。従って、バイパス処理器５８では「ステータス＝検索完了」にするだけで、バイパス処理は不要である。
以上まとめると、バイパス処理器５８は入力が結果タグ情報であればスルーする。そうでない場合は、テーブルＢ〜Ｇのいずれかを指すタグ情報が得られるので、バイパス処理器５０はバイパス処理をおこなう。結果タグ情報か否かの識別は、タグアドレスの上位ビットを識別用の情報として使うか、パイプラインを流れるデータに情報を付与することで行うことができる。
図１７に示した繰り返し型の分類装置１５の場合は、全ての照合器が任意のテーブル２８にアクセスできるので上記と同様にバイパス用のバスは必要ない。さらに、繰り返し型の場合、制御用のカウンタ値を、バイパス処理を意味する値にし、繰り返し処理の一環として自器にてバイパス処理をおこなうことができるので、バイパス処理器５８も不要である。
ところで、バイパス処理にて得られるタグ情報は最終結果であり、バイパス処理以降の照合器パイプラインはスルーしてパイプライン最終段まで進み分類装置１５の出力となる。また、完全一致検索での照合不一致（検索失敗）あるいは範囲検索での照合不一致または候補なし（検索失敗）の場合も同じく、検索失敗のステータスを持って自器以降の照合器パイプラインをスルーしていく。バイパス処理のためのバックトラックがなければ、分類装置１５において、検索対象キー２１を入力した順番と、それの照合結果が出力される順番とが保障されるが、バイパス処理のためのバックトラックを許容するので、入力の順番と出力の順番が同一であることは保障されない。このため、検索対象キー２１にＩＤ３２をセットにして供給するようにしている。したがって、スルーする場合も、図３４に示すように、照合器パイプラインをスルーで進んでいく必要はなく、図３５に示すように、バイパス用バス３９を転用して照合器パイプラインをショートカットすることが可能となる。
さらには、ショートカット先は常に最終出力部なので、図３６に示すように、バイパス用バス３９とは別にショートカット用のバス３８を設けてもよい。バイパス発生とほぼ同数ショートカットは発生するため、常に決まった宛先のためにバイパス用バス負荷を高める必要はない。バイパス用バス３９のバイパス処理での利用率が５０％以下であるなら、ショートカットもバイパス用バス３９を使う方が、ハードウェアが増大しないというメリットがある。
メモリ共用型照合器パイプラインを備えた分類装置１５においては、バイパス用バスは不要である。このため、図３７に示すように、ショートカット用のバス３８を新規に設けることが望ましい。繰り返し型の分類装置の場合は、制御用カウンタ値の判定でバイパス処理後は繰り返し終了としておけばよく、ショートカット経路は不要である。
検索テーブルの管理（更新処理）
以下では、照合装置５０のテーブル更新ユニット６０においてエントリ２２を追加あるいは削除する処理（更新工程あるいは更新過程）について説明する。圧縮テーブル２８はマスクデータ２８ａとアドレステーブル２８ｂで構成される。したがって、マスクデータ２８ａにビットあるいはフラグで示された部分エントリを追加したり削除したりするだけで基本的には検索テーブル２８の更新が可能であり、ソーティングや正規化などの複雑な処理は必要ない。このため、検索テーブルの管理は非常に簡略化され、高速に処理される。したがって、エントリの登録や削除といったテーブル２８の管理を、検索対象キー２１の照合処理と並列実行させることができる。つまり、本例の分類装置１５においては、削除（登録）と検索が、照合装置５０がパイプライン状に接続された照合器パイプラインで並列に実行させることが可能となる。ただし、エントリを追加することにより検索テーブルに用意されるバイパス値ＢＰを更新する必要があるケースがあり、その判断に若干の処理が必要になる。新しい検索テーブルを生成するための処理も必要になる。しかしながら、バイパス値ＢＰは、検索テーブル２８にいったん設定すると、照合処理において、近似候補が決定された後の処理をショートカットできる。このため、更新に時間を要しても、検索テーブルの更新時にバイパス値ＢＰを設定しておくことには意味がある。
まず、テーブル２８の管理処理と検索処理が照合器パイプラインにおいて並列に実行される状況を想定すると、照合中の整合性を保つための排他管理が要求される。検索（照合）処理においても、処理対象のテーブル２８を占有すれば整合性保持は容易になる。しかしながら、ツリー上位テーブルにおけるシリアル化がボトルネックとなり、照合処理の並列実行を阻害しかねない。したがって、検索処理においては「排他は確認するが、テーブルは占有しない」アクセスにより検索処理の間の並列性を生かす。それと共に、登録・削除処理の側、すなわちテーブル更新処理では「排他を確認し、さらに、テーブルを占有する」アクセスで整合性も維持する。なお、検索処理と登録（削除）処理の間では、先行する登録（削除）処理の占有に対し後続の検索処理が排他確認の待ちをおこなうことでシリアル化される。
検索処理は上記のように「排他は確認するがテーブルは占有しない」状態で並列に実行される。このため、登録・削除処理との関係では、検索処理は、先行する登録・削除処理に対しては排他管理により追い越しが発生しないようにする。後続する登録・削除処理については、検索処理の上位構造における並列性起因の問題であり、下位構造たる検索処理で対応できるものではないため対処しない。
登録処理は「排他を確認し、テーブルを占有する」状態でシリアル化されテーブル単位で逐次実行される。また、各テーブルのバイパス情報を更新する必要があり、その情報は下位から上位へと伝播するものであるため、登録処理の時に何らかの形で下位から上位への伝播をおこなわねばならない。考えられる方式としては、上位で待機し下位からフィードバックする待ち合わせ方式と、上位から下位に下り、双方向リンクにより下位から上位に戻る方式との２種ある。待ち合わせ方式の場合、何らかの待ち合わせ機構をハードウェア資源で実現しなければならず、その資源量により並列数やテーブル段数等が制約を受けるが、処理速度的には有利である。ハードウェアによる待ち合わせ機構ではなくメモリによる待ち合わせにすることも可能であるが、メモリアクセスが増えるため、処理速度面での有利性がなくなる可能性がある。双方向リンク方式の場合、資源量起因の制約はないものの、１テーブルのメモリ量増加やリンク読み出しによるメモリアクセス増加（処理速度に影響）など、メモリ周りに不利な点をかかえる。
待ち合わせ方式による登録処理
図３８に、待ち合わせ方式による登録処理の概要を示してある。この方式では、テーブル化されたバイナリビットツリーを上から下に辿りながら更新する。その際、バイパスＢＰの更新が確定したテーブル２８は「待ちなし（Ｗなし）」で更新処理をおこない、バイパスＢＰが未確定のテーブル２８は各段で「待機中（Ｗあり）」にして待たせておく。新規のテーブル２８ｎを作成する必要がある段階に到達した場合は、新規のテーブル２８ｎを作成した後に、その段階以下の新規なテーブル２８ｎとの連結と、上位で待機中（Ｗあり）（バイパスＢＰの確定待ち）となっているテーブル２８へのフィードバックを並列におこなう。
図３８において、テーブルＡでは追加するエントリ２２の部分エントリ２６は既存（エントリが既存）であり、追加（登録）されるエントリの部分エントリ２６がＭＡＸエントリ（最大のエントリ）ではないとする。この場合、下位のテーブルに対するエントリの登録がどうなっても、このテーブルＡでのバイパスＢＰの値に影響を与えずバイパス値ＢＰを更新する必要はない。従って、「待ちなし（Ｗなし）」でＢＰ更新も不要である。
テーブルＢに追加するエントリ２２の部分エントリ２６は、既存（エントリが既存）であるが、その部分エントリ２６はテーブルＢのＭＡＸエントリに該当するとする。この場合、下位での結果次第でバイパス値ＢＰを更新する必要がありえる。このため、下位が確定するまでは、このテーブルＢのバイパス値ＢＰの更新が必要かどうか確定しないため、下位の更新待ちで「待機する（Ｗあり）」になる。
テーブルＣでは、追加するエントリ２２の部分エントリ２６が新規（エントリが新規）であり、その新規エントリ２６がＭＡＸエントリとする。この場合、このテーブルではバイパス値ＢＰの更新が必要になる。この段階で、バイパス値ＢＰの更新が発生したので、上位のテーブル２８へ通知する。「Ｗあり」状態となっているテーブルＢでは下位からの通知を受けてバイパス値ＢＰを更新し、更に上位の待ちがあればそこへ通知する。この例では、テーブルＡは「Ｗなし」なので上位への通知は不要である。
テーブルＣから下への流れは上記の上位フィードバックと並列に進む。テーブルＣで次段が新規テーブル２８ｎであると判明するので、空テーブル管理キュー６９に要求し、応答としてテーブルＤになるべきテーブルのタグアドレスを受け取る。そして、テーブルＣのマスクデータ２８ａに新しい部分エントリ２６のフラグを追加し、アドレステーブル２８ｂに新しいエントリタグを書き込む。テーブルＤ以降のテーブルは常に新規なので、空テーブル管理キュー６９に対して新たなテーブルのアドレスを要求し、マスクデータ２８ａおよびアドレステーブル２８ｂにデータを書き込む。同時に、バイパス値ＢＰも更新する。
図３９に分類装置１５における照合器パイプラインにおいて、待ち合わせ方式でエントリ２２を登録する構成を示してある。エントリ２２の登録は上位から下位へ照合器パイプラインを進みながら、テーブルを辿っていく。バイパス値ＢＰの更新保留となったら、各照合装置５０に対応する待機管理ユニット６８に必要な情報を記録したパケットを投入し、次段以降に進む。次段へは、直接の上位段となる親テーブルでの「待機有無」の情報が伝えられる。バイパス値ＢＰが確定した照合装置５０においては、親テーブルで「待機有り」なら、上位フィードバック（ＦＢ）を発行する。この上位ＦＢと並列に、下位へのエントリ登録のパイプライン処理はおこなわれていく。上位ＦＢは待機管理ユニット６８で待ち合わせたパケットと合流し、保留していたバイパス値ＢＰを更新する。保留解除によるバイパス値ＢＰを更新する処理とは並列に、必要であれば待機管理ユニット６８から更に上位保留へのフィードバックを行う。
照合装置においてエントリを登録する処理
図４０に、待ち合わせ方式でエントリを登録する処理において、更新処理ユニット６０が動作したときの照合装置５０の制御的な構成を示してある。「ＤＴＡＧ」は結果タグ（登録データＴＡＧ）を示し、「ＴＴＡＧ」はテーブルタグを示し、「ＰＷＦ」は直接の上位段（親テーブル）での待機有無を示すフラグを示す。コマンド「ＡＤＤ」は上位から下位への既存のエントリのタグを辿って伝播される。コマンド「ＡＤＤＮＥＷ」は途中段以降の新規テーブルを確保する。コマンド「ＡＤＤＵＰＤＴ」は上位へのフィードでＢＰの更新を再開する。コマンド「ＡＤＤＷＣＬＲ」は上位で待機している照合装置５０に対するバイパス値ＢＰが不変の通知であり、待機解除に繋がる。
照合継続情報３３と同様の経路で更新用のデータパケットが照合装置５０に伝達される。そして、ロードユニット５３により照合タグ３４で指示されたアドレスのテーブル２８がテーブルバッファ５９にロードされる（ステップ１２０）。コマンドデコーダ５１はコマンド３７をチェックし（ステップ１２１）、コマンド３７は追加「ＡＤＤ」から開始される。まず、ステップ１２２で、マスクを読み出し、ステップ１２３で、キー値とマスク値により次段が新規かどうかを判断する。次段が新規であれば、ステップ１２４で、空きテーブルキュー６９に対してテーブル２８ｎを要求し、応答を待つ間に、ステップ１２５で、マスクデータ２８ａの更新処理をおこなう。マスクデータ２８ａの読み出し値と、追加する部分エントリ２６の値の論理和（ＯＲ）を演算し、追加エントリに該当するビット（フラグ）を１にする。
テーブルキュー６９から空テーブルを確保した応答が得られると、ステップ１２６でその空テーブル２８ｎのアドレスをアドレステーブル２８ｂに書き込み、追加処理を伝播するための出力ＴＴＡＧに空テーブル２８ｎのアドレスをセットする。さらに、ステップ１２７で、出力するコマンドＣＭＤ３７を「ＡＤＤＮＥＷ」にセットする。
コマンド３７が「ＡＤＤ」であり、次段が既存であった場合、ステップ１２８で自テーブル２８のアドレステーブル２８ｂから次段のテーブルアドレスを読み出し、出力ＴＴＡＧにセットする。ステップ１２９で出力するコマンドＣＭＤ３７は入力コマンドと同じく「ＡＤＤ」のままである。
入力コマンド３７が「ＡＤＤＮＥＷ」であった場合、その段のテーブル２８ｎは前段処理により確保された新規テーブルなので、ステップ１３０でテーブル初期化をおこなう。これはマスクデータ２８ａだけの処理でよく、マスク値として該当するエントリビットを１に、他を０にする。初期化以降は、コマンド３７が「ＡＤＤ」で新規エントリであった場合と共通の処理である。エントリの登録を照合装置パイプラインに伝播する過程で、一度、コマンド３７が「ＡＤＤＮＥＷ」、すなわち新規エントリになれば、それ以降の照合装置５０に供給されるコマンド３７は常に「ＡＤＤＮＥＷ」であり、上記の処理が繰り返される。また、上位のテーブル２８にフィードバックされるバイパス値ＢＰを更新する処理については、コマンド３７が「ＡＤＤＮＥＷ」の場合は常におこなう。
コマンド３７が「ＡＤＤ」の場合、すなわち、現段階のテーブル２８は既存のテーブルである場合は、ステップ１３１で、エントリの位置によって判断する。コマンド３７が「ＡＤＤ」で、該当（新規）のエントリ２６が新規（次段ＴＢＬが新規）のエントリ２２の部分エントリで、それが最大エントリであった場合（ＭＡＸエントリ更新）、バイパス値ＢＰは更新が確定する。コマンド３７が「ＡＤＤ」で該当（新規）のエントリ２６が新規のエントリ２２の部分エントリで、最大エントリではない場合、バイパス値ＢＰは不変で確定する。コマンド３７が「ＡＤＤ」で該当エントリ２６が既存で最大エントリではない場合、バイパス値ＢＰは不変で確定する。バイパス値ＢＰが確定する場合、更新するのであればステップ１３２で更新し、ステップ１３３で出力ＰＦＷを「０」にセットする。一方、コマンド３７が「ＡＤＤ」で該当エントリ２６が既存で最大エントリの場合、下位の状況によりバイパス値ＢＰの更新が必要かどうか確定するため、待機管理ユニット６８へパケットを登録し、バイパス値ＢＰ更新を保留する。更新を保留した場合、ステップ１３４で、出力ＰＷＦを「１」とする。
更新不要、更新確定の場合、状態が定まったので、入力ＰＷＦを参照し、上位待機があるかどうかを判断する。上位待機があれば、１段上の待機管理ユニット６８へフィードバック出力する。更新確定なら、ステップ１３５でコマンド「ＡＤＤＵＰＤＴ」、更新不要なら、ステップ１３６でコマンド「ＡＤＤＷＣＬＲ」とし、上位の更新要不要を指示する。
図４１に待機管理ユニット６８の動作をさらに詳しく示してある。待機管理ユニット６８は、待ち合わせ処理と、その後のバイパス値ＢＰの更新再開および上位フィードの並列化をおこなう。コマンドを見て「ＡＤＤＵＰＤＴ」なら下位の段でバイパス値ＢＰが更新されたので、ステップ１３７で、バイパス値ＢＰの更新を再開する。そのために照合器５０のキューにパケットが投入される。コマンドが「ＡＤＤＷＣＬＲ」なら下位でバイパス値ＢＰの更新がなかったので、キューのパケットは破棄される。ただし、次の上位にフィードする処理は行う。また、コマンドによる処理とはまったく独立に、出力ＰＷＦ（上位で待ちがあるかどうか）をみて、出力ＰＷＦが「１」なら上位へフィードする。そのとき、ＩＤおよびＣＭＤは下位から来たものをそのまま上位へフィードする。
照合装置５０では、コマンド３７が「ＡＤＤＵＰＤＴ」なら待機していたバイパス値ＢＰの更新処理を実行する。上位へのフィードは待機管理側がおこなうので、バイパス値ＢＰを更新した後は照合器５０ではパケットを破棄する。
双方向リンク方式による登録処理
図４２に、双方向リンク方式による登録処理の概要を示してある。この方式でのバイパスへの対応は、上から下に辿りながらエントリ登録をおこない、その際にバイパス値ＢＰの更新が確定したテーブルでは更新処理をおこなう。バイパス値ＢＰの更新が未確定テーブルはそのまま下位へ移動し、待ち合わせ処理のような「待ち」は設けない。新規テーブル作成段に到達後、その段以下の新規テーブルの連結と、双方向リンクを辿りながらの上位のテーブルに対してバイパス値ＢＰの確定待ちへのフィードバックを並列におこなう。
図４２において、テーブルＡでは、エントリが既存であり、ＭＡＸエントリではないため、下位がどうなっても、このテーブルＡでのバイパス値ＢＰの更新はない。テーブルＢでは、エントリ既存であり、ＭＡＸエントリに該当する。従って、下位での結果次第でＢＰ更新がありえる。下位が確定するまではこのテーブルＢのバイパス値ＢＰの更新が必要かどうか確定しないため保留する。テーブルＣでは、エントリは新規であり、その新規エントリがＭＡＸエントリとなる。従って、このテーブルＣでバイパス値ＢＰの更新が必要となる。バイパス値ＢＰの更新が発生したので上位へ通知する（双方向リストを利用し上位テーブルＢへ遡る）。遡ってきたテーブルＢでは、下位からの通知を受けてバイパス値ＢＰを更新し、更に上位へ遡っていく。バイパス値ＢＰの更新の必要がなくなった段で遡りは打ち切りである。一方、テーブルＣから下への流れは、待ち合わせ方式による登録と同様に処理待機上位への遡りとは並列に進んでいく。
図４３に分類装置１５における照合器パイプラインにおいて、双方リンク方式でエントリ２２を登録する構成を示してある。双方リンクを辿って上位にフィードバックするので待機管理ユニットは設けられていない。上位フィードバック（ＦＢ）は、この図では専用経路であるが、バス効率に影響がなければ検索バイパス用バス３９を共用してもよい。双方向リンクによる上位遡りは検索時のバイパス処理（任意の上位へ接続）とは異なり、常に直接繋がる上位テーブル（パイプライン前段の照合器５０）へのフィードバックなので、ここでは専用経路による接続とした。エントリ２２の登録は上位から下位へ照合器パイプラインを進みながら、テーブルを辿っていく。バイパス値ＢＰの更新が確定した照合器５０から双方リンクにより上位フィードバック（ＦＢ）を発行する。この際、待ち合わせ方式と同様に、上位ＦＢとは並列に、下位テーブルへの辿り（新規テーブルの接続）はおこなっていく。
この双方向リンク方式においても、並列処理は下位への流れとバイパス値ＢＰ確定後の上位へのフィードバックの２並列である。また、上位フィードバックは完全な並列ではないがある程度、パイプライン並列化できる。フィードバックによるバイパス値ＢＰを更新する時に、すぐに上位テーブルリンクを読み出して、バイパス値ＢＰを更新する処理とは分岐して更に上位へのフィードバックを発行することができる。ただし、検索・検索バイパスとの関係で待ち行列数が増えるため、全体のパフォーマンスを検討した上で、上位フィードバックのパイプライン並列化の実装は検討すべきである。
照合装置においてエントリを登録する処理
図４４に、双方向リンク方式でエントリを登録する処理において、更新処理ユニット６０が動作したときの照合装置５０の制御的な構成を示してある。ステップ１２０から１３２の処理は、待ち合わせ方式と共通するので説明を省略する。バイパス値ＢＰの更新をおこなうのは、コマンド３７が「ＡＤＤＮＥＷ」の場合と、コマンド３７が「ＡＤＤ」で新規エントリがＭＡＸエントリの場合である。前者の場合は上位へのフィードバックは不要である。コマンド３７が「ＡＤＤ」から「ＡＤＤＮＥＷ」と切り替わる段のテーブルでフィードバック済のためである。したがって、ステップ１４０でコマンドをチェックし、後者の場合は、ステップ１４１で上位リンクを辿り、ステップ１４２で上位テーブルへ「ＡＤＤＵＰＤＴコマンドパケット」によるフィードバックを出力する。また、「ＡＤＤＵＰＤＴパケット」が得られると、ステップ１４３でマスクデータを読み込み、該当エントリがＭＡＸエントリかどうかでバイパス値ＢＰの更新を判断する。上位から下位への処理でエントリは登録済であり「ＡＤＤＵＰＤＴ」を受け取った時点では常に既存エントリである。バイパス値ＢＰの更新をおこなった場合、更に上位テーブルへのフィードバックをおこなう。最上位テーブルでは上位リンクがＮＵＬＬであり、その場合、フィードバックは終了する。
待ち合わせ方式による削除処理
削除処理も更新処理であり、「排他を確認し、テーブルを占有する」状態でシリアル化されたツリーを構成するテーブルを、テーブル単位で逐次実行される処理である。検索処理との関係も上記と同様である。削除処理の場合、登録同様に下位から上位へ伝播するバイパス値ＢＰの更新があり、この上位への遡りを登録同様に待ち合わせ管理機構でおこなうのが待ち合わせ方式による削除処理である。登録処理とは異なり削除処理の場合は上位から下位へのエントリ検索時点ではバイパス値ＢＰの更新を確定できるケースはない。下位テーブルでエントリが０個になった場合にそのテーブルを開放し、上位へ通知し、上位テーブルのエントリを削除し、必要であればバイパス値ＢＰを更新する処理の流れとなる。この処理は下位から上位へ伝播していく処理である。登録と比べるとバイパス値ＢＰの更新は同じであるが、テーブル削除の上位伝播処理があるため、削除のほうが複雑になる。
図４５に示すように、待ち合わせ方式では、コマンド３７が削除「ＤＥＬ」のときで上位から下位へ辿りながら各段で待機し、最下位から上位に向かってコマンド３７を「ＤＥＬＵＰＤＴ」としてバイパス値ＢＰを更新し、テーブルを削除した情報をフィードしていく。この基本的な流れは待ち合わせ方式の登録処理とほぼ同様である。削除処理の場合、下位でテーブルが空になり開放されると、上位でのエントリ削除とそれに伴うバイパス値ＢＰの更新が発生する。たとえば、テーブルが空になると最終の照合装置５０がパイプラインから切り離される。テーブルが空ではない場合は、下位でのバイパス値ＢＰの更新情報を上位へ反映するだけでよい。テーブルが空になった場合、下位でのテーブル削除が上位でのエントリ削除につながり、上位でのエントリ削除の結果、バイパス値ＢＰの更新のため新しいバイパス値ＢＰを与えるエントリの下位への問い合わせするバイパス値問い合わせが発生する。自テーブル内の情報では新しいバイパス値ＢＰを与えるエントリのバイパス値ＢＰは得られないからである。このコマンドが「ＤＥＬＵＰＤＴ」のときの下位へのバイパス値問い合わせ（ＢＰ問い合わせ）は、登録処理にはなく、削除処理に特有の処理である。
下位へのＢＰ問い合わせは以下の流れで行われる。ステップ１５１でエントリ削除にともなうバイパス値ＢＰの更新の発生した段階で、下位ヘコマンド「ＤＥＬＲＤＢＰ」で問い合わせ、応答待ちのパケットを待機する。下位の照合器５０では、コマンド「ＤＥＬＲＤＢＰ」を受けると自テーブルのバイパス値ＢＰを読み出し、ステップ１５２で上位へコマンド「ＤＥＬＷＲＢＰ」を送ってフィードバックする。応答待ちとの間で発火し、コマンド「ＤＥＬＷＲＢＰ」の処理として問い合わせで得られた新しいバイパス値ＢＰを書き込む。さらにステップ１５３で、バイパス値ＢＰの更新情報を上位へコマンド「ＤＥＬＵＰＤＴ」でフィードバックする。
図４６に、待ち合わせ方式でエントリを削除（コマンドが「ＤＥＬ」）する処理において、更新処理ユニット６０が動作したときの照合装置５０の制御的な構成を示してある。ます、ステップ１６０で、入力パラメータＴＴＡＧで示されるテーブルをロードし、マスクデータ２８ａを読み込む。ステップ１６１で、マスクデータ２８ａと削除対象のエントリ（部分エントリ）をチェックし、対象のエントリが未登録ならステップ１６２でコマンド３７を「ＤＥＬＥＲＲ」として削除結果を最終出力する。
ステップ１６３で次段のタグ情報を読み取り、ステップ１６４で自テーブルが最下段であるか否かを判断する。自テーブルが最下段ではなかった場合は、ステップ１６５で、下位からのフィードバック待ち合わせ用のパケット（ＩＤ，ＷＩＤ＝１，ＴＴＡＧ（自テーブルＴＡＧ），ＫＥＹ（自テーブルエントリＫＥＹ）を含む）を待機管理ユニット６８に投入する。ステップ１６６で、次段の照合器５０へコマンド「ＤＥＬ」（ＩＤ，ＴＴＡＧ＝ＮｅｘｔＴＡＧ，ＫＥＹ＝ＳＨＩＦＴを含む）を出力する。
一方、自テーブルが最下段であった場合は、ステップ１６７で、エントリに対応するＮｅｘｔタグ、すなわち、結果タグを読み出し、削除結果として最終出力する。バイパス値ＢＰの更新も含めた削除完了前に応答が戻るのがまずいようであれば、結果タグは上位フィードバックに載せてフローさせ、最上位まで戻りきったところで最終出力する。次に、ステップ１６８でエントリを削除する。テーブル２８のマスクデータ２８ａのエントリを削除するだけでよい。エントリを削除した後のマスクデータ２８ａの積算（和集合）ＳＵＭ−ＭＡＳＫが「０」ならばフラグＣＥＦを１（テーブルが空エントリ）にセットし、ＳＵＭ−ＭＡＳＫが「１」ならばフラグＣＥＦを「０」（テーブルにまだエントリが残っている）にセットする。また、エントリ削除前のマスクデータ２８ａと、削除後のマスクデータ２８ａを比較し、フラグＮＢＰを設定する。削除したエントリがバイパス値ＢＰを与えるエントリであれば、フラグＮＢＰを「１」すなわちＢＰ更新有りにセットする。
ステップ１６９でフラグＣＥＦが「１」であると判断すると、自テーブルが空エントリになるので、ステップ１７０で自テーブルを空きテーブル管理キュー６９に返却し、パケットのフラグＮＢＰとＤＴＡＧをＤＣ（ドントケア）にセットする。
一方、フラグＣＥＦが０の場合、ステップ１７１でフラグＮＢＰをチェックし、ステップ１７２で、残ったエントリの中から新しいバイパス値ＢＰを与えるエントリ（ＭＡＸエントリ）を選択し、ステップ１７３で、バイパス値ＢＰを新しいＢＰエントリ対応するタグ情報（最終結果情報（結果タグ））に更新する。そして、パケットのフラグＮＢＰ（バイパス有効）を「１」にセットし、ＤＴＡＧにバイパス値ＢＰ（新バイパスＴＡＧ値）をセットする。なお、ステップ１７１で自エントリがＢＰエントリでなかった場合、バイパス値ＢＰの更新処理は不要である。そして、ステップ１７４で、コマンド「ＤＥＬＵＰＤＴ」により上位フィードバックの発火用パケットを出力する。
図４７に、コマンド３７が「ＤＥＬＵＰＤＴ」のときの照合装置５０における更新ユニット６０の処理を示してある。この処理は、コマンド「ＤＥＬ」が上位から下位に流れたときに待ちに入った照合装置５０が、最下段からのコマンド「ＤＥＬＵＰＤＴ」を受けたときに、それをトリガとして発火する。まず、ステップ１８０でテーブルをロードする。ステップ１８１で、下位からフィードバックされたフラグＣＥＦが０ならば下位テーブルは消えていないので、自テーブルのエントリ削除は不要である。フラグＣＥＦが「０」のときは、ステップ１８２で、下位からのフラグＮＢＰをチェックし、下位テーブルのバイパス値ＢＰが変更になっているときは、さらにステップ１８３で自テーブルのマスクデータ２８ａと削除対象のエントリに従い、自己のフラグＮＢＰをセットする。そして、ステップ１８５において、自ＮＢＰが「１」、すなわち、自テーブルのエントリがＢＰエントリ（ＭＡＸエントリ）であれば、ステップ１８６でバイパス値ＢＰを更新する。下位のフラグＮＢＰが「０」であれば、ステップ１８４で自ＮＢＰも「０」にセットしてバイパス値ＢＰの更新は行わない。そして、ステップ１８７で自段が最上位であるかチェックし、最上位でなければ、ステップ１８８で上位の待ちへフィードバックする。
一方、下位からのフィードバックされたフラグＣＥＦが「１」ならば下位テーブルが消えたので、ステップ１８９で、自テーブルのエントリ削除をおこなう。フラグＣＥＦが「１」のとき、下位テーブルが消えたのでＮＢＰおよびＤＴＡＧはＤＣである。自テーブルのエントリ削除にともなうバイパス値ＢＰを更新する。さらに、エントリ削除後に自テーブルが空（ＳＵＭ−ＭＡＳＫ＝０）ならば、ステップ１９０でフラグＣＥＦｏｕｔを「１」にセットし、ステップ１９１で自テーブルを開放し、ステップ１９２で最上位であるか確認後、ステップ１９３で上位の待ちへフィードバックする。ただし、自テーブルが最上位テーブル（ルートテーブル）である場合、テーブル削除はおこなわない。ルートテーブルは空でも削除しない。また、ルートに対して上位の待ちは存在しないためフィードバックは行われない。
エントリ削除後に自テーブルが空ではなかった場合、すなわちフラグＣＥＦｏｕｔが「０」のときは、ステップ１９４で、新ＢＰエントリ（ＭＡＸエントリ）を選択し、ステップ１９５および１９６で新ＢＰエントリに対応する下位テーブルからのバイパス値ＢＰの読み出しをおこなう。これは照合器パイプラインの都合により、次小照合器５０によるバイパス値ＢＰ読み出しを待ち合わせ管理機構で待つ方式でおこなわれる。待機側は、待ち合わせパケット（ＩＤ，ＷＩＤ＝２，ＴＴＡＧ，ＫＥＹ）を投入し、下位への依頼側は、コマンド「ＤＥＬＲＤＢＰ」により発行する。ＭＡＸエントリでない場合は、ステップ１９７でルートであるか否かを確認し、ステップ１９８で上位へフィードバックする。
図４８にコマンド「ＤＥＬＲＤＢＰ」と「ＤＥＬＷＲＢＰ」のときの処理を示してある。上位に対するコマンド「ＤＥＬＵＰＤＴ」からの指示で下位にコマンド「ＤＥＬＲＢＰ」が送られてくる。コマンドが「ＤＥＬＲＤＢＰ」であれば、ステップ２０１でバイパス値ＢＰを読み出し、ステップ２０２でＤＴＡＧにセットする。そして、上位はバイパス値ＢＰ読み出しを待っているので、上位の待機管理６８に対して待ち合わせ発火用パケット（ＩＤ，ＣＭＤ＝ＤＥＬＷＲＢＰ，ＤＴＡＧ＝ＢＰ，ＷＩＤ＝２）を投入する。
自器のコマンド「ＤＥＬＵＰＤＴ」からの待機パケットと下位からのコマンド「ＤＥＬＲＤＢＰ」完了後のパケットにより発火するコマンド指示が「ＤＥＬＷＲＢＰ」である。下位からのＤＴＡＧにバイパス値ＢＰが入っているので、ステップ２０３では、自テーブルを表すＴＴＡＧに従いＤＴＡＧ値を書き込む。自テーブルにおいてバイパス値ＢＰが確定したので、ステップ２０５で、コマンド「ＤＥＬＵＰＤＴ」による上位フィードバッグを再開する。ただし、コマンド「ＤＥＬＵＰＤＴ」と同様に、ステップ２０４でルートテーブルであるか否かをチェックし、ルートの場合は上位がないため、上位フィードバックはおこなわない。
双方向リンク方式による削除
この方式では、まず、コマンド「ＤＥＬ」により上位から下位にエントリを完全一致型の検索で辿り、最下位まで降りていく点は変わりない。コマンド「ＤＥＬＵＰＤＴ」による最下位から上位へのバイパス値ＢＰの更新、テーブル削除情報のフィードは双方向リストによるフィードでおこない、待ち合わせ方式のような待機機構は用いない。したがって、図４５に示した待ち合わせ方式とほぼ同様のフローになるが、上位に対するコマンドは待機管理ユニットではなく照合装置５０に供給される。
また、下位でのテーブル削除にともなう上位でのＢＰ更新については、待ち合わせ方式の場合同様にコマンド「ＤＥＬＲＤＢＰ」および「ＤＥＬＷＲＢＰ」でおこなうが、この処理も待ち合わせではなく双方向リストによるフロー移動でおこなう。したがって、待ち合わせ方式であれば、自テーブルのＫＥＹ値（削除対象のエントリ）は待機パケットが保持していたため下位からのフィードバックはＫＥＹを気にしなかったが、双方向リスト方式ではコマンド「ＤＥＬＵＰＤＴ」による上位フィードごとに該当段のＫＥＹを再び使用できなければならない。従って、上位から下位へのコマンド「ＤＥＬ」による移動でＫＥＹを消費してしまう（消してしまう）のではなく、ＫＥＹ値はＳＨＩＦＴによる参照位置移動とし、コマンド「ＤＥＬＵＰＤＴ」のときには逆方向ＳＨＩＦＴで該当段ＫＥＹ値を得られるようにしておく。つまり、ＫＥＹ値は４ビット８段テーブルであれば、３２（４×８）ビットのＫＥＹフィールドを持ち、コマンド「ＤＥＬ」では上位ビットから下位ビットへの参照位置移動、コマンド「ＤＥＬＵＰＤＴ」では下位ビットから上位ビットへの参照位置移動をおこなう。
したがって、コマンド「ＤＥＬＵＰＤＴ」のときは、双方向リストの上位リンクにより上位テーブルタグは得られる。前述のようにＫＥＹは参照位置の移動により、常に該当段のキー値をアクセスできる構造である。コマンド「ＤＥＬＵＰＤＴ」のときの下位へのバイパス値ＢＰの問い合わせの際も同様に、上位リンクによる上位テーブルタグの取得、ＫＥＹ値の適切な参照位置移動がおこなえる。したがって、下位へのバイパス値の問い合わせは、双方向リンクを用いて待ち合わせ方式とほぼ同様に行われる。
図４９に、双方向リンク方式でエントリを削除（コマンドが「ＤＥＬ」）する処理において、更新処理ユニット６０が動作したときの照合装置５０の制御的な構成を示してある。待機管理ユニットを用いない方式なので、図４６に示した制御系統図からステップ１６５が除かれた以外はほぼ同じ制御で処理は行われる。ステップ１７４で、コマンド「ＤＥＬＵＰＤＴ」で上位フィードパケットを出力する際、送出先のタグアドレスＴＴＡＧは上位リンクにより上位テーブルを指定し、エントリＫＥＹは上位方向へ逆シフトし、テーブル段位置と整合させる。
図５０に、コマンド３７が「ＤＥＬＵＰＤＴ」のときの照合装置５０における更新ユニット６０の双方向リンク方式の処理を示してある。この処理においても、待機管理ユニットを用いない点を除けば、図４７と同じ制御で処理は行われる。なお、フィードバックする際に、送出先のタグ情報ＴＴＡＧは自テーブルの上位リンクにより上位テーブルを指定、エントリＫＥＹは上位方向へ逆シフトしてテーブル段位置と整合させることは上記と同様である。
図５１にコマンド「ＤＥＬＲＤＢＰ」と「ＤＥＬＷＲＢＰ」のときの双方向リンクによる処理を示してある。これらの処理においても、待機管理ユニットを用いない点を除けば、図４８と同じ制御で処理は行われる。
上記のように、本発明においては、エントリの追加および削除に伴うテーブルの管理にソーティングや正規化などの処理が不要となるので、エントリの追加削除に伴う照合処理の遅延は従来に比べて非常に小さなものになる。範囲検索におけるエントリとルールの関係については、右倒れ近似および左倒れ近似の説明において詳述している。たとえば、既存エントリが［ａｉ，無限大］［ｂｉ＋１，無限大］｛ｉは複数｝の時、新エントリ［ａ′，無限大］［ｂ′＋１，無限大］を加えるとき（登録する前に）、［ａ′，無限大］のルールにはａ′でヒットするエントリの（複数の）ルールを加え、［ｂ′＋１，無限大］のルールにはｂ′＋１でヒットするエントリの（複数の）ルールを加える。既存エントリが［ａｉ，無限大］［ｂｉ＋１，無限大］｛ｉは複数｝の時、［ａｊ，無限大］［ｂｊ＋１，無限大］を削除するとき（削除した後で）［ａｊ，ｂｊ］に含まれるエントリから該当ルールを除く。
データキャッシュ付き分類装置
図５２に、データキャッシュ１７を備えた分類装置１５の概略構成を示してある。データキャッシュ１７は、照合器パイプライン５００を構成する各照合装置５０とメモリであるＳＤＲＡＭ１１の間に設置される。図５３に示すように、本例のデータキャッシュ１７は、Ｎウェイ・セット・アソシアティブ・キャッシュであり（Ｎウェイは２ウェイや４ウェイが一般的である）、キャッシュラインのサイズがＳＤＲＡＭ１１のバースト転送サイズ、すなわち、照合テーブル２８のサイズと一致するように構成されている。データキャッシュ１７のキャッシュライン１７ａを１つのテーブルサイズとすることで、分類装置１５におけるテーブルアクセスが効率的に行われる。
また、データキャッシュ内にライン単位のメモリ排他管理機構を導入することで、キャッシュメモリ上あるいはＳＤＲＡＭ上のテーブルデータの排他利用が可能となる。そのためには、キャッシュのラインサイズ、ライン数、セット数を適切に構成し、その構成に合わせてテーブルを割り当てれば良く、データキャッシュのヒット率を高めることができる。そして、キャッシュシステム１７を採用することにより、汎用のＳＤＲＡＭ１１を用いながらさらに高速な分類が可能となる。
図５４に、データキャッシュ１７を検索種別および照合段階で排他的に利用する例を示してある。本例のキャッシュシステムにおけるテーブル２８のオンキャッシュ率を高めるために、照合テーブル２８の各段（たとえば、テーブルＡ−１とＡ−２）を異なるキャッシュエントリに割り当てる。また異種の照合（たとえば、テーブルＡ群とテーブルＢ群）に対してもそれぞれ独立したキャッシュエントリを割り当てる。検索種別は、上流の制御ユニットあるいはアプリケーションから与えられるルートアドレス３１により簡単に識別できる。また、照合段階は、パイプライン段数に相当するので、識別は容易である。そして、照合テーブルの新規登録においても、テーブルの確保が必要になった場合、テーブル段位置に対応するキャッシュエントリにマッピングされるＳＤＲＡＭ１１のアドレスを持つ空きテーブルを割り当てていく。
また、照合テーブル２８はツリー型テーブルの構造となるので、下位段でテーブル数が広がっていく。したがって、下位段テーブルには複数キャッシュエントリを割り当てておくことが望ましい。図５４においては、Ａタイプの照合用のテーブルＡのグループとＢタイプの照合用のテーブルＢのグループがＳＤＲＡＭ１１の上にある。Ａタイプの照合処理の第１段テーブルＡ−１は０番目のキャッシュエントリにキャッシングされるアドレスに確保される。Ｂタイプの照合処理の第１段テーブルＢ−１も同様に０番目のエントリになるアドレスである。これらはキャッシュエントリが複数セットで多重化されているため、同時にオンキャッシュとなりうる。
同様にＡタイプの照合処理の第２段テーブルＡ−１は１番目のキャッシュエントリ１、Ｂタイプの照合処理のＢ−２には２番目のキャッシュエントリが対応する。この場合、複数の照合がキャッシュエントリで多重化されず、それぞれ独立したキャッシュエントリが割り当てられている。キャッシュが４セットであれば、Ａ−２であれば全１６テーブルで１番目のキャッシュエントリの４セットを所有し、最新の４テーブルがオンキャッシュである。下位段、特に、最終段のテーブルＡ−８およびＢ−８は数が多くなるので、１段に対して複数エントリを割り当てることも有効である。
図５５に、空テーブル管理キュー６９が、メモリ１１の上でテーブル２８を管理する一例を示してある。検索種別毎にあるいはテーブル段毎にキャッシュエントリを分散配置させることでオンキャッシュ率を高める。そのためには、テーブル２８を管理する側、すなわち管理キュー６９が分類装置５０のテーブル確保要求に応じて適切なテーブルを割り当てる必要がある。空きテーブルキュー６９は空きテーブルを検索種別（レイヤー１）とそれに含まれるテーブル段位置（レイヤー２）の２階層に分類した個別キューで管理する。分類装置１５の初期化時に、キャッシュエントリ毎にテーブル２８をグループ化し、更にＲＯＭ等に設定された（あるいは外部からコンフィグレーションとして与えられる）、（検索種別数×テーブル段数分の）空きテーブル個別キューとキャッシュエントリの対応に従い、テーブルをキューにつないでいく。
図５６に空きテーブルキュー管理機構６９の応答を示してある。空きテーブルキュー管理機構６９は、検索テーブルツリーへのエントリ登録時に照合装置５０から与えられるテーブル確保要求（ステップ２１１）に応じて、空きテーブルを取り出し応答する。この際、検索種別とテーブル段位置が必要となるため、要求情報としてそれらを要求パケットに持たせることとする。管理機構６９は、要求情報の検索種別（レイヤー１）・テーブル段位置（レイヤー２）に対応するキューから空きテーブルを１個取り出し（ステップ２１２）、応答としてそのアドレス（タグ情報）を照合装置５０に返す（ステップ２１３）。
図１５に示したメモリ共有型の分類装置１５において、ＳＤＲＡＭ１１と照合装置５０の間にデータキャッシュ１７がある場合、データキャッシュ１７の一つがミスヒットするとデータキャッシュ１７およびＳＤＲＡＭ１１はこのアクセスに占有されて他のアクセスは待たされる。図１６に示したメモリ分離型の分類装置１５において、ＳＤＲＡＭ１１と照合装置５０の間にデータキャッシュ１７がある場合も、同様に、照合装置５０、データキャッシュ１７およびＳＤＲＡＭ１１はこのアクセスに占有される。これらはデータキャッシュ１７とＳＤＲＡＭ１１が同期的（シリーズ）に接続しているためである。そのため、１つ遅れると、その遅れは後段に影響する。パイプラインの効率を上げるには、全てのステージにかかる時間を同一にしてやらねばならない。しかしながら、ＳＤＲＡＭアクセスが入ると難しい。
これに対し、要求応答方式のデータキャッシュ１７を採用することができる。すなわち、検索対象キー２１に対して入力順に照合結果が出力されるというパケット順序の維持はバックトラックが発生することを前提とした段階で不可能である。このため、識別情報（ＩＤ）３２を導入することにより順序の問題はクリアしている。したがって、ある検索対象キー２１の照合のためにテーブル２８が要求されたときに、オンキャッシュでなければ照合装置５０にその旨を通知する。照合装置５０は、処理を中断し、待ち行列に戻し、次の検索対象キー２１のパケット３３を入れる。データキャッシュ１７はＳＤＲＡＭ１１へアクセスする。一方、照合装置５０からテーブル２８を要求されたときに、オンキャッシュならば照合装置５０にテーブル２８を渡し、照合装置５０が処理を進める。さらに、照合装置５０において、照合タグ情報３４を先読みしてキャッシュシステム１７に渡し、必要なテーブル２８をプリロードするシステムは有効である。さらに、照合装置５０が照合のためにテーブル２８をバッファ５９にロードした時点で、次の照合タグ３４を入れてオンキャッシュを確認することも有効である。
このように、本例のキャッシュシステム１７においては、検索種別および照合段階という要素でキャッシュラインの排他性を高めてオンキャッシュ率を高めている。従来のＣＰＵでのデータキャッシュにおいては、キャッシュラインサイズをテーブルサイズに一致させるという発想はリニアアドレス空間を否定するので従来のキャッシュシステムからは得られないものである。さらに、照合テーブル各段を異なるキャッシュエントリに割り当てるという発想も、論理アドレス（のインデクス部分）とテーブルの割付決定を実行時に行うことであり、ＯＳの元ではＣＰＵで実行することは極めて難しい。ＣＰＵでは論理アドレスとテーブルの範囲割付決定をコンパイル時に行い、実行時には決められた範囲内から１テーブル分を確保するだけである。この実行時メモリ割付支援機構が認識するのは先頭論理アドレスとサイズである。動的メモリ割付は確保、開放を繰り返すとメモリに隙間を生じ、これをガベージコレクタで整理するというのが前提であった。従い、インデクス部分の衝突を避けて、キャッシュ効率を上げる仕組みを入れ込めなかった。
これに対して、ここで説明している照合方法および照合装置においては、テーブルビット長を固定化（上記の例では４ビット）することによってテーブルを標準化した。このため、テーブルサイズとキャッシュラインサイズとを一致させることが可能になった。そして、キャッシュメモリ１７やＳＤＲＡＭ１１に対して検索種別および照合段階で排他的なエリアを割り付けたとしても、テーブル同士は照合タグ情報によりリストでつながれている。このため、エントリの（実行時の）削除、登録に対応することができ、オンキャッシュ率を高めるために排他的な領域設定をすることが他の処理において障害となっていない。
履歴キャッシュ付き分類装置
図５７に、履歴キャッシュ１８を備えた分類装置１５の概略構成を示してある。照合装置５０の前に履歴キャッシュ１８をおくことで、検索処理をさらに高速化でき、検索処理の遅延時間を短縮できる。説明してきたように、本発明の照合方法および照合装置、さらに、分類装置および検索装置は、簡易なハードウェアでビット長の増加にも対応でき、照合速度も早く、さらに、汎用メモリを利用して十分な処理速度が得られるといった多くのメリットがある。しかしながら、複数の照合装置をパイプライン状に接続するか、あるいは照合装置を繰り返して使用することにより照合結果を導く。このため、同一の検索対象ビットストリングが高頻度で表れるようなジョブにおいては、ＣＡＭあるいはＴＣＡＭと比べたときにレイテンシがあるという差がある。したがって、レイテンシが重要となる検索においては、履歴キャッシュ１８を用いるメリットがある。
図５７に示した履歴キャッシュシステム１８は、ＳＤＲＡＭ共用型履歴キャッシュシステムであり、照合テーブル２８の置かれるＳＤＲＡＭ１１を共用する構成である。図５８に示すように、キャッシングアルゴリズムとして「８ビット化ハッシュ＋ＬＲＵ」を使用することができる。そのため、本例のキャッシュシステム１８は、ハッシュテーブル検索器１８ａと、ハッシュ用のキー一括比較器１８ｂとを備えている。ハッシュテーブル１８ｃは照合装置５０と同様に４ビット（１６エントリ）×２段のツリー構造で構成し、照合装置５０と履歴キャッシュ１８の間でデータキャッシュ利用方法の整合性を取るようにしている。
履歴ＳＲＡＭキャッシュ付き分類装置
図５９に、履歴キャッシュ専用のＳＲＡＭ１３を備えた分類装置１５の概略構成を示してある。履歴キャッシュ１８のメモリを専用化した構成であり、テーブル２８を記憶したＳＤＲＡＭ１１と分離することにより、照合装置５０との競合を防止して照合速度の向上を図る。それと共に、ＺＢＬ−ＲＡＭやＺＢＴ−ＲＡＭ等の応答性のよい低遅延ＳＲＡＭを、履歴キャッシュ用に占有し、履歴キャッシュ１８の性能を向上する。キャッシングアルゴリズムは「８ビット化ハッシュ＋ＬＲＵ」を使用できるが、共用型の場合は照合テーブルとの整合性のあるメモリブロック構成が望ましかったのに対し、図６０に示すように、専用ＳＲＡＭ型の場合は、メモリビット幅やエントリの構成を履歴キャッシュに合わせて最適化することができる。
論理演算装置（ＡＮＤ化器）の構成
上述した検索装置１０あるいは分類装置１５は論理演算装置（ＡＮＤ化器）１９を備えている。この分類装置１５は、汎用型なので、ルートタグ３１により検索種別を上流の制御装置あるいはアプリケーションによって設定することができる。したがって、１つまたは複数の分類装置１５による検索種別の異なる検索結果（１次元範囲の検索結果）を複数用いて、ＡＮＤ化器１９で論理積を演算する。ことにより、多次元範囲の検索を行うことができる。本例のＡＮＤ化器１９においては、１次元範囲の検索結果を集合として取り扱い、行列演算により多次元範囲の検索結果を単純な操作で得られるようにしている。
その一例がＳＰＤ検索機能８である。１つのパケットデータφｐを管理するために、ソースＩＰ、デスティネーションＩＰ、ソースポート、デスティネーションポートおよびプロトコルを示すビットストリングを少なくとも照合して、それらの全てを満足するルールを検索する際に、それらを示すビットストリングを検索対象のビットストリングとして、それぞれ異なる分類装置１５において照合する。それぞれの分類装置１５により得られる複数の分類結果は、範囲検索により複数のルールが含まれたものとなり、それらの分類結果をＡＮＤ化器１９において論理積を演算することにより、パケットデータφｐを管理するルールを抽出することができる。
まず、集合Ａが要素｛Ａ１，Ａ２，・・・，Ａｎ｝で構成されるとする。要素Ａｉがバイナリ（０／１）のｍｂｉｔ列“ａｉ１，ａｉ２，・・・，ａｉｍ”で表せるとする。同様に集合Ｂが要素｛Ｂ１，Ｂ２，・・・，Ｂｎ｝で構成されるとする。要素Ｂｉがバイナリ（０／１）のｍｂｉｔ列“ｂ１ｉ，ｂ２ｉ，・・・，ｂｍｉ”で表せるとする。
このとき、集合Ａ、Ｂの積（ＡＮＤ）集合Ａ＆Ｂは、行列におけるＡ、Ｂの積「Ａ×Ｂ」で表せる。詳しい演算式は、以下の通りである。
2004032435.tif 000006
ここで、Σ内はブール乗算（＊）とブール加算（＋）に展開される。ブール乗算・ブール加算の定義は、ブール乗算「＊」はＥＮＯＲ（Ｅｘｃｌｕｓｉｖｅ  ＮＯＲ、非排他論理和）、ブール加算「＋」はＡＮＤである。ブール加算は、（１＋１＝１  １＋０＝０  ０＋１＝０  ０＋０＝０）である。また、ブール乗算は、（１＊１＝１  １＊０＝０  ０＊１＝０  ０＊０＝１）である。ＥＮＯＲは比較回路の「＝」のロジックと同じであるので、Ａｉ＊Ｂｊは比較等号回路を「ＡＮＤ」で結んだものだと理解してもかまわない。行列で理解したほうが見通しは良い。
図６１に、集合Ａが２要素、集合Ｂが３要素、さらに各要素が３ビットで現れる例を具体的に示してある。左辺行列Ａは集合Ａの要素Ａ１，Ａ２が各行に並べられている。また、行列Ｂは集合Ｂの要素Ｂ１，Ｂ２，Ｂ３が各列に並べられている。右辺行列Ｚの１行１列は「ａ１１＊ｂ１１＋ａ１２＊ｂ２１＋ａ１３＊ｂ３１」であり、「Ａ１×Ｂ１」である。これはＡＮＤ化器１９におけるブール演算の定義により、Ａ１とＢ１のビット比較結果（１＝一致／０＝不一致）を意味する。同様に行列Ｚを列方向で見ると、１列目は「Ａ１とＢ１の比較結果」と「Ａ２とＢ１の比較結果」になっている。同様に行列Ｚ２列目は「Ａ１とＢ２」と「Ａ２とＢ２」の比較結果である。つまり、行列Ｚの各列は行列Ａ全体（集合Ａ）と行列Ｂを構成する各列（集合Ｂ要素Ｂｉ）の比較結果である。
したがって、行列演算の結果、例えば、右辺行列Ｚが図６２に示すようになっていれば、左辺行列Ｘの｛ａ１１  ａ１２  ａ１３｝行（集合要素Ａ１）が集合Ａと集合Ｂの積集合Ａ＆Ｂである。つまり、行列Ｚの各行において行内に１つでも１が立つ行に対応する行列Ｘの行が積集合である。ここで「１つでも１が立つ行」を言い換えれば、行列Ｚの各行において行内の値の論理和ＯＲを取った結果が１となる行に対応する行列Ａの行が積集合である。
したがって、行列Ａに対して、論理積を求める要素を掛け算し、１つでも１が立つ行が残れば、それらの要素の積集合が得られたことになる。図６３にＬＳＩ化を念頭に行列演算を一般化したものを示してある。左辺の行列Ｘは行毎に集合Ａの要素Ａ１，Ａ２，・・・である。左辺の行列Ｙは列毎に集合Ｂの要素Ｂ１，Ｂ２，・・・に加え、集合Ｃの要素Ｃｉ，・・・で構成される。列の数は限定されない。行列Ｚを列毎にみると、行列Ｘ全体と行列Ｙのある１列との演算となっている。行列Ｚは最終的には行毎に行内で論理和ＯＲが演算され、Ａ＊Ｂ＊Ｃ＊・・・の積集合要素が決定される。従って、行列Ｚはその値全体を保持しておく必要はなく、列毎にブール行列演算した上で、累積結果としてＯＲ演算していけばよい。
図６４に、ＡＮＤ化器１９のハードウェア構成の一例を示してある。ＡＮＤ化器１９は、複数のブール行列演算レジスタ１９ａを有しており、集合Ａの各要素が各レジスタ１９ａにセットされる。さらに、各々のレジスタ１９ａに対応して、レジスタ１９ａの演算結果の累積論理和（ＯＲ）を演算して結果を蓄積するアキュムレータ１９ｂを備えている。各アキュムレータ１９ｂは「０」に初期化される。このＡＮＤ化器１９に対し、入力要素１９ｉｎとして、集合Ｂの要素Ｂｉ、集合Ｃの要素Ｃｉなどの各列を順次に投入すると、入力列毎に以下の演算処理がおこなわれる。まず、ブール行列演算レジスタ１９ａと入力列による、ブール行列演算Ａｎ×Ｙｉ（ＥＮＯＲ演算、ＡＮＤ演算となる）が行われる。次に、ブール行列演算の結果とアキュムレータ値によるＯＲ演算が行われる。そして、ＯＲ演算の結果によりアキュムレータ１９ｂの値が更新され、最終入力後にアキュムレータ１９ｂに１が残る行に対応する集合Ａの要素群が集合Ａ，Ｂ，Ｃ，…の積（ＡＮＤ）集合、すなわち、Ａ＆Ｂ＆Ｃ＆‥である。
ブール行列演算はＥＮＯＲ論理によるビット比較をＡＮＤ論理で繋いだものであり、回路的に見れば、各ブール行列演算レジスタはレジスタ値Ａｎと入力値Ｙｉとのｍビット完全一致比較結果を出力し、その比較結果をアキュムレータで累積ＯＲしていることになる。ブール行列演算レジスタの数やビット長にもよるが、ＥＮＯＲ論理およびＡＮＤ論理を組み合わせて回路を作る事は極めて簡単である。そして、入力値１個とレジスタ値複数個が一度に比較できるので、レジスタ数分の並列性がある。したがって、本例のＡＮＤ化器１９は、単純な構成でありながら、短時間で多次元範囲検索の結果を導出することができる。あるいは、並列レジスタがコスト高という場合は、レジスタを１個あるいは数を減らして、レジスタ値はメモリにし、入力値に対して１行分ずつ繰り返しブール行列演算することによっても本例のＡＮＤ化器１９は実現できる。
レジスタ値をメモリに展開することにより、メモリの許す限り、ルールを入れることができるというメリットがある。このため、多数のルールあるいは要素を有する集合から論理積により要素を絞り込むのに適している。ただし、繰り返し処理でありメモリリードもあるため、処理時間は長くなる。ブール行列演算処理とメモリリードをパイプライン化することは可能であり、この構成によりメモリリード処理時間を隠蔽することも可能である。
さらに、ＡＮＤ化器１９は内部にアキュムレータ１９ｂを持ち、またレジスタ１９ａに最初の集合の要素を保持する構造である。このため、複数の多次元範囲検索の並列実行を考えるとそれらは共有資源である。したがって、何らかの資源排他占有が求められる。一方、分類装置１５においては、複数検索の各次元の検索が並列におこなわれえるため、例えば、検索系Ｓ１，Ｓ２の各次元Ａ，Ｂについて、分類器からの出力はＳ１Ａ，Ｓ２Ｂ，Ｓ２Ａ，Ｓ１Ｂのように検索系も同検索内の次元も順序性のない出力となりうる。先に分類装置１５から出力された検索系がＡＮＤ化器１９を占有利用する方式でも、先に分類装置１５からの全次元出力がそろった検索系が占有利用する方式でも、いずれにせよ分類装置１５の出力が非同期・無順序であるため、ＡＮＤ化器１９の利用率および多次元範囲検索としてのスループットを高効率でおこなうためには、ＡＮＤ化器１９も並列化することが望ましい。ＡＮＤ化器１９のレジスタおよびアキュムレータをメモリ化した場合は、メモリ上での並列化でも効果が得られる。
また、ＡＮＤ化器１９の動作を考えたとき、初期設定「ＢＥＧＩＮ（レジスタ設定・アキュムレータ初期化）」と終了処理「ＥＮＤ（アキュムレータからの読み出し）」が必要であり、同系内でも分類器入力と出力の間での順序性がない。このため、次元Ａだから初期設定処理、次元Ｂだから終了処理というように操作は固定的に決定できない。分類装置１５からの出力を検索系ごとにキューイングし、全次元の分類器出力が完了したのち、明示的に初期設定と終了処理をコントロールする方式となる。結局、これらの制御もあるので、分類装置からの出力がそろった検索系がＡＮＤ化器１９を排他占有する制御方式が望ましいといえる。
ＡＮＤ化器１９の並列利用のためには、速度を要求されるならＡＮＤ化器１９そのものを複数用意することで対応できる。次善策としては、レジスタ１９ａおよびアキュムレータ１９ｂのメモリ保存によるメモリ上での並列化をおこなうことで対応できる。さらに、履歴キャッシュ１８を導入している場合、多次元範囲検索における履歴キャッシュ１８の使い方を工夫することで、ＡＮＤ化器１９の使用率を下げることができ、ＡＮＤ化器１９を並列利用しなくても十分な処理速度を維持することも可能である。例えば、３２ビット５次元の多次元範囲検索であれば、１６０ビット（３２ビット×５）のキーによる履歴キャッシュ１８を採用し、履歴キャッシュ１８のエントリデータとして、初回検索時にＡＮＤ化器１９を使って演算した５次元の積集合結果を登録する。つまり、履歴キャッシュ１８には分類装置１５の最長一致検索の履歴、完全一致検索の履歴、１次元範囲一致検索の履歴をエントリデータとして登録することも可能である。しかしながら、多次元範囲検索の場合は、各次元個別の履歴ではなく、全体としての多次元範囲検索の履歴をエントリデータとして取り扱うことによりＡＮＤ化器１９による処理がクリティカルパスになることを抑制できる。
上記に、幾つかの例を示しながら本発明について詳しく説明しているが、上記の例に本発明が限定されるものではない。
省略テーブル
以下では、照合テーブル２８の数をさらに削減する方法を説明する。照合装置５０を用いた検索においてはエントリビット列を４ビットずつの部分エントリに分割してテーブル化し、テーブル化ビットツリーにより登録し、検索していく。この方法では、ある段以降が１エントリしか存在しなくてもテーブルを生成し、検索においてもテーブルを辿る必要がある。これを改善し、ある段以降が１エントリであれば下位テーブルを省略するテーブル構造を導入することが可能である。
図６５に下位テーブルを省略する例を示してある。テーブルＢは本来のテーブル構成では「Ｂ−Ｃ−Ｄ」となる１エントリが存在するが、下位が１エントリであるため「Ｃ−Ｄ」を省略し、その代わりにテーブルＢに省略情報（エントリの省略した下位ビット列、省略段数、省略マークなど）を記録しておく。テーブルＥでは直接の下位接続はテーブルＦの１個であるが、エントリとしては孫テーブルで分岐したＧおよびＨの２エントリ以上が存在するため、省略はされない。
テーブルＢの下位に収容される２エントリ目の登録時に、省略された下位テーブルは展開（生成）される。上図では「Ｂ−Ｃ−Ｘ」と繋がるべきエントリＸの登録が行われる際、テーブルＢにて下位テーブルの省略情報を検出し、第一エントリに相当するテーブルＣおよびテーブルＤの生成し、第二エントリに相当するテーブルＸの生成をおこなう。
ここで、第一エントリのテーブル生成と第二エントリのテーブル生成はシリーズにおこなうのではなく、テーブルＢの次の段は同ビット列なので共通テーブルＣを生成するという方法もある。テーブルＣの次では異なるビット列なので分岐しテーブルＤおよびテーブルＸを生成するというように、２エントリが分岐する段までは統合的にエントリを生成することができる。したがって、エントリを登録する処理時間を短縮できる。
また、分岐の次段では再度それぞれの下位が１エントリになる。このため、そこで省略テーブル形式でテーブル生成することになる。例えば、上図においてテーブルＤおよびテーブルＸが最下段ではなく、さらに下位に延びているのであれば、テーブルＣで分岐した次のテーブルＤおよびテーブルＸはその下位にそれぞれ１エントリしか存在しない。このため、下位テーブルは省略される。省略テーブル形式で生成されると、検索時は照合装置５０がテーブル２８の省略マークを見て、そのテーブル下位が省略されていることを検出する。したがって、照合装置５０は、次段のテーブルを読み出さずに最終照合結果を得ることができるので、照合時間も短縮できる。
圧縮テーブル（照合テーブル）２８が省略テーブルの場合には、４ビット×ｎ段分のエントリ省略ビット列が記録される。したがって、照合装置５０では、エントリビットをシフト読み出ししながら検索モードに応じた照合を行うことが可能となる。１エントリに対する完全一致・近似一致の照合であれば、上述した照合器５０の比較部５２を使う代わりに、専用化した比較器を実装したほうが効率的な場合がある。また、専用比較器を使用するのであれば、４ビット比較×ｎ回でおこなう必要はなく、リソースのバランスを見た上で多ビットの比較器とすることが望ましい。
省略テーブルでは検索対象キー２１と１エントリとの比較であるため、完全一致検索であれば完全一致照合、範囲検索であれば、大・同・小が判定できる比較照合が可能な比較器でよい。また、比較後のエントリ選択処理は不要であり、比較結果から検索結果を判定するだけである。完全一致であれば比較で一致なら検索成功、不一致なら検索失敗である。範囲一致であれば比較で大または一致であれば（右倒れ型）検索は成功、左倒れ型の場合も同様に比較が小または一致なら検索成功である。
削除については、削除の結果、１エントリとなる部分を検出し、その下位からエントリビット列を集約し再度の省略テーブル化を行わなければならない。テーブル管理の処理時間は増加する可能性がある。しかしながら、上述したように、照合時間を短縮できるので、メリットは大きい。各段のテーブル２８に収容エントリ数カウンタを設け、上位から下位へ削除エントリを辿る際にカウンタを減算し、１エントリのみとなるテーブル位置を検出する。そのテーブルを省略テーブルに変更し、その下位の省略対象エントリのテーブル列を辿り、最下段から上位へと省略ビット列（＝エントリＮｏ）を合成しながら上位へと上げていき、省略テーブルに集約して省略ビット列として記録するという方法がある。削除によるテーブル再省略化は、上述した更新処理よりも複雑でありテーブルアクセスも増える（時間がかかる）。従って、登録時のみ省略・展開をおこない、削除では再省略化をおこなわない方式もありうる。検索頻度と登録・削除頻度とのバランスで、登録削除が一定以上多い場合、展開・省略の繰り返し、すなわち、テーブル確保・開放の繰り返しとなり、分類器全体の性能低下を招く可能性もある。
照合装置のパイプライン化
図６６に、要求応答方式のメモリアクセスと照合装置の内部のパイプライン化の概要について示している。上記においても説明したが、照合装置５０においてはマスクデータ２８ａの読み出しがボトルネックの１つである。マスクデータ２８ａがなければ、判定ユニット５４から下流の処理（ＶＬＤからＳＥＬおよび出力ユニット５５における処理）が実行できず、マスクデータ２８ａの読み出しと並列に実行できるのは主に比較ユニット５２の処理だけである。従って、照合器５０の内部処理もパイプライン構成とし、テーブルロード（マスク読み出し）フェーズにてキャッシュ（ＳＤＲＡＭ）へメモリリード要求を出し、応答のあったものからＶＬＤ以降の処理をおこなうことが考えられる。そのために、ＶＬＤステージの前に待ち行列５７があり、そこで応答の待ち合わせがおこなわれる。
図６６に示した例では、メモリ要求〜応答の間にＣＭＰステージ５２を入れているため、待ち行列５７に待ち合わせ機構が必要となる。データキャッシュなしの場合は、メモリアクセスはＦＩＦＯであり待ち行列５７もＦＩＦＯによる待ち合わせでよいが、データキャッシュがあった場合、ヒット・ミスヒットにより順序性がなくなり、ＣＡＭ等のＦＩＦＯ型よりは高度な待ち合わせ機構が必要となる。データキャッシュなしの場合でも、メモリアクセスをともなわないモード（スルーなど）があるので、やはり単純なＦＩＦＯ待ち合わせ型の行列では無理がある可能性がある。メモリアクセスを伴わない場合も、ダミーのアクセス要求を出してダミー応答を戻させ、応答数とＦＩＦＯ待ち数を整合させればＦＩＦＯ型で対応できる可能がある。
図６７に異なる照合装置５０の例を示してある。この例では、メモリアクセスを伴うものとそうではないものを分岐させ、メモリアクセスを伴うものは非順序の応答をＶＬＤ直前の合流待ち行列５７に戻す。一方、メモリアクセスを伴わないものは、待ち行列５７の前のステージ５７ｐで必要な処理があればおこない、合流待ち行列５７に入る。この場合、合流待ち行列５７は単なる２方向からの合流のみであり待ち合わせは不要となる。この構成では、待ち合わせ機構を不要とするため、メモリアクセスとＣＭＰ処理５２の（空間的な）並列化はなされないが、照合装置５０の内部のパイプラインにより時間的な並列化には有効である。
マスクデータのプリフェッチ
図６８に、マスクデータを先読み対応可能なテーブル化によるメモリアクセスストールを解消する例について示してある。マスクデータの読み出しに係るボトルネックを解消するためにテーブル２８の構成を変更する。図６８（ａ）に示すテーブル２８は、そのテーブルのエントリ有無を示す情報としてマスクデータ２８ａがあり、次テーブルのアドレスを示すアドレステーブルを示すＮｅｘｔＴＡＧ×１６エントリで構成されている。図６８（ｂ）に示す第１型の改良型テーブル２８１は次段のアドレス「ＮｅｘｔＴＡＧ×１６エントリ」２８ｂの次に、次段のマスクデータ「ＮｅｘｔＭａｓｋ×１６エントリ」２８ｐを配置したテーブル構成となっている。また、図６８（ｃ）に示す第２型の改良型テーブル２８２は、次段のマスクデータ「ＮｅｘｔＴＡＧ」２８ｂと次段のマスクデータ「ＮｅｘｔＭａｓｋ」２８ｐのペアが１６エントリ登録されているテーブル構成である。いずれも、次段の照合テーブル２８のアドレスだけではなく、マスクデータ２８ａも備えているので、次段のマスクデータ２８ａをプリフェッチすることができる。
ただし、改良型のテーブル２８１および２８２においても、テーブル管理や検索以外での利用のため、次段のマスクデータ「ＮｅｘｔＭａｓｋ」と同じ値が、次段のアドレス「ＮｅｘｔＴＡＧ」の指すテーブル２８ｂに記録されていることが望ましい。したがって、あるテーブルにはそのテーブル自身のマスクデータと、次段のマスクデータの２種のマスクデータが存在することが望ましい。テーブル下位からエントリを辿っていく場合に、上位のテーブルにしかマスクデータがない場合、そのテーブルだけでは隣接エントリへの移動が不可能になってしまうからである。
次段のマスクデータをプリフェッチする構成にするのに伴い、照合装置５０の間をフローする照合継続情報のデータパケット３３にマスクデータ２８ａを追加する。この改良により、照合装置５０の処理においては、入力パラメータ（照合継続情報）３３としてその照合装置５０で使用する照合テーブルのマスクデータ２８ａが与えられる。このため、マスクデータ２８ａを必要とする判定ユニット５４から下流の処理と、ロードユニット５３の処理とを並列に実行することが可能となる。
マスクデータ２８ａをリードすることに起因するストールを解消するという点では、分類装置１５あるいは照合装置５０に内部ＳＲＡＭを設け、各テーブルのマスクデータ２８を照合装置５０の内部に配置することで並列度を向上することも可能である。
以上に説明した照合方法および照合装置は、ＩＰヘッダのようなビットストリングを一致検索したり、範囲検索してルーティングするデータ管理方法を実現するのに好適である。すなわち、照合装置５０、および照合装置５０を備えた分類装置１５は、データ管理装置１の検索機構１０、８ｓ、７ｓおよび６ｓとして好適なものである。しかしながら、本発明の照合方法および照合装置の適用範囲は、これらに限定されるものではない。
ＭＩＮ検索・ＭＡＸ検索
複数の照合装置５０を備えた分類器１５を様々に応用する場合、ＭＩＮ検索・ＭＡＸ検索があると便利である。バイパスをＭＡＸバイパスとしていた場合に、検索対象キー｛１１・・・１１｝で右倒れ近似検索をおこなうことで、登録エントリの中からＭＡＸエントリを検索することはできる。だが、ＭＩＮエントリは検索できない。従って、この場合、ＭＩＮ検索モードで検索することでＭＩＮエントリを取り出すことになる。ソートなどのように検索ではなく、登録＆取り出しの処理において、分類器１５を利用できる場面がある。このとき、ＭＩＮ検索およびＭＡＸ検索の両方を備えていることはメリットがある。
照合器５０において、比較ユニット５２の処理を省略し、判定ユニット５４からなる検索モードが実行できるようにすることも有効である。たとえば、比較ユニット５２のＣＭＰｉからは常に「＝」（０１）が出力されるようにする。あるいはＭＩＮ検索・ＭＡＸ検索モードになったときには、比較ユニット５２をスルーして判定ユニット５４のＶＬＤ５４ａに「０１」が入力される回路としても良い。
この検索モードにおいては、ＶＬＤ５４ａにより有効エントリのみ「０１」となり、ＳＥＬ部５４ｂにて、ＭＡＸ検索モードであれば比較結果が「０１」のエントリの中から最もエントリＮｏの大きなエントリが選択される。また、ＭＩＮ検索モードであれば最もエントリＮｏの小さいエントリが選択される。右倒れ・左倒れのＧｌ・Ｇｒ関連部でエントリ選択論理を「＞（１１）・＜（１０）」から「＝（０１）」に変更することにより実現できる。テーブル乗り移り処理であるタグ更新部５５ｂは完全一致検索モードに準じ、出力Ｓｒ・Ｓｌで指定されたエントリＮｏを次テーブルとした照合タグ情報３４の更新をおこなう。以上により、各段のテーブルで最小エントリ・最大エントリを辿っていくＭＩＮ検索・ＭＡＸ検索機能を提供できる。
次に、分類装置１５をソートへ適用する場合、ソート後のデータ読み出しのための拡張が必要となる。昇順先頭読み出し・降順先頭読み出しはＭＩＮ検索・ＭＡＸ検索で可能である。従って、昇順次読み出し・降順次読み出しのためのコマンドが必要となる。これを実現するためには、テーブルは双方向リンク型テーブルとする。また、昇順先頭読み出し（ＭＩＮ検索あるいは｛０・・・０｝近似検索）・降順先頭読み出し（ＭＡＸ検索あるいは｛１・・・１｝）の出力パラメータとして、最下段テーブルのＴＡＧ＋エントリＮｏを読み出しハンドラとして出力する。
さらに、コマンド「ＮＥＸＴ・ＰＲＥＶ」を設け、読み出しハンドラ（最下段テーブルＴＡＧ＋エントリＮｏ）を入力パラメータとして受け取ると、次エントリの結果ＴＡＧと共に更新した読み出しハンドラ（最下段テーブルＴＡＧ＋エントリＮｏ）を出力する。照合器５０の内部では、まず照合ＴＡＧ（読み出しハンドラの最下段テーブルＴＡＧ）３４に従い、テーブル２８よりマスクデータ２８ａを読み出す。読み出しハンドラのエントリＮｏに基づき、次エントリＮｏ（前エントリＮｏ）を算出し、テーブル２８から対応するエントリのアドレス「ＮｅｘｔＴＡＧ」（最下段なので結果ＴＡＧ）を読み出す。もし、次エントリＮｏ（前エントリＮｏ）が別のテーブルになる場合は、双方向リンクの上位リンクを使い１段上位テーブルに遡り、そこで隣接エントリに移る。１段上位にも自エントリしかなかった場合は更に上位に遡っていく。上位テーブルで隣接エントリに移ったら再び最下段まで降りなければいけないが、これはＭＩＮ検索・ＭＡＸ検索モードによりおこなう。
データベース検索
この分類装置１５は、リレーショナルデータベース（ＲＤＢ）にも適用できる。バイナリビットツリーによる検索はデータベースではインデクスに相当する。したがって、複数のフィールドをバイナリビットツリー登録しておけば、これらをキーとしてデータベースを検索できる。検索の種類は最長一致でも、範囲一致でも、完全一致でも対応できる。この処理では、複数のフィールドを検索後のＡＮＤ処理（積集合をとる処理）を高速で行うことが望ましい。つまり「Ａ０＜身長＜Ａ１」と「Ｂ０＜体重＜Ｂ１」を別々に検索できたときに、「Ａ０＜身長＜Ａ１」かつ「Ｂ０＜体重＜Ｂ１」の集合を高速に得られることが望ましい。予めフィールドが固定的に決定されているならば、そのフィールド群による複合（多次元）インデクスを生成しておくのが一般的である。対象フィールドが固定的に決定できず、複合インデクス（身長と体重の２次元インデクス）が生成できない場合、「ＣＰＵ＋ＯＳ」の検索システムではおそらく次の方法で論理積を演算する。すなわち、レコード名をＲｉとすれば、「Ａ０＜身長＜Ａ１」の集合｛Ｒ１，・・・Ｒｍ｝（個数はｍ個）と、「Ｂ０＜体重＜Ｂ１」の集合｛Ｒ′１，・・・Ｒ′ｍ｝（個数はｍ′個）を求め、二つの集合のメンバを総当りで比較し両方に属するメンバを残す。これがＡＮＤ集合になる。この場合、比較計算はｍ×ｍ′回になる。
これに対し、分類装置を用いると、次のような操作が可能である。集合｛Ｒ１、・・・Ｒｍ｝を分類器１５に登録し、集合｛Ｒ′１，・・・Ｒ′ｍ｝を照合した時、前の集合で登録したメンバにヒットすればこれがＡＮＤ集合のメンバになる。この場合、比較計算はｍ＋ｍ′回になり、処理速度が向上する。
この分類装置は、積集合（ＡＮＤ集合）だけでなく、和集合（ＯＲ集合）の演算も、ユニーク化も、また、ソートも簡単にできる。「ＣＰＵ＋ＯＳ」の検索システムで、データベースにテンポラリーな印をつけて良いならば、次の方法で論理積（ＡＮＤ）を演算できる。集合｛Ｒ１，・・・Ｒｍ｝の各メンバを検索の都度、印をつける。｛Ｒ′１，・・・Ｒ′ｍ｝の各メンバを検索の都度、前の印があるものをあげる。この場合、比較計算はｍ＋ｍ′回になるが、不要な印の処理やディスク本体のデータベースへのアクセスなどの問題が起こり、時間がかかりすぎる。ビットマップ法は高速に論理積（ＡＮＤ化）できるがルール数に制約があるなど汎用化は難しい。
これに対し、上述した分類装置によるＡＮＤ集合をとる方法は、パケットフィルタリング等の複数ルール集合のＡＮＤ集合化にも使える。本分類器１５では、例えば、５つのＩＤ（５種類のビットストリームに対する検索）に対応する５つのインスタンスを並列に動かし、ＩＤ毎にヒットするルールに印をつけていく。既に４つの印を確認したインスタンスはこれをＡＮＤインスタンスへ通知する。ＡＮＤインスタンスは通知される都度、今の最優先ルールと比較し、更新する。５つのインスタンスが全て終了した後、今の最優先ルールに決定する。
非リニアメモリアドレッシング
本発明の分類装置により、ツリー構造型の非リニアメモリアドレッシングの実現も可能となる。アドレスを検索対象のキーとし、本発明の分類器をメモリ管理機構に取り込むことで、上位層からみて柔軟なアドレッシングが行えるメモリ空間が実現できる。これは従来のリニアアドレス空間メモリに対し、上位層が明示的に構造化管理を行っていた部分をメモリ管理機構が隠蔽カプセル化し、メモリを抽象化オブジェクト化することに他ならない。
さらに、従来、ＣＰＵのコードでおこなっていたメモリのオブジェクト化アプローチとは異なり、ハードウェアベースのアプローチとなる。したがって、高速および効率的に、オブジェクト化を実現できる。特に、検索のためのメモリ利用の場合、分類器によるアドレッシング（＝照合）が効果的に利用できる。
図６９に、その一例を示してある。受信時、インターフェイス（Ｉ／Ｆ）２３０を経由してリニアアドレス（論理アドレス）の書き込みデータ（受信データ）２３９を受け付ける。分類器１５は、受信データ２３９をＳＤＲＡＭメモリ１１へ書き込む。分類器１５は、アドレス変換機能２３２を持っているので、論理アドレス（リニアアドレス）から実アドレス（リストやツリーなど何らかの構造をもった非リニアアドレス）へ変換し、ＳＤＲＡＭ１１に書き込む。一方、Ｉ／Ｆ２３０を介してデータを送信している方は、リニアアドレスで書き込むことができる。送信時も同様である。Ｉ／Ｆ２３０からリニアアドレスで読み出すときに、分類器１５を経由することで、アドレス変換をおこなう。これにより、リニアアドレスから実アドレスへ変換し、非リニアなアドレスからの連続読み出しに対応できる。
ＣＰＵ２３５も分類器１５によるアドレッシングを利用できる。ＣＰＵ２３５はデータフロー動作ではないため、分類器１５が提供するアドレッシング配下のメモリ１１だけではコード実行等に支障がある。従って、コード蓄積やデータ加工用として独自にメモリ２３６を持ち、分類器１５の配下のメモリ１１はパケットメモリとして利用する。ルータ等を考えた場合、ＣＰＵ２３５は分類器１５によるＴＣＰ／ＩＰ処理を補助するものとして、ルーティングエントリ管理やフィルタリングルール管理などのハードウェア処理ではカバーできない処理を肩代わりする。つまり、分類器１５がメイン機能を担当し、ＣＰＵはサブとして動作する。
テーブルルックアップ駆動プロセッサ
分類装置１５は、状態遷移によるテーブルルックアップ駆動のプロセッサにも適用可能である。図７０は単純状態遷移を示しており、ＫＥＹ（ｉ）を検索し、その結果ＴＡＧ（ルール）でＫＥＹ（ｉ＋１）を読み取れるようにしておけば、「ＫＥＹ（１）−ＫＥＹ（２）−・・・−ＫＥＹ（ｊ）−ＫＥＹ（１）」のような単純ループ型の状態遷移ができる。
図７１は、イベント連動型単純状態遷移を示しており、イベント（ｉ）がトリガとなってＫＥＹ（ｉ＋１）に遷移し、イベント（ｉ）以外でＫＥＹ（ｉ）に戻る。ＫＥＹ（ｉ）はイベント（ｉ）待ち行列でイベント（ｉ）を待つ。イベント（ｉ）が来たらＫＥＹ（ｉ）にイベント（ｉ）を直列につないで検索する。イベント（ｉ）は１ビットで、正が｛１｝、誤が｛０｝としＫＥＹ（ｉ）を「１０１・・・０１」とすれば「１０１・・・０１１」でヒットし、「１０１…０１０」でミスヒットとなる。ヒットルールにはイベント（ｉ＋１）待ち行列アドレス、ＫＥＹ（ｉ＋１）が書き込んである。ミスヒットルールにはイベント（ｉ）待ち行列アドレス、ＫＥＹ（ｉ）が書き込んであり、戻ることになる。さらに、本発明の分類装置は、条件分岐を含む状態遷移にも適用可能である。
さらに詳しく説明する。本書において説明している分類器における検索とは、「検索対象のキーを入力とし、そのキーをタグ（ルートタグ）で示されるテーブルツリーのエントリと照合し、結果（結果タグ）を出力する」ことである。オートマトンのベースとなる状態遷移における検索は、「外部入力を現在状態からの遷移条件で評価し遷移先を決定する」と定義できる。ここで、「外部入力＝検索対象キー」、「現在状態＝現在タグ」、「遷移条件＝照合ロジックとタグの指すテーブルのエントリ記述」、とすれば、「外部入力（キー）を現在状態（現在タグ）からの遷移条件（照合ロジックと現在タグの指すテーブルエントリ記述）で評価し遷移先を決定する」と定義でき、本発明によりオートマトンを実現できる。
上記においては、分類器あるいは照合器による検索は、ツリー状に組織化された構造（テーブル）における上位から下位への一方向の遷移として説明しているが、状態遷移のように、ネットワーク状に組織化された構造における双方向の遷移であっても良い。これらの相違は、比較スケールが異なるだけと言うことができる。すなわち、分類器の検索がツリーの一方向遷移であるというのはミクロの視点であり、状態遷移が双方向ネットワークであるというのはマクロの視点である。１つの検索対象キーに対する動作という同一スケールで見た場合、照合器および分類装置は、予め定められたルール（エントリ記述）に従って、検索対象キーを評価し、結果を出力する。したがって、状態遷移においては、ある状態における遷移条件を、分類装置で検索する際の、検索のツリー状エントリ記述によって表現すれば良い。言い換えれば、状態遷移を検索の連鎖と見て、その状態毎の検索を分類器検索により実現するアプローチにより、分類器を、状態遷移マシン、あるいはオートマトンに応用できる。
図７２（ａ）に、状態遷移を、分類器を用いた検索により実現する例を示してある。状態Ｓ１から条件「ａ」で状態Ｓ２に遷移し、条件「ｂ」で状態Ｓ３に遷移する状態遷移マシンを仮定する。図７２（ｂ）に示すように、状態Ｓ１における状態遷移条件「ａ」および「ｂ」を登録ビットパターン（エントリ）とする状態Ｓ１の登録パターンテーブル（Ｓ１テーブル）３２１を生成することができる。したがって、図７２（ｃ）に示すように、Ｓ１テーブル３２１から、照合用のバイナリビットツリー３２４を形成する複数の部分パターンテーブル３２５を生成する。そして、分類装置１５により、現状態である状態Ｓ１で得られた状態遷移の評価元（条件）を検索対象のキーとして、上述した照合処理を行い、一致検索により遷移先の状態を出力できる。
図７３（ａ）に、ネットワーク状に状態が遷移する簡単な例を示してある。この例では、上記に加え、条件「ｃ」で状態Ｓ２から状態Ｓ１に移行し、条件「ｄ」で状態Ｓ２から状態Ｓ３に移行する。また、条件「ｅ」で状態Ｓ３から状態Ｓ１に移行し、条件「ｆ」で状態Ｓ３から状態Ｓ２に移行する。図７３（ｂ）に示すように、状態Ｓ２における状態遷移条件「ｃ」および「ｄ」をエントリとする状態Ｓ２の登録パターンテーブル（Ｓ２テーブル）３２２と、状態Ｓ３における状態遷移条件「ｅ」および「ｆ」をエントリとする状態Ｓ３の登録パターンテーブル（Ｓ３テーブル）３２３とを生成することができる。状態Ｓ２に移行したときは、その状態における評価元（条件）が検索対象のキーとし、Ｓ２テーブル３２２から生成された部分テーブル３２５を用いて分類装置１５により照合処理が行われる。状態Ｓ３に移行したときは、その状態における評価元（条件）が検索対象のキーとし、Ｓ３テーブル３２３から生成された部分テーブル３２５を用いて分類装置１５により照合処理が行われる。このように、移行した先で、照合する際に用いられる部分テーブル３２５を入れ替えることにより、ネットワーク状の状態遷移に対しても本発明を適応することができる。部分テーブル３２５の入れ替えは、部分テーブル３２５の最上位の部分テーブルのアドレスを示すルートタグを指定することで可能なことは説明した通りである。
図７４に、分類装置１５を用いたデータ処理装置３００の一例を示してある。このデータ処理装置３００は、状態により処理内容が決まるデータ処理回路３０１と、状態のそれぞれにおけるデータ処理回路３０１の処理内容（アクション）３１０を格納したＲＡＭ３０２と、データ処理回路３０１の状態遷移エンジンとなる分類装置１５とを備えている。ＲＡＭ３０２には、状態に応じて分類装置１５の検索に用いられる複数種類のテーブルツリー３２４と、それを構成する部分テーブル３２５が記憶されている。このデータ処理装置３００は、アクション実行部であるデータ処理回路３０１の状態が遷移する状態遷移マシンであり、分類装置１５は、データ処理回路３０１から供給されたキー（検索キー）３０３を検索対象のビットストリングとし、ルートタグ（検索テーブルツリーＴＡＧ）３０４によりＲＡＭ３０２に記憶されたテーブルツリー３２４を検索し、結果タグ３０５を出力する。この状態遷移マシン３００において、検索テーブルツリーＴＡＧ３０４は、遷移条件テーブルツリー３２４のルートタグであり、結果タグ３０５は、次状態タグである。また、検索キー３０３は、状態遷移の評価元となるデータである。したがって、このデータ処理装置３００においては、データ処理回路３０１は分類装置１５に対して検索キー３０３を供給する検索対象供給手段としても機能している。
次状態タグ３０５とは、その状態への遷移に伴い実行すべきアクション記述３１０と、その状態から別の状態への遷移条件記述を指すタグである。実装によってはアクション記述や条件記述を、次状態タグ３０５に関連して決まる間接ポインタで示すことも可能である。アクション記述３１０では、遷移条件の評価元となる検索キー３０３を、データ処理回路３０１の内部あるいは外部状態から取り込むプロセスも指示されている。また、次状態タグ３０５により、次の遷移条件を検索する遷移条件テーブルツリー３２４が決まるように、アクション記述３１０に、遷移条件テーブルツリー３２４を構成する照合テーブルの最上位を示すルートタグ３０４の情報を入れておくことも可能である。
したがって、このデータ処理装置３００は、分類装置１５において、照合装置５０を用いた多段階の照合方法により状態遷移の評価元となるデータを検索対象のビットストリングとし、複数の状態遷移条件を示すデータを複数の登録ビットパターンとして照合し（照合する工程）、その照合結果によりデータ処理回路３０１の状態を遷移する（遷移する工程）制御方法により制御されている。このため、分類装置１５に搭載される各々の照合装置５０においては、上記において説明した照合方法における現段階を現状態として照合処理が行われる。そして、現状態の次の状態を示す照合継続情報が出力される。分類装置１５において、次の状態を検索するために、１つの照合段階を費やしても良く、複数の照合段階を費やしても良い。
アクション記述３１０をコード、キー３０３を分岐先アドレス、分類装置１５よる遷移条件評価を分岐先メモリアドレス変換器と捉えることも可能である。したがって、データ処理装置３００は、状態遷移ベースのプロセッサとして機能する。通常のプロセッサでは、ＣＰＵという状態遷移ハードウェア（チューリングマシン）の上にソフトウエアコードでアプリケーションとして状態遷移マシンを実現する。このデータ処理装置３００は、分類装置１５を用いて、直接的に状態遷移マシンを実現することができる。
さらに、この状態遷移マシン３００により、有限状態オートマトン（ＦＡ）が実現できる。有限状態オートマトンは、入力により内部状態を変えていき、その結果として何らかの応答を出力する機械である。このデータ処理装置３００においては、ルートタグ３０４を変更したり、アクション記述３１０の命令セットによりデータ処理回路３０１がＲＡＭ３０２の内容を書き換えたりすることにより、遷移条件テーブルツリー３２４（すなわち照合テーブル）を変えることができる。したがって、データ処理装置３００は、内部状態の変更を、状態の遷移と状態ごとのアクションで定義した状態遷移マシンとして実現されている。
有限状態オートマトンには、決定性ＦＡ（ＤＦＡ）と、非決定性ＦＡ（ＮＦＡ）がある。決定性ＦＡは、状態の遷移が一意に決まる有限状態オートマトンであり、非決定性ＦＡは、遷移状態が一意に決まらない有限状態オートマトンである。理論的にはＮＦＡはＤＦＡに変換できるが、ＮＦＡをＮＦＡとしてハードウェアとして実現できることには状態空間の節約などの点で有意義である。「遷移状態が一意に決まらない」ことは、「状態が並立する」ということである。したがって、データ処理装置３００により、並列データフロー型のシステムを構築すれば、その状態マシンではＮＦＡを実現することが可能となる。
通常のＣＰＵでは、バックトラックなどにより、状態の並列を逐次方式で解決するため効率が良くない。しかしながら、並列データフロー型の分類器オートマトンでは効率的なＤＦＡが実現できる。
ＱｏＳへの適用
分類装置１５をクラス階層構造データへのＱｏＳに適用することができる。したがって、図１に示したルーティング装置１のＱｏＳ機能７にも採用されている。ＩＰルータ１におけるパケットφｐのＱｏＳに用いられるクラス検索を、ＩＰアドレスを検索対象のビットストリングで行う場合、範囲検索を用い、検索テーブル７ｍへ登録するエントリを、クラス構造を反映したエントリとすることができる。
図７５（ａ）に、クラス構造の一例を示してある。このクラス構造３５０に対し、図７５（ｂ）に示すような照合用のバイナリビットツリー３５４を形成することができる。このバイナリビットツリー３５４は、登録ビットストリングとして右倒れ型範囲検索用エントリが登録されている。したがって、図７５（ｂ）に破線で示すようなＩＰアドレス３５５を検索対象ビットストリングとし、分類装置１５を用いた範囲検索により、そのＩＰアドレス３５５が該当する最下位クラスのエントリを得ることができる。この例では、ＩＰアドレス３５５はクラス１．１に分類される。
分類装置１５による検索で最下位クラスを分類する際に用いられるクラスツリー３５０も形式としてはテーブル型のツリー構造である。したがって、図７６に示すように、クラスツリー３５０のテーブルと、検索ツリー３５４の部分テーブルとを関連付けすることが可能となる。このため、分類装置１５においてテーブル照合を行う照合器５０に、クラスツリー３５０に対する処理を行うハードウェアを追加することも可能である。例えば、自クラスの割り当てトークン消費、トークン不足の場合の上位クラスからの借り入れなどのために上位・下位ツリーを探索する機能を追加することが可能であり、クラスのトークン管理をハードウェア化することができる。
この管理は複雑になるが、上述した状態遷移（オートマトン）プロセッサを適用することができる。ＱｏＳのための検索やトークン管理のためのツリー探索などを、プロセッサとしてのアドレッシングとすることにより、データ構造そのものとデータへの処理コードが一体となったアーキテクチャが実現する。
図７７に示すように、通常のＣＰＵ３６０では、メモリ３６１に格納された処理コード選択用検索テーブル３６２の検索処理がＣＰＵコード３６３によりソフトウェア（アプリケーション）として実行される。このため、検索テーブルを検索するための検索コード（検索処理のソフトウェア）３６３と、処理コード（データ処理のためのソフトウェア）３６４が分離している。したがって、ＣＰＵ３６０は、検索コード３６３のロード（ｉ段階）、検索コード３６３による実行（ｉｉ段階）、コンテキストスイッチ（データ処理コード３６４のロード）（ｉｉｉ段階）、処理コード３６４の実行（ｉｖ段階）となる。処理コード３６４のアドレス解決は、照合用の検索キー空間をソフトウェア的に検索することにより行われ、処理コード３６４のアドレッシング（コード空間）と検索キーのアドレッシング（検索キー空間）とは一致しない。
これに対し、図７８に示すように、分類装置１５を用いたプロセッサ３００においては、検索テーブル（データ構造あるいはデータ空間）３６２に対して照合器５０によるハードウェア検索で、検索キーに対応する処理コード３６４のアドレスを得ることで、検索キーから直に（ハードウェア的に）処理コード３６４のアドレスを解決することができる。そして、そのアドレス解決により得られた処理コード３６４を処理回路３０１により直接実行できる。したがって、コンテキストスイッチは不要となり、コード空間と検索キー空間とを一致させることができる。
通常のＣＰＵで分類装置を用いたプロセッサのように直接的なアドレス解決が行えないのは、ＣＰＵがリニアアドレッシングに基づくチューリングマシンであり、そのチューリングマシン上にソフトウェア的（仮想的）に状態遷移マシンやオートマトンを実装しなければならないためである。これに対し、分類装置を用いると、検索処理とアドレス解決とを結びつけ、状態遷移マシンあるいはオートマトンを直接的に実現することが可能となり、データ空間とコード空間を統合した効率的なシステムを実現することができる。また、この延長線上に、データとそのデータに対する処理手続きを統合したオブジェクト指向プロセッサのようなシステムも実現可能となる。
【産業上の利用可能性】  本発明に係る照合方法および装置は、完全一致検索、最長一致検索から多次元範囲一致検索までカバーでき、複数の照合装置を備えた分類装置は、パケットフィルタリング・ＳＰＤ（Ｓｅｃｕｒｉｔｙ  Ｐｏｌｉｃｙ  Ｄａｔａｂａｓｅ）検索、ステートフルインスペクションなどのルール検索に用いられることができる。さらに、データキャッシュ、履歴キャッシュを導入することにより、照合速度を向上することが可能であり、多種多様な検索を伴う処理に適用できる。検索以外の応用機能としては、集合抽出、集合演算、整列（ソート）・ユニーク化、メモリアドレッシング、状態遷移マシン、知的連想マシン、オートマトンへの応用（言語理論・オートマトン理論）、大規模なデータベースから有用なルールあるいはパターンを高速に発見するデータマイニングなどを例として挙げることができ、応用範囲はこれらに限られるものではない。
【図１】
2004032435.tif 000007
【図２】
2004032435.tif 000008
【図３】
2004032435.tif 000009
【図４】
2004032435.tif 000010
【図５】
2004032435.tif 000011
【図６】
2004032435.tif 000012
【図７】
2004032435.tif 000013
【図８】
2004032435.tif 000014
【図９】
2004032435.tif 000015
【図１０】
2004032435.tif 000016
【図１１】
2004032435.tif 000017
【図１２】
2004032435.tif 000018
【図１３】
2004032435.tif 000019
【図１４】
2004032435.tif 000020
【図１５】
2004032435.tif 000021
【図１６】
2004032435.tif 000022
【図１７】
2004032435.tif 000023
【図１８】
2004032435.tif 000024
【図１９】
2004032435.tif 000025
【図２０】
2004032435.tif 000026
【図２１】
2004032435.tif 000027
【図２２】
2004032435.tif 000028
【図２３】
2004032435.tif 000029
【図２４】
2004032435.tif 000030
【図２５】
2004032435.tif 000031
【図２６】
2004032435.tif 000032
【図２７】
2004032435.tif 000033
【図２８】
2004032435.tif 000034
【図２９】
2004032435.tif 000035
【図３０】
2004032435.tif 000036
【図３１】
2004032435.tif 000037
【図３２】
2004032435.tif 000038
【図３３】
2004032435.tif 000039
【図３４】
2004032435.tif 000040
【図３５】
2004032435.tif 000041
【図３６】
2004032435.tif 000042
【図３７】
2004032435.tif 000043
【図３８】
2004032435.tif 000044
【図３９】
2004032435.tif 000045
【図４０】
2004032435.tif 000046
【図４１】
2004032435.tif 000047
【図４２】
2004032435.tif 000048
【図４３】
2004032435.tif 000049
【図４４】
2004032435.tif 000050
【図４５】
2004032435.tif 000051
【図４６】
2004032435.tif 000052
【図４７】
2004032435.tif 000053
【図４８】
2004032435.tif 000054
【図４９】
2004032435.tif 000055
【図５０】
2004032435.tif 000056
【図５１】
2004032435.tif 000057
【図５２】
2004032435.tif 000058
【図５３】
2004032435.tif 000059
【図５４】
2004032435.tif 000060
【図５５】
2004032435.tif 000061
【図５６】
2004032435.tif 000062
【図５７】
2004032435.tif 000063
【図５８】
2004032435.tif 000064
【図５９】
2004032435.tif 000065
【図６０】
2004032435.tif 000066
【図６１】
2004032435.tif 000067
【図６２】
2004032435.tif 000068
【図６３】
2004032435.tif 000069
【図６４】
2004032435.tif 000070
【図６５】
2004032435.tif 000071
【図６６】
2004032435.tif 000072
【図６７】
2004032435.tif 000073
【図６８】
2004032435.tif 000074
【図６９】
2004032435.tif 000075
【図７０】
2004032435.tif 000076
【図７１】
2004032435.tif 000077
【図７２】
2004032435.tif 000078
【図７３】
2004032435.tif 000079
【図７４】
2004032435.tif 000080
【図７５】
2004032435.tif 000081
【図７６】
2004032435.tif 000082
【図７７】
2004032435.tif 000083
【図７８】
2004032435.tif 000084
【手続補正書】
【提出日】平成16年8月13日(2004.8.13)
【手続補正００１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【書類名】特許請求の範囲
【請求項１】検索対象のビットストリングを複数ビットの部分対象ビットストリングに分けて、予め登録された複数の登録ビットパターンと多段階で照合する過程を有するビットストリングの照合方法であって、
前記多段階に含まれる１つの照合段階である現段階は、
前記検索対象のビットストリングから、前記現段階の前記部分対象ビットストリングを選択し、前記現段階の部分対象ビットストリングが取り得る全ての値と照合する全照合工程と、
前記複数の登録ビットパターンの各々の部分登録ビットパターンを示すためのパターンテーブルであって、前記現段階の部分対象ビットストリングが取り得る全ての値に対応した領域を持ち、前記現段階に対して先行する段階から得られる照合継続情報により決まる、前記現段階のパターンテーブルを、前記全照合工程とは独立に、前記全照合工程と前後して、または並列に、メモリよりロードするパターンロード工程と、
前記全照合工程の結果と前記現段階のパターンテーブルとにより、前記現段階の部分対象ビットストリングに一致する前記現段階の前記部分登録ビットパターンの有無を少なくとも示す照合結果を得る判定工程と、
前記照合結果により、前記現段階のパターンテーブルに対応するアドレステーブルから、前記現段階の次の段階の前記パターンテーブルのアドレスを含む前記照合継続情報を出力する出力工程とを有する照合方法。
【請求項２】前記パターンテーブルは、前記部分登録ビットパターンの有効無効を示すビットフラグからなるマスクデータである、請求項１の照合方法。
【請求項３】前記出力工程では、前記一致する現段階の部分登録ビットパターンに続く前記次の段階の前記パターンテーブルのアドレスを含む前記照合継続情報を出力する、請求項１の照合方法。
【請求項４】前記判定工程では、前記部分対象ビットストリングに値が最も近い最大または最小の前記現段階の部分登録ビットパターンの有無を含む前記照合結果が得られ、
前記出力工程では、前記最大または最小の現段階の部分登録ビットパターンに続く前記次の段階の範囲検索のパターンテーブルのアドレスを含む前記照合継続情報を出力する、請求項１の照合方法。
【請求項５】前記一致する現段階の部分登録ビットパターンがあり、さらに、前記最大または最小の現段階の部分登録ビットパターンがあるときに、前記範囲検索のパターンテーブルのアドレスを候補アドレスとして記憶する候補アドレス記憶工程を有し、
前記一致する現段階の部分登録ビットパターンおよび前記最大または最小の現段階の部分登録ビットパターンがないときには、前記出力工程において、前記候補アドレスを含む前記照合継続情報を出力する、請求項４の照合方法。
【請求項６】前記範囲検索のパターンテーブルのアドレスを含む前記照合継続情報が与えられたときは、前記全照合工程および判定工程をバイパスする工程を有し、
前記出力工程では、前記範囲検索のパターンテーブルに対応する前記アドレステーブルから、そのパターンテーブルに示された最大または最小の部分登録ビットパターンに続く次の段階のパターンテーブルのアドレスを含む前記照合継続情報を出力する、請求項４の照合方法。
【請求項７】前記パターンテーブルは、そのパターンテーブルに示された最大また最小の部分登録ビットパターンに対応して決まる最大または最小の前記登録ビットパターンを示すバイパスデータを有し、
前記範囲検索のパターンテーブルのアドレスを含む前記照合継続情報が与えられたときは、前記全照合工程、前記パターンロード工程および前記判定工程をバイパスする工程を有し、
前記出力工程では、前記範囲検索のパターンテーブルに対応する前記バイパスデータを含む最終照合情報を出力して前記検索対象のビットストリングの照合を終了する、請求項４の照合方法。
【請求項８】前記パターンテーブルおよび前記アドレステーブルを更新することにより、前記登録ビットパターンを追加または削除する更新工程を有する、請求項１の照合方法。
【請求項９】前記全照合工程と前記パターンロード工程とを並列に行う、請求項１の照合方法。
【請求項１０】複数の前記照合段階がパイプライン方式で実行される、請求項１の照合方法。
【請求項１１】それぞれの前記照合段階の前記パターンテーブルおよび前記アドレステーブルを含む照合テーブルを更新することにより、前記登録ビットパターンを追加または削除する更新工程を有し、前記照合段階と並列にパイプライン方式で実行される、請求項１０の照合方法。
【請求項１２】前記照合テーブルは、前記パターンテーブルに示された最大また最小の部分登録ビットパターンに対応して決まる最大または最小の前記登録ビットパターンを示すバイパスデータを有し、
前記更新工程においては、上位の前記照合段階の前記照合テーブルから下位の前記照合段階の前記照合テーブルを更新し、その際、前記バイパスデータの更新が発生する可能性のある前記照合段階の前記照合テーブルの更新は、前記下位の前記照合段階の前記照合テーブルの更新を待ってから行う、請求項１１の照合方法。
【請求項１３】前記照合テーブルは、前記パターンテーブルに示された最大また最小の部分登録ビットパターンに対応して決まる最大または最小の前記登録ビットパターンを示すバイパスデータを有し、
前記更新工程においては、上位の前記照合段階の前記照合テーブルから下位の前記照合段階の前記照合テーブルを更新する工程と、前記下位の照合テーブルの更新により前記上位の照合テーブルの前記バイパスデータの更新が発生した場合は、双方向リンクにより前記上位の照合テーブルの更新を行う工程とを有する、請求項１１の照合方法。
【請求項１４】複数の前記照合段階の間では、前記照合継続情報を含むデータがパケット化されて伝達される、請求項１の照合方法。
【請求項１５】請求項４に記載の照合段階を複数備えた分類過程を有し、前記登録ビットパターンは複数の分類結果を含む範囲を示している分類方法。
【請求項１６】複数の前記分類過程と、
前記複数の分類過程により得られる複数の前記範囲に含まれる前記複数の分類結果の論理積を演算し、最終の分類結果を得る論理演算過程とを有する、請求項１５の分類方法。
【請求項１７】前記論理演算過程では、前記複数の分類結果の論理積を行列演算し、前記最終の分類結果を得る、請求項１６の分類方法。
【請求項１８】請求項１５に記載の分類方法により、ＩＰアドレス、ポート番号およびプロトコルの少なくともいずれかを含むパケットを管理するためのビットストリングを前記検索対象のビットストリングとし、前記検索対象のビットストリングが属する前記範囲を照合する工程と、
前記検索対象のビットストリングが属する前記範囲の前記分類結果に基づき前記検索対象のビットストリングを備えた前記パケットを管理する工程とを有するデータ管理方法。
【請求項１９】請求項１に記載の照合方法により、前記検索対象のビットストリームを照合する工程と、
その照合する工程の照合結果に基づき前記検索対象のビットストリングを備えたデータを管理する工程とを有するデータ管理方法。
【請求項２０】請求項１に記載の照合方法により、状態遷移の評価元となるデータを前記検索対象のビットストリングとし、複数の状態遷移条件を示すデータを前記複数の登録ビットパターンとして照合する工程と、
前記照合する工程の照合結果によりデータ処理回路の状態を遷移する工程とを有するデータ処理装置の制御方法。
【請求項２１】検索対象のビットストリングを複数ビットの部分対象ビットストリングに分けて、予め登録された複数の登録ビットパターンと多段階で照合するために、前記多段階に含まれる少なくとも１つの段階を実行する照合装置であって、
前記検索対象のビットストリングから、前記多段階の１つの現段階の前記部分対象ビットストリングを選択し、その部分対象ビットストリングが取り得る全ての値と照合する全照合手段と、
前記複数の登録ビットパターンの部分登録ビットパターンを示すためのパターンテーブルであって、前記現段階の部分対象ビットストリングが取り得る全ての値に対応した領域を持ち、前記現段階に対して先行する段階から得られる照合継続情報により決まる、前記現段階のパターンテーブルを、前記全照合手段とは独立に、メモリよりロードするパターンロード手段と、
前記全照合手段の結果と前記現段階のパターンテーブルとにより、前記現段階の部分対象ビットストリングに一致する前記現段階の部分登録ビットパターンの有無を少なくとも示す照合結果を出力する判定手段と、
前記照合結果により、前記現段階のパターンテーブルに対応するアドレステーブルから、前記現段階の次の段階の前記パターンテーブルのアドレスを含む前記照合継続情報を出力する出力手段とを有する照合装置。
【請求項２２】前記パターンテーブルは、前記部分登録ビットパターンの有効無効を示すビットフラグからなるマスクデータである、請求項２１の照合装置。
【請求項２３】前記出力手段は、前記一致する現段階の部分登録ビットパターンに続く前記次の段階の前記パターンテーブルのアドレスを含む前記照合継続情報を出力する、請求項２１の照合装置。
【請求項２４】前記判定手段は、前記部分対象ビットストリングに値が最も近い最大または最小の前記現段階の部分登録ビットパターンの有無を含む前記照合結果を出力し、
前記出力手段は、前記最大または最小の現段階の部分登録ビットパターンに続く前記次の段階の範囲検索のパターンテーブルのアドレスを含む前記照合継続情報を出力する、請求項２１の照合装置。
【請求項２５】前記出力手段は、さらに、前記一致する部分登録ビットパターンがあり、前記最大または最小の現段階の部分登録ビットパターンがあるときに、前記範囲検素のパターンテーブルのアドレスを候補アドレスとして出力し、さらに、
前記一致する現段階の部分登録ビットパターンおよび前記最大または最小の現段階の部分登録ビットパターンがないときに、前記候補アドレスを含む前記照合継続情報を出力する、請求項２４の照合装置。
【請求項２６】前記出力手段は、前記範囲検索のパターンテーブルのアドレスを含む前記照合継続情報が与えられたときは、前記範囲検索のパターンテーブルに対応する前記アドレステーブルから、そのパターンテーブルに示された最大または最小の部分登録ビットパターンに続く次の段階のパターンテーブルのアドレスを含む前記照合継続情報を出力する、請求項２４の照合装置。
【請求項２７】前記パターンテーブルは、そのパターンテーブルに示された最大また最小の部分登録ビットパターンに対応して決まる最大または最小の前記登録ビットパターンを示すバイパスデータを有し、
前記出力手段は、前記範囲検索のパターンテーブルのアドレスを含む前記照合継続情報が与えられたときは、前記範囲検索のパターンテーブルに対応する前記バイパスデータを最終照合情報として出力する、請求項２４の照合装置。
【請求項２８】前記パターンテーブルおよび前記アドレステーブルを更新することにより、前記登録ビットパターンを追加または削除する更新手段を有する、請求項２１の照合装置。
【請求項２９】前記全照合手段と、前記パターンロード手段とは並列に動作する、請求項２１の照合装置。
【請求項３０】請求項２１に記載の照合装置を複数有する分類装置。
【請求項３１】前記複数の照合装置はパイプラインで接続されている、請求項３０の分類装置。
【請求項３２】前記複数の照合装置の間では、前記照合継続情報を含むデータがパケット化されて伝達される、請求項３０の分類装置。
【請求項３３】前記メモリに対してデータを入出力するキャッシュ装置を有する、請求項３０の分類装置。
【請求項３４】前記メモリには、前記パターンテーブルおよび前記アドレステーブルを含む照合テーブルが記憶されており、前記キャッシュ装置のキャッシュラインのサイズが前記照合テーブルのサイズと同一である、請求項３３の分類装置。
【請求項３５】最初の照合テーブルを指定する検索種別情報を受信する手段を有し、
前記キャッシュ装置は、それぞれの検索種別および前記照合段階の単位で前記キャッシュラインを割り当て、前記検索種別および照合段階の単位で前記キャッシュラインを管理する管理手段を備えている、請求項３４の分類装置。
【請求項３６】最初の照合テーブルを指定する検索種別情報を受信する手段を有し、
前記メモリには、それぞれの検索種別および前記照合段階の単位で割り当てられた個別アドレス領域に前記照合テーブルが記憶されており、
前記キャッシュ装置の前記キャッシュラインは、前記個別アドレス領域単位で割り当てられている、請求項３４の分類装置。
【請求項３７】前記キャッシュ装置は、照合テーブルがオンキャッシュでなければ前記照合装置にその旨を通知し、その照合装置の処理を中断して待ち行列に戻す、請求項３３の分類装置。
【請求項３８】当該分類装置の分類結果を記憶した履歴キャッシュ装置であって、前記検索対象ビットストリングを前記照合装置に供給する前に、当該分類装置の分類結果と前記検素対象のビットストリングとを比較する履歴キャッシュ装置を有する、請求項３０の分類装置。
【請求項３９】請求項３０に記載の分類装置を有し、前記登録ビットパターンは複数の分類結果を含む範囲を示しており、前記検索対象のビットストリングが属する分類結果を出力する検索装置。
【請求項４０】複数の前記分類装置と、
前記複数の分類装置により得られる複数の前記範囲に含まれる複数の分類結果の論理積を演算し、最終の分類結果を得る論理演算装置を有する、請求項３９の検索装置。
【請求項４１】前記論理演算装置は、前記複数の分類結果の論理積を行列演算し、最終の分類結果を得る、請求項４０の検索装置。
【請求項４２】前記メモリに対してデータを入出力するキャッシュ装置を有する、請求項３９の検索装置。
【請求項４３】当該検索装置の検索結果を記憶した履歴キャッシュ装置であって、前記検索対象ビットストリングを前記分類装置に供給する前に、当該検索装置の検索結果と前記検索対象のビットストリングとを比較する履歴キャッシュを有する、請求項３９の検索装置。
【請求項４４】請求項４０に記載の検索装置を有し、
前記検索装置に、ＩＰアドレス、ポート番号およびプロトコルの少なくともいずれかを含むパケットを管理するためのビットストリングを前記検索対象のビットストリングとして供給する手段と、
前記検索装置から出力された分類結果に基づき前記検索対象のビットストリングを備えた前記パケットを管理する手段とを有するデータ管理装置。
【請求項４５】請求項３０に記載の分類装置と、
前記分類装置の出力に基づき前記検索対象のビットストリングを備えたデータを管理する手段とを有するデータ管理装置。
【請求項４６】請求項３０に記載の分類装置を有し、前記複数の登録ビットパターンは、複数の状態遷移条件を示すデータであり、
前記分類装置に対し、状態遷移の評価元となるデータを前記検索対象のビットストリングとして供給する検索対象供給手段と、
前記分類装置の出力により状態が遷移するデータ処理回路とを有するデータ処理装置。
【請求項４７】前記メモリには、前記パターンテーブルおよび前記アドレステーブルを含む照合テーブルが記憶されており、
前記分類装置の出力または前記検索対象供給手段により、最初の前記照合装置に供給される前記照合テーブルが指定される、請求項４６のデータ処理装置。
【請求項４８】前記メモリには、前記パターンテーブルおよび前記アドレステーブルを含む照合テーブルが記憶されており、
前記データ処理回路により前記メモリの照合テーブルが書き換えられる、請求項４７のデータ処理装置。
【請求項４９】状態遷移の評価元となる現状態の検索対象のビットストリングを、予め登録された複数の状態遷移条件を示す登録ビットパターンと照合する照合装置と、
前記照合装置に対し、前記検索対象のビットストリングを供給する検索対象供給手段と、
前記照合装置の出力により状態が遷移するデータ処理回路とを有するデータ処理装置であって、
前記現状態の検索対象のビットストリングが取り得る全ての値と照合する全照合手段と、
前記複数の登録ビットパターンを示すためのパターンテーブルであって、前記現状態の検索対象ビットストリングが取り得る全ての値に対応した領域を持ち、先行する状態から得られる照合継続情報により決まる、現状態のパターンテーブルを、前記全照合手段とは独立に、メモリよりロードするパターンロード手段と、
前記全照合手段の結果と前記現状態のパターンテーブルとにより、前記現状態の検索対象ビットストリングに一致する前記現状態の登録ビットパターンの有無を少なくとも示す照合結果を出力する判定手段と、
前記照合結果により、前記現状態のパターンテーブルに対応するアドレステーブルから、前記現状態の次の状態の前記パターンテーブルのアドレスを含む前記照合継続情報を出力する出力手段とを備えている、データ処理装置。
【請求項５０】前記メモリには、前記パターンデーブルおよび前記アドレステーブルを含む照合テーブルが記憶されており、
前記検索対象供給手段により、前記照合装置に供給される前記照合テーブルが指定される、請求項４９のデータ処理装置。
【請求項５１】前記メモリには、前記パターンテーブルおよび前記アドレステーブルを含む照合テーブルが記憶されており、
前記データ処理回路により前記メモリの照合テーブルが書き換えられる、請求項４９のデータ処理装置。
【請求項５２】前記全照合工程では、比較器またはルックアップテーブルを用いたハードウェアにより前記照合を行う、請求項１の照合方法。
【請求項５３】前記全照合手段は、比較器またはルックアップテーブルを用いたハードウェアにより前記照合を行う、請求項２１の照合装置。
【請求項５４】前記全照合手段は、比較器またはルックアップテーブルを用いたハードウェアにより前記照合を行う、請求項４９のデータ処理装置。


【手続補正００２】
【補正対象書類名】明細書
【補正対象項目名】０００５
【補正方法】変更
【補正の内容】
【０００５】
たり、一連の処理を繰り返すことにより対応可能な照合方法および照合装置を提供することも本発明の目的の１つである。
発明の開示
本発明のビットストリングの照合方法においては、検索対象のビットストリング（被検索ビットストリング）を複数ビットの部分対象ビットストリング（部分被検索対象ビットストリング）に分けて、予め登録された複数の登録ビットパターンと多段階で照合するプロセスを有する方法を採用する。多段階に含まれる１つの照合段階である現段階は、検索対象のビットストリングから、現段階の部分対象ビットストリングを選択し、その現段階の部分対象ビットストリングが取り得る全ての値と照合する全照合工程と、複数の登録ビットパターンの部分登録ビットパターンを示すためのパターンテーブルであって、現段階に先行する段階から得られる照合継続情報により決まる現段階のパターンテーブルを、全照合工程とは独立に、全照合工程と前後して、または並列に、メモリよりロードするパターンロード工程とを有する。この現段階のパターンテーブルは、現段階の部分対象ビットストリングが取り得る全ての値に対応した領域を持ち、現段階の部分対象ビットストリングに対して照合対象となる部分登録ビットパターンを示す。
現段階は、さらに、全照合工程の結果と現段階のパターンテーブルとにより、現段階の部分対象ビットストリングに一致する部分登録ビットパターンの有無を少なくとも示す照合結果を得る判定工程と、この照合結果により、現段階のパターンテーブルに対応するアドレステーブルから、現段階の次の段階のパターンテーブルのアドレスを含む照合継続情報を出力する出力工程とを有する。アドレステーブルには、現段階のパターンテーブルに示された部分登録ビットパターンのそれぞれに続く次の段階のパターンテーブルのアドレスが示されている。このため、アドレステーブルの中から、現段階において一致する部分登録ビットパターンに続く、次の段階で照合する部分登録ビットパターンを示す次の段階のパターンテーブルのアドレスを含む照合継続情報を出力することができる。
この照合方法を実現する照合装置として、本発明においては、検索対象のビットストリングを複数ビットの部分対象ビットストリングに分けて、予め登録された複数の登録ビットパターンと多段階で照合するための照合装置であって、多段
【手続補正００３】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】変更
【補正の内容】
【０００６】
階の少なくとも１つの照合する段階を実行する照合装置を提供する。この照合装置は、検索対象のビットストリングから、多段階の１つの現段階の部分対象ビットストリングを選択し、その部分対象ビットストリングが取り得る全ての値と照合する全照合手段と、先行する段階から得られる照合継続情報により決まる現段階のパターンテーブルを、この全照合手段とは独立に、メモリよりロードするパターンロード手段と、全照合手段の結果と現段階のパターンテーブルとにより、部分対象ビットストリングに一致する部分登録ビットパターンの有無を少なくとも示す照合結果を出力する判定手段と、照合結果により、現段階のパターンテーブルに対応して記録されたアドレステーブルから、次の段階のパターンテーブルのアドレスを含む照合継続情報を出力する出力手段とを有する。
これらの照合方法および照合装置は、現段階で一致する部分登録ビットパターンに続く次の段階のパターンテーブルのアドレスを含む照合継続情報を出力することにより完全一致および最長一致の検索機能を提供する。さらに、判定工程および判定手段において、部分対象ビットストリングに値が最も近い最大または最小の部分登録ビットパターンの有無を含む照合結果が得られると、出力工程および出力手段では、一致する部分登録ビットパターンがないときに、アドレステーブルから、最大または最小の現段階の部分登録ビットパターンに続く次の段階のパターンテーブルのアドレスを含む照合継続情報を出力できる。これにより、検索機能として範囲一致を含めた照合方法および照合装置を提供できる。
ここで、部分対象ビットストリングに値が最も近い最大の部分登録ビットパターンとは、部分対象ビットストリングより値が小さくて最大の部分登録ビットパターンを意味する。また、部分対象ビットストリングに値が最も近い最小の部分登録ビットパターンとは、部分対象ビットストリングより値が大きくて最小の部分登録ビットパターンを意味する。最大の部分登録ビットパターンに続くパターンテーブルのアドレスが選択されることにより、以下で説明する右倒れの範囲検索が可能となる。また、最小の部分登録ビットパターンに続くパターンテーブルのアドレスが選択されることにより、以下で説明する左倒れの範囲検索が可能となる。したがって、右倒れ型の検索においては、以下で説明する最大の側が選択され、左倒れ型の検索においては、以下で説明する最小の側が選択される。
【手続補正００４】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
また、本発明の照合方法および照合装置においては、多段階の照合の１つの段階（現段階）において、全照合工程および全照合手段により、部分対象ビットストリングが取り得る全ての値と照合する。そのため、現段階の部分対象ビットストリングと照合する対象となる、現段階の部分登録ビットパターン（以降ではエントリとも称する）を示す現段階のパターンテーブルを、照合とは独立した処理でメモリよりロードし、完全一致または範囲一致を導くことができる。
パターンテーブルは、部分エントリのビット列そのものである必要はなく、むしろ、部分エントリの値を直接またはビットパターンあるいはフラグなどにより部分エントリと対応するような形式で示すデータであることがデータ量の点から望ましい。本発明においては、部分対象ビットストリングが取り得る全ての値と照合する全照合工程あるいは全照合手段を備えている。したがって、全照合の際に照合の対象となる値の範囲において、パターンテーブルは、部分登録ビットパターンの有効無効を示すビットフラグからなるマスクデータで与えることができる。すなわち、全照合の際に、予め部分対象ビットストリングが取り得る値の範囲が決まっているので、そのようなマスクデータでメモリに記憶し、またメモリからロードすることが可能である。したがって、パターンロード工程および手段においては、マスクデータをメモリからロードする。
また、この照合方法および装置においては、部分対象ビットストリングが取り得る全ての値と照合するので、パターンテーブルの量あるいは領域としては、部分対象ビットストリングが取り得る全ての値をカバーできる量あるいは領域が予め確保される。したがって、エントリを追加する際は、基本的にはマスクパターンを更新するだけで良く、エントリの追加削除にともなうエントリ移動は発生しない。このため、上位アプリケーションによるテーブル管理のオーバヘッドを縮小または排除できる。したがって、パケットフィルタリングやステートフルインスペクションにおいても上位アプリケーションソフトウェアの負担が軽いビットストリングの照合方法および照合装置を提供できる。
特に、マスクデータの場合は、１ビットで１エントリを表現することも可能となるので、パターンテーブルの記憶容量は大幅に削減され、また、パターンテー
【手続補正００５】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
ブルをロードする時間も短縮される。さらに、更新する際も、エントリの追加削除の処理に書き換えるビット量は大幅に少なくなり、処理は簡略化され、処理時間も短縮される。したがって、パターンテーブルをマスクデータ化することは有効である。
部分対象ビットストリングが取り得る全ての値と照合する処理（全照合工程および手段）は、独立した処理なので、比較器やルックアップテーブルを用いてハードウェアで高速に実行可能であり、多段階に分割することによりハードウェアの規模も大きくならない。部分対象ビットストリングのビット長は限定されるものではないが、ビット長が長くなればハードウェアは大きくなり、ビット長が短ければ照合段数が増加する。ハードウェアの適切な規模は、ハードウェアの目的、経済的な価値、実現可能な配線ルールなどに依存して変わる。現状では、部分対象ビットストリングのビット長としては４から５ビット程度が好ましいと考えられる。さらに、検索対象となる被検索ビットストリング（以降ではキーとも称する）のビット長増に対してもハードウェア自体のアルゴリズム的な変更は必要なく、ユニットを追加したり、一連の処理を繰り返すことで対応可能となる。
本発明の照合方法および照合装置は、簡易な構成で高速化できるという大きな効果を備えている。まず、全照合工程とパターンロード工程とが独立した処理なので、これらを並列に行うことが可能であり、多段階に分割することに伴い発生するメモリからパターンテーブルをロードするオーバヘッドの時間も大幅に削減できる。したがって、特殊な構造で高速なメモリを使わなくても、十分に速い検索速度を発揮でき、廉価で大容量の検索を高速に実行する照合方法および装置を提供できる。そのような照合装置は、収容可能なエントリ数はＳＤＲＡＭ容量にのみ規定されるため、スケーラブル性が高く、また、メモリ管理が柔軟に行える。したがって、複数種の検索を単一のハードウェアセットで柔軟におこなえるものになる。
メモリに対してデータを入出力するキャッシュ装置を設けることにより、パターンテーブルをロードする時間のオーバヘッドをさらに削減できる。キャッシュメモリの効率を向上し、ミスヒット率を低減するには、パターンテーブル、
【手続補正００６】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
る全照合手段と、複数の登録ビットパターンを示すためのパターンテーブルであって、現状態の検索対象ビットストリングが取り得る全ての値に対応した領域を持ち、先行する状態から得られる照合継続情報により決まる、現状態のパターンテーブルを、全照合手段とは独立に、メモリよりロードするパターンロード手段と、全照合手段の結果と現状態のパターンテーブルより、現状態の検索対象ビットストリングに一致する現状態の登録ビットパターンの有無を少なくとも示す照合結果を出力する判定手段と、照合結果により、現状態のパターンテーブルに対応するアドレステーブルから、現状態の次の状態の前記パターンテーブルのアドレスを含む照合継続情報を出力する出力手段とを備えている。
１つの状態遷移を決定するのに、複数の照合装置を用いた設計も可能であり、その場合は、本発明の分類装置が遷移先の検索に用いられる。照合する内部状態、すなわち、状態遷移条件を外部条件や内部条件で変更することが可能であり、検索対象供給手段により、照合装置に供給される照合テーブルが指定されるようにしても良い。データ処理回路によりメモリの照合テーブルが書き換えられるようにしても良い。ＱｏＳの検索などに本発明の状態遷移（オートマトン）プロセッサを用いると、ＱｏＳの検索とプロセッサとしてのアドレッシングが一体となったアーキテクチャを実現することができる。
図面の簡単な説明
図１は、管理装置の例としてルータの概要を示す図である。
図２（ａ）〜図２（ｆ）は、一致検索の照合状態を説明する図である。
図３は、バイナリビットツリー上の照合状態を示す図である。
図４（ａ）〜図４（ｆ）は、右倒れ一致型の近似について説明する図である。
図５（ａ）〜図５（ｆ）は、左倒れ一致型の近似について説明する図である。
図６は、バイナリビットツリーをテーブル分割した様子を示す図である。
図７（ａ）〜図７（ｃ）は、照合テーブル（部分テーブル）を示す図である。
図８（ａ）および図８（ｂ）は、ＭＩＮ／ＭＡＸサーチを説明する図である。
図９（ａ）および図９（ｂ）は、部分テーブルでＭＩＮ／ＭＡＸサーチを行う様子を示す図である。
図１０は、圧縮テーブルでＭＩＮ／ＭＡＸサーチを行う様子を示す図である。
【国際調査報告】
2004032435.tif 000085
2004032435.tif 000086
2004032435.tif 000087
2004032435.tif 000088