(57)【要約】【課題】低消費電力化を図ることが可能な半導体装置を提供する。【解決手段】半導体装置は、各々がメモリセルアレイを含む複数のサブブロックと、複数のサブブロックにそれぞれ対応して設けられた複数のサブサーチ部とを備える。各サブブロックは、検索指示に従って、メモリセルアレイの行ごとに格納された複数のデータのうち、入力されるサーチデータに一致するものを検索し、行ごとに一致または不一致という検索結果を出力し、各サブサーチ部は、対応するメモリセルアレイに格納された複数のデータに基づいて、入力されるサーチデータの一部と比較するためのプリサーチ用のフラグデータを生成するフラグデータ生成部と、入力されるサーチデータの一部と、フラグデータ生成部により生成されたフラグデータとを比較して、比較結果に基づいて対応するサブブロックに検索指示を出力する検索部とを含む。【選択図】図７
2018014153.tif 000002
【特許請求の範囲】
【請求項１】
各々がメモリセルアレイを含む複数のサブブロックと、
前記複数のサブブロックにそれぞれ対応して設けられた複数のサブサーチ部とを備え、
各前記サブブロックは、検索指示に従って、前記メモリセルアレイの行ごとに格納された複数のデータのうち、入力されるサーチデータに一致するものを検索し、前記行ごとに一致または不一致という検索結果を出力し、
各前記サブサーチ部は、
対応する前記メモリセルアレイに格納された前記複数のデータに基づいて、前記入力されるサーチデータの一部と比較するためのプリサーチ用のフラグデータを生成するフラグデータ生成部と、
前記入力されるサーチデータの一部と、前記フラグデータ生成部により生成されたフラグデータとを比較して、比較結果に基づいて対応するサブブロックに前記検索指示を出力する検索部とを含む、半導体装置。
【請求項２】
各前記サブサーチ部は、前記生成したフラグデータを格納するメモリをさらに含む、請求項１記載の半導体装置。
【請求項３】
前記検索部は、前記生成したフラグデータを格納する連想メモリである、請求項１記載の半導体装置。
【請求項４】
前記フラグデータ生成部は、前記複数のデータに基づいて前記入力されるサーチデータの一部を指定するための指定データを格納するレジスタを有する、請求項１記載の半導体装置。
【請求項５】
前記レジスタに格納された指定データに基づいて前記入力されるサーチデータの一部を選択するセレクタをさらに備える、請求項４記載の半導体装置。
【請求項６】
前記メモリセルアレイは、所定列毎に分割された複数の領域を有し、
前記データ生成部は、
各領域毎に格納されているデータが全てバイナリ値であるか否かを判断し、
判断結果に基づいて、全てバイナリ値である領域のデータを前記プリサーチ用のフラグデータとして生成する、請求項１記載の半導体装置。
【請求項７】
各前記サブサーチ部は、プリサーチ用のフラグデータを更新するための制御部を含む、請求項１記載の半導体装置。
【請求項８】
前記制御部は、無効フラグを格納する無効レジスタを有する、請求項７記載の半導体装置。
【請求項９】
前記制御部は、対応する前記メモリセルアレイの書き込み回数をカウントし、書き込み回数に基づいて前記フラグデータを更新する、請求項７記載の半導体装置。
【請求項１０】
前記制御部は、所定期間が経過するか否かを判断し、所定期間が経過した場合には前記フラグデータを更新する、請求項７記載の半導体装置。
【請求項１１】
前記制御部は、対応する前記メモリセルアレイに対する書込データに基づいて前記フラグデータを更新する、請求項７記載の半導体装置。
【請求項１２】
各前記サブサーチ部から前記対応するサブブロックへの前記検索指示の割合を算出し、算出結果に基づいて前記フラグデータの更新を指示する管理部をさらに備える、請求項７記載の半導体装置。
【請求項１３】
前記データ生成部は、前記制御部からの指示に従って、対応する前記メモリセルアレイに格納された前記複数のデータに基づいて、前記入力されるサーチデータの一部と比較するためのプリサーチ用のフラグデータを再生成する、請求項７記載の半導体装置。
【請求項１４】
前記メモリセルアレイは、所定列毎に分割された複数の領域を有し、
前記データ生成部は、
各領域毎に格納されているデータの一部領域が全てバイナリ値であるか否かを判断し、
判断結果に基づいて、前記一部領域のデータを前記プリサーチ用のフラグデータとして生成する、請求項１記載の半導体装置。
【請求項１５】
各々がメモリセルアレイを含む複数のサブブロックと、
前記複数のサブブロックにそれぞれ対応して設けられた複数のサブサーチ部とを備え、
各前記サブブロックは、検索指示に従って、前記メモリセルアレイの行ごとに格納された複数のデータのうち、入力されるサーチデータに一致するものを検索し、前記行ごとに一致または不一致という検索結果を出力し、
各前記サブサーチ部は、
対応する前記メモリセルアレイに格納された前記複数のデータに基づいて、前記入力されるサーチデータと比較するためのプリサーチ用の解析データを生成する解析データ生成部と、
前記入力されるサーチデータを解析した入力解析データと、前記解析データ生成部により生成された解析データとを比較して、比較結果に基づいて対応するサブブロックに前記検索指示を出力する検索部とを含む、半導体装置。
【請求項１６】
前記解析データ生成部は、
各前記複数のデータを第１のデータと、第２のデータとに分割し、
分割した前記第１および第２のデータをそれぞれデータ解析し、
それぞれのデータ解析結果に基づくデータテーブルを生成する、請求項１５記載の半導体装置。
【請求項１７】
前記検索部は、
前記入力されるサーチデータを前記第１の入力データと、前記第２の入力データとに分割し、
分割した前記第１および第２の入力データをそれぞれデータ解析し、
前記第１および第２の入力データをデータ解析した解析結果と前記データテーブルとを比較する、請求項１６記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この開示は、半導体装置に関し、たとえば、連想メモリに関する。
【背景技術】
【０００２】
連想メモリまたはＣＡＭ（内容参照メモリ：Content Addressable Memory）と呼ばれる記憶装置は、記憶しているデータワードの中から検索ワードに一致しているものを検索し、一致しているデータワードが見つかった場合は、そのアドレスを出力するものである。
【０００３】
ＣＡＭにはＢＣＡＭ（Binary CAM）とＴＣＡＭ（Ternary CAM）とがある。ＢＣＡＭの各メモリセルは“０”か“１”かのいずれかの情報を記憶する。一方、ＴＣＡＭの場合には、各メモリセルは、“０”および“１”の他に“ドントケア（Don't Care）”（本例においては、“＊”の記号を用いる）の情報を記憶可能である。“＊”は“０”および“１”のどちらでも良いことを示す。
【０００４】
ＴＣＡＭ装置は、インターネットなどのネットワーク用のルータにおいてアドレス検索およびアクセス制御のために幅広く利用されている。大容量化に対応するために、ＴＣＡＭ装置は、通常、複数のアレイを有し、各アレイに対して同時にサーチ動作が実行される構成となっている。
【０００５】
ＴＣＡＭ装置は、入力サーチデータ（入力パケット）とＴＣＡＭセルデータとを一斉に比較することができるので、全ての検索用途においてＲＡＭ（Random Access Memory）よりも高速である。しかしながら、検索時にサーチ電流が発生するために消費電力の増大が問題となっている。
【０００６】
この点で、特開平６−３３３３５号公報（特許文献１）には、ブロックを選択するブロック選択信号を入力することにより検索するブロックを絞り込むことにより消費電力を低減する構成が開示されているが、予めブロックを選択するためのブロック選択信号を設ける必要があり構成が複雑化する。
【０００７】
また、特表２０１３−５３７６８０号公報（特許文献２）には、メモリアレイに有効なデータ（データワード）が有るか否かに基づいて有効なデータが無い領域について電力を供給しない構成が開示されているが、データワードが存在する場合には電力供給が実行されるため十分な低消費電力効果を得られない。
【０００８】
また、特開２００３−２７２３８６号公報（特許文献３）は、低消費電力化のためにマッチ線方向に並ぶ複数のサブアレイがパイプライン方式で連結された構成のＴＣＡＭ装置を開示する。この文献のＴＣＡＭ装置では、後続するステージでは、前ステージで一致したエントリのみ検索が実行される。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平６−３３３３５号公報
【特許文献２】特表２０１３−５３７６８０号公報
【特許文献３】特開２００３−２７２３８６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、当該連想メモリでは、ドントケアに設定されたＴＣＡＭセルがある範囲に固まって存在する場合がある。たとえば、サブアレイの一部のマッチ線に接続されたＴＣＡＭセルが全てドントケアに設定されていることがしばしば生じる。このような場合には、予め活性するブロックを絞り込むために使用者自らでデータベースのデータを最適化させる必要があったため管理が複雑化するだけでなく、データベースのメンテナンスの更新時間のための解析時間を多く必要となるため低消費電力効果と性能の両立させることが困難であった。
【００１１】
本開示は、上記の課題を解決するためになされたものであって、低消費電力化が可能な半導体装置を提供することを目的とする。
【００１２】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１３】
一実施例によれば、半導体装置は、各々がメモリセルアレイを含む複数のサブブロックと、複数のサブブロックにそれぞれ対応して設けられた複数のサブサーチ部とを備える。各サブブロックは、検索指示に従って、メモリセルアレイの行ごとに格納された複数のデータのうち、入力されるサーチデータに一致するものを検索し、行ごとに一致または不一致という検索結果を出力し、各サブサーチ部は、対応するメモリセルアレイに格納された複数のデータに基づいて、入力されるサーチデータの一部と比較するためのプリサーチ用のフラグデータを生成するフラグデータ生成部と、入力されるサーチデータの一部と、フラグデータ生成部により生成されたフラグデータとを比較して、比較結果に基づいて対応するサブブロックに検索指示を出力する検索部とを含む。
【発明の効果】
【００１４】
一実施例によれば、低消費電力化を図ることが可能である。
【図面の簡単な説明】
【００１５】
【図１】ＴＣＡＭセルの構成の一例を示す回路図である。
【図２】図１のＸセルおよびＹセルの記憶内容とＴＣＡＭデータとの対応関係を表形式で示す図である。
【図３】ＴＣＡＭ装置を構成する１つのサブブロックの構成を示すブロック図である。
【図４】サーチ線ドライバ２２の構成の一例を示す回路図である。
【図５】マッチアンプの構成の一例を示す回路図である。
【図６】検索装置１の全体構成を示すブロック図である。
【図７】プリサーチサブ回路２００の構成を説明する機能ブロック図である。
【図８】プリサーチサブ回路２００Ｐの構成を説明する別の機能ブロック図である。
【図９】プリサーチサブ回路２００Ｑの構成を説明する別の機能ブロック図である。
【図１０】プリサーチサブ回路２００の動作概要を説明する図である。
【図１１】プリサーチサブ回路２００のリセット状態あるいは初期化状態時の動作概要を説明する図である。
【図１２】プリサーチサブ回路２００のフラグデータ生成モードにおける動作例を説明する図である。
【図１３】プリサーチサブ回路２００のフラグデータの更新を説明する図である。
【図１４】プリサーチサブ回路２００のフラグデータの別の更新を説明する図である。
【図１５】プリサーチサブ回路２００の判定対象の変更を説明する図である。
【図１６】変形例２に従うプリサーチサブ回路の構成について説明する図である。
【図１７】プリサーチサブ回路２００におけるメンテナンス動作を説明するフロー図である。
【図１８】ブロック制御部２０６Ｂの別の構成について説明する図である。
【図１９】ブロック制御部２０６Ｃの構成について説明する図である。
【図２０】サブブロックの活性化に基づくメンテナンス動作について説明する図である。
【図２１】メイン制御回路３００がフラグデータの更新を要求する処理を説明するフロー図である。
【図２２】プリサーチサブ回路２００＃の構成の全体概要を説明する図である。
【図２３】実施形態３に基づくプリサーチサブ回路２００Ｒの構成を説明する機能ブロック図である。
【図２４】実施形態３に基づくプリサーチサブ回路のプリサーチ動作を説明する図である。
【図２５】実施形態３の変形例に基づくプリサーチサブ回路のプリサーチ動作を説明する図である。
【発明を実施するための形態】
【００１６】
本実施形態について図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付し、その説明は繰り返さない。
（実施形態１）
＜Ａ．ハードウェア構成＞
［ａ１．ＴＣＡＭセルの構成］
図１は、ＴＣＡＭセルの構成の一例を示す回路図である。
【００１７】
図１を参照して、ＴＣＡＭセル（メモリセルＭＣとも称する）は、２個のＳＲＡＭセル（Static Random Access Memory Cell）１１，１２と、データ比較部１３とを含む。ＳＲＡＭセル１１をＸセルとも称し、ＳＲＡＭセル１２をＹセルとも称する。Ｘセル１１は、内部の記憶ノード対ＮＤ１，ＮＤ１＿ｎに互いに相補となる（一方が“１”のとき他方が“０”となる）１ビット（ｂｉｔ）のデータを記憶する。Ｙセル１２は、内部の記憶ノード対ＮＤ２，ＮＤ２＿ｎに互いに相補となる１ビットのデータを記憶する。
【００１８】
ＴＣＡＭセルは、ビット線対ＢＬ，ＢＬ＿ｎ、サーチ線対ＳＬ，ＳＬ＿ｎ、マッチ線ＭＬ、およびワード線ＷＬＸ，ＷＬＹと接続される。ビット線対ＢＬ，ＢＬ＿ｎは、図３のＴＣＡＭセルアレイ２０の列方向（Ｙ方向）に延在し、列方向に配列された複数のＴＣＡＭセルによって共有される。サーチ線対ＳＬ，ＳＬ＿ｎは、ＴＣＡＭセルアレイ２０の列方向（Ｙ方向）に延在し、列方向に配列された複数のＴＣＡＭセルによって共有される。
【００１９】
マッチ線ＭＬは、ＴＣＡＭセルアレイ２０の行方向（Ｘ方向）に延在し、行方向に配列された複数のＴＣＡＭセルによって共有される。ワード線ＷＬＸ，ＷＬＹは、ＴＣＡＭセルアレイ２０の行方向（Ｘ方向）に延在し、行方向に配列された複数のＴＣＡＭセルによって共有される。
【００２０】
Ｘセル１１は、インバータＩＮＶ１，ＩＮＶ２と、ＮチャネルＭＯＳ（Metal Oxide Semiconductor）トランジスタＱ１，Ｑ２とを含む。インバータＩＮＶ１は、記憶ノードＮＤ１＿ｎから記憶ノードＮＤ１へ向かう方向が順方向となるように、記憶ノードＮＤ１と記憶ノードＮＤ１＿ｎの間に接続される。インバータＩＮＶ２は、ＩＮＶ１と並列かつ逆方向に接続される。ＭＯＳトランジスタＱ１は、記憶ノードＮＤ１とビット線ＢＬとの間に接続される。ＭＯＳトランジスタＱ２は、記憶ノードＮＤ１＿ｎとビット線ＢＬ＿ｎとの間に接続される。ＭＯＳトランジスタＱ１，Ｑ２のゲートは、ワード線ＷＬＸと接続される。
【００２１】
Ｙセル１２は、インバータＩＮＶ３，ＩＮＶ４と、ＭＯＳ（Metal Oxide Semiconductor）トランジスタＱ３，Ｑ４とを含む。インバータＩＮＶ３は、記憶ノードＮＤ２＿ｎから記憶ノードＮＤ２に向かう方向が順方向となるように、記憶ノードＮＤ２と記憶ノードＮＤ２＿ｎの間に接続される。インバータＩＮＶ４は、ＩＮＶ３と並列かつ逆方向に接続される。ＭＯＳトランジスタＱ３は、記憶ノードＮＤ２とビット線ＢＬとの間に接続される。ＭＯＳトランジスタＱ４は、記憶ノードＮＤ２＿ｎとビット線ＢＬ＿ｎとの間に接続される。ＭＯＳトランジスタＱ３，Ｑ４のゲートは、ワード線ＷＬＹと接続される。
【００２２】
データ比較部１３は、ＮチャネルＭＯＳトランジスタＱ６〜Ｑ９を含む。ＭＯＳトランジスタＱ６，Ｑ７はマッチ線ＭＬとの接続点であるノードＮＤ３と接地ノードＧＮＤとの間に直列に接続される。ＭＯＳトランジスタＱ８，Ｑ９は、ノードＮＤ３と接地ノードＧＮＤとの間に直列に、かつ、直列接続されたＭＯＳトランジスタＱ６，Ｑ７の全体と並列に接続される。ＭＯＳトランジスタＱ６，Ｑ８のゲートは、記憶ノードＮＤ１，ＮＤ２とそれぞれ接続される。ＭＯＳトランジスタＱ７，Ｑ９のゲートは、サーチ線ＳＬ，ＳＬ＿ｎとそれぞれ接続される。
【００２３】
図２は、図１のＸセルおよびＹセルの記憶内容とＴＣＡＭデータとの対応関係を表形式で示す図である。
【００２４】
図１および図２を参照して、ＴＣＡＭセルは、２ビットのＳＲＡＭセルを用いて、“０”、“１”、“＊”（ドントケア：don't care）の３値を格納することができる。具体的に、Ｘセル１１の記憶ノードＮＤ１に“１”が格納され、Ｙセル１２の記憶ノードＮＤ２に“０”が格納されているとき、ＴＣＡＭセルには“０”が格納されているとする。Ｘセル１１の記憶ノードＮＤ１に“０”が格納され、Ｙセル１２の記憶ノードＮＤ２に“１”が格納されているとき、ＴＣＡＭセルには“１”が格納されているとする。Ｘセル１１の記憶ノードＮＤ１に“０”が格納され、Ｙセル１２の記憶ノードＮＤ２に“０”が格納されているとき、ＴＣＡＭセルには“＊”（ドントケア）が格納されているとする。Ｘセル１１の記憶ノードＮＤ１に“１”が格納され、Ｙセル１２の記憶ノードＮＤ２に“１”が格納されている場合は使用しない。
【００２５】
上記のＴＣＡＭセルの構成によれば、サーチデータが“１”（すなわち、サーチ線ＳＬが“１”、かつ、サーチ線ＳＬ＿ｎが“０”）であり、ＴＣＡＭデータが“０”（記憶ノードＮＤ１が“１”、かつ、記憶ノードＮＤ２が“０”）である場合には、ＭＯＳトランジスタＱ６，Ｑ７がオン状態となるために、プリチャージされたマッチ線ＭＬの電位が接地電位まで引き抜かれる。サーチデータが“０”（すなわち、サーチ線ＳＬが“０”、かつ、サーチ線ＳＬ＿ｎが“１”）であり、ＴＣＡＭデータが“１”（記憶ノードＮＤ１が“０”、かつ、記憶ノードＮＤ２が“１”）である場合には、ＭＯＳトランジスタＱ８，Ｑ９がオン状態となるために、プリチャージされたマッチ線ＭＬの電位が接地電位まで引き抜かれる。すなわち、サーチデータとＴＣＡＭデータとが不一致の場合には、マッチ線ＭＬの電位は接地電位まで引き抜かれる。
【００２６】
逆に、入力されたサーチデータが“１”であり、かつ、ＴＣＡＭデータが“１”または“＊”の場合、もしくは、サーチデータが“０”であり、かつ、ＴＣＡＭデータが“０”または“＊”の場合（すなわち、両者が一致する場合）、プリチャージされたマッチ線ＭＬの電位（電源電位ＶＤＤレベル）は維持される。
【００２７】
上記のように、ＴＣＡＭでは、１つのエントリ（行）に対応するマッチ線ＭＬに接続された全てのＴＣＡＭセルのデータが入力サーチデータと一致しない限り、マッチ線ＭＬに蓄えられた電荷が引き抜かれる。このため、ＴＣＡＭでの検索は高速であるが、消費電流が大きいという問題がある。
【００２８】
［ａ２．サブブロックの構成］
図３は、ＴＣＡＭ装置を構成する１つのサブブロックの構成を示すブロック図である。
【００２９】
図３を参照して、サブブロック１００は、ＴＣＡＭセルアレイ２０（単にセルアレイとも称する）と、書込ドライバ２１と、サーチ線ドライバ２２と、マッチアンプ部２３と、制御論理回路２４とを含む。サブブロック１００は、さらに、図１のワード線ＷＬＸ，ＷＬＹを駆動するためのワード線ドライバ（不図示）と、制御信号やアドレス信号等の入力を受ける入出力回路（不図示）と、読出回路（不図示）とを含む。
【００３０】
セルアレイ２０は、行列状（ｍ行；ｋ列）に配列されたＴＣＡＭセルを含む。本例においては、セルアレイ２０は、行数（エントリ数）ｍが２５６であり、列数（ビット数）ｋが３２の場合が示されている。
【００３１】
セルアレイ２０の各列に対応して、ｋ個（ｋ＝３２）のビット線対（ＢＬ［０］，ＢＬ＿ｎ［０］からＢＬ［ｋ−１］，ＢＬ＿ｎ［ｋ−１］まで）と、ｋ個（ｋ＝３２）のサーチ線対（ＳＬ［０］，ＳＬ＿ｎ［０］からＳＬ［ｋ−１］，ＳＬ＿ｎ［ｋ−１］まで）とが設けられる。セルアレイ２０の各行に対応して、ｍ本（ｍ＝２５６）のマッチ線（ＭＬ［０］からＭＬ［ｍ−１］まで）と、図示しないｍ本のＸセル用のワード線（ＷＬＸ［０］からＷＬＸ［ｍ−１］まで）と、図示しないｍ本のＹセル用のワード線（ＷＬＹ［０］からＷＬＹ［ｍ−１］まで）とが設けられている。
【００３２】
書込ドライバ２１は、書込時に、ビット線対ＢＬ，ＢＬ＿ｎを介して各ＴＣＡＭセルに書込データを供給する。サーチ線ドライバ２２は、検索時に、サーチ線対ＳＬ，ＳＬ＿ｎを介して各ＴＣＡＭセルにサーチデータを供給する。
【００３３】
制御論理回路２４は、サブアレイＳＡ全体の動作を制御する。たとえば、制御論理回路２４は、検索時には、サーチコマンドを受け取り、サーチ線ドライバ２２と、マッチアンプ部２３に制御信号を出力することによって、サーチ線ドライバ２２、マッチアンプ部２３、およびプリチャージ回路の動作を制御する。
【００３４】
マッチアンプ部２３は、セルアレイの行にそれぞれ対応する複数のマッチアンプＭＡを含む。マッチアンプＭＡは、検索時に、対応するマッチ線ＭＬの電位に基づいて、対応するＴＣＡＭセルデータと入力サーチデータの対応部分とが一致するか否かを検出する。この実施形態では、マッチアンプＭＡは、検索時に対応するマッチ線ＭＬをプリチャージするためのプリチャージ回路を含む。
【００３５】
［ａ３．サーチ線ドライバの構成および動作］
図４は、サーチ線ドライバ２２の構成の一例を示す回路図である。
【００３６】
サーチ線ドライバ２２は、サーチ線イネーブル信号ｓｅｎａが「Ｈ」レベルに活性化されたときに、入力サーチデータｓｋｅｙ［ｉ］（ｉ＝０，１，…，ｋ）をサーチ線ＳＬ［ｉ］に出力するとともに、入力サーチデータｓｋｅｙ［ｉ］の論理レベルを反転した信号を相補のサーチ線ＳＬ＿ｎ［ｉ］に出力する。
【００３７】
具体的に、サーチ線ドライバ２２は、サーチ線ＳＬ［０］〜ＳＬ［ｋ］にそれぞれ対応するＡＮＤゲート６０［０］〜６０［ｋ］と、サーチ線ＳＬ＿ｎ［０］〜ＳＬ＿ｎ［ｋ］にそれぞれ対応するＡＮＤゲート６１［０］〜６１［ｋ］と、インバータ６２［０］〜６２［ｋ］とを含む。サーチ線イネーブル信号ｓｅｎａは、ＡＮＤゲート６０［０］〜６０［ｋ］およびＡＮＤゲート６１［０］〜６１［ｋ］に共通に入力される。さらに、ＡＮＤゲート６０［ｉ］（ｉ＝０，１，…，ｋ）には、対応する入力サーチデータｓｋｅｙ［ｉ］が入力される。
【００３８】
ＡＮＤゲート６０［ｉ］（ｉ＝０，１，…，ｋ）の出力信号はサーチ線ＳＬ［ｉ］に送信される。ＡＮＤゲート６１［ｉ］（ｉ＝０，１，…，ｋ）には、対応する入力サーチデータｓｋｅｙ［ｉ］を反転した信号が入力される。
【００３９】
上記構成によれば、たとえば、サーチ線イネーブル信号ｓｅｎａが「Ｈ」レベルに活性化され、かつ、入力サーチデータｓｋｅｙ［ｉ］が「Ｈ」レベル（“１”）である場合には、サーチ線ＳＬ［ｉ］の電圧が「Ｈ」レベルとなり、サーチ線ＳＬ＿ｎ［ｉ］の電圧が「Ｌ」レベルとなる。サーチ線イネーブル信号ｓｅｎａが「Ｈ」レベルに活性化され、かつ、入力サーチデータｓｋｅｙ［ｉ］が「Ｌ」レベル（“０”）である場合には、サーチ線ＳＬ［ｉ］の電圧が「Ｌ」レベルとなり、サーチ線ＳＬ＿ｎ［ｉ］の電圧が「Ｈ」レベルとなる。
【００４０】
［ａ４．マッチアンプの構成および動作］
図５は、マッチアンプの構成の一例を示す回路図である。
【００４１】
図５を参照して、マッチアンプＭＡは、プリチャージ回路としてのＰチャネルＭＯＳトランジスタ７０と、インバータ７１〜７４とを含む。
【００４２】
プリチャージ回路としてのＭＯＳトランジスタ７０がマッチアンプＭＡの内部にあるように図示しているが、ＭＯＳトランジスタ７０はマッチアンプＭＡの外部に設けられていても構わない。制御論理回路２４は、マッチ線プリチャージ信号ｍｌｐｒｅ＿ｎおよびマッチアンプイネーブル信号ｍａｅを出力する。
【００４３】
以下、上記の構成要素の接続について説明する。ＭＯＳトランジスタ７０は、対応するマッチ線ＭＬと電源電位ＶＤＤを与える電源ノードとの間に接続される。ＭＯＳトランジスタ７０のゲートには、マッチ線プリチャージ信号ｍｌｐｒｅ＿ｎが入力される。マッチ線ＭＬは、さらに、インバータ７１の入力ノードに接続される。インバータ７１の出力ノードは、インバータ７４の入力ノードに接続される。インバータ７４の出力ノードは、インバータ７２を介してインバータ７２の入力ノードに接続される。
【００４４】
マッチアンプイネーブル信号ｍａｅおよびその論理レベルをインバータ７３によって反転させた信号は、インバータ７１，７２の駆動電源ノードに接続される。マッチアンプイネーブル信号ｍａｅが非活性状態（「Ｌ」レベル）のとき、インバータ７１は非動作状態となり、インバータ７２は動作状態となる。マッチアンプイネーブル信号ｍａｅが活性状態（「Ｈ」レベル）のとき、インバータ７１は動作状態となり、インバータ７２は非動作状態となる。
【００４５】
次に、マッチアンプＭＡの回路動作について説明する。マッチ線プリチャージ信号ｍｌｐｒｅ＿ｎが活性化される（「Ｌ」レベルになる）ことによって、ＭＯＳトランジスタ７０が導通する。これによって、マッチ線ＭＬが電源電位ＶＤＤまで充電される（プリチャージされる）。
【００４６】
マッチ線プリチャージ信号ｍｌｐｒｅ＿ｎが非活性化された後に、サーチ線イネーブル信号ｓｅｎａが活性化される（「Ｈ」レベルになる）ことによって、サーチ線対ＳＬ，ＳＬ＿ｎにサーチデータが入力される。これによって、マッチ線ＭＬの電位がサーチ結果（入力サーチデータの対応部分とＴＣＡＭセルデータとの比較結果）に依存して変化する。すなわち、一致（ヒット：hit）の場合、マッチ線ＭＬの電位は電源電位ＶＤＤ（「Ｈ」レベル）のまま維持され、不一致（ミス：miss）の場合、マッチ線ＭＬの電荷が接地ノードに放電されるのでマッチ線のＭＬ電位は接地電位（「Ｌ」レベル）に変化する。
【００４７】
次に、マッチアンプイネーブル信号ｍａｅが活性化される（「Ｈ」レベルになる）。これによって、サーチ結果に基づくマッチ線ＭＬの電位が、インバータ７１およびインバータ７４を介してマッチアンプ出力信号ｍｏとして出力される。マッチアンプイネーブル信号ｍａｅが非活性化される（「Ｌ」レベルになる）と、インバータ７４とインバータ７２とによって構成されるラッチ回路により、サーチ結果に基づくマッチ線ＭＬの電位が保持される。
【００４８】
［ａ５．全体構成］
図６は、検索装置１の全体構成を示すブロック図である。
【００４９】
図６を参照して、検索装置１は、メイン制御回路３００と、複数のサブブロック１００と、プライオリティ・エンコーダ３０と、複数のプリサーチサブ回路２００と、複数のＡＮＤ回路２０１とを備える。
【００５０】
メイン制御回路３００は、検索装置１全体を制御する。
サブブロック１００は、行列状に配列されたＴＣＡＭセルアレイ２０と、書込ドライバ２１と、サーチ線ドライバ２２と、マッチアンプ部２３と、制御論理回路２４と、入出力回路２５とを含む。
【００５１】
入出力回路２５は、メイン制御回路３００およびプリサーチサブ回路２００からの各種制御信号等の入力を受ける。入出力回路２５は、制御論理回路２４対して入力された信号を出力する。
【００５２】
また、入出力回路２５は、セルアレイ２０から読み出された読出データｒｄａｔａをメイン制御回路３００およびプリサーチサブ回路２００に出力する。具体的には、入出力回路２５は、プリサーチサブ回路２００からのリードイネーブル信号ｒｅｎａおよびアドレス信号ｒａｄｄｒの入力を受けて制御論理回路２４に出力する。制御論理回路２４は、リードイネーブル信号ｒｅｎａおよびアドレス信号ｒａｄｄｒに従ってデータ読出動作を実行する。なお、リードイネーブル信号ｒｅｎａおよびアドレス信号ｒａｄｄｒは、メイン制御回路３００からプリサーチサブ回路２００に出力され、プリサーチサブ回路２００を経由してサブブロック１００に対して出力される。
【００５３】
ワード線ドライバは、アドレス信号ｒａｄｄｒに従って対応するワード線を立ち上げ、ビット線対ＢＬ，ＢＬ＿ｎを介して各メモリセルＭＣに格納されているデータを読出回路に出力する。読出回路は、読出データｒｄａｔａを入出力回路２５に出力する。
【００５４】
また、入出力回路２５は、プリサーチサブ回路２００からの書込イネーブル信号ｗｅｎａ、書込データｗｄａｔａ、ライトアドレス信号ｗａｄｄｒの入力を受けて制御論理回路２４に出力する。制御論理回路２４は、書込イネーブル信号ｗｅｎａ、書込データｗｄａｔａ、ライトアドレス信号ｗａｄｄｒに従ってデータ書込動作を実行する。書込ドライバ２１は、書込データｗｄａｔａに基づいてビット線対ＢＬ，ＢＬ＿ｎを駆動する。そして、ワード線ドライバは、ライトアドレス信号ｗａｄｄｒに従って対応するワード線を立ち上げ、対応するメモリセル行のの各メモリセルＭＣに対してデータを書き込む。
【００５５】
なお、書込イネーブル信号ｗｅｎａ、ライトアドレス信号ｗａｄｄｒおよび書込データｗｄａｔａは、メイン制御回路３００からプリサーチサブ回路２００に出力され、プリサーチサブ回路２００を経由してサブブロック１００に対して出力される。
【００５６】
また、入出力回路２５は、プリサーチサブ回路２００からのサーチ線イネーブル信号ｓｅｎａおよびメイン制御回路３００からの入力サーチデータｓｋｅｙの入力を受けて制御論理回路２４に出力する。制御論理回路２４は、サーチ線イネーブル信号ｓｅｎａおよびメイン制御回路３００からの入力サーチデータｓｋｅｙに従ってデータ検索動作を実行する。データ検索動作の処理についてはサーチ線ドライバ２２およびマッチアンプ部２３について上記で説明したのと同様である。
【００５７】
プライオリティ・エンコーダ３０は、各エントリごとのサーチ結果（入力サーチデータとＴＣＡＭデータとが一致したか否か）を隣接するサブブロック１００から受け取る。プライオリティ・エンコーダ３０は、ヒットアドレス（サーチデータと一致したＴＣＡＭデータが格納されているエントリアドレス）を出力するが、複数のエントリがヒット（一致）した場合には、プライオリティ・エンコーダ３０は、優先度の高いヒットエントリのアドレスを出力する。
【００５８】
複数のプリサーチサブ回路２００は、複数のサブブロック１００にそれぞれ対応して設けられる。
【００５９】
各プリサーチサブ回路２００において、プリサーチ動作が実行される。ＡＮＤ回路２０１は、複数のプリサーチサブ回路２００にそれぞれ対応して設けられ、プリサーチ動作の検索結果信号ｓｄと、検索イネーブル信号ｓａとのＡＮＤ論理演算結果に基づいてサーチ線イネーブル信号ｓｅｎａを出力する。
【００６０】
したがって、プリサーチサブ回路２００のプリサーチ動作の検索結果信号ｓｄとして「Ｌ」レベルが出力された場合には、検索イネーブル信号ｓａが「Ｈ」レベルである場合であってもサーチ線イネーブル信号ｓｅｎａは、非活性状態（「Ｌ」レベル）となる。したがって、この場合には対応するサブブロック１００におけるデータ検索動作は実行されない。
【００６１】
本例においては、サブブロック１００の前段においてプリサーチサブ回路２００を設ける。そして、プリサーチサブ回路２００においてプリサーチ動作を実行して、検索結果信号ｓｄを出力する。
【００６２】
当該検索結果信号ｓｄに基づいてＡＮＤ回路２０１は、サーチ線イネーブル信号ｓｅｎａを出力する。検索対象とする必要がないサブブロックに対しては、サーチ線イネーブル信号ｓｅｎａを非活性状態（「Ｌ」レベル）とすることによりデータ検索動作における低消費電力化を図ることが可能となる。
【００６３】
＜Ｂ．プリサーチサブ回路の構成＞
［ｂ１．機能構成］
図７は、プリサーチサブ回路２００の構成を説明する機能ブロック図である。
【００６４】
図７を参照して、プリサーチサブ回路２００は、データ生成部２０２と、ブロック走査部２０４と、ブロック制御部２０６と、メモリ部２０８と、検索部２１０とを含む。
【００６５】
ブロック制御部２０６は、サブブロック１００を制御するための各種信号を出力する。また、ブロック制御部２０６は、ブロック走査部２０４にデータ読出動作を指示する。
【００６６】
ブロック走査部２０４は、ブロック制御部２０６からの指示に従って対応するサブブロック１００にリードイネーブル信号ｒｅｎａおよびアドレス信号ｒａｄｄｒを出力する。サブブロック１００は、ブロック走査部２０４からのリードイネーブル信号ｒｅｎａおよびアドレス信号ｒａｄｄｒに基づいて、読出データｒｄａｔａを出力する。ブロック走査部２０４は、サブブロック１００からの読出データｒｄａｔａをデータ生成部２０２に出力する。
【００６７】
データ生成部２０２は、サブブロック１００からの読出データｒｄａｔａに基づいて、入力される入力サーチデータｓｋｅｙの一部（プリサーチキーｐｓｋｅｙ）と比較するためのプリサーチ用のフラグデータを生成する。データ生成部２０２は、生成したフラグデータをメモリ部２０８に出力する。
【００６８】
メモリ部２０８は、データ生成部２０２で生成されたフラグデータを格納する。
検索部２１０は、入力サーチデータｓｋｅｙの一部であるプリサーチキーｐｓｋｅｙと、データ生成部２０２で生成されたメモリ部２０８に格納されているフラグデータとが一致するか否かを比較して、比較結果をブロック制御部２０６に出力する。
【００６９】
ブロック制御部２０６は、検索部２１０からの比較結果をプリサーチ動作の検索結果信号ｓｄとしてＡＮＤ回路２０１に出力する。
【００７０】
ＡＮＤ回路２０１は、ブロック制御部２０６からのプリサーチ動作の検索結果信号ｓｄと、検索イネーブル信号ｓａとのＡＮＤ論理演算結果に基づいてサーチ線イネーブル信号ｓｅｎａを出力する。
【００７１】
サブブロック１００は、サーチ線イネーブル信号ｓｅｎａに従って、入力サーチデータｓｋｅｙに対するデータ検索動作を実行する。
【００７２】
図８は、プリサーチサブ回路２００Ｐの構成を説明する別の機能ブロック図である。
図８を参照して、プリサーチサブ回路２００Ｐは、プリサーチサブ回路２００と比較して、メモリ部２０８をＲＡＭ２０９に置換した点が異なる。その他の構成については図７で説明したのと同様であるのでその詳細な説明については繰り返さない。メモリ部２０８をＲＡＭ（Random Access Memory）で構成することにより消費電力を低減するとともにメモリ部２０８の面積を縮小することが可能である。
【００７３】
図９は、プリサーチサブ回路２００Ｑの構成を説明する別の機能ブロック図である。
図９を参照して、プリサーチサブ回路２００Ｑは、プリサーチサブ回路２００と比較して、メモリ部２０８および検索部２１０の代わりにＣＡＭ２１１を設けた点が異なる。その他の構成については図７で説明したのと同様であるのでその詳細な説明については繰り返さない。メモリ部２０８および検索部２１０をＣＡＭ（Content Addressable Memory）で構成することにより簡易な構成でメモリ部２０８および検索部２１０を実現することが可能である。
【００７４】
［ｂ２．プリサーチサブ回路の動作概要］
図１０は、プリサーチサブ回路２００の動作概要を説明する図である。
【００７５】
図１０を参照して、プリサーチサブ回路２００は、データ生成部２０２と、ブロック走査部２０４と、ブロック制御部２０６と、メモリ部２０８と、検索部２１０とを含む。
【００７６】
ブロック走査部２０４は、対応するサブブロック１００に対してデータ読出動作を実行する。本例においては、ブロック走査部２０４により読み出したＴＣＡＭセルデータの構成が示されている。
【００７７】
ブロック走査部２０４は、対応するサブブロック１００に対してデータ読出動作を実行するリード制御部４２０と、読み出したデータを格納する一時記憶部４２２とを含む。
【００７８】
リード制御部４２０は、リードイネーブル信号ｒｅｎａおよびアドレス信号ｒａｄｄｒを受けてサブブロック１００に対してデータ読出動作の実行を指示する。サブブロック１００は、リード制御部４２０からの指示に従ってデータ読出動作を実行して読出データｒｄａｔａをリード制御部４２０に出力する。
【００７９】
本例においては説明を簡易にするために、一例として、一時記憶部４２２には、サブブロック１００のＴＣＡＭセルデータとして、４個のエントリ（行）が格納され、各エントリ（行）は１６ビットのデータで構成されている場合について説明する。
【００８０】
また、各エントリ（行）は、所定列毎に分割されている場合が示されている。本例においては、一例として４ビットずつに分割されている場合が示されている。そして、０〜３番目の領域について識別子＃０が割り当てられている。また、４〜７番目の領域について識別子＃１が割り当てられている。また、８〜１１番目の領域について識別子＃２が割り当てられている。また、１２〜１５番目の領域について識別子＃３が割り当てられている。
【００８１】
１つ目のエントリ（行）は、“０００＊１＊００００１０１０１１”のデータが格納されている場合が示されている。２つ目のエントリ（行）は、“００１１０１１０１００１１１０１”、３つ目のエントリ（行）は、“００＊１００１１０１０１０１１０”、４つ目のエントリ（行）は、“０１０１００＊＊００１０１０１０”のデータが格納されている場合が示されている。それぞれのエントリ（行）にはアドレスが割り当てられている。０番目（“０ｘ０”）の領域が１つ目のエントリ（行）に対応している。１番目（“０ｘ１”）の領域が２つ目のエントリ（行）に対応している。２番目（“０ｘ２”）の領域が３つ目のエントリ（行）に対応している。３番目（“０ｘ３”）の領域が４つ目のエントリ（行）に対応している。
【００８２】
データ生成部２０２は、データ判定部２２１と、判定レジスタ２２２と、選択レジスタ２２３と、セレクタ２２４，２３０とを含む。
【００８３】
データ判定部２２１は、一時記憶部４２２に格納された対応するサブブロック１００からの読出データｒｄａｔａに従って所定領域のデータが全てバイナリ値か否かを判定する。
【００８４】
データ判定部２２１は、各４列毎の識別子＃０〜＃３に対応する領域が全てのデータがバイナリ値か否かを判定する。本例においては、識別子＃０に対応する領域は、“＊”が含まれているため全てのデータがバイナリ値では無い。したがって、「Ｔｅｒｎａｒｙ」と判定した場合が示されている。識別子＃１に対応する領域は、“＊”が含まれているため全てのデータがバイナリ値では無い。したがって、「Ｔｅｒｎａｒｙ」と判定した場合が示されている。識別子＃２に対応する領域は、“＊”が含まれていないため全てのデータがバイナリ値である。したがって、「Ｂｉｎａｒｙ」と判定した場合が示されている。識別子＃３に対応する領域は、“＊”が含まれていないため全てのデータがバイナリ値である。したがって、「Ｂｉｎａｒｙ」と判定した場合が示されている。
【００８５】
データ判定部２２１は、各領域毎の判定結果を判定レジスタ２２２に格納する。判定レジスタ２２２は、「Ｂｉｎａｒｙ」と判定された場合に、“１”を格納し、「Ｔｅｒｎａｒｙ」と判定された場合に“０”を格納する。
【００８６】
選択レジスタ２２３は、判定レジスタ２２２に格納されている判定値（“１”）に基づいて最小の識別子を指定するデータを格納する。本例においては、選択レジスタ２２３は、“＃２”を格納する場合が示されている。
【００８７】
セレクタ２３０は、選択レジスタ２２３に格納されているデータに基づいてフラグデータを選択する。本例においては、選択レジスタ２２３に格納されているデータ（識別子＃２）に基づいて、エントリ（行）の対応する領域のデータをフラグデータとして選択する。本例においては、選択レジスタ２２３に格納されているデータ（“＃２”）に基づいて各エントリ（行）のうち８〜１１番目のデータが指定される。なお、［ｐ：０］の記号は、０〜ｐ番目であることを示す。したがって、［１１：８］は、８〜１１番目であることを示す。他の例についても同様である。
【００８８】
セレクタ２３０は、０番目〜３番目のエントリ（行）について、“００１０”、“１００１”、“０１０１”、“００１０”をフラグデータとして選択する。選択されたフラグデータは、メモリ部２０８に出力される。
【００８９】
メモリ部２０８は、フラグデータレジスタ２２５を含む。フラグデータレジスタ２２５は、比較結果として用いられるフラグデータを格納する。本例においては、選択レジスタ２２３に格納されているデータ（“＃２”）に基づいて識別子＃２に対応する各エントリ（行）のデータをフラグデータとして格納する。一例として、“００１０”、“１００１”、“０１０１”、“００１０”がフラグデータレジスタ２２５にフラグデータとして格納されている場合が示されている。
【００９０】
セレクタ２２４は、選択レジスタ２２３のデータに従って入力される入力サーチデータｓｋｅｙの一部のデータ（プリサーチキーｐｓｋｅｙ）を指定する。
【００９１】
本例においては、選択レジスタ２２３に格納されているデータ（“＃２”）に基づいて入力サーチデータｓｋｅｙのうち８〜１１番目のデータがプリサーチキーｐｓｋｅｙとして指定される。これによりエントリ（行）の一部のデータと対応する同じ位置関係にある入力サーチデータの一部のデータが指定される。
【００９２】
検索部２１０は、比較回路２２６と、ＯＲ回路２２７とを含む。
比較回路２２６は、セレクタ２３０で選択された入力サーチデータｓｋｅｙの一部データと、フラグデータレジスタ２２５に格納されているそれぞれのフラグデータとを比較して比較結果をＯＲ回路２２７に出力する。本例においては、比較回路２２６は、一致した場合には「Ｈ」レベルを出力し、不一致の場合には「Ｌ」レベルを出力する。
【００９３】
ＯＲ回路２２７は、比較回路２２６からの比較結果のＯＲ論理演算結果をブロック制御部２０６に出力する。
【００９４】
ブロック制御部２０６は、有効／無効レジスタ２２８と、ＯＲ回路２２９と、ライト制御部４２４とを含む。
【００９５】
ライト制御部４２４は、対応するサブブロック１００に対してデータ書込動作を実行する。
【００９６】
ライト制御部４２４は、書込イネーブル信号ｗｅｎａ、ライトアドレス信号ｗａｄｄｒおよび書込データｗｄａｔａを受けてサブブロック１００に対してデータ書込動作の実行を指示する。
【００９７】
ライト制御部４２４は、有効／無効レジスタ２２８の値を制御する。
また、ライト制御部４２４は、リード制御部４２０にデータ読出動作の実行を指示する。
【００９８】
有効／無効レジスタ２２８は、プリサーチサブ回路２００のプリサーチ動作を有効／無効に設定するためのレジスタである。プリサーチサブ回路２００のプリサーチ動作を有効に設定する場合には、レジスタの値は“０”に設定される。一方、プリサーチサブ回路２００のプリサーチ動作を無効に設定する場合には、レジスタの値は“１”に設定される。
【００９９】
ＯＲ回路２２９は、検索部２１０からの出力信号と、有効／無効レジスタ２２８のレジスタ値とに基づいてプリサーチ動作の検索結果信号ｓｄを出力する。
【０１００】
ＡＮＤ回路２０１は、検索イネーブル信号ｓａと、プリサーチサブ回路２００のプリサーチ動作の検索結果信号ｓｄとのＡＮＤ論理演算結果をサーチ線イネーブル信号ｓｅｎａとして出力する。
【０１０１】
例えば、比較回路２２６の比較結果としてデータが一致した場合には、プリサーチサブ回路２００のプリサーチ動作の検索結果信号ｓｄ（“１”）が出力される。この場合、検索イネーブル信号ｓａ（「Ｈ」レベル）に従ってサーチ線イネーブル信号ｓｅｎａは、活性状態（「Ｈ」レベル）に設定される。したがって、対応するサブブロック１００に対するデータ検索動作が実行される。
【０１０２】
一方、比較回路２２６の比較結果としてデータが不一致である場合には、プリサーチサブ回路２００のプリサーチ動作の検索結果信号ｓｄ（“０”）が出力される。この場合、検索イネーブル信号ｓａ（「Ｈ」レベル）の入力が有る場合でも、サーチ線イネーブル信号ｓｅｎａは、非活性状態（「Ｌ」レベル）に設定される。したがって、対応するサブブロック１００に対するデータ検索動作は実行されない。
【０１０３】
また、有効／無効レジスタ２２８のレジスタの値が“１”の場合には、比較回路２２６の比較結果の如何に拘わらず、プリサーチサブ回路２００のプリサーチ動作の検索結果信号ｓｄ（“１”）が出力される。この場合、検索イネーブル信号ｓａ（「Ｈ」レベル）に従ってサーチ線イネーブル信号ｓｅｎａは、活性状態（「Ｈ」レベル）に設定される。したがって、対応するサブブロック１００に対するデータ検索動作が実行される。
【０１０４】
したがって、プリサーチサブ回路２００は、対応するサブブロックに格納されているエントリ（行）のデータに基づいて、入力サーチデータの一部と比較するためのプリサーチ用のフラグデータを生成する。そして、プリサーチサブ回路２００は、有効／無効レジスタ２２８のレジスタ値が“０”である場合に入力サーチデータの一部とフラグデータとを比較して、データが一致する場合には、プリサーチ動作の検索結果信号ｓｄ（“１”）を出力し、不一致の場合には、プリサーチ動作の検索結果信号ｓｄ（“０”）を出力する。したがって、プリサーチ動作の検索結果信号ｓｄ（“０”）の場合には、対応するサブブロック１００のデータ検索動作を実行しない。それゆえ、データ検索動作が不要なサブブロックの動作を停止して低消費電力化を図ることが可能である。
【０１０５】
［ｂ３．プリサーチサブ回路のリセット動作］
図１１は、プリサーチサブ回路２００のリセット状態あるいは初期化状態時の動作概要を説明する図である。
【０１０６】
図１１を参照して、図１０の構成と比較して、有効／無効レジスタ２２８のレジスタ値が“１”である場合が示されている。本例においては、対応するサブブロック１００にエントリ（行）のデータが格納されていない場合が示されている。リセット状態あるいは検索装置の初期化状態において、有効／無効レジスタ２２８のレジスタ値は“１”に設定される。
【０１０７】
したがって、プリサーチサブ回路２００におけるプリサーチ動作は無効とされる。
有効／無効レジスタ２２８のレジスタ値が“１”の場合には、プリサーチサブ回路２００は、フラグデータ生成モードとして動作する。一方、有効／無効レジスタ２２８のレジスタ値が“０”の場合には、通常モードとしてプリサーチ動作を実行する。
【０１０８】
［ｂ４．プリサーチサブ回路のフラグデータ生成］
図１２は、プリサーチサブ回路２００のフラグデータ生成モードにおける動作例を説明する図である。
【０１０９】
図１２を参照して、ライト制御部４２４は、書込イネーブル信号ｗｅｎａ、ライトアドレス信号ｗａｄｄｒおよび書込データｗｄａｔａを受けてサブブロック１００に対してデータ書込動作の実行を指示する。本例においては、対応するサブブロック１００に対してエントリ（行）に最初のデータ（“０１０１００＊＊００１０１０１０”）が格納される場合が示されている。
【０１１０】
サブブロック１００に対するデータ書込動作の実行を指示する場合には、ライト制御部４２４は、有効／無効レジスタ２２８のレジスタ値を“１”に設定する。これによりプリサーチ動作は無効とされる。
【０１１１】
ブロック走査部２０４は、ライト制御部４２４からの指示に従ってフラグデータ生成モードにおいて、サブブロック１００に格納されているデータを読み出す。具体的には、リード制御部４２０は、リードイネーブル信号ｒｅｎａおよびアドレス信号ｒａｄｄｒを受けてサブブロック１００に対してデータ読出動作の実行を指示する。サブブロック１００は、リード制御部４２０からの指示に従ってデータ読出動作を実行して読出データｒｄａｔａをリード制御部４２０に出力する。リード制御部４２０は、一時記憶部４２２に読出データｒｄａｔａを格納する。
【０１１２】
ブロック走査部２０４は、複数のエントリ（行）が格納されている場合には、開始アドレスから終了アドレスまでに対応するエントリ（行）のデータを昇順的に読み出す。
【０１１３】
データ判定部２２１は、一時記憶部４２２に格納された読出データｒｄａｔａに従って所定領域のデータが全てバイナリ値か否かを判定する。
【０１１４】
本例においては、識別子＃０に対応する領域は、“＊”が含まれていないため全てのデータがバイナリ値である。したがって、「Ｂｉｎａｒｙ」と判定した場合が示されている。識別子＃１に対応する領域は、“＊”が含まれているため全てのデータがバイナリ値でない。したがって、「Ｔｅｒｎａｒｙ」と判定した場合が示されている。識別子＃２に対応する領域は、“＊”が含まれていないため全てのデータがバイナリ値である。したがって、「Ｂｉｎａｒｙ」と判定した場合が示されている。識別子＃３に対応する領域は、“＊”が含まれていないため全てのデータがバイナリ値である。したがって、「Ｂｉｎａｒｙ」と判定した場合が示されている。
【０１１５】
データ判定部２２１は、各領域毎の判定結果を判定レジスタ２２２に格納する。本例の場合には、“１０１１”を格納する。
【０１１６】
選択レジスタ２２３は、判定レジスタ２２２に格納されている判定値（“１”）に基づいて最小の識別子を指定するデータを格納する。本例においては、選択レジスタ２２３は、“＃０”を格納する場合が示されている。
【０１１７】
フラグデータレジスタ２２５は、選択レジスタ２２３に格納されているデータ（“＃１”）に基づいて識別子＃１に対応する領域のデータをフラグデータとして格納する。一例として、“０１０１”がフラグデータレジスタ２２５にフラグデータとして格納されている場合が示されている。
【０１１８】
そして、フラグデータレジスタ２２５におけるデータ格納後にライト制御部４２４は、有効／無効レジスタ２２８のレジスタ値を更新する。本例においては、有効／無効レジスタ２２８のレジスタ値は“０”に更新される。これにより、プリサーチサブ回路２００におけるプリサーチ動作は有効とされる。
【０１１９】
通常モードにおいて、選択レジスタ２２３に格納されているデータ（“＃０”）に基づいて入力サーチデータｓｋｅｙのうち０〜３番目のデータがプリサーチキーｐｓｋｅｙとして指定される。
【０１２０】
比較回路２２６は、セレクタ２３０で選択された入力サーチデータｓｋｅｙの一部データであるプリサーチキーｐｓｋｅｙと、フラグデータレジスタ２２５に格納されているそれぞれのフラグデータとを比較して比較結果をＯＲ回路２２７に出力する。本例においては、比較回路２２６は、一致した場合には「Ｈ」レベルを出力し、不一致の場合には「Ｌ」レベルを出力する。
【０１２１】
例えば、比較回路２２６の比較結果としてデータが一致した場合には、プリサーチサブ回路２００のプリサーチ動作の検索結果信号ｓｄ（“１”）が出力される。この場合、検索イネーブル信号ｓａ（「Ｈ」レベル）に従ってサーチ線イネーブル信号ｓｅｎａは、活性状態（「Ｈ」レベル）に設定される。したがって、対応するサブブロック１００に対するデータ検索動作が実行される。
【０１２２】
その後、対応するサブブロック１００に対してエントリ（行）を追加格納する毎に上記処理を繰り返し実行することにより、図１０で説明した状態に遷移する。
【０１２３】
［ｂ５．プリサーチサブ回路のフラグデータの更新］
図１３は、プリサーチサブ回路２００のフラグデータの更新を説明する図である。
【０１２４】
図１３を参照して、ライト制御部４２４は、書込イネーブル信号ｗｅｎａ、ライトアドレス信号ｗａｄｄｒおよび書込データｗｄａｔａを受けてサブブロック１００に対してデータ書込動作の実行を指示する。本例においては、対応するサブブロック１００に対してエントリ（行）に図１０で示された状態のデータ（“００＊１００１１０１０１０１１０”）が更新（“００＊１００１１＊１０１０１１０”）された場合が示されている。
【０１２５】
ライト制御部４２４は、有効／無効レジスタ２２８のレジスタ値を“１”に設定する。これによりプリサーチ動作は無効とされる。
【０１２６】
そして、上記で説明したようにブロック走査部２０４は、ライト制御部４２４からの指示に従ってフラグデータ生成モードにおいて、サブブロック１００に格納されているデータを読み出す。具体的には、サブブロック１００は、リード制御部４２０からの指示に従ってデータ読出動作を実行して読出データｒｄａｔａをリード制御部４２０に出力する。リード制御部４２０は、一時記憶部４２２に読出データｒｄａｔａを格納する。
【０１２７】
データ判定部２２１は、一時記憶部４２２に格納された読出データｒｄａｔａに従って所定領域のデータが全てバイナリ値か否かを判定する。
【０１２８】
本例においては、識別子＃０，＃１，＃２に対応する領域は、“＊”が含まれているため全てのデータがバイナリ値では無い。したがって、「Ｔｅｒｎａｒｙ」と判定した場合が示されている。識別子＃３に対応する領域は、“＊”が含まれていないため全てのデータがバイナリ値である。したがって、「Ｂｉｎａｒｙ」と判定した場合が示されている。
【０１２９】
データ判定部２２１は、各領域毎の判定結果を判定レジスタ２２２に格納する。本例の場合には、判定レジスタ２２２の値は、“００１１”から“０００１”に更新される。
【０１３０】
選択レジスタ２２３は、判定レジスタ２２２に格納されている判定値（“１”）に基づいて最小の識別子を指定するデータを格納する。本例においては、選択レジスタ２２３は、“＃３”を格納する場合が示されている。
【０１３１】
フラグデータレジスタ２２５は、選択レジスタ２２３に格納されているデータ（“＃３”）に基づいて識別子＃３に対応する領域のデータをフラグデータとして格納する。一例として、“１０１０”，“０１１０”，“１１０１”，“１０１１”がフラグデータレジスタ２２５にフラグデータとして格納されている場合が示されている。
【０１３２】
そして、フラグデータレジスタ２２５におけるデータ格納後にライト制御部４２４は、有効／無効レジスタ２２８のレジスタ値を更新する。本例においては、有効／無効レジスタ２２８のレジスタ値は“０”に更新される。これにより、プリサーチサブ回路２００におけるプリサーチ動作は有効とされる。
【０１３３】
通常モードにおいて、選択レジスタ２２３に格納されているデータ（“＃３”）に基づいて入力サーチデータｓｋｅｙのうち１２〜１５番目のデータが指定される。
【０１３４】
比較回路２２６は、セレクタ２３０で選択された入力サーチデータｓｋｅｙの一部データと、フラグデータレジスタ２２５に格納されているそれぞれのフラグデータとを比較して比較結果をＯＲ回路２２７に出力する。本例においては、比較回路２２６は、一致した場合には「Ｈ」レベルを出力し、不一致の場合には「Ｌ」レベルを出力する。
【０１３５】
例えば、比較回路２２６の比較結果としてデータが一致した場合には、プリサーチサブ回路２００のプリサーチ動作の検索結果信号ｓｄ（“１”）が出力される。この場合、検索イネーブル信号ｓａ（「Ｈ」レベル）に従ってサーチ線イネーブル信号ｓｅｎａは、活性状態（「Ｈ」レベル）に設定される。したがって、対応するサブブロック１００に対するデータ検索動作が実行される。
【０１３６】
当該方式により、サブブロック１００に対してエントリ（行）のデータが更新された場合に、プリサーチサブ回路２００のフラグデータを更新することによりプリサーチ動作を継続することが可能である。
【０１３７】
このフラグデータの更新については、自動的にバックグラウンドで実行するようにしても良い。
【０１３８】
なお、上記の例においては、フラグデータとして４ビット単位で抽出する方式について説明したが、特に４ビットに限られず可変に変更することが可能である。領域を区切る位置も任意に位置に変更するようにしても良い。また、読み出しデータに対して符号化処理や、Hash関数を用いてデータ圧縮処理を行い、圧縮されたデータに基づいてフラグデータを生成したり、読み出しデータに対してブルームフィルタ等のフィルタ処理を行ったデータに基づいてフラグデータを生成することも可能である。
【０１３９】
（変形例１）
［ｂ６．プリサーチサブ回路のフラグデータの別の更新例］
図１４は、プリサーチサブ回路２００のフラグデータの別の更新を説明する図である。
【０１４０】
図１４を参照して、ライト制御部４２４は、書込イネーブル信号ｗｅｎａ、ライトアドレス信号ｗａｄｄｒおよび書込データｗｄａｔａを受けてサブブロック１００に対してデータ書込動作の実行を指示する。本例においては、対応するサブブロック１００に対してエントリ（行）に図１３に示される状態のデータ（“００１１０１１０１００１１１０１”）が更新（“００１１０１１０１００１＊１０１”）された場合が示されている。
【０１４１】
ライト制御部４２４は、有効／無効レジスタ２２８のレジスタ値を“１”に設定する。これによりプリサーチ動作は無効とされる。
【０１４２】
そして、上記で説明したようにブロック走査部２０４は、ライト制御部４２４からの指示に従ってフラグデータ生成モードにおいて、サブブロック１００に格納されているデータを読み出す。具体的には、サブブロック１００は、リード制御部４２０からの指示に従ってデータ読出動作を実行して読出データｒｄａｔａをリード制御部４２０に出力する。リード制御部４２０は、一時記憶部４２２に読出データｒｄａｔａを格納する。
【０１４３】
データ判定部２２１は、一時記憶部４２２に格納された読出データｒｄａｔａに従って所定領域のデータが全てバイナリ値か否かを判定する。
【０１４４】
本例においては、識別子＃０，＃１，＃２，＃３に対応する領域は、“＊”が含まれているため全てのデータがバイナリ値では無い。したがって、「Ｔｅｒｎａｒｙ」と判定した場合が示されている。
【０１４５】
データ判定部２２１は、各領域毎の判定結果を判定レジスタ２２２に格納する。本例の場合には、判定レジスタ２２２の値は、“０００１”から“００００”に更新される。
【０１４６】
選択レジスタ２２３は、判定レジスタ２２２に格納されている判定値に基づいて最小の識別子を指定するデータを格納する。本例においては、判定値は全て“０”であるため選択レジスタ２２３は、ブランクとなる場合が示されている。
【０１４７】
これに伴い、選択レジスタ２２３に格納されているデータはブランクであるため、フラグデータレジスタ２２５に格納されるフラグデータもブランクとなり、プリサーチ動作を機能させることができない。
【０１４８】
本例においては、判定レジスタ２２２に格納されている判定値が全て“０”である場合には、データ判定部２２１における判定対象を変更して、再判定する処理を実行する。
【０１４９】
図１５は、プリサーチサブ回路２００の判定対象の変更を説明する図である。
図１５に示されるように、データ判定部２２１は、全ての領域について、「Ｔｅｒｎａｒｙ」と判定した場合には、４ビットの領域のうち先頭ビットをマスク処理して残りの３ビットの領域のデータが全てバイナリ値か否かを判定する。
【０１５０】
本例においては、識別子＃０，＃１，＃２，＃３のそれぞれの３ビットに対応する領域について、“＊”が含まれているか否かを判定する。
【０１５１】
識別子＃０，＃１の３ビットの領域については、“＊”が含まれているため全てのデータがバイナリ値では無い。したがって、「Ｔｅｒｎａｒｙ」と判定した場合が示されている。
【０１５２】
識別子＃２，＃３の３ビットの領域については、“＊”が含まれていないため全てのデータがバイナリ値である。したがって、「Ｂｉｎａｒｙ」と判定した場合が示されている。
【０１５３】
データ判定部２２１は、各領域毎の判定結果を判定レジスタ２２２に格納する。本例の場合には、判定レジスタ２２２の値は、“００００”から“００１１”に更新される。
【０１５４】
したがって、選択レジスタ２２３は、判定レジスタ２２２に格納されている判定値（“１”）に基づいて最小の識別子を指定するデータを格納する。本例においては、選択レジスタ２２３は、“＃２”を格納する場合が示されている。
【０１５５】
フラグデータレジスタ２２５は、選択レジスタ２２３に格納されているデータ（“＃２”）に基づいて識別子＃２に対応する領域のデータをフラグデータとして格納する。その際、先頭ビットは考慮しなかったため先頭ビットについては“＊”に設定して、“＊０１０”，“＊１０１”，“＊００１”，“＊０１０”がフラグデータレジスタ２２５にフラグデータとして格納されている場合が示されている。
【０１５６】
そして、フラグデータレジスタ２２５におけるデータ格納後にライト制御部４２４は、有効／無効レジスタ２２８のレジスタ値を更新する。本例においては、有効／無効レジスタ２２８のレジスタ値は“０”に更新される。これにより、プリサーチサブ回路２００におけるプリサーチ動作は有効とされる。
【０１５７】
通常モードにおいて、選択レジスタ２２３に格納されているデータ（“＃２”）に基づいて入力サーチデータｓｋｅｙのうち８〜１１番目のデータがプリサーチキーとして指定される。
【０１５８】
比較回路２２６は、セレクタ２３０で選択された入力サーチデータｓｋｅｙの一部データであるプリサーチキーと、フラグデータレジスタ２２５に格納されているそれぞれのフラグデータとを比較して比較結果をＯＲ回路２２７に出力する。比較回路２２６は、データが一致した場合には「Ｈ」レベルを出力し、不一致の場合には「Ｌ」レベルを出力する。
【０１５９】
例えば、比較回路２２６の比較結果としてデータが一致した場合には、プリサーチサブ回路２００のプリサーチ動作の検索結果信号ｓｄ（“１”）が出力される。この場合、検索イネーブル信号ｓａ（「Ｈ」レベル）に従ってサーチ線イネーブル信号ｓｅｎａは、活性状態（「Ｈ」レベル）に設定される。したがって、対応するサブブロック１００に対するデータ検索動作が実行される。
【０１６０】
当該方式により、サブブロック１００に対してエントリ（行）のデータが更新された場合に、判定レジスタ２２２の判定値が全て“０”となった場合であっても判定対象を変更することにより、プリサーチ動作を継続することが可能である。
【０１６１】
本例では、１ビットをマスク処理し３ビット単位でフラグデータを生成する。４ビットに比べると、連続するビット列の特徴を表現する能力は低下されるが、低消費化のためのプリサーチサブ回路２００の構成を維持できることが可能である。
【０１６２】
本例においては、４ビットからビット数を減らすことを例に示したが、フラグとして使用できなかった領域が使えるようになる場合もあるため、４ビットの方式を維持するようにしても良い。たとえば、もとのデータが、“＊”（Ternary）値であった部分がバイナリ（Binary）値に書き換えることは実際にありうる。その場合には、４ビット選択方式を継続してフラグのみ再生成する方式を維持することも可能となる。
【０１６３】
なお、本例においては、４ビットのうち先頭の１ビットをマスク処理する場合について説明したが、特に当該位置は先頭に限られず他の位置をマスク処理するようにしても良い。また、マスクするビットについても１ビットに限られず複数ビットをマスク処理するようにしても良い。
【０１６４】
（変形例２）
上記においては、エントリ（行）のデータが更新される毎に全データを読み出してデータ判定する方式について説明したが、全データの読み出しには時間がかかる。したがって、パフォーマンスの低下を防止するために複数回エントリ（行）のデータが更新された後に全データを読み出してフラグデータを更新するメンテナンス動作を実行するようにしても良い。
＜Ｃ．メンテナンス動作のバリエーション＞
［ｃ１．メンテナンス動作の別の構成］
図１６は、変形例２に従うプリサーチサブ回路の構成について説明する図である。
【０１６５】
図１６を参照して、ブロック制御部２０６をブロック制御部２０６Ａに置換した点が異なる。
【０１６６】
ブロック制御部２０６Ａは、ブロック制御部２０６と比較して、ＯＲ回路２４０，２４１と、カウンタ２４２と、トリガ発生回路２４３と、レジスタ２４４と、比較回路２４５とをさらに含む。
【０１６７】
トリガ発生回路２４３は、書込イネーブル信号ｗｅｎａの入力に応答してトリガ信号を発生する。
【０１６８】
トリガ発生回路２４３で発生されたトリガ信号は、カウンタ２４２に出力される。
カウンタ２４２は、トリガ信号の入力に基づいてカウントアップし、カウンタ値を保持する。したがって、カウンタ２４２は、書込イネーブル信号ｗｅｎａの入力に従ってカウントアップするため書込回数をカウントすることが可能である。
【０１６９】
比較回路２４５は、カウンタ２４２のカウンタ値と、レジスタ２４４との値を比較して、比較結果を出力する。レジスタ２４４は、比較回路２４５の比較対象となる基準値を格納する。本例においては、一例として“８”が含まれているものとする。
【０１７０】
書込イネーブル信号ｗｅｎａに従ってカウンタ２４２のカウンタ値が８回に到達するまでカウントアップする。カウンタ値が８回に到達した場合に比較回路２４５は、「Ｈ」レベルを出力する。また、カウンタ２４２は、カウンタ値が８回に到達した場合にリセットして初期値０に設定されるものとする。
【０１７１】
ＯＲ回路２４１は、ＯＲ回路２３４の反転信号と、比較回路２４５からの信号のＯＲ論理演算結果をＯＲ回路２４０に出力する。
【０１７２】
ＯＲ回路２４０は、検索部２１０の検索結果とＯＲ回路２４０の出力信号のＯＲ論理演算結果をＡＮＤ回路２０１に出力する。
【０１７３】
ＡＮＤ回路２０１は、ＯＲ回路２４０の出力信号と検索イネーブル信号ｓａとのＡＮＤ論理演算結果をサーチ線イネーブル信号ｓｅｎａとして出力する。
【０１７４】
また、データ生成部２０２は、ＯＲ回路２３４をさらに含む。
ＯＲ回路２３４は、判定レジスタ２２２の各判定結果のＯＲ論理演算結果をブロック制御部２０６＃に出力する。
【０１７５】
例えば、ＯＲ回路２３４は、判定レジスタ２２２の値が全て“０”である場合に「Ｌ」レベルを出力し、それ以外の場合には「Ｈ」レベルを出力する。
【０１７６】
ＯＲ回路２３４から「Ｌ」レベルが出力された場合には、ＯＲ回路２４０，２４１の出力は「Ｈ」レベルとなり、検索イネーブル信号ｓａが「Ｈ」レベルの場合には検索部２１０のプリサーチ動作の如何に拘わらずサーチ線イネーブル信号ｓｅｎａは、「Ｈ」レベルとなる。したがって、プリサーチ動作は無効とされ、対応するサブブロックにおけるデータ検索動作が実行される。
【０１７７】
また、カウンタ２４２のカウンタ値が８回に到達した場合においても、ＯＲ回路２４１の出力は、「Ｈ」レベルとなり、検索イネーブル信号ｓａが「Ｈ」レベルの場合には検索部２１０のプリサーチ動作の如何に拘わらずサーチ線イネーブル信号ｓｅｎａは、「Ｈ」レベルとなる。
【０１７８】
したがって、プリサーチ動作は無効とされ、対応するサブブロックにおけるデータ検索動作が実行される。
【０１７９】
また、比較回路２４５の出力がフラグデータの更新の要求としてブロック走査部２０４に出力される。ブロック走査部２０４は、比較回路２４５の出力に基づいてフラグデータを更新するメンテナンス動作を実行する。
【０１８０】
一例として、書込イネーブル信号ｗｅｎａの入力回数（書込回数）をカウントして所定回数（８回）以上となった場合に、メンテナンス動作を実行する。
【０１８１】
図１７は、プリサーチサブ回路２００におけるメンテナンス動作を説明するフロー図である。
【０１８２】
図１７に示されるように、プリサーチサブ回路２００は、対応するサブブロックが使用中であるか否かを判断する（ステップＳ２）。プリサーチサブ回路２００は、フラグデータ生成モードにおいて、対応するサブブロックに対するバックグラウンド処理としてフラグデータを生成する。
【０１８３】
プリサーチサブ回路２００は、サブブロックが使用中であると判断した場合（ステップＳ２においてＹＥＳ）には、ステップＳ２の状態を維持する。すなわち、サブブロックが使用中の場合には処理は実行しない。
【０１８４】
プリサーチサブ回路２００は、サブブロックが使用中で無いと判断した場合（ステップＳ２においてＮＯ）には、フラグデータの更新の要求があるかどうかを判断する（ステップＳ３）。具体的には、リード制御部４２０は、比較回路２４５からの「Ｈ」レベルのフラグデータの更新の要求が入力されたか否かを判断する。
【０１８５】
プリサーチサブ回路２００は、フラグデータの更新の要求が無いと判断した場合（ステップＳ３においてＮＯ）には、ステップＳ２に戻り上記処理を繰り返す。
【０１８６】
一方、プリサーチサブ回路２００は、フラグデータの更新の要求が有ると判断した場合（ステップＳ３においてＹＥＳ）には、無効フラグを設定する（ステップＳ４）。ＯＲ回路２４０，２４１の出力が「Ｈ」レベルに設定される。したがって、プリサーチ動作は無効とされ、対応するサブブロックにおけるデータ検索動作が実行される。
【０１８７】
次に、プリサーチサブ回路２００は、リーダポインタのアドレス（データ読出するエントリ（行）のアドレス）に従うデータ読出を実行する（ステップＳ５）。具体的には、リード制御部４２０は、リーダポインタのアドレスに従ってサブブロック１００に格納されているデータのデータ読出を実行する。
【０１８８】
プリサーチサブ回路２００は、読み出したデータを一時記憶部４２２に格納する（ステップＳ６）。具体的には、リード制御部４２０は、対応するサブブロック１００の読出データｒｄａｔａを一時記憶部４２２に格納する。
【０１８９】
次に、プリサーチサブ回路２００は、リーダポインタのアドレスが最終アドレス（最終行のアドレス）か否かを判断する（ステップＳ８）。リード制御部４２０は、サブブロックの読出アドレスを指定するリーダポインタが最終アドレスか否かを判断する。
【０１９０】
ステップＳ８において、プリサーチサブ回路２００は、リーダポインタのアドレスが最終アドレスで無いと判断した場合（ステップＳ８においてＮＯ）には、リーダポインタのアドレスをカウントアップ（＋１）する。具体的には、リード制御部４２０は、サブブロックの読出アドレスを指定するリーダポインタをカウントアップして次のエントリ（行）の読出アドレスを指定する。
【０１９１】
そして、ステップＳ５に戻り、プリサーチサブ回路２００は、リーダポインタのアドレス（データ読出するエントリ（行）のアドレス）に従うデータ読出を実行する。
【０１９２】
そして、ステップＳ８において、プリサーチサブ回路２００は、リーダポインタのアドレスが最終アドレスであると判断した場合（ステップＳ８においてＹＥＳ）には、データ判定を実行する（ステップＳ１２）。データ判定部２２１は、対応するサブブロックから読み出されたｒｄａｔａに従って上記で説明したように所定領域のデータが全てバイナリ値か否かを判定する。
【０１９３】
次に、プリサーチサブ回路２００は、選択レジスタの値を更新する（ステップＳ１４）。データ判定部２２１は、各領域毎の判定結果を判定レジスタ２２２に格納する。そして、判定レジスタ２２２に格納されている判定値（“１”）に基づいて最小の識別子を指定するデータを選択レジスタの値として更新する。
【０１９４】
次に、プリサーチサブ回路２００は、フラグデータを更新する（ステップＳ１６）。フラグデータレジスタ２２５は、選択レジスタ２２３に格納されているデータに基づいて所定領域のデータをフラグデータとして更新する。
【０１９５】
次に、プリサーチサブ回路２００は、リーダポインタをリセットする（ステップＳ１８）。リード制御部４２０は、サブブロックの読出アドレスを指定するリーダポインタを初期値（一例として“０ｘ０”）に設定する。
【０１９６】
次に、プリサーチサブ回路２００は、有効フラグをセットする（ステップＳ２０）。ＯＲ回路２４０，２４１の出力が「Ｌ」レベルに設定される。したがって、プリサーチ動作は有効とされる。
【０１９７】
そして、処理を終了する（エンド）。
上記の方式においては、リーダポインタを更新して順次エントリ（行）を読み出す場合について説明しているが、バースト読み出しや、複数ブロックを同時に活性させることで、複数のデータを読み出す構成とすることも可能である。
【０１９８】
上記の構成においては、書込回数に基づいてフラグデータを更新するメンテナンス動作を実行する場合について説明したが、特に当該方式に限られず別の方式でメンテナンス動作を実行することも可能である。
【０１９９】
［ｃ２．メンテナンス動作の別の構成］
書込イネーブル信号ｗｅｎａの入力回数に限られず、メンテナンス動作を実行するようにすることも可能である。
【０２００】
図１８は、ブロック制御部２０６Ｂの別の構成について説明する図である。
図１８を参照いて、ブロック制御部２０６Ｂは、クロックカウンタ２５０と、比較回路２５２と、タイマ設定レジスタ２５４とを含む。
【０２０１】
クロックカウンタ２５０は、基準クロックの入力に従ってカウンタ値をカウントアップさせる。
【０２０２】
タイマ設定レジスタ２５４は、タイマ値を格納する。
比較回路２５２は、タイマ設定レジスタ２５４に格納されているタイマ値と、クロックカウンタ２５０のカウンタ値とを比較して、比較結果を出力する。本例においては、比較回路２５２は、カウンタ値がタイマ値に到達したか否かを判断する。
【０２０３】
比較回路２５２は、タイマ値に到達した場合にフラグデータの更新の要求として「Ｈ」レベルを出力する。
【０２０４】
また、クロックカウンタ２５０は、比較回路２５２からの信号に基づいてカウンタ値をリセットして初期値０に設定する。
【０２０５】
比較回路２５２の出力（「Ｈ」レベル）に従ってプリサーチ動作は無効とされ、対応するサブブロックにおけるデータ検索動作が実行される。
【０２０６】
また、比較回路２５２の出力がフラグデータの更新の要求としてブロック走査部２０４に出力される。ブロック走査部２０４のリード制御部４２０は、比較回路２５２の出力に基づいて上記で説明したメンテナンス動作を実行する。
【０２０７】
なお、本例においては、クロックカウンタ２５０を利用する方式について説明したが、特にこれに限られず、計時手段を有する構成であれば、当該計時手段の値と、タイマ値との比較に基づいて比較結果を出力する構成とすることも可能である。
【０２０８】
［ｃ３．メンテナンス動作の別の構成］
書込データに基づいてメンテナンス動作を実行することも可能である。
【０２０９】
図１９は、ブロック制御部２０６Ｃの構成について説明する図である。
図１９を参照して、ブロック制御部２０６Ｃは、書込データ制御部２６０と、比較回路２６２とを含む。
【０２１０】
書込データ制御部２６０は、書込イネーブル信号ｗｅｎａ、ライトアドレス信号ｗａｄｄｒ、書込データｗｄａｔａの入力を受けて所定の動作を実行する。
【０２１１】
書込データ制御部２６０は、書込イネーブル信号ｗｅｎａに従って書込データｗｄａｔａの入力を受け付ける。
【０２１２】
また、書込データ制御部２６０は、入力された書込データｗｄａｔａのうち選択レジスタ２２３に格納されているデータ（“＃０”）に基づいて識別子＃０に対応する領域のデータを抽出して比較回路２６２に出力する。
【０２１３】
また、書込データ制御部２６０は、ライトアドレス信号ｗａｄｄｒに従って対応するフラグデータを抽出して比較回路２６２に出力する。
【０２１４】
本例においては、ライトアドレス信号ｗａｄｄｒとして“０ｘ０”が入力される場合が示されている。
【０２１５】
書込データ制御部２６０は、ライトアドレス信号ｗａｄｄｒ（“０ｘ０”）に対応する０番目のエントリ（行）に対応するデータのうちのフラグデータレジスタ２２５に格納されるフラグデータ“０００１”を抽出する。
【０２１６】
比較回路２６２は、書込データ制御部２６０により抽出された書込データｗｄａｔａと、フラグデータとを比較して一致しているか否か、すなわちデータが更新されたかどうかを判断する。
【０２１７】
比較回路２６２は、データが不一致である場合にはデータが更新されたと判断してフラグデータの更新を要求する。ブロック走査部２０４のリード制御部４２０は、比較回路２６２の出力に基づいて上記で説明したメンテナンス動作を実行する。
【０２１８】
比較回路２６２は、データが一致であると判断した場合にはデータは更新されていないと判断してフラグデータの更新は要求しない。
【０２１９】
［ｃ４．メンテナンス動作の別の構成］
サブブロックの活性化に基づいてメンテナンス動作を実行するようにしても良い。
【０２２０】
図２０は、サブブロックの活性化に基づくメンテナンス動作について説明する図である。
【０２２１】
図２０を参照して、複数のサブブロック１００は、サーチ線イネーブル信号ｓｅｎａに従って活性化されてデータ検索動作を実行する場合が示されている。
【０２２２】
本例においては、４個のサブブロック１００のうち３個のサブブロックが活性化されて入力サーチデータｓｋｅｙに従ってデータ検索動作を実行する場合が示されている。
【０２２３】
複数のサブブロック１００に関して、活性化するサブブロック１００の個数が増加するほど消費電力が増大する。したがって、所定以上のサブブロック１００の個数が活性化した場合にはフラグデータの更新を要求することが可能である。
【０２２４】
図２１は、メイン制御回路３００がフラグデータの更新を要求する処理を説明するフロー図である。
【０２２５】
図２１を参照して、メイン制御回路３００は、全体のサブブロックのうちのサブブロックの活性率を計算する（ステップＳ２２）。具体的には、メイン制御回路３００は、各サブブロックに入力されるサーチ線イネーブル信号ｓｅｎａの入力状態をモニタリング（監視）し、全体のサブブロックのうちのサブブロックの活性率を計算する。
【０２２６】
次に、メイン制御回路３００は、活性率が所定値（Ｘ％）を超えているか否かを判断する（ステップＳ２４）。
【０２２７】
メイン制御回路３００は、活性率が所定値（Ｘ％）を超えていると判断した場合（ステップＳ２４においてＹＥＳ）には、フラグの更新を要求する（ステップＳ２６）。メイン制御回路３００は、複数のプリサーチサブ回路２００のそれぞれに対してフラグデータの更新を要求する。各プリサーチサブ回路２００のリード制御部４２０は、メイン制御回路３００からのフラグデータの更新の要求に基づいて上記で説明したメンテナンス動作を実行する。
【０２２８】
そして、処理を終了する（エンド）。
一方、メイン制御回路３００は、活性率が所定値を超えていないと判断した場合（ステップＳ２４においてＮＯ）には、フラグデータの更新を要求することなく処理を終了する（エンド）。
【０２２９】
例えば、所定値（Ｘ％）として７０％を設定した場合、図２０の例においては、活性率が７５％であるためフラグデータの更新を要求する。
【０２３０】
なお、本例においては、活性率が所定値を超えているか否かを判断する方式について説明したが、複数回の活性率の平均値と比較するようにしても良い。
【０２３１】
（実施形態２）
図２２は、プリサーチサブ回路２００＃の構成の全体概要を説明する図である。
【０２３２】
図２２を参照して、プリサーチサブ回路２００＃は、ブロック走査部２０４と、データ生成部２０２と、メモリ部２０８と、検索部２１０と、ブロック制御部２０６＃とを含む。
【０２３３】
ブロック走査部２０４は、リード制御部４２０と、一時記憶部４２２とを含む。
データ生成部２０２は、プリサーチキー生成部４３０と、フラグデータ生成部４３２と、データ判定部２２１と、レジスタ部４３６と、無効フラグ生成部４３８とを含む。
【０２３４】
リード制御部４２０は、リードイネーブル信号ｒｅｎａおよびアドレス信号ｒａｄｄｒを受けてサブブロック１００に対してデータ読出動作の実行を指示する。サブブロック１００は、リード制御部４２０からの指示に従ってデータ読出動作を実行して読出データｒｄａｔａをリード制御部４２０に出力する。
【０２３５】
リード制御部４２０は、サブブロック１００から読み出された読出データｒｄａｔａを一時記憶部４２２に格納する。
【０２３６】
データ判定部２２１は、一時記憶部４２２に格納された対応するサブブロック１００からの読出データｒｄａｔａに従って所定領域のデータが全てバイナリ値か否かを判定する。
【０２３７】
レジスタ部４３６は、データ判定部２２１の判定結果を格納する判定レジスタ２２２と、判定レジスタ２２２に格納されている判定値に基づいて最小の識別子を指定するデータを格納する選択レジスタ２２３とを含む。
【０２３８】
プリサーチキー生成部４３０は、セレクタ２２４を含む。セレクタ２２４は、入力サーチデータｓｋｅｙの入力を受けて、選択レジスタ２２３に格納されているデータに基づいてプリサーチキーｐｓｋｅｙを指定する。
【０２３９】
フラグデータ生成部４３２は、セレクタ２３０を含む。セレクタ２３０は、選択レジスタ２２３に格納されているデータに基づいて一時記憶部４２２に格納されるエントリ（行）の対応する領域のデータをフラグデータとして指定する。
【０２４０】
無効フラグ生成部４３８は、ＯＲ回路２３４を含む。ＯＲ回路２３４は、判定レジスタ２２２の判定結果に基づいてブロック制御部２０６＃に無効フラグを出力する。
【０２４１】
メモリ部２０８は、フラグデータレジスタ２２５を含む。フラグデータレジスタ２２５は、フラグデータ生成部４３２により生成された比較結果として用いられるフラグデータを格納する。
【０２４２】
検索部２１０は、プリサーチキーｐｓｋｅｙと、フラグデータレジスタ２２５に格納されているそれぞれのフラグデータとを比較して比較結果をブロック制御部２０６＃に出力する。
【０２４３】
ブロック制御部２０６＃は、更新フラグ管理部４００と、ＯＲ回路４１６，４１８と、ライト制御部４２４とを含む。
【０２４４】
更新フラグ管理部４００は、フラグデータの更新を管理する。具体的には、更新フラグ管理部４００は、書込回数管理部４０２と、クロック管理部４０４と、書込データ管理部４０６と、状態管理部４１０と、更新フラグマージ部４１４とを含む。
【０２４５】
書込回数管理部４０２は、サブブロック１００への書込回数をカウントし、書込回数に基づいてフラグデータの更新の要求を出力する。具体的には、図１６で説明した方式に従って書込イネーブル信号ｗｅｎａの入力回数をカウントして所定回数以上となった場合にフラグデータの更新を要求する。
【０２４６】
クロック管理部４０４は、所定期間が経過した場合にフラグデータの更新の要求を出力する。具体的には、図１８で説明した方式に従って基準クロックｃｌｋをクロックカウンタでカウントアップし、タイマ値と比較してタイマ値に到達した場合にフラグデータの更新を要求する。
【０２４７】
書込データ管理部４０６は、書込データに基づいてフラグデータが更新された場合にフラグデータの更新の要求を出力する。具体的には、図１９で説明した方式に従って、書込データとフラグデータとを比較して、不一致であればデータが更新されたと判断してフラグデータの更新の要求を出力する。
【０２４８】
状態管理部４１０は、プリサーチサブ回路２００＃の状態に従ってフラグデータの更新の要求を出力する。具体的には、リセット信号（init_flag）の入力に従ってフラグデータの更新の要求を出力する。なお、リセット信号（init_flag）の入力に限られず、例えば、メイン制御回路３００から入力される状態指示に従ってフラグデータの更新の要求を出力しても良い。たとえば、図２０および２１で説明したようにメイン制御回路３００は、サブブロックの活性率を算出して、活性率が所定値を超えていると判断した場合に状態管理部４１０に指示する。状態管理部４１０は、当該指示を受けてフラグデータの更新の要求を出力する。また、状態管理部４１０は、対応するサブブロック１００のデータが更新されたと判断した場合にフラグデータの更新の要求を出力するようにしても良い。
【０２４９】
更新フラグマージ部４１４は、各管理部からのフラグデータの更新の要求を受けて、サブブロックが使用中で無いと判断した場合にブロック走査部２０４にメンテナンス動作の実行を指示する。更新フラグマージ部４１４は、メイン制御回路３００から出力される制御信号（nop）に従ってサブブロックが使用中であるか否かを判断する。
【０２５０】
ＯＲ回路４１６は、無効フラグ生成部４３８で生成された無効フラグと、更新フラグマージ部４１４からの信号のＯＲ論理演算結果をＯＲ回路４１８に出力する。
【０２５１】
ＯＲ回路４１８は、検索部２１０の検索結果とＯＲ回路４１６の出力信号とのＯＲ論理演算結果をＡＮＤ回路２０１に出力する。
【０２５２】
ＡＮＤ回路２０１は、ＯＲ回路４１８の出力信号と検索イネーブル信号ｓａとのＡＮＤ論理演算結果をサーチ線イネーブル信号ｓｅｎａとして出力する。
【０２５３】
ＯＲ回路４１６から「Ｈ」レベルが出力された場合には、検索部２１０のプリサーチ動作の如何に拘わらずＯＲ回路４１８の出力は「Ｈ」レベルとなり、サーチ線イネーブル信号ｓｅｎａは、「Ｈ」レベルとなる。したがって、上記で説明したのと同様にプリサーチ動作は無効とされ、対応するサブブロックにおけるデータ検索動作が実行される。
【０２５４】
なお、上記においては、フラグデータとして４ビットのデータを抽出する方式について説明したが、これに限られず、フラグの生成方法として、読み出しデータに対して符号化処理や、Hash関数を用いてデータ圧縮処理を行い、圧縮されたデータに基づいてフラグデータを生成したり、読み出しデータに対してブルームフィルタ等のフィルタ処理を行ったデータに基づいてフラグデータを生成するようにしても良い。
【０２５５】
（実施形態３）
図２３は、実施形態３に基づくプリサーチサブ回路２００Ｒの構成を説明する機能ブロック図である。
【０２５６】
図２３を参照して、プリサーチサブ回路２００Ｒは、データ解析部２０３と、ブロック走査部２０４と、ブロック制御部２０６と、メモリ部２０８と、検索部２１０とを含む。
【０２５７】
ブロック制御部２０６は、サブブロック１００を制御するための各種信号を出力する。また、ブロック制御部２０６は、ブロック走査部２０４にデータ読出動作を指示する。
【０２５８】
ブロック走査部２０４は、ブロック制御部２０６からの指示に従って対応するサブブロック１００にリードイネーブル信号ｒｅｎａおよびアドレス信号ｒａｄｄｒを出力する。サブブロック１００は、ブロック走査部２０４からのリードイネーブル信号ｒｅｎａおよびアドレス信号ｒａｄｄｒに基づいて、読出データｒｄａｔａを出力する。ブロック走査部２０４は、サブブロック１００からの読出データｒｄａｔａをデータ生成部２０２に出力する。
【０２５９】
データ解析部２０３は、サブブロック１００からの読出データｒｄａｔａに基づいてデータ解析に基づく統計データを生成する。また、入力される入力サーチデータｓｋｅｙに基づくプリサーチ用のプリサーチキーｐｓｋｅｙを生成する。データ解析部２０３は、解析して生成した統計データをメモリ部２０８に出力する。
【０２６０】
メモリ部２０８は、データ解析部２０３で生成した統計データを格納する。
検索部２１０は、プリサーチキーｐｓｋｅｙと、メモリ部２０８に格納されている統計データとを比較して、比較結果をブロック制御部２０６に出力する。
【０２６１】
ブロック制御部２０６は、検索部２１０からの比較結果をプリサーチ動作の検索結果信号ｓｄとしてＡＮＤ回路２０１に出力する。
【０２６２】
ＡＮＤ回路２０１は、ブロック制御部２０６からのプリサーチ動作の検索結果信号ｓｄと、検索イネーブル信号ｓａとのＡＮＤ論理演算結果に基づいてサーチ線イネーブル信号ｓｅｎａを出力する。
【０２６３】
サブブロック１００は、サーチ線イネーブル信号ｓｅｎａに従って、入力サーチデータｓｋｅｙに対するデータ検索動作を実行する。
【０２６４】
図２４は、実施形態３に基づくプリサーチサブ回路のプリサーチ動作を説明する図である。
【０２６５】
図２４（Ａ）を参照して、データ解析部２０３において、ブロック走査部２０４で読み出したサブブロックの読出データｒｄａｔａに従ってプリサーチテーブルを作成する方式が示されている。
【０２６６】
具体的には、１６ビットのエントリ（行）を４ビットずつのフィールドに分割し、各４ビットずつのフィールドのデータについてＸ値とＹ値とに分離する。
【０２６７】
Ｘ値、Ｙ値は、上記で説明したＳＲＡＭ（Ｘ）セルおよびＳＲＡＭ（Ｙ）セルにそれぞれ格納される値を示す。
【０２６８】
図２で説明したようにデータ“０”は、Ｘ値“１”、Ｙ値“０”で表わされる。また、データ“１”は、Ｘ値“０”、Ｙ値“１”で表わされる。データ“＊”は、Ｘ値“０”、Ｙ値“０”で表わされる。
【０２６９】
本例においては、４ビットずつのデータのＸ値、Ｙ値それぞれの“１”の数をカウントした統計データをプリサーチテーブルとして生成する。
【０２７０】
図２４（Ａ）においては４つのエントリ（行）が示されており、サブブロック１００Ａおよび１００Ｂの読出データについてＸ値、Ｙ値に分離したデータがそれぞれ示されている。
【０２７１】
また、Ｘ値、Ｙ値に分離したデータについて、フィールドあたりのそれぞれの“１”のビット数をカウントしてプリサーチテーブルを作成した場合が示されている。
【０２７２】
一例として、エントリ（行）は、“０１０１００＊＊００１０１０１０”のデータについて、Ｘ値は“１０１０１１００１１０１０１０１”、Ｙ値は“０１０１００００００１０１０１０”となる。
【０２７３】
４ビットずつのフィールドで“１”の数をカウントするとＸ値側は“２２３２”、Ｙ値側は“２０１２”として表わされる。
【０２７４】
他のエントリ（行）についても同様の手順で実行することによりプリサーチテーブルが作成される。
【０２７５】
図２４（Ｂ）においては、入力サーチデータと比較する場合の方式を説明する図である。
【０２７６】
入力サーチデータ“０００１００１１０１０１０１１０”についてプリサーチ動作を実行する場合について説明する。
【０２７７】
データ解析部２０３は、入力サーチデータについても上記と同様にＸ値、Ｙ値に分離して、４ビットずつのフィールドで“１”の数をカウントすると、Ｘ値側は“３２２２”、Ｙ値側は“１２２２”として表わされる。
【０２７８】
そして、検索部２１０は、入力サーチデータのＸ値側データ“３２２２”およびＹ値側データ“１２２２”と、プリサーチテーブルとを比較する。
【０２７９】
検索部２１０は、ビットごとにデータの大小比較を実行する。具体的には、入力サーチデータの値とプリサーチテーブルの値とを比較して、プリサーチテーブルの値が入力サーチデータの値よりも大きいか、あるいは、プリサーチテーブルの値が入力サーチデータの値以下かを判断する。ドントケアビット(“＊”)はＸ値もＹ値もゼロであり、統計値としてカウントされないため、一致比較ではなく値同士を大小比較することで、検索結果の正当性を確保している。
【０２８０】
１ビットずつ判断して、全てのビットでプリサーチテーブルの値が入力サーチデータの値以下であると判断した場合に一致“ｈｉｔ”と判定する。１ビットでも異なる場合には、不一致“ｍｉｓｓ”と判定する。
【０２８１】
本例においては、サブブロック１００Ａの読出データｒｄａｔａに基づいて生成したプリサーチテーブルとの比較において、一致した場合が示されている。一方、サブブロック１００Ｂの読出データｒｄａｔａに基づいて生成したプリサーチテーブルとの比較において、不一致の場合が示されている。
【０２８２】
ブロック制御部２０６は、入力サーチデータと比較して一致した場合には、検索結果信号ｓｄ（“１”）を出力する。したがって、対応するサブブロック１００Ａに対するデータ検索動作が実行される。一方、ブロック制御部２０６は、入力サーチデータと比較して不一致の場合には、検索結果信号ｓｄ（“０”）を出力する。したがって、対応するサブブロック１００Ｂに対するデータ検索動作は実行されない。
【０２８３】
本例においては、サブブロック１００Ａにおけるデータ検索動作が実行され、サブブロック１００Ｂにおけるデータ検索動作は実行されない。
【０２８４】
当該方式により簡易な方式でプリサーチテーブルを生成し、簡易かつ高速なプリサーチ動作を実行することが可能である。
【０２８５】
また、プリサーチサブ回路の部品点数を削減して構成を簡易にすることが可能である。
（変形例）
図２５は、実施形態３の変形例に基づくプリサーチサブ回路のプリサーチ動作を説明する図である。
【０２８６】
図２５（Ａ）を参照して、データ解析部２０３において、ブロック走査部２０４で読み出したサブブロックの読出データｒｄａｔａに従ってプリサーチテーブルを作成する方式が示されている。
【０２８７】
具体的には、図２４で説明したのと同様の方式に従って第１のプリサーチテーブルを生成する。
【０２８８】
そして、次に、各列毎の最小値を第２のプリサーチテーブルとして生成する。
本例においては、サブブロック１００Ａに対応するプリサーチテーブルとして、Ｘ値側の最小値（ｍｉｎ）は“２０２１”、Ｙ値側の最小値（ｍｉｎ）は“００１２”として表わされる。
【０２８９】
また、サブブロック１００Ｂに対応するプリサーチテーブルとして、Ｘ値側の最小値（ｍｉｎ）は“０３０１”、Ｙ値側の最小値（ｍｉｎ）は“１００１”として表わされる。
【０２９０】
図２５（Ｂ）においては、入力サーチデータと比較する場合の方式を説明する図である。
【０２９１】
入力サーチデータ“０００１００１１０１０１０１１０”についてプリサーチ動作を実行する場合について説明する。
【０２９２】
データ解析部２０３は、入力サーチデータについても上記と同様にＸ値、Ｙ値に分離して、４ビットずつのフィールドで“１”の数をカウントすると、Ｘ値側は“３２２２”、Ｙ値側は“１２２２”として表わされる。
【０２９３】
そして、検索部２１０は、入力サーチデータのＸ値側データ“３２２２”およびＹ値側データ“１２２２”と、プリサーチテーブルとを比較する。
【０２９４】
検索部２１０は、ビットごとにデータの大小比較を実行する。具体的には、入力サーチデータの値とプリサーチテーブルの値とを比較して、プリサーチテーブルの値が入力サーチデータの値よりも大きいか、あるいは、プリサーチテーブルの値が入力サーチデータの値以下かを判断する。ドントケアビット(“＊”)はＸ値もＹ値もゼロであり、統計値としてカウントされないため、一致比較ではなく値同士を大小比較することで、検索結果の正当性を確保している。
【０２９５】
１ビットずつ判断して、全てのビットでプリサーチテーブルの値が入力サーチデータの値以下であると判断した場合に一致“ｈｉｔ”と判定する。１ビットでも異なる場合には、不一致“ｍｉｓｓ”と判定する。
【０２９６】
本例においては、サブブロック１００Ａの読出データｒｄａｔａに基づいて生成したプリサーチテーブルとの比較において、一致した場合が示されている。一方、サブブロック１００Ｂの読出データｒｄａｔａに基づいて生成したプリサーチテーブルとの比較において、不一致の場合が示されている。
【０２９７】
ブロック制御部２０６は、入力サーチデータと比較して一致した場合には、検索結果信号ｓｄ（“１”）を出力する。したがって、対応するサブブロック１００Ａに対するデータ検索動作が実行される。一方、ブロック制御部２０６は、入力サーチデータと比較して不一致の場合には、検索結果信号ｓｄ（“０”）を出力する。したがって、対応するサブブロック１００Ｂに対するデータ検索動作は実行されない。
【０２９８】
本例においては、サブブロック１００Ａにおけるデータ検索動作が実行され、サブブロック１００Ｂにおけるデータ検索動作は実行されない。
【０２９９】
当該方式により簡易な方式でプリサーチテーブルを生成し、簡易かつ高速なプリサーチ動作を実行することが可能である。
【０３００】
また、プリサーチサブ回路の部品点数を削減して構成を簡易にすることが可能である。
最小値のみを管理するプリサーチテーブルを生成するため、データ量が減少するため複数のレジスタ等を設ける必要が無く回路面積を縮小することが可能である。
【０３０１】
以上、本開示を実施形態に基づき具体的に説明したが、本開示は、実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【０３０２】
１  検索装置、１１，１２  ＳＲＡＭセル、１３  データ比較部、２０  セルアレイ、２１  書込ドライバ、２２  サーチ線ドライバ、２３  マッチアンプ部、２４  制御論理回路、２５  入出力回路、３０  プライオリティエンコーダ、１００，１００Ａ，１００Ｂ  サブブロック、２００，２００Ｐ，２００Ｑ，２００Ｒ  プリサーチサブ回路、２０２  データ生成部、２０３  データ解析部、２０４  ブロック走査部、２０６，２０６Ａ，２０６Ｂ，２０６Ｃ  ブロック制御部、２０８  メモリ部、２０９  ＲＡＭ、２１０  検索部、２２１  データ判定部、２２２  判定レジスタ、２２３  選択レジスタ、２２４，２３０  セレクタ、２２５  フラグデータレジスタ。
【図１】
2018014153.tif 000003
【図２】
2018014153.tif 000004
【図３】
2018014153.tif 000005
【図４】
2018014153.tif 000006
【図５】
2018014153.tif 000007
【図６】
2018014153.tif 000008
【図７】
2018014153.tif 000009
【図８】
2018014153.tif 000010
【図９】
2018014153.tif 000011
【図１０】
2018014153.tif 000012
【図１１】
2018014153.tif 000013
【図１２】
2018014153.tif 000014
【図１３】
2018014153.tif 000015
【図１４】
2018014153.tif 000016
【図１５】
2018014153.tif 000017
【図１６】
2018014153.tif 000018
【図１７】
2018014153.tif 000019
【図１８】
2018014153.tif 000020
【図１９】
2018014153.tif 000021
【図２０】
2018014153.tif 000022
【図２１】
2018014153.tif 000023
【図２２】
2018014153.tif 000024
【図２３】
2018014153.tif 000025
【図２４】
2018014153.tif 000026
【図２５】
2018014153.tif 000027