(57)【要約】【課題】メモリ容量が比較的小さくて、高速かつ低消費電力の検索システムを提供する。【解決手段】検索システム２は、ＴＣＡＭ２０，２２と、ＴＣＡＭを用いない検索エンジン２１とを組み合わせたものである。ＴＣＡＭを用いない検索エンジン２１は、汎用メモリセル構造を用いて構築され、被検索データの有効ビット長ごとに異なるメモリ空間が割り当てられる。【選択図】図８
2014123936.tif 000002
【特許請求の範囲】
【請求項１】
各々が、ビット長Ｍの複数のデータを格納可能であり、入力されたビット長Ｌ（ただし、Ｌ＞Ｍ）の検索キーのうち予め定めるＮ個（ただし、Ｎ＝Ｌ−Ｍ）の特定ビットを除くビット長Ｍの非特定ビット列と一致する格納データを第１の検索方式で検索する複数の第１の検索部と、
ビット長Ｌの複数のデータを格納可能であり、前記検索キーと一致する格納データを前記第１の検索方式と異なる第２の検索方式で検索する第２の検索部と、
前記複数の第１の検索部および前記の第２の検索部の各々の検索結果に基づいて、いずれか１つの検索部の検索結果を選択する選択回路とを備えた検索システム。
【請求項２】
前記複数の第１の検索部および前記第２の検索部の各々は、
最下位ビット側から連続する１または複数のドントケアビットを含むデータを格納可能であり、
検索された格納データのうち、ドントケアビットを除く有効ビット長が最長の格納データに対応する情報を検索結果として出力するように構成されている、請求項１に記載の検索システム。
【請求項３】
ビット長Ｎの複数のデータを格納可能であり、前記検索キーのうち前記Ｎ個の特定ビットからなるビット列と一致する格納データを前記第２の検索方式で検索する第３の検索部をさらに備え、
前記複数の第１の検索部は、前記第３の検索部に格納されている複数のデータにそれぞれ対応し、
前記選択回路は、前記複数の第１の検索部から出力された複数の検索結果のうちの１つを選択する場合には、前記第３の検索部によって検索された格納データに対応する第１の検索部の検索結果を選択する、請求項２に記載の検索システム。
【請求項４】
前記第２の検索部および前記第３の検索部はＴＣＡＭ（Ternary  Content  Addressable  Memory）を含み、
前記複数の第１の検索部の各々はＴＣＡＭを含まない、請求項３に記載の検索システム。
【請求項５】
前記第２の検索部はＴＣＡＭ（Ternary  Content  Addressable  Memory）を含み、
前記複数の第１の検索部の各々はＴＣＡＭを含まない、請求項２に記載の検索システム。
【請求項６】
各前記第１の検索部は、Ｍ個のメモリ空間を有する記憶部を含み、
第ｉ番目（ただし、１≦ｉ≦Ｍ）のメモリ空間には、ビット数ｉのアドレスが割り当てられ、
アドレスサイズの大きいメモリ空間ほど優先順位が高く、
各前記第１の検索部において、各格納データの有効ビット部分をアドレスとして特定される前記メモリ空間の記憶領域には、各格納データに対応するコードが記憶され、
各前記第１の検索部は、さらに、
前記ビット長Ｍの非特定ビット列の最上位ビット側から、連続するｊ個（ただし、１≦ｊ≦Ｍ）のビットを抽出することによって、前記Ｍ個のメモリ空間にそれぞれ対応するＭ個の読出アドレスを生成するアドレス生成部と、
前記Ｍ個の読出しアドレスによって前記Ｍ個のメモリ空間からそれぞれ読み出された読出データが、前記コードを含む有効な読出データであるか否かを判定する判定部と、
前記判定部によって有効と判定された読出データのうち、最も前記優先順位の高いメモリ空間から読み出された読出データに含まれるコードを選択して出力する選択部とを含む、請求項４または５に記載の検索システム。
【請求項７】
前記Ｍ個のメモリ空間からそれぞれ読み出されたＭ個の読出データのうち予め定める１または複数を除く読出データは、前記判定部の判定対象として設定可能であり、
前記判定部は、判定対象に設定された読出データについて有効か否かを判定する、請求項６に記載の検索システム。
【請求項８】
各前記第１の検索部は、Ｍ個のメモリ空間およびレジスタを有する記憶部を含み、
第ｉ番目（ただし、１≦ｉ≦Ｍ）のメモリ空間には、ビット数ｉのアドレスが割り当てられ、
アドレスサイズの大きいメモリ空間ほど優先順位が高く、
各前記第１の検索部において、各格納データの有効ビット部分をアドレスとして特定される前記メモリ空間の記憶領域には、各格納データに対応するコードが記憶され、
前記レジスタには、いずれの前記格納データも前記ビット長Ｍの非特定ビット列に一致しなかったときに出力するためのコードが記憶され、
前記レジスタは、前記Ｍ個のメモリ空間のいずれよりも優先順位が低く、
各前記第１の検索部は、さらに、
前記ビット長Ｍの非特定ビット列の最上位ビット側から、連続するｊ個（ただし、１≦ｊ≦Ｍ）のビットを抽出することによって、前記Ｍ個のメモリ空間にそれぞれ対応するＭ個の読出アドレスを生成するアドレス生成部と、
前記Ｍ個の読出しアドレスによって前記Ｍ個のメモリ空間からそれぞれ読み出された読出データおよび前記レジスタから読み出された読出データが、前記コードを含む有効な読出データであるか否かを判定する判定部と、
前記判定部によって有効と判定された読出データのうち、最も前記優先順位の高いメモリ空間または前記レジスタから読み出された読出データに含まれるコードを選択して出力する選択部とを含む、請求項４または５に記載の検索システム。
【請求項９】
前記Ｍ個のメモリ空間からそれぞれ読み出されたＭ個の読出データおよび前記レジスタから読み出された読出データのうち予め定める１または複数を除く読出データは、前記判定部の判定対象として設定可能であり、
前記判定部は、判定対象に設定された読出データについて有効か否かを判定する、請求項８に記載の検索システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、入力された検索キーに一致するデータワードを最長一致検索によって検索する検索システムに関し、たとえば、パケット交換網のルータで好適に用いられるものである。
【背景技術】
【０００２】
インターネットなど、ＴＣＰ／ＩＰ（Transmission  Control  Protocol／Internet  Protocol）が用いられるネットワークに設置されたルータでは、他のホストから受取ったパケットを別の経路に転送するフォワーディングが行なわれる。各ルータは、ＩＰアドレスと転送先の経路との関係を定める検索テーブル（フォワーディング・テーブル）を格納しており、この検索テーブルに従ってパケットの転送経路が決定される。具体的には、受取ったパケットに含まれる宛先のＩＰアドレスを検索キー（Key）として検索テーブルに記載された次ホップＩＰアドレスが最長一致検索（longest  prefix  match  search）によって検索される。
【０００３】
フォワーディングを高速に行なうには、検索テーブル内での次ホップＩＰアドレスの検索を高速化する必要があり、このための専用ハードウェアとして連想メモリ（ＣＡＭ：Content  Addressable  Memory）がしばしば用いられる。
【０００４】
特開２００６−５６３６号公報（特許文献１）は、ＴＣＡＭ（Ternary  CAM）を用いて検索テーブルを構成する例を開示する。具体的に、この文献のＴＣＡＭは、ＩＰアドレスの上位ビットを設定する第１のＣＡＭエントリと、ＩＰアドレスの下位ビットを設定する第２のＣＡＭエントリとを含む。そして、受取ったパケットの宛先アドレスの上位ビットと第１のＣＡＭエントリとが比較され、次に、パケットの宛先アドレス下位ビットと第２のＣＡＭエントリとが比較される。
【０００５】
特開２００３−１４３１９８号公報（特許文献２）は、ＴＣＡＭを使用しない検索テーブルの例が示される。具体的には、転送されたＩＰアドレスについて、上位から１ビットずつ順にフォワーディング・テーブル内に存在するか否かが判断される。特にこの文献では、フォワーディングの時間を短縮するために、ＩＰアドレスを複数ビットずつまとめて参照する方法が提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−５６３６号公報
【特許文献２】特開２００３−１４３１９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記の特開２００６−５６３６号公報（特許文献１）のようにＴＣＡＭを用いた検索方法では検索キーと検索テーブルとを比較する回数は少なくなるが、ＴＣＡＭデバイスを用いているために消費電力が大きくなるという欠点がある。一方、上記の特開２００３−１４３１９８号公報（特許文献２）のようなＴＣＡＭを用いない検索方法では、検索キーと検索テーブルとの比較は極めて少ない消費電力で実行できるが、検索回数が増加するためにフォワーディングに時間を要するという欠点がある。
【０００８】
本願の出願人は、上記の各検索方法の欠点を克服した新たな検索システムについての発明を出願した（特願２０１１−１７１７８４参照）。ただし、この検索システムは、検索キーのビット長が増大するにつれてメモリ容量が指数関数的に増大するという問題がある。
【０００９】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１０】
一実施の形態による検索システムは、ＴＣＡＭと、ＴＣＡＭを用いない検索エンジンとを組み合わせたものである。好ましくは、ＴＣＡＭを用いない検索エンジンは、汎用メモリセル構造を用いて構築され、被検索データの有効ビット長ごとに異なるメモリ空間が割り当てられる。
【発明の効果】
【００１１】
上記の一実施の形態によれば、メモリ容量が比較的小さくて、高速かつ低消費電力の検索システムを提供することができる。
【図面の簡単な説明】
【００１２】
【図１】ＴＣＡＭの構成を模式的に示すブロック図である。
【図２】ＴＣＡＭのメモリセルの一例を示す回路図である。
【図３】ＴＣＡＭの詳細な構成を示すブロック図である。
【図４】省電力検索エンジンの構成を模式的に示すブロック図である。
【図５】実施の形態１による検索システムの構成を示すブロック図である。
【図６】ＩＰｖ４用のＩＰアドレスにおいて、通常の場合の有効ビット長とエントリ数との関係を示す図である。
【図７】図５の検索システムにおけるデータの割り当てについて説明するための図である。
【図８】実施の形態２による検索システムの構成を示すブロック図である。
【図９】図８のプリサーチ用の小容量ＴＣＡＭに割り当てられる特定ビットの例について説明するための図である。
【図１０】図８のプリサーチ用の小容量ＴＣＡＭに割り当てられる特定ビットの他の例について説明するための図である。
【図１１】ＩＰｖ４のＩＰアドレスを検索するための検索テーブルの作成について説明するための図である。
【図１２】図１１に対応する検索システムの例を示す図である。
【図１３】実施の形態３による検索システムで用いられる省電力検索エンジンの構成を示すブロック図である。
【図１４】図１３の省電力検索エンジンの使用例を説明するための図である。
【図１５】図１３の省電力検索エンジンのその他の使用例を説明するための図である。
【発明を実施するための形態】
【００１３】
以下では、最初に、各実施の形態の前提となるＴＣＡＭと、ＴＣＡＭを用いない検索エンジン（以下、「省電力検索エンジン」と称する）の構成について説明し、その後、各実施の形態について説明する。なお、以下の説明において同一または相当する部分には同一の参照符号を付して、その説明を繰り返さない。
【００１４】
＜ＴＣＡＭについて＞
［ＴＣＡＭの概略構成］
図１は、ＴＣＡＭの構成を模式的に示すブロック図である。ＴＣＡＭ１００は、メモリセルアレイ１０１と、プライオリティ・エンコーダ１０２とを含む。図１では、簡単のために、検索キーが４ビットであり、メモリセルアレイに４ビットのアドレスが割り当てられる場合（すなわち、格納可能なデータ数が１６個）の場合が示されている。
【００１５】
図１を参照して、検索テーブルを構成するＴＣＡＭ１００のメモリセルアレイに、６つの被検索データが格納された状態が例示されている。ここで、“＊”は、ドントケア（Don't  care）ビットを表わし、“＊”を除くビット（ｂｉｔ）の数が有効ビット長となる。具体的に、データ［０１０１］，［１０１０］の有効ビット長は４であり、データ［０１０＊］，［１０１＊］の有効ビット長は３であり、データ［１０＊＊］の有効ビット長は２であり、データ［０＊＊＊］の有効ビット長は１である。各被検索データの最下位ビットから連続する１または複数のビットをドントケアビットに設定することができる。
【００１６】
ドントケアビットがあることにより、１つの検索キーに対して複数のデータが一致する場合がある。そこで、最長一致検索（longest  prefix  match  search）が用いられる。最長一致検索は、より有効ビット長の長いデータを、検索キーに最も一致したデータと判定する検索方法である。
【００１７】
検索動作は、検索キー［０１０１］の入力により開始される。ＴＣＡＭ１００は、検索テーブルであるメモリセルアレイ１０１全てを一括でチェックし、検索キー［０１０１］に一致した全ての被検索データに対応するアドレス情報をプライオリティ・エンコーダ１０２に通知する。図１の場合、［０１０１］，［０１０＊］，［０＊＊＊］の３つのデータが、検索キー［０１０１］に一致したと判断され、それぞれに対応するアドレス情報［００１１］，［０１１０］，［１１０１］がプライオリティ・エンコーダ１０２に通知される。
【００１８】
プライオリティ・エンコーダ１０２は、優先順位が最も高い、すなわち、有効ビット長が最も長いデータ［０１０１］に対応するアドレス［００１１］を出力する。ただし、実際上は、プライオリティ・エンコーダ１０２は、上記のように、検索キーに一致したデータのアドレス情報を入手することはできるが、各アドレス情報に対応するデータの有効ビット長を知る術がない。そこで、予めＴＣＡＭ１００に被検索データを格納する際に有効ビット長が長いデータほどアドレスが若くなるようにしておく。プライオリティ・エンコーダ１０２は、より若いアドレスを優先的に出力する。図１の場合、ＴＣＡＭ１００は、検索結果としてアドレス［００１１］を出力して、検索動作を終了する。以上により、検索キー［０１０１］に対して紐付けされた所定の処理を表すコード［００１１］が得られたことになる。
【００１９】
［メモリセルの構成］
図２は、ＴＣＡＭのメモリセルの一例を示す回路図である。図２を参照して、ＴＣＡＭセルＭＣは、ＳＲＡＭ（Static  Random  Access  Memory）によって構成される２つのサブメモリセルＳＭＣ１およびＳＭＣ２と、これらのサブメモリセルＳＭＣ１およびＳＭＣ２に格納されるビットデータと検索ビットデータを比較する比較部ＣＭＰを含む。
【００２０】
サブメモリセルＳＭＣ１は、インバータラッチを構成するインバータＩＶ１およびＩＶ２と、ワード線ＷＬ０上の信号に従ってインバータＩＶ１の入力ノードおよび出力ノードをそれぞれビット線ＢＬｎおよび／ＢＬｎに結合するＮチャネルＭＯＳトランジスタＮＱ１およびＮＱ２とを含む。ＭＯＳトランジスタＮＱ１，ＮＱ２の各ゲートはワード線ＷＬ０に接続される。記憶ノードＮＤ１およびＮＤ２には相補データが記憶される。
【００２１】
同様に、サブメモリセルＳＭＣ２は、インバータラッチを構成するインバータＩＶ３およびＩＶ４と、ワード線ＷＬ１上の信号に従ってインバータＩＶ３の入力ノードおよび出力ノードをそれぞれビット線ＢＬｎ＋１および／ＢＬｎ＋１に結合するＮチャネルＭＯＳトランジスタＮＱ３およびＮＱ４を含む。ＭＯＳトランジスタＮＱ３，ＮＱ４の各ゲートはワード線ＷＬ１に接続される。記憶ノードＮＤ３およびＮＤ４には相補データが記憶される。
【００２２】
比較部ＣＭＰは、マッチ線ＭＬと接地ノードの間に直列に接続されるＮチャネルＭＯＳトランジスタＮＱ５およびＮＱ６と、マッチ線ＭＬと接地ノードとの間に直列に接続されるＮチャネルＭＯＳトランジスタＮＱ７およびＮＱ８とを含む。ＭＯＳトランジスタＮＱ５のゲートは、サブメモリセルＳＭＣ１に設けられたインバータＩＶ１の出力ノードＮＤ２（インバータＩＶ２の入力ノード）に結合され、ＭＯＳトランジスタＮＱ６のゲートがサーチ線ＳＬに結合される。ＭＯＳトランジスタＮＱ７のゲートが、サブメモリセルＳＭＣ２に設けられたインバータＩＶ３の出力ノードＮＤ４（インバータＩＶ４の入力ノード）に結合され、ＭＯＳトランジスタＮＱ８のゲートが補のサーチ線／ＳＬに結合される。
【００２３】
サブメモリセルＳＭＣ１およびＳＭＣ２の記憶ノードＮＤ１およびＮＤ３に、それぞれビットデータ“１”が格納されている場合、比較部ＣＭＰにおいては、ＭＯＳトランジスタＮＱ５およびＮＱ７は常時オフ状態である。したがって、サーチ線ＳＬおよび／ＳＬを介して伝達される検索ビットデータの論理値にかかわらず、マッチ線ＭＬはプリチャージ電位レベルに維持される。すなわちこの場合、ＣＡＭセルＭＣは、常時一致状態（ドントケア状態）を表現する。
【００２４】
サブメモリセルＳＭＣ１およびＳＭＣ２の記憶ノードＮＤ１およびＮＤ３に、それぞれビットデータ“０”が格納されている場合、比較部ＣＭＰにおいては、ＭＯＳトランジスタＮＱ５およびＮＱ７は常時オン状態である。この場合、サーチ線ＳＬおよび／ＳＬを介して伝達される検索ビットデータの論理値にかかわらず、ＭＯＳトランジスタＮＱ５およびＮＱ６の経路およびＭＯＳトランジスタＮＱ７およびＮＱ８の経路の一方が、導通し、マッチ線ＭＬが放電される。したがって、この場合には、ＴＣＡＭセルは、常時不一致状態を表現する（通常、常時不一致状態は利用されない）。
【００２５】
サブメモリセルＳＭＣ１およびＳＭＣ２の記憶ノードＮＤ１およびＮＤ３に、それぞれビットデータ“１”および“０”が格納されている場合、ＭＯＳトランジスタＮＱ５は常時オフ状態になり、ＭＯＳトランジスタＮＱ７は常時オン状態になる。したがって、検索ビットデータが“０”のとき、すなわち、サーチ線／ＳＬにＨレベルの電位（“１”）のデータが伝達されたとき、マッチ線ＭＬが放電され、ＴＣＡＭセルは不一致状態を示す。逆に、検索ビットデータが“１”のとき、すなわち、サーチ線／ＳＬにＬレベルの電位（“０”）のデータが伝達されたとき、マッチ線ＭＬはプリチャージ電位に保持され、ＴＣＡＭセルは一致状態を示す。
【００２６】
サブメモリセルＳＭＣ１およびＳＭＣ２の記憶ノードＮＤ１およびＮＤ３に、それぞれビットデータ“０”および“１”が格納されている場合、ＭＯＳトランジスタＮＱ５が常時オン状態になり、ＭＯＳトランジスタＮＱ７は常時オフ状態になる。したがって、検索ビットデータが“１”のとき、すなわち、サーチ線ＳＬにＨレベルの電位（“１”）のデータが伝達されたとき、マッチ線ＭＬが放電され、ＴＣＡＭセルは不一致状態を示す。逆に、検索ビットデータが“０”のとき、すなわち、サーチ線ＳＬにＬレベルの電位（“０”）のデータが伝達されたとき、マッチ線ＭＬはプリチャージ電位に保持され、ＴＣＡＭセルは一致状態を示す。
【００２７】
なお、ＴＣＡＭセルにおいて、図２に示すＳＲＡＭに代えて、ＤＲＡＭ（Dynamic  Random  Access  Memory）セルまたはロジック回路を用いてもよい。
【００２８】
［ＴＣＡＭの詳細構成］
図３は、ＴＣＡＭの詳細な構成を示すブロック図である。図２、図３を参照して、ＴＣＡＭ１００は、メモリセルアレイ１０１と、プライオリティ・エンコーダ１０２と、ワード線デコーダ１０４と、センスアンプ＆ビット線ドライバ１０５＿０〜１０５＿ｎと、サーチ線ドライバ１０６と、プリチャージ電圧発生回路１０７とを含む。ＴＣＡＭ１００は、さらに、メモリセルアレイ１０１の行にそれぞれ対応して設けられたワード線対ＷＬ０，ＷＬ１およびマッチ線ＭＬと、列にそれぞれ対応して設けられたビット線対ＢＬ，／ＢＬおよびサーチ線対ＳＬ，／ＳＬとを含む。
【００２９】
メモリセルアレイ１０１に各行に設けられたｎ＋１個のメモリセルＭＣ＿０〜ＭＣ＿ｎ（エントリ領域１０３）に対して１つのデータワードが格納される。したがって、図３のＴＣＡＭ１００には、メモリセルアレイ１０１の行数分のデータワードが格納可能である。
【００３０】
ワード線デコーダ１０４は、サブメモリセルＳＭＣ１またはＳＭＣ２からデータを読み出すときまたはサブメモリセルＳＭＣ１またはＳＭＣ２にデータを書き込むとき、対象となるサブメモリセルＳＭＣ１，ＳＭＣ２に対応するワード線ＷＬ０またはＷＬ１を活性化する。
【００３１】
センスアンプ１０５は、サブメモリセルＳＭＣ１またはＳＭＣ２からデータを読み出すときに、読み出し対象のサブメモリセルＳＭＣ１またはＳＭＣ２に対応するビット線対ＢＬ，／ＢＬを介して記憶データを検出する。ビット線ドライバ１０５は、サブメモリセルＳＭＣ１またはＳＭＣ２にデータを書き込むときに、書き込み対象のサブメモリセルＳＭＣ１またはＳＭＣ２に対応するビット線対ＢＬ，／ＢＬに書き込みデータに応じた電圧値を与える。
【００３２】
サーチ線ドライバ１０６は、データ検索時に検索キーの各ビットの論理レベルに対応した電圧をサーチ線ＳＬ，ＳＬ／を介して供給する。マッチ線ＭＬは、データ検索時にプリチャージ電圧発生回路１０７によってプリチャージされる。検索キーに一致するデータワードが格納されている行のマッチ線ＭＬは、プリチャージ電位がそのまま維持される。検索キーに不一致のデータワードが格納されている行のマッチ線ＭＬは放電される。
【００３３】
［ＴＣＡＭの問題点］
上記のように、ＴＣＡＭは、特殊なメモリセルを使用することで、検索時に、全検索テーブル空間を一括して活性化させ、検索キーに一致するデータを検索する方式である。このため、検索速度は高速であるが、極めて消費電力が大きくなる問題がある。
【００３４】
さらに、最長一致検索を実行するためには、検索テーブルの作成時に有効ビット長の長いデータほど若いアドレスに格納する必要があり、アドレスの割当て制御が複雑になる。このため、新たな被検索データを格納する場合には、検索テーブルを作り直すメンテナンスに時間がかかる。
【００３５】
さらに、ＴＣＡＭセルの専有面積が大きいために、全体の回路面積が大きくなってしまう。このため、図３のメモリセルアレイの行数が制限されることになり、格納可能なデータ数（エントリ数）が制限される。
【００３６】
＜省電力検索エンジンについて＞
［省電力検索エンジンの構成］
図４は、省電力検索エンジンの構成を模式的に示すブロック図である。図４では、図１のＴＣＡＭの場合と同様に、６つの被検索データ［０１０１］，［０１０＊］，［０＊＊＊］，［１０１０］，［１０１＊］，［１０＊＊］に対して、入力された検索キー［０１０１］を用いた検索が行なわれる例が示される。そして、検索キー［０１０１］に一致するデータ［０１０１］，［０１０＊］，［０＊＊＊］のうち、最も有効ビット長の長い［０１０１］に対応するコード［００１１］が出力される例が示される。図１の場合と同様に検索キーのビット長Ｍを４としているが、実際には、よりビット長の長い検索キーおよび被検索データが用いられる。検索動作は、検索キー［０１０１］の入力によって開始される。
【００３７】
図４を参照して、省電力検索エンジン２００は、記憶部２０１と、アドレス生成部２０２と、判定部２０３と、選択部２０４とを含む。以下、各構成要素の構成および動作について説明する。
【００３８】
１．記憶部
記憶部２０１は、ＤＲＡＭ、ＳＲＡＭなどの汎用メモリによって構成される互いに空間サイズの異なる複数のメモリ空間を含む。検索テーブルは、これらのメモリ空間を用いて構築される。通常、検索キーのビット数Ｍ（Ｍ≧２）に応じて、互いに空間サイズの異なる１〜Ｍビットのアドレス長のＭ個のメモリ空間が設けられる。図４では、Ｍ＝４として、１〜４ビット長のアドレスによってそれぞれ特定可能なメモリ空間Ｐ１〜Ｐ４が設けられる。さらに、検索キーに一致する被検索データが無かった場合に出力されるコードを格納するために、メモリＰ０（レジスタＰ０とも称する）が設けられる。メモリＰ０にはアドレスは振られていないが、以下では、便宜上、メモリＰ０をメモリ空間Ｐ０と称する場合がある。
【００３９】
被検索データは、その有効ビット長を基準にして複数のグループに分類される。図４に示す例の場合には、有効ビット長が１のデータ［０＊＊＊］によって第１グループが構成され、有効ビット長が２のデータ［１０＊＊］によって第２グループが構成され、有効ビット長が３のデータ［０１０＊］，［１０１＊］によって第３グループが構成され、有効ビット長が４のデータ［０１０１］，［１０１０］によって第４グループが構成される。
【００４０】
記憶部２０１に設けられる複数のメモリ空間Ｐ１〜Ｐ４は、これらの複数のグループにそれぞれ対応する。各グループに属する被検索データの有効ビット長は、対応するメモリ空間を特定するアドレスの長さに等しい。各メモリ空間において、各被検索データの有効ビット部分（ドントケアビットを除く部分）をアドレスとしたときに特定される領域には、各被検索データに対応する所定のコードが格納される。ここで、所定のコードとは、ネットワークに設けられたルータの場合には出力ポートに関係付けられた情報に相当し、図１の場合にはＴＣＡＭのアドレスに相当する。
【００４１】
具体的に説明すると、図１の被検索データ［０１０１］，［１０１０］にそれぞれ対応するアドレス［００１１］，［０１００］が、図４では、メモリ空間Ｐ４内のアドレス［０１０１］，［１０１０］によって特定される領域にそれぞれ格納される。図１の被検索データ［０１０＊］，［１０１＊］にそれぞれ対応するアドレス［０１１０］，［１０００］が、図４では、メモリ空間Ｐ３内のアドレス［０１０］，［１０１］によって特定される領域にそれぞれ格納される。図１の被検索データ［１０＊＊］に対応するアドレス［１０１１］が、図４では、メモリ空間Ｐ２内のアドレス［１０］によって特定される領域に格納される。図１の被検索データ［０＊＊＊］に対応するアドレス［１１０１］が、図４では、メモリ空間Ｐ１内のアドレス［０］によって特定される領域に格納される。つまり、図１ではＴＣＡＭ内に格納されていた被検索データのうち、有効ビット部分（ドントケアビットを除く部分）が、図４ではアドレスとして用いられ、図１ではＴＣＡＭのアドレスであったものが、図４ではメモリに格納される所定のコードとして用いられている。
【００４２】
さらに、図４に示すように、各メモリ空間において、各アドレスによって特定される領域ごとに、所定のコードが格納された有効な領域であるか、所定のコードが格納されていない無効な領域であるかを示すバリッドビット（Valid  bit）を設けておくのが好ましい。
【００４３】
具体的に図４の場合、アドレス［０１０１］，［０１０］，［０］によって特定される領域には、それぞれデータ［００１１］，［０１１０］，［１１０１］が格納されるとともに、バリッドビット「１」（「有効」を表わす）が格納される。同様に、アドレス［１０１０］，［１０１］，［１０］によって特定される領域には、それぞれデータ［０１００］，［１０００］，［１０１１］が格納されるとともに、バリッドビット「１」が格納される。メモリＰ０には、データ［１１１１］ともにバリッドビット「１」が格納される。その他の領域には、バリッドビット「０」（「無効」を表わす）が格納される。
【００４４】
２．アドレス生成部
アドレス生成部２０２は、Ｍ個のメモリ空間の各々を特定するアドレスの長さに等しいビット数のデータを検索キーの最上位ビット側から抽出することによって、Ｍ個の読出アドレスを生成する。Ｍ個の読出アドレスは、１〜Ｍビットの各ビット長をそれぞれ有する。アドレス生成部２０２は、生成したＭ個の読出アドレスを記憶部２０１に出力する。
【００４５】
具体的に図４の場合には、アドレス生成部２０２は、検索キー［０１０１］の上位４ビット［０１０１］をメモリ空間Ｐ４の読出アドレスとして記憶部２０１に出力し、検索キーの上位３ビット［０１０］をメモリ空間Ｐ３の読出アドレスとして記憶部２０１に出力する。アドレス生成部２０２は、さらに、検索キーの上位２ビット［０１］をメモリ空間Ｐ２の読出アドレスとして記憶部２０１に出力し、検索キーの上位１ビット［０］をメモリ空間Ｐ１の読出アドレスとして記憶部２０１に出力する。
【００４６】
メモリ空間Ｐ１〜Ｐ４から読み出された読出データは、それぞれデータバスＢ１〜Ｂ４を通って判定部２０３に送信される。さらに、メモリＰ０に格納されたデータは、データバスＢ０を通って判定部２０３に送信される。データバスＢ０〜Ｂ４をそれぞれメモリ空間Ｐ０〜Ｐ４専用に設けることによって、各メモリ空間からのデータの読出しを並行して独立に行なうことができる。
【００４７】
３．判定部
判定部２０３は、Ｍ個の読出アドレスによってＭ個のメモリ空間からそれぞれ読み出されたＭ個の読出データの各々が、所定のコードを含む有効な読出データであるか否かを判定する。具体的には、判定部２０３は、各読出データに含まれるバリッドビットが有効（「１」）であるか否かによって、各読出データが有効であるか否かを判定する。
【００４８】
具体的に図４の場合、メモリ空間Ｐ０〜Ｐ４からは、それぞれデータ［１／１１１１］，［１／１１０１］，［０／−］，［１／０１１０］，「１／００１１」が読み出される。ここで、読出データは「バリッドビット／所定のコード］の順に並んでいるとする。判定部２０３は、メモリ空間Ｐ２から読み出されたデータに含まれるバリッドビットは「０」であるので、この読出データは無効であると判定する。そして、判定部２０３は、有効と判定したデータ［１／１１１１］，［１／１１０１］，［１／０１１０］，「１／００１１」のみを選択部２０４に出力する。
【００４９】
４．選択部
選択部２０４は、判定部２０３によって有効と判定された読出データのうち、最も優先順位が高い、すなわち最も空間サイズの大きい（アドレスサイズが大きい）メモリ空間から読み出された読出データを選択し、選択した読出データに含まれる所定のコードを出力する。図４の場合、メモリ空間Ｐ４から読み出されたデータ「１／００１１」に含まれるコード［００１１］が、省電力検索エンジン２００による検索結果として出力される。
【００５０】
以上によって、図１の場合と同様に、検索キー［０１０１］に対して紐付けされた所定の処理を表すコード［００１１］（検索結果）を得ることができる。
【００５１】
ここで、メモリＰ０は、いずれのメモリ空間Ｐ１〜Ｐ４よりも優先順位が低い。もし、メモリ空間Ｐ１〜Ｐ４から読み出された読出データがいずれも判定部２０３によって無効と判定された場合（記憶部２０１の格納データが検索キーに一致しなかった場合）、選択部２０４は、メモリＰ０の読出データ［１／１１１１］に含まれるコード［１１１１］を検索結果として出力する。この場合、メモリＰ０の読出データ［１／１１１１］が、有効と判定された読出データのうちで最も優先順位が高いメモリ空間Ｐ０から読み出されたことになる。
【００５２】
［省電力検索エンジンの特徴および問題点］
上記の省電力検索エンジンによれば、ＴＣＡＭという特殊なメモリセル構造を使用することなく、汎用メモリセル構造のみで安価な検索システムを構築することができる。この場合、検索キーから、各メモリ空間の読出アドレス（読出アドレス）が一意に定まるので、記憶部２０１において動作しているのは、読出アドレスによってアクセスされている領域のみである。したがって、全検索テーブル空間をチェックして、検索キーに一致する被検索データを探すＴＣＡＭに比べて低消費電力化が実現できる。
【００５３】
さらに、各メモリ空間専用のデータバスを介して、各メモリ空間から並行かつ独立してデータを読み出すことによって、高速検索が可能になる。
【００５４】
最長一致検索の実装において、従来のＴＣＡＭを用いた検索やリニア検索の場合には、若いアドレスに格納されるデータほど有効ビット長が長くなるように検索テーブルを作成する必要があり、アドレスの割当てが複雑であった。これに対して、図４の省電力検索エンジンの場合には、被検索データの有効ビット長に応じて異なるメモリ空間に割当てるだけでよいので、テーブルの書換えが容易になる。エントリ数も多くできる。
【００５５】
図４の省電力検索エンジンの問題点は、検索キーのビット長を長くできないことである。これは検索テーブルのサイズが大きくなるため、メモリを搭載できる容量を超えてしまうからである。検索キーのビット長は２３ビットが実際上の限界である。
【００５６】
たとえば、図４のようにバリッドビットに１ビット、検索テーブルに４ビットを割り当てた構成で、検索キーが４ビットの場合のメモリ容量は、
５×（２＾１＋２＾２＋２＾３＋２＾４）＝１５０
である（ただし、ｘ＾ｙは、ｘのｙ乗を表わす）。検索キーを１ビット増やして５ビットにすると、メモリ容量は、
５×（２＾１＋２＾２＋２＾３＋２＾４＋２＾５）＝３１０
に増加する。すなわち検索キーのビット長が増えると、メモリ容量は指数関数的に増加する。逆の考え方をすると検索キーのビット長が短いときは、省電力検索エンジンは非常に有効である。
【００５７】
以下の各実施の形態では、小容量のＴＣＡＭと省電力検索エンジンとを組み合わせることによって、検索キーのビット長が増えたときにメモリ容量の増大を抑えるようにしている。
【００５８】
＜実施の形態１＞
図５は、実施の形態１による検索システムの構成を示すブロック図である。図５では、ＩＰｖ４（Internet  Protocol  Version  4）用のＩＰアドレスの検索に用いられる場合を想定し、検索キーのビット数Ｌを３２ビットにしている。
【００５９】
図５を参照して、検索システム１は、ビット長Ｌ（Ｌ＝３２）の複数のデータワードを登録可能であり、ビット長Ｌの検索キーと一致するデータワードを検索する。ここで、各データワードの最下位ビット側から連続する１または複数ビットは、ドントケアビットに設定可能である。
【００６０】
具体的に、検索システム１は、ビット長Ｍ（Ｍ＝２３）のデータを格納可能な複数個（２個）の省電力検索エンジン（第１の検索部）１１Ａ，１１Ｂと、ビット長Ｌ（Ｌ＝３２）のデータを格納可能な小容量ＴＣＡＭ（第２の検索部）１０と、選択回路１２とを含む。
【００６１】
省電力検索エンジン１１Ａは、最上位ビットが“０”かつ有効ビット長が２４ビット以下のデータワードの登録に用いられ、省電力検索エンジン１１Ｂは、最上位ビットが“１”かつ有効ビット長が２４ビット以下のデータワードの登録に用いられる。一方、小容量ＴＣＡＭ１０には、有効ビット長が２５ビット以上のデータワードの登録に用いられる。
【００６２】
すなわち、省電力検索エンジン１１Ａ，１１Ｂには、データワードからＮ個（Ｎ＝９）の特定ビットを除いたデータワードの一部が格納されている。具体的に、省電力検索エンジン１１Ａ，１１Ｂには、有効ビット長が２４ビット以下の各データワードのうち、最上位ビットと最下位ビットから８ビット分とを特定ビットとして除いた２３ビットのビット列が格納されている。
【００６３】
省電力検索エンジン１１Ａは、入力された検索キーの最上位ビットが“０”の場合に通常の検索結果を出力し、入力された検索キーの最上位ビットが“１”の場合には一致データ無しという結果を出力するように構成されている。省電力検索エンジン１１Ｂは、入力された検索キーの最上位ビットが“１”の場合に通常の検索結果を出力し、入力された検索キーの最上位ビットが“０”の場合には一致データ無しという結果を出力するように構成されている。
【００６４】
選択回路１２は、省電力検索エンジン１１Ａ，１１Ｂおよび小容量ＴＣＡＭ１０の検索結果に基づいて、いずれかの検索結果を出力する。具体的に、小容量ＴＣＡＭ１０において検索キーに一致する格納データが検索された場合には、選択回路１２は、この格納データに対応するアドレスを出力する。小容量ＴＣＡＭ１０において検索キーに一致する格納データが検索されなかった場合には、選択回路１２は、省電力検索エンジン１１Ａ，１１Ｂのうちで一致する格納データが検索されたほうの検索結果を出力する。
【００６５】
図６は、ＩＰｖ４用のＩＰアドレスにおいて、通常の場合の有効ビット長とエントリ数との関係を示す図である。図６に示すようにルータの検索テーブルの登録されたほとんどのＩＰアドレスの有効ビット長は２４ビット以下であることがわかる。このため、図５の小容量ＴＣＡＭ１０に登録されるデータワード数は少なくて済む。さらに、省電力検索エンジン１１Ａ，１１Ｂに格納されるデータのビット数は２３に抑えられている。したがって、実施の形態１によれば、低消費電力かつ高速の検索が可能であり、さらに、メモリ容量の比較的小さな検索システムを実現することができる。
【００６６】
図７は、図５の検索システムにおけるデータの割り当てについて説明するための図である。
【００６７】
図７（Ａ）、図７（Ｂ)に示すデータワードは、ビット＿３１（最上位ビット）が“０”であり、ビット＿７〜ビット＿０がドントケアビット（＊）である。したがって、これらの特定ビットを除く、ビット＿３０〜ビット＿８のビット列が図５の省電力検索エンジン１１Ａに格納される。
【００６８】
図７（Ｃ）、図７（Ｄ)に示すデータワードは、ビット＿３１（最上位ビット）が“１”であり、ビット＿７〜ビット＿０がドントケアビット（＊）である。したがって、これらの特定ビットを除く、ビット＿３０〜ビット＿８のビット列が図５の省電力検索エンジン１１Ｂに格納される。
【００６９】
図７（Ｅ）に示すデータワードは、有効ビット長が２８ビットであり、２４ビットを超えている。したがって、このデータワードの全ビットが小容量ＴＣＡＭ１０に格納される。
【００７０】
＜実施の形態２＞
図８は、実施の形態２による検索システムの構成を示すブロック図である。実施の形態２の検索システム２は、ビット長Ｌの複数のデータワードを登録可能であり、入力されたビット長Ｌの検索キーと一致するデータワードを検索する。ここで、各データワードの最下位ビット側から連続する１または複数ビットは、ドントケアビットに設定可能である。
【００７１】
検索システム２では、ビット長ＬのデータワードをＮ個の特定ビットとＭ個の（Ｍ＝Ｌ−Ｎ）の非特定ビットに区分する（Ｍは２３以下であることが望ましい）。ここで、データワードのうちＮ個の特定ビットの部分の種類が少数（たとえば、１０個程度以下）であれば、小容量ＴＣＡＭでＮ個の特定ビットからなるビット列のプリサーチを行ない、プリサーチの結果に応じて省電力検索エンジンで残りの非特定ビットからなるビット列の検索を行なうように検索システムを構築することができる。以下、図面を参照して具体的に説明する。
【００７２】
図８を参照して、検索システム２は、ビット長Ｎのデータを格納可能な小容量ＴＣＡＭ（第３の検索部）２０と、ビット長Ｍのデータを格納可能な複数個（ｐ個）の省電力検索エンジン（第１の検索部）２１＿１〜２１＿ｐと、ビット長Ｌ（ただし、Ｌ＝Ｎ＋Ｍ）のデータを格納可能な小容量ＴＣＡＭ（第２の検索部）２２と、選択回路２３とを含む。
【００７３】
小容量ＴＣＡＭ２０は、ビット長Ｌの検索キーのうちＮ個の特定ビットからなるビット列と一致する格納データを検索する。小容量ＴＣＡＭ２０の検索結果は、省電力検索エンジン２１＿１〜２１＿ｐ、小容量ＴＣＡＭ２２、および選択回路２３に出力される。
【００７４】
省電力検索エンジン２１＿１〜２１＿ｐは、小容量ＴＣＡＭ２０に格納された複数のデータにそれぞれ対応して設けられる。各省電力検索エンジン２１に格納されたＭビットのデータのうち最下位ビット側から連続する１または複数ビットはドントケアビットに設定することができる。各省電力検索エンジン２１は、検索キーに含まれるビット長Ｍの非特定ビット列と一致する格納データのうちで、有効ビット長が最長のものを検索する。各省電力検索エンジン２１の検索結果は、選択回路２３に出力される。
【００７５】
小容量ＴＣＡＭ２２は、小容量ＴＣＡＭ２０と省電力検索エンジン２１＿１〜２１＿ｐとによって構成される検索テーブルからあふれた例外的なデータワードを格納するために設けられている。通常、小容量ＴＣＡＭ２２に格納されているビット長Ｌのデータのうち特定ビットからなるビット長Ｎのデータ列は、小容量ＴＣＡＭ２０の格納データのいずれにも一致しない。小容量ＴＣＡＭ２２に格納されたＬビットのデータのうち最下位ビット側から連続する１または複数ビットはドントケアビットに設定することができる。小容量ＴＣＡＭ２２は、検索キーと一致する格納データのうちで有効ビット長が最長のものを検索する。
【００７６】
選択回路２３は、小容量ＴＣＡＭ２０、省電力検索エンジン２１＿１〜２１＿ｐ、および小容量ＴＣＡＭ２２の各検索結果に基づいて、いずれかの検索結果を選択する。具体的に、小容量ＴＣＡＭ２２において検索キーに一致する格納データが検索された場合には、選択回路２３は、この格納データに対応するアドレスを出力する。小容量ＴＣＡＭ２０において検索キーの特定ビット列に一致する格納データが検索され、省電力検索エンジン２１＿１〜２１＿ｐのうちの複数において検索キーの非特定ビット列に一致する格納データが検索された場合には、選択回路２３は、小容量ＴＣＡＭ２０で検索された格納データに対応する省電力検索エンジンの検索結果を選択する。
【００７７】
図９は、図８のプリサーチ用の小容量ＴＣＡＭに割り当てられる特定ビットの例について説明するための図である。図９の場合、検索キーのビット長は２０ビットである。このうち、最上位ビット（ＭＳＢ：Most  Significant  Bit）側の１０ビットが特定ビットとして図８の小容量ＴＣＡＭ２０に割り当てられ、最下位ビット（ＬＳＢ：Least  Significant  Bit）側の１０ビットが非特定ビットとして図８の省電力検索エンジン２１＿１〜２１＿ｐに割り当てられる。小容量ＴＣＡＭ２０に格納されているビット長が１０ビットのデータ数は少数である必要がある。
【００７８】
図１０は、図８のプリサーチ用の小容量ＴＣＡＭに割り当てられる特定ビットの他の例について説明するための図である。図１０の場合、検索キーのビット長は２０ビットである。最上位ビットをビット＿１９とし、最下位ビットをビット＿０とすると、ビット＿１９、ビット＿１８、ビット＿１７、ビット＿１６、ビット＿１３、およびビット＿１２が特定ビットとして図８の小容量ＴＣＡＭ２０に割り当てられる。このように、特定ビットは不連続であっても構わない。
【００７９】
図１１は、ＩＰｖ４のＩＰアドレスを検索するための検索テーブルの作成について説明するための図である。図１１の例では、図８のプリサーチ用の小容量ＴＣＡＭ２０に割り当てられる特定ビットは、ビット＿２０〜ビット＿２５と、ビット＿２８〜ビット＿３１の１０ビットである。残りの２２ビット（ビット＿０〜ビット＿１９、ビット＿２６、ビット＿２７）が非特定ビットとして省電力検索エンジン２１に割り当てられる。
【００８０】
具体的に、図１１（Ａ）、図１１（Ｂ）に示すデータワードは、特定ビットの値が一致しているので、共通の省電力検索エンジン２１＿１に割り当てられる。図１１（Ａ）に示すデータワードと図１１（Ｂ）に示すデータワードの間の値を有するデータワード（ビット＿０〜ビット＿１９が異なるもの）も同じ省電力検索エンジン２１＿１に割り当てることができる。
【００８１】
同様に、図１１（Ｃ）、図１１（Ｄ）に示すデータワードは、特定ビットの値が一致しているので、共通の省電力検索エンジン２１＿２に割り当てられる。図１１（Ｃ）に示すデータワードと図１１（Ｄ）に示すデータワードの間の値を有するデータワード（ビット＿０〜ビット＿１９が異なるもの）も同じ省電力検索エンジン２１＿２に割り当てることができる。
【００８２】
図１１（Ｅ）に示すデータワードは、特定ビットの値が図１１（Ａ）〜（Ｄ）に示すデータワードと異なり、さらに、非特定ビットからなるビット列の種類が少ない場合の例を示すものである。このように、検索テーブルに登録するデータワードのうち上位ビットの共通するものが少ない場合には、小容量ＴＣＡＭ２２に割り当てるのが望ましい。
【００８３】
図１２は、図１１に対応する検索システムの例を示す図である。図１２を参照して、小容量ＴＣＡＭ２０に格納されるデータ（ビット長Ｎ＝１０）の種類は８種類であったとする。この場合、小容量ＴＣＡＭ２０の格納データにそれぞれ対応して、ビット長Ｍ＝２２のデータを格納可能な８個の省電力検索エンジン２１＿１〜２１＿８が設けられる。
【００８４】
ここで、ビット長Ｍ＝２３の省電力検索エンジンは、ビット長Ｍ＝２２の２個の省電力検索エンジンとして使用することもできるし、ビット長Ｍ＝２１の４個の省電力検索エンジンとして使用することもできるし、ビット長Ｍ＝２０の８個の省電力検索エンジンとして使用することができる。したがって、非特定ビットのビット数に応じてビット長の異なる検索エンジンを準備しなくてもよい。
【００８５】
たとえば、図４に示すＭ＝４の省電力検索エンジンは、アドレスの最上位ビットが０の場合と１の場合とに区分すれば、Ｍ＝３の２個の省電力検索エンジンとして使用することができる。この場合、アドレス生成部２０２は、実際の３ビットの検索キーに最上位ビット（ヘッダ）として０および１がそれぞれ付加された仮想的な４ビットの検索キーに基づいて、メモリ空間Ｐ２〜Ｐ４を検索するためのアドレスを生成する。メモリ空間Ｐ１およびＰ０は用いられない。
【００８６】
図１２の場合には、ビット長Ｍ＝２３の４個の省電力検索エンジンをビット長Ｍ＝２２の８個の省電力検索エンジンとして使用している。たとえば、省電力検索エンジン２１＿１，２１＿２によって１つのビット長Ｍ＝２３の省電力検索エンジンが構成されている。
【００８７】
上記のように、実施の形態２においても、低消費電力かつ高速の検索が可能であり、さらに、メモリ容量の比較的小さな検索システムを実現することができる。
【００８８】
＜実施の形態３＞
［省電力検索エンジン２００Ａの構成］
図１３は、実施の形態３による検索システムで用いられる省電力検索エンジン２００Ａの構成を示すブロック図である。
【００８９】
実施の形態３による検索システムの全体構成は実施の形態１，２の場合と同様であるが、省電力検索エンジンの構成が図４で説明した省電力検索エンジン２００と異なる。具体的には、図１３の省電力検索エンジン２００Ａは、遮断部２０５をさらに含む点で図４の省電力検索エンジン２００と異なる。図１４、図１５で後述するように、記憶部２０１を構成するメモリ空間Ｐ１〜Ｐ４およびメモリＰ０のうち一部のみを使用する場合に、使用しないメモリ空間からの読出データを無効にするために設けられている。
【００９０】
図１３を参照して、遮断部２０５は、Ｍ個（Ｍ＝４）のメモリ空間Ｐ１〜Ｐ４およびメモリＰ０から読み出されたＭ＋１個の読出データのうち、判定部２０３による判定対象にしない読出データの転送を遮断する。これによって、判定部２０３による判定対象になる読出データのみが記憶部２０１から判定部２０３に転送され、転送された読出データが所定のコードを含む有効な読出データであるか否か（すなわち、バリッドビットが“１”であるか否か）が、判定部２０３によって判定される。
【００９１】
ここで、検索システム内には、レジスタまたはフューズ２０６が設けられる。メモリ空間Ｐ１〜Ｐ４およびメモリＰ０から読み出された読出データのうち、どの読出データの判定部２０３への転送を遮断するかは、このレジスタまたはフューズ２０６によって予め設定することができる。
【００９２】
具体的に図１３の場合には、遮断部２０５は、メモリ空間Ｐ１およびメモリＰ０から読み出された読出データの転送を遮断する。判定部２０３は、遮断部２０５によって遮断されていないメモリ空間Ｐ２〜Ｐ４から読み出された読出データについて、バリッドビットが有効であるか否かを判定する。この結果、判定部２０３は、メモリ空間Ｐ４から読み出されたデータ［１／００１１］とメモリ空間Ｐ３から読み出されたデータ［１／０１１０］を有効と判定し、メモリ空間Ｐ２から読み出されたデータ［０／−］を無効と判定する。選択部２０４は、判定部２０３によって有効と判定された読出データのうち、最も優先順位が高いメモリ空間Ｐ４から読み出されたデータに含まれるコード［００１１］を出力する。
【００９３】
［省電力検索エンジン２００Ａの使用例１］
図１４は、図１３の省電力検索エンジン２００Ａの使用例を説明するための図である。図１４では、４ビットの検索キーに対応した省電力検索エンジン２００Ａを、２ビットの検索キーに対応した４つの省電力検索エンジンとして使用する例が示されている。この場合、記憶部２０１は、４つの記憶部（検索テーブル）２０１＿０，２０１＿１，２０１＿２，２０１＿３に分割される。記憶部２０１＿０〜２０１＿３のうち、どの記憶部を検索対象にするかは、検索キーに付加する２ビットのヘッダによって区別される。図１４の場合、記憶部２０１＿０，２０１＿１，２０１＿２，２０１＿３は、ヘッダ“００”，“０１”，“１０”，“１１”によってそれぞれ区別される。
【００９４】
たとえば、記憶部２０１＿１を検索対象として２ビットの検索キー“０１”を用いた検索を実行する場合には、検索キー“０１”にヘッダ“０１”が付加された４ビットの検索キー“０１０１”がアドレス生成部２０２に入力される。アドレス生成部２０２は、メモリ空間Ｐ４用の読出アドレス［０１０１］、メモリ空間Ｐ３用の読出アドレス［０１０］，メモリ空間Ｐ２用の読出アドレス［０１］、およびメモリ空間Ｐ１用の読出アドレス［０］を生成する。各メモリ空間Ｐ１〜Ｐ４からは、対応の読出アドレスによって特定された領域の格納データが読み出される。ただし、メモリ空間Ｐ１，Ｐ０の読出データは検索結果として使用されない。
【００９５】
同様に、記憶部２０１＿２を検索対象として２ビットの検索キー“０１”を用いた検索を実行する場合には、検索キー“０１”にヘッダ“１０”が付加された４ビットの検索キー“１００１”がアドレス生成部２０２に入力される。アドレス生成部２０２は、メモリ空間Ｐ４用の読出アドレス［１００１］、メモリ空間Ｐ３用の読出アドレス［１００］，メモリ空間Ｐ２用の読出アドレス［１０］、およびメモリ空間Ｐ１用の読出アドレス［１］を生成する。各メモリ空間Ｐ１〜Ｐ４からは、対応の読出アドレスによって特定される領域の格納データが読み出される。
【００９６】
上記の各例では、メモリ空間Ｐ１およびメモリＰ０からの読出データは検索結果として使用されない。このために、図１３で説明した遮断部２０５が設けられている。メモリ空間Ｐ１およびメモリＰ０からの読出データは遮断部２０５によって遮断されるために、判定部２０３に転送されず、判定部２０３の判定対象とならない。
【００９７】
仮に遮断部２０５を設けていないとすると、メモリ空間Ｐ２〜Ｐ４までの検索結果がミスのときに、メモリ空間Ｐ１およびメモリＰ０の格納データが省電力検索エンジン２００Ａ全体の検索結果となる場合があり得る。この場合に、実際の検索には使用しないメモリ空間Ｐ１およびメモリＰ０に不良が存在すると、これらのメモリを使用していないにもかかわらず、省電力検索エンジン全体が不良品となってしまう。図１３の遮断部２０５を設けることによって、このような不都合を避けることができ、製品の歩留まりを上げることができる。
【００９８】
［省電力検索エンジン２００Ａの使用例２］
図１５は、図１３の省電力検索エンジン２００Ａのその他の使用例を説明するための図である。図１５では、４ビットの検索キーに対応した省電力検索エンジン２００Ａを、３ビットの検索キーに対応した１つの省電力エンジンとして使用する例が示されている。この場合、メモリ空間Ｐ３〜Ｐ１およびメモリＰ０が３ビットの検索キーに対応した省電力検索エンジン用の記憶部２０７（検索テーブル）として用いられ、メモリ空間Ｐ４は用いられない。
【００９９】
たとえば、３ビットの検索キー“０１０”を用いた検索を実行する場合には、検索キー“０１０”に１ビットのフッタ（フッタは“０”でも“１”でもよい）を付加した検索キー“０１００”（または“０１０１”）がアドレス生成部２０２に入力される。アドレス生成部２０２は、メモリ空間Ｐ４用の読出アドレス［０１００］、メモリ空間Ｐ３用の読出アドレス［０１０］、メモリ空間Ｐ２用の読出アドレス［０１］、およびメモリ空間Ｐ１用の読出アドレス［０］を生成する。各メモリ空間Ｐ１〜Ｐ４からは、対応の読出アドレスによって特定される領域の格納データが読み出される。ただし、検索に用いられないメモリ空間Ｐ４からの読出データは遮断部２０５によって遮断されるために、判定部２０３に転送されない。判定部２０３は、メモリＰ０およびメモリ空間Ｐ１〜Ｐ３の各読出データが有効か否かを判定し、選択部２０４は、判定部２０３によって有効と判定された読出データのうち最も優先順位の高いメモリ空間Ｐ３に格納されているコード“０１１０”を検索結果として出力する。
【０１００】
なお、４ビットの検索キーに対応した省電力検索エンジン２００Ａを、３ビットの検索キーに対応した２つの省電力エンジンとして使用することもできる。この場合、メモリ空間Ｐ１〜Ｐ４が、２つの記憶部（検索テーブル）に分割される。第１の記憶部は、図１４の記憶部２０１＿０，２０１＿１とメモリ空間Ｐ１のアドレス“０”の領域とによって構成される（対応するヘッダは“０”）。第２の記憶部は、図１４の記憶部２０１＿２，２０１＿３とメモリ空間Ｐ１のアドレス“１”の領域とによって構成される（対応するヘッダは“１”）。メモリＰ０は使用されない。アドレス生成部２０２には、使用する記憶部に応じたヘッダ（“０”または“１”）を３ビットの検索キーに付加することによって得られる４ビットの検索キーが入力される。
【０１０１】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は上記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【符号の説明】
【０１０２】
１，２  検索システム、１１Ａ，１１Ｂ，２１，２００，２００Ａ  省電力検索エンジン、１２，２３  選択回路、１０，２０，２２  小容量ＴＣＡＭ、１００  ＴＣＡＭ、１０１  メモリセルアレイ、１０２  プライオリティ・エンコーダ、１０４  ワード線デコーダ、１０５  センスアンプ＆ビット線ドライバ、１０６  サーチ線ドライバ、１０７  プリチャージ電圧発生回路、２０１  記憶部、２０２  アドレス生成部、２０３  判定部、２０４  選択部、ＢＬ，／ＢＬ  ビット線、ＣＭＰ  比較部、ＭＣ  メモリセル（ＴＣＡＭセル）、ＭＬ  マッチ線、Ｐ１〜Ｐ４  メモリ空間、Ｐ０  メモリ（レジスタ）、ＳＬ，／ＳＬ  サーチ線、ＳＭＣ１，ＳＭＣ２  サブメモリセル、ＷＬ０，ＷＬ１  ワード線。
【図１】
2014123936.tif 000003
【図２】
2014123936.tif 000004
【図３】
2014123936.tif 000005
【図４】
2014123936.tif 000006
【図５】
2014123936.tif 000007
【図６】
2014123936.tif 000008
【図７】
2014123936.tif 000009
【図８】
2014123936.tif 000010
【図９】
2014123936.tif 000011
【図１０】
2014123936.tif 000012
【図１１】
2014123936.tif 000013
【図１２】
2014123936.tif 000014
【図１３】
2014123936.tif 000015
【図１４】
2014123936.tif 000016
【図１５】
2014123936.tif 000017