(57)【特許請求の範囲】
【請求項１】
各々がＴＣＡＭ（Ternary Content Addressable Memory）セルアレイを含む複数のサブアレイを備え、
各前記サブアレイは、前記ＴＣＡＭセルアレイの行ごとに格納された複数のデータのうち、入力されたサーチデータの対応部分に一致するものを検索し、前記行ごとに一致または不一致という検索結果を出力し、
各前記サブアレイは、前記ＴＣＡＭセルアレイの全てのデータがドントケアであることに基づいて検索動作前にあらかじめ設定された、対応する第１の制御信号が活性化されている場合には、前記ＴＣＡＭセルアレイについて検索を行わずに、一致という検索結果を前記行ごとに出力する、半導体装置。
【請求項２】
各前記サブアレイは、
前記ＴＣＡＭセルアレイの行にそれぞれ設けられ、対応する行の各ＴＣＡＭセルが接続された複数のマッチ線と、
前記ＴＣＡＭセルアレイの列にそれぞれ設けられた複数のサーチ線と、
検索時に、前記複数のサーチ線に前記サーチデータの対応部分を供給するサーチ線ドライバと、
前記複数のマッチ線にそれぞれ対応し、各々が検索時に、対応するマッチ線の電位に従って検索結果を出力する複数のマッチアンプと、
前記複数のマッチ線にそれぞれ対応し、各々が検索時に、対応するマッチ線をプリチャージする複数のプリチャージ回路と、
制御論理回路とを含み、
前記制御論理回路は、前記第１の制御信号が活性化されている場合には、前記サーチ線ドライバおよび前記複数のプリチャージ回路が動作しないように制御し、
各前記マッチアンプは、前記第１の制御信号が活性化されている場合には、対応する前記マッチ線の電位によらず一致という検索結果を出力するように構成される、請求項１に記載の半導体装置。
【請求項３】
各前記サブアレイは、前記第１の制御信号を出力する第１のレジスタを含む、請求項２に記載の半導体装置。
【請求項４】
各前記サブアレイは、前記ＴＣＡＭセルアレイの行ごとに設けられ、各々が、第２の制御信号を出力する複数の第２のレジスタを含み、
前記マッチアンプは、対応する前記第２の制御信号が活性化されている場合には、前記第１の制御信号が活性化されていても、不一致という検索結果を出力するように構成される、請求項３に記載の半導体装置。
【請求項５】
各前記サブアレイは、前記ＴＣＡＭセルアレイの行ごとに設けられ、各々が第３の制御信号を出力する複数の第３のレジスタを含み、
各前記プリチャージ回路は、対応する前記第３の制御信号が活性化されている場合には、前記第１の制御信号が活性化されていなくても、対応する前記マッチ線をプリチャージせず、
各前記マッチアンプは、対応する前記第３の制御信号が活性化されている場合には、前記第１の制御信号が活性化されていなくても、対応する前記マッチ線の電位によらず一致という検索結果を出力する、請求項３に記載の半導体装置。
【請求項６】
各前記サブアレイは、
前記ＴＣＡＭセルアレイの行ごとに設けられ、各々が、第２の制御信号を出力する複数の第２のレジスタと、
前記ＴＣＡＭセルアレイの行ごとに設けられ、各々が、第３の制御信号を出力する複数の第３のレジスタとを含み、
各前記プリチャージ回路は、対応する前記第２および第３の制御信号の少なくとも一方が活性化されている場合には、前記第１の制御信号が活性化されていなくても、対応する前記マッチ線をプリチャージせず、
各前記マッチアンプは、対応する前記第２の制御信号が活性化されておらず、対応する前記第３の制御信号が活性化されている場合には、前記第１の制御信号が活性化されていなくても、対応する前記マッチ線の電位によらず一致という検出結果を出力し、
各前記マッチアンプは、対応する前記第２の制御信号が活性化されている場合には、前記第１の制御信号および対応する前記第３の制御信号のいずれかが活性化されていても、対応する前記マッチ線の電位によらず不一致という検出結果を出力する、請求項３に記載の半導体装置。
【請求項７】
前記ＴＣＡＭセルアレイは、列方向に並ぶ第１のセルアレイと第２のセルアレイとに区分され、
前記サーチ線ドライバは、
前記第１のセルアレイに隣接して設けられ、前記第１のセルアレイに前記サーチデータの対応部分を供給する第１のドライバと、
前記第２のセルアレイに隣接して設けられ、前記第２のセルアレイに前記サーチデータの対応部分を供給する第２のドライバとを含む、請求項２に記載の半導体装置。
【請求項８】
前記半導体装置は、
各前記サブアレイを構成する前記ＴＣＡＭセルアレイの行ごとにデータを書込む際に、共通のマッチ線に接続された全てのＴＣＡＭセルにドントケアが書込まれた特定行があるか否かを判定するデータ判定回路をさらに備え、
前記データ判定回路は、前記特定行に対応する前記第３の制御信号が活性化されるように、前記特定行に対応する前記第３のレジスタの値を設定する、請求項５に記載の半導体装置。
【請求項９】
各前記サブアレイは、さらに、
前記ＴＣＡＭセルアレイの行ごとに設けられ、各々が、第３の制御信号を出力する複数の第３のレジスタと、
前記複数の第３のレジスタからそれぞれ出力された複数の前記第３の制御信号が全て活性化されている場合に、活性化された前記第１の制御信号を生成して出力する論理回路とを含む、請求項２に記載の半導体装置。
【請求項１０】
前記制御論理回路は、各前記プリチャージ回路の動作を制御するためのプリチャージイネーブル信号を生成し、
各前記サブアレイは、前記ＴＣＡＭセルアレイの複数行ごとに設けられ、各々が、前記プリチャージイネーブル信号および前記第１の制御信号を整形し、整形後の前記プリチャージイネーブル信号および前記第１の制御信号を前記複数行に対応する前記プリチャージ回路および前記マッチアンプにそれぞれ供給する複数のバッファアンプ部をさらに含み、
各前記バッファアンプ部は、対応する前記複数行に設けられた前記第３のレジスタが出力する前記第３の制御信号が全て活性化されている場合には、出力する整形後の前記第１の制御信号を活性化するともに、出力する整形後の前記プリチャージイネーブル信号を非活性化することによって対応する各前記プリチャージ回路が動作しないように制御する、請求項５に記載の半導体装置。
【請求項１１】
前記半導体装置への電源供給後、いずれの前記サブアレイの前記ＴＣＡＭセルにもデータが書き込まれていない状態において、各前記サブアレイの前記第１の制御信号および複数の前記第２の制御信号がいずれも活性状態となるように、各前記第１のレジスタおよび各前記第２のレジスタの値が初期設定される、請求項４に記載の半導体装置。
【請求項１２】
前記半導体装置への電源供給後、いずれの前記サブアレイの前記ＴＣＡＭセルにもデータが書き込まれていない状態において、各前記サブアレイの前記第１の制御信号および複数の前記第３の制御信号がいずれも活性状態となるように、各前記第１のレジスタおよび各前記第３のレジスタの値が初期設定される、請求項５に記載の半導体装置。
【請求項１３】
前記半導体装置への電源供給後、いずれの前記サブアレイの前記ＴＣＡＭセルにもデータが書き込まれていない状態において、各前記サブアレイの前記第１の制御信号および各前記サブアレイの前記第２の制御信号および複数の前記第３の制御信号がいずれも活性状態となるように、各前記第１のレジスタおよび各前記第２のレジスタおよび各前記第３のレジスタの値が初期設定される、請求項６に記載の半導体装置。
【請求項１４】
各前記サブアレイの前記ＴＣＡＭセルアレイへの書込みデータの配列順および前記サーチデータの配列順を定められた規則に従って変更するデータ配列変更回路をさらに備える、請求項１に記載の半導体装置。
【請求項１５】
互いに行方向に並び、共通のエントリに対応する複数の前記サブアレイは、パイプライン方式で順番に検索を行うように構成され、
各前記サブアレイは、最初のステージで検索を行うサブアレイを除いて、前記ＴＣＡＭセルアレイの行ごとに設けられ、各々が、前ステージのサブアレイの対応する行の検索結果を格納する複数のＤフリップフロップを含み、
前記複数のＤフリップフロップが設けられた各前記サブアレイにおいて、各前記プリチャージ回路は、対応する前記Ｄフリップフロップに不一致の検索結果が格納されている場合には、対応する前記マッチ線をプリチャージせず、
前記複数のＤフリップフロップが設けられた各前記サブアレイにおいて、各前記マッチアンプは、対応する前記Ｄフリップフロップに不一致の検索結果が格納されている場合には、前記第１の制御信号が活性化されていても、不一致の検索結果を出力するように構成される、請求項２に記載の半導体装置。
【請求項１６】
前記サブアレイから出力された検索結果に基づいて、前記サーチデータの検索結果を出力するプライオリティ・エンコーダをさらに備える、請求項１に記載の半導体装置。 
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、半導体装置に関し、たとえば、ＴＣＡＭ（Ternary Content Addressable Memory）装置を備えた半導体装置に好適に用いられるものである。
【背景技術】
【０００２】
連想メモリまたはＣＡＭ（内容参照メモリ：Content Addressable Memory）と呼ばれる記憶装置は、記憶しているデータワードの中から検索ワードに一致しているものを検索し、一致しているデータワードが見つかった場合は、そのアドレスを出力するものである。
【０００３】
ＣＡＭにはＢＣＡＭ（Binary CAM）とＴＣＡＭ（Ternary CAM）とがある。ＢＣＡＭの各メモリセルは“０”か“１”かのいずれかの情報を記憶する。一方、ＴＣＡＭの場合には、各メモリセルは、“０”および“１”の他に“ドントケア（Don't Care）”の情報を記憶可能である。“ドントケア”は“０”および“１”のどちらでも良いことを示す。
【０００４】
ＴＣＡＭ装置は、インターネットなどのネットワーク用のルータにおいてアドレス検索およびアクセス制御のために幅広く利用されている。大容量化に対応するために、ＴＣＡＭ装置は、通常、複数のサブアレイを有し、各サブアレイに対して同時にサーチ動作が実行される構成となっている。たとえば、非特許文献１は、ビルディングブロック（Building Block）と呼ばれるサブアレイがワード線方向に８個、ビット線方向に４個配列されている。
【０００５】
ＴＣＡＭ装置は、入力サーチデータ（入力パケット）とＴＣＡＭセルデータとを一斉に比較することができるので、全ての検索用途においてＲＡＭ（Random Access Memory）よりも高速である。しかしながら、検索時にサーチ電流が発生するために消費電力の増大が問題となっている。
【０００６】
特開２００３−２７２３８６号公報（特許文献１）は、低消費電力化のためにマッチ線方向に並ぶ複数のサブアレイがパイプライン方式で連結された構成のＴＣＡＭ装置を開示する。この文献のＴＣＡＭ装置では、後続するステージでは、前ステージで一致したエントリのみ検索が実行される。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００３−２７２３８６号公報
【非特許文献】
【０００８】
【非特許文献１】H. Miyatake  他２名、"A design for high-speed low-power CMOS fully parallel content-addressable memory macros"、IEEE J. Solid-State Circuits, Vol.36, pp. 956-968, June 2001
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ＴＣＡＭ装置では、ドントケアに設定されたＴＣＡＭセルがある範囲に固まって存在する場合がある。たとえば、サブアレイの一部のマッチ線に接続されたＴＣＡＭセルが全てドントケアに設定されていることがしばしば生じる。より顕著な場合には、サブアレイを構成する全ＴＣＡＭセルがドントケアに設定されている場合もある。このような場合には、サーチ結果が自明（サーチデータによらず必ずヒット（一致）になる）であるので、サーチ動作のために電流を無駄に消費してしまう。
【００１０】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
一実施形態による半導体装置は、各々がＴＣＡＭセルアレイを含む複数のサブアレイを備える。各サブアレイは、入力サーチデータのうちの対応部分の検索を行う。各サブアレイは、対応する第１の制御信号が活性化されている場合には、検索を行わずに、一致という検索結果をエントリごとに出力する。
【発明の効果】
【００１２】
上記の実施形態によれば、ＴＣＡＭ装置の消費電流を低減することができる。
【図面の簡単な説明】
【００１３】
【図１】ＴＣＡＭセルの構成の一例を示す回路図である。
【図２】図１のＸセルおよびＹセルの記憶内容とＴＣＡＭセルデータとの対応関係を表形式で示す図である。
【図３】ＴＣＡＭ装置を構成する１つのサブアレイの構成を示すブロック図である。
【図４】ＴＣＡＭ装置の構成を示すブロック図である。
【図５】各マッチアンプの検出結果のＡＮＤ演算について説明するための図である。
【図６】データ検索システムの全体構成を示すブロック図である。
【図７】ＡＣＬルールファイルの一例を表形式で示す図である。
【図８】図７のＡＣＬを変換することによって得られたＴＣＡＭ用データの一例を示す図である。
【図９】ＡＣＬに基づく変換データが書込まれたＴＣＡＭ装置の記憶状態を模式的に示す図である。
【図１０】第１の実施形態によるＴＣＡＭ装置において、サブアレイの構成を示すブロック図である。
【図１１】図１０の制御論理回路のうち、サーチ動作に関係する部分の構成を示す回路図である。
【図１２】図１０のサーチ線ドライバの構成の一例を示す回路図である。
【図１３】図１０のマッチアンプの構成の一例を示す回路図である。
【図１４】図１０のサブアレイに設けられたレジスタＲＥＧ１に非ドントケアを表す“０”が格納されているときのサーチ動作を示すタイミング図である。
【図１５】図１０のサブアレイに設けられたレジスタＲＥＧ１にドントケアを表すデータ“１”が格納されているときのサーチ動作を示すタイミング図である。
【図１６】図１０のマッチアンプの変形例を示す回路図である。
【図１７】第２の実施形態によるＴＣＡＭ装置において、サブアレイＳＡの構成を示すブロック図である。
【図１８】第３の実施形態によるＴＣＡＭ装置において、マッチアンプＭＡの構成を示す回路図である。
【図１９】第３の実施形態によるＴＣＡＭ装置の構成を示すブロック図である。
【図２０】図１９のデータ判定回路３３の動作を示すフローチャートである。
【図２１】第３の実施形態のＴＣＡＭ装置において、図１８のレジスタＲＥＧ３へのデータ書込み手順を示すタイミング図である。
【図２２】図１８のマッチアンプＭＡの変形例を示すブロック図である。
【図２３】第４の実施形態によるＴＣＡＭ装置において、サブアレイの構成を模式的に示すブロック図である。
【図２４】図２３の制御論理回路２４において、検索動作に関係する部分の構成を示す回路図である。
【図２５】制御論理回路２４からの出力信号のために用いられるバッファアンプの配置について説明するための図である。
【図２６】第５の実施形態のＴＣＡＭ装置において、バッファアンプ部の構成を説明するための図である。
【図２７】電源立ち上げ後において、各レジスタＲＥＧ１，ＲＥＧ２，ＲＥＧ３へのデータ書込みの手順について説明するための図である。
【図２８】入力データの配列変換について説明するための図である。
【図２９】第７の実施形態の検索システムの構成を示すブロック図である。
【図３０】データ配列変換の対象となるＴＣＡＭ用データの一例が書き込まれたＴＣＡＭ装置の記憶状態を模式的に示す図である。
【図３１】第８の実施形態によるＴＣＡＭ装置の構成を示すブロック図である。
【図３２】図３１のマッチアンプＭＡの構成例を示す回路図である。
【図３３】図３１のＴＣＡＭ装置の動作を説明するための図である。
【発明を実施するための形態】
【００１４】
以下、各実施形態について図面を参照して詳しく説明する。なお、同一または相当する部分には同一の参照符号を付して、その説明を繰返さない。
【００１５】
＜各実施形態に共通する構成＞
［ＴＣＡＭセルの構成］
図１は、ＴＣＡＭセルの構成の一例を示す回路図である。図１を参照して、ＴＣＡＭセル（メモリセルＭＣとも称する）は、２個のＳＲＡＭセル（Static Random Access Memory Cell）１１，１２と、データ比較部１３とを含む。ＳＲＡＭセル１１をＸセルとも称し、ＳＲＡＭセル１２をＹセルとも称する。Ｘセル１１は、内部の記憶ノード対ＮＤ１，ＮＤ１＿ｎに互いに相補となる（一方が“１”のとき他方が“０”となる）１ビット（ｂｉｔ）のデータを記憶する。Ｙセル１２は、内部の記憶ノード対ＮＤ２，ＮＤ２＿ｎに互いに相補となる１ビットのデータを記憶する。
【００１６】
ＴＣＡＭセルは、ビット線対ＢＬ，ＢＬ＿ｎ、サーチ線対ＳＬ，ＳＬ＿ｎ、マッチ線ＭＬ、およびワード線ＷＬＸ，ＷＬＹと接続される。ビット線対ＢＬ，ＢＬ＿ｎは、図３のＴＣＡＭセルアレイ２０の列方向（Ｙ方向）に延在し、列方向に配列された複数のＴＣＡＭセルによって共有される。サーチ線対ＳＬ，ＳＬ＿ｎは、ＴＣＡＭセルアレイ２０の列方向（Ｙ方向）に延在し、列方向に配列された複数のＴＣＡＭセルによって共有される。マッチ線ＭＬは、ＴＣＡＭセルアレイ２０の行方向（Ｘ方向）に延在し、行方向に配列された複数のＴＣＡＭセルによって共有される。ワード線ＷＬＸ，ＷＬＹは、ＴＣＡＭセルアレイ２０の行方向（Ｘ方向）に延在し、行方向に配列された複数のＴＣＡＭセルによって共有される。
【００１７】
Ｘセル１１は、インバータＩＮＶ１，ＩＮＶ２と、ＮチャネルＭＯＳ（Metal Oxide Semiconductor）トランジスタＱ１，Ｑ２とを含む。インバータＩＮＶ１は、記憶ノードＮＤ１＿ｎから記憶ノードＮＤ１へ向かう方向が順方向となるように、記憶ノードＮＤ１と記憶ノードＮＤ１＿ｎの間に接続される。インバータＩＮＶ２は、ＩＮＶ１と並列かつ逆方向に接続される。ＭＯＳトランジスタＱ１は、記憶ノードＮＤ１とビット線ＢＬとの間に接続される。ＭＯＳトランジスタＱ２は、記憶ノードＮＤ１＿ｎとビット線ＢＬ＿ｎとの間に接続される。ＭＯＳトランジスタＱ１，Ｑ２のゲートは、ワード線ＷＬＸと接続される。
【００１８】
Ｙセル１２は、インバータＩＮＶ３，ＩＮＶ４と、ＭＯＳ（Metal Oxide Semiconductor）トランジスタＱ３，Ｑ４とを含む。インバータＩＮＶ３は、記憶ノードＮＤ２＿ｎから記憶ノードＮＤ２に向かう方向が順方向となるように、記憶ノードＮＤ２と記憶ノードＮＤ２＿ｎの間に接続される。インバータＩＮＶ４は、ＩＮＶ３と並列かつ逆方向に接続される。ＭＯＳトランジスタＱ３は、記憶ノードＮＤ２とビット線ＢＬとの間に接続される。ＭＯＳトランジスタＱ４は、記憶ノードＮＤ２＿ｎとビット線ＢＬ＿ｎとの間に接続される。ＭＯＳトランジスタＱ３，Ｑ４のゲートは、ワード線ＷＬＹと接続される。
【００１９】
データ比較部１３は、ＮチャネルＭＯＳトランジスタＱ６〜Ｑ９を含む。ＭＯＳトランジスタＱ６，Ｑ７はマッチ線ＭＬとの接続点であるノードＮＤ３と接地ノードＧＮＤとの間に直列に接続される。ＭＯＳトランジスタＱ８，Ｑ９は、ノードＮＤ３と接地ノードＧＮＤとの間に直列に、かつ、直列接続されたＭＯＳトランジスタＱ６，Ｑ７の全体と並列に接続される。ＭＯＳトランジスタＱ６，Ｑ８のゲートは、記憶ノードＮＤ１，ＮＤ２とそれぞれ接続される。ＭＯＳトランジスタＱ７，Ｑ９のゲートは、サーチ線ＳＬ，ＳＬ＿ｎとそれぞれ接続される。
【００２０】
図２は、図１のＸセルおよびＹセルの記憶内容とＴＣＡＭセルデータとの対応関係を表形式で示す図である。
【００２１】
図２および図３を参照して、ＴＣＡＭセルは、２ビットのＳＲＡＭセルを用いて、“０”、“１”、“ｘ”（ドントケア：don't care）の３値を格納することができる。具体的に、Ｘセル１１の記憶ノードＮＤ１に“１”が格納され、Ｙセル１２の記憶ノードＮＤ２に“０”が格納されているとき、ＴＣＡＭセルには“０”が格納されているとする。Ｘセル１１の記憶ノードＮＤ１に“０”が格納され、Ｙセル１２の記憶ノードＮＤ２に“１”が格納されているとき、ＴＣＡＭセルには“１”が格納されているとする。Ｘセル１１の記憶ノードＮＤ１に“０”が格納され、Ｙセル１２の記憶ノードＮＤ２に“０”が格納されているとき、ＴＣＡＭセルには“ｘ”（ドントケア）が格納されているとする。Ｘセル１１の記憶ノードＮＤ１に“１”が格納され、Ｙセル１２の記憶ノードＮＤ２に“１”が格納されている場合は使用しない。
【００２２】
上記のＴＣＡＭセルの構成によれば、サーチデータが“１”（すなわち、サーチ線ＳＬが“１”、かつ、サーチ線ＳＬ＿ｎが“０”）であり、ＴＣＡＭデータが“０”（記憶ノードＮＤ１が“１”、かつ、記憶ノードＮＤ２が“０”）である場合には、ＭＯＳトランジスタＱ６，Ｑ７がオン状態となるために、プリチャージされたマッチ線ＭＬの電位が接地電位まで引き抜かれる。サーチデータが“０”（すなわち、サーチ線ＳＬが“０”、かつ、サーチ線ＳＬ＿ｎが“１”）であり、ＴＣＡＭデータが“１”（記憶ノードＮＤ１が“０”、かつ、記憶ノードＮＤ２が“１”）である場合には、ＭＯＳトランジスタＱ８，Ｑ９がオン状態となるために、プリチャージされたマッチ線ＭＬの電位が接地電位まで引き抜かれる。すなわち、サーチデータとＴＣＡＭデータとが不一致の場合には、マッチ線ＭＬの電位は接地電位まで引き抜かれる。
【００２３】
逆に、入力されたサーチデータが“１”であり、かつ、ＴＣＡＭデータが“１”または“ｘ”の場合、もしくは、サーチデータが“０”であり、かつ、ＴＣＡＭデータが“０”または“Ｘ”の場合（すなわち、両者が一致する場合）、プリチャージされたマッチ線ＭＬの電位（電源電位ＶＤＤレベル）は維持される。
【００２４】
上記のように、ＴＣＡＭでは、１つのエントリ（行）に対応するマッチ線ＭＬに接続された全てのＴＣＡＭセルのデータが入力サーチデータと一致しない限り、マッチ線ＭＬに蓄えられた電荷が引き抜かれる。このため、ＴＣＡＭでの検索は高速であるが、消費電流が大きいという問題がある。
【００２５】
［サブアレイの構成］
図３は、ＴＣＡＭ装置を構成する１つのサブアレイの構成を示すブロック図である。図３を参照して、サブアレイＳＡは、ＴＣＡＭセルアレイ２０（単にセルアレイとも称する）と、書込みドライバ２１と、サーチ線（ＳＬ）ドライバ２２と、マッチアンプ部２３と、制御論理回路２４とを含む。サブアレイＳＡは、さらに、図１のワード線ＷＬＸ，ＷＬＹを駆動するためのワード線ドライバ（不図示）を含む。
【００２６】
セルアレイ２０は、行列状（ｍ行；ｋ列）に配列されたＴＣＡＭセルを含む。図３のセルアレイ２０は、行数（エントリ数）ｍが２５６であり、列数（ビット数）ｋが３２の場合が示されている。
【００２７】
セルアレイ２０の各列に対応して、ｋ個（ｋ＝３２）のビット線対（ＢＬ［０］，ＢＬ＿ｎ［０］からＢＬ［ｋ−１］，ＢＬ＿ｎ［ｋ−１］まで）と、ｋ個（ｋ＝３２）のサーチ線対（ＳＬ［０］，ＳＬ＿ｎ［０］からＳＬ［ｋ−１］，ＳＬ＿ｎ［ｋ−１］まで）とが設けられる。セルアレイ２０の各行に対応して、ｍ本（ｍ＝２５６）のマッチ線（ＭＬ［０］からＭＬ［ｍ−１］まで）と、図示しないｍ本のＸセル用のワード線（ＷＬＸ［０］からＷＬＸ［ｍ−１］まで）と、図示しないｍ本のＹセル用のワード線（ＷＬＹ［０］からＷＬＹ［ｍ−１］まで）とが設けられている。
【００２８】
書込みドライバ２１は、書込み時に、ビット線対ＢＬ，ＢＬ＿ｎを介して各ＴＣＡＭセルに書込みデータを供給する。サーチ線ドライバ２２は、検索時に、サーチ線対ＳＬ，ＳＬ＿ｎを介して各ＴＣＡＭセルにサーチデータを供給する。制御論理回路２４は、サブアレイＳＡ全体の動作を制御する。たとえば、制御論理回路２４は、検索時には、サーチコマンドを受け取り、サーチ線ドライバ２２と、マッチアンプ部２３に制御信号を出力することによって、サーチ線ドライバ２２、マッチアンプ部２３、およびプリチャージ回路の動作を制御する。
【００２９】
マッチアンプ部２３は、セルアレイの行にそれぞれ対応する複数のマッチアンプＭＡを含む。マッチアンプＭＡは、検索時に、対応するマッチ線ＭＬの電位に基づいて、対応するＴＣＡＭセルデータと入力サーチデータの対応部分とが一致するか否かを検出する。この実施形態では、マッチアンプＭＡは、検索時に対応するマッチ線ＭＬをプリチャージするためのプリチャージ回路を含む。
【００３０】
［ＴＣＡＭの構成］
図４は、ＴＣＡＭ装置の構成を示すブロック図である。図４を参照して、ＴＣＡＭ装置１００は、行列状に配列された複数のサブアレイＳＡと、プライオリティ・エンコーダ３０と、データ入力回路３１と、コマンド入力回路３２とを含む。
【００３１】
図４のＴＣＡＭ装置が実現している検索テーブルサイズは、１エントリ（１行）のビット長が１２８ビット（bit）であり、総エントリ数が４０９６エントリ（entry）である。ＴＣＡＭ装置１００は、１６行４列のサブアレイＳＡ［０，０］〜ＳＡ［１５，３］に分割されている。各サブアレイＳＡのサイズは、総エントリ数は２５６エントリ、１エントリのビット長は３２ビットになる。これらの数字は一例であって、ＴＣＡＭ装置の構成はこれに限られるものでない。
【００３２】
すでに説明したサーチ線対ＳＬ，ＳＬ＿ｎ、ビット線対ＢＬ，ＢＬ＿ｎ、マッチ線ＭＬ、およびワード線は、各サブアレイごとに配設されている。たとえば、サブアレイＳＡ［０，０］には、サーチ線対ＳＬ［０］，ＳＬ＿ｎ［０］からサーチ線対ＳＬ［３１］，ＳＬ＿ｎ［３１］までが設けられる。サブアレイＳＡ［０，１］には、サーチ線対ＳＬ［３２］，ＳＬ＿ｎ［３２］からサーチ線対ＳＬ［６３］，ＳＬ＿ｎ［６３］までが設けられる。サブアレイＳＡ［０，２］には、サーチ線対ＳＬ［６４］，ＳＬ＿ｎ［６４］からサーチ線対ＳＬ［９５］，ＳＬ＿ｎ［９５］までが設けられる。サブアレイＳＡ［０，３］には、サーチ線対ＳＬ［９６］，ＳＬ＿ｎ［９６］からサーチ線対ＳＬ［１２７］，ＳＬ＿ｎ［１２７］までが設けられる。
【００３３】
図４において、１エントリのサーチデータ全体および１エントリのＴＣＡＭセルデータ（書込みデータ）全体に対して、マッチ線ＭＬは３２ビット単位で４分割された構成になっている。このため、マッチアンプ部２３には、図５で説明するように、各マッチアンプＭＡの検出結果の論理積をとるためのＡＮＤゲート（図５の参照符号２６）が行ごとに設けられている。
【００３４】
データ入力回路３１は、データ書込み時には、書込みデータを外部（たとえば、図６のネットワーク・プロセッサ・ユニット）から受信し、受信した書込みデータを対応するサブアレイのＳＡの書込みドライバ２１に出力する。データサーチ時には、サーチデータを外部から受信し、受信したサーチデータを対応するサブアレイＳＡのサーチ線ドライバ２２に出力する。
【００３５】
コマンド入力回路３２は、書込みコマンド、サーチコマンドなどの各種コマンドを外部から受信し、受信したコマンドを対応するサブアレイＳＡの制御論理回路２４に出力する。
【００３６】
プライオリティ・エンコーダ３０は、各エントリごとのサーチ結果（入力サーチデータとＴＣＡＭデータとが一致したか否か）を隣接するサブアレイＳＡ［０，３］，ＳＡ［１，３］，…，ＳＡ［１５，３］から受け取る。プライオリティ・エンコーダ３０は、ヒットアドレス（サーチデータと一致したＴＣＡＭデータが格納されているエントリアドレス）を出力する、複数のエントリがヒット（一致）した場合には、プライオリティ・エンコーダ３０は、優先度の高いヒットエントリのアドレスを出力する。
【００３７】
［同一エントリの複数のマッチアンプの検出結果のＡＮＤ演算について］
図５は、各マッチアンプの検出結果のＡＮＤ演算について説明するための図である。図５では代表的にサブアレイＳＡ［０，０］，ＳＡ［０，１］の１つのエントリのみ示されているが、他のエントリおよび他のサブアレイについても同様である。
【００３８】
図５に示すように、各サブアレイＳＡのマッチアンプ部２３は、行ごとに、マッチアンプＭＡの後段に設けられたＡＮＤゲート２６を含む。ただし、プライオリティ・エンコーダ３０から最も離れたサブアレイＳＡ［０，０］，［１，０］，…に設けられたＡＮＤゲート２６は、一方の入力ノードに“Ｈ”レベルの電位（電源電位ＶＤＤ）が入力されることによって、バッファとして機能している。以下、図４および図５を参照して、サブアレイＳＡ［０，０］〜ＳＡ［０，３］の１つのエントリを例に挙げて、ＡＮＤゲート２６の動作について説明する。
【００３９】
図４および図５を参照して、まず、サブアレイＳＡ［０，０］〜ＳＡ［０，３］の各々において、サーチ線対ＳＬ，ＳＬ＿ｎを介して入力されたサーチデータの対応部分と、ＴＣＡＭセルデータとの比較が行われる。各サブアレイＳＡのマッチアンプＭＡは、対応するマッチ線ＭＬの電位（入力サーチデータの対応部分とＴＣＡＭセルデータとが全て一致する場合：“Ｈ”レベル、少なくとも１つも不一致がある場合：“Ｌ”レベル）を検出する。
【００４０】
次に、サブアレイＳＡ［０，０］のマッチアンプＭＡの検出結果は、サブアレイ［０，０］のマッチアンプ部に設けられたバッファとして用いられるＡＮＤゲート２６を通過した後に、マッチアンプ出力信号ｍｏ＿０として、隣接するサブアレイＳＡ［０，１］に転送される。サブアレイＳＡ［０，１］のマッチアンプ部２３に設けられたＡＮＤゲート２６は、上記のマッチアンプ出力信号ｍｏ＿０と、サブアレイＳＡ［０，１］のマッチアンプＭＡの検出結果との論理積を演算する。この演算結果は、マッチアンプ出力信号ｍｏ＿１として、隣接するサブアレイＳＡ［０，２］に転送される。
【００４１】
以下同様に、サブアレイＳＡ［０，２］のマッチアンプ部２３に設けられたＡＮＤゲート２６は、上記のマッチアンプ出力信号ｍｏ＿１と、サブアレイＳＡ［０，２］のマッチアンプＭＡの検出結果との論理積を演算する。この演算結果は、マッチアンプ出力信号ｍｏ＿２として、隣接するサブアレイＳＡ［０，３］に転送される。サブアレイＳＡ［０，３］のマッチアンプ部２３に設けられたＡＮＤゲート２６は、上記のマッチアンプ出力信号ｍｏ＿２と、サブアレイＳＡ［０，３］のマッチアンプＭＡの検出結果との論理積を演算する。この演算結果は、マッチアンプ出力信号ｍｏ＿３として、プライオリティ・エンコーダ３０に入力される。
【００４２】
［データ検索システムの構成］
図６は、データ検索システムの全体構成を示すブロック図である。図６のブロック図は、インターネットなどのネットワーク用のルータに設けられたデータ検索システム１２０の構成を示す。
【００４３】
ネットワークトラフィックの品質向上やネットワークセキュリティ管理を目的として、ネットワークシステムにはＡＣＬ（Access Control List）が使われている。ＡＣＬルールファイルはネットワーク管理者によって作成され、記憶装置１０２に格納される。
【００４４】
データ検索システム１２０は、ＡＣＬに記載されたルールのもとに、ＬＡＮ（Local Area Network）を介して入力されたネットワークパケットが、通過を許可すべきパケットか通過を拒否するパケットなのかを即座に判断する。すなわち、データ検索システム１２０には、入力してきたパケットがＡＣＬ内のどのルールに対応しているかを高速に検索する能力が必要となり、その処理には一般的にＴＣＡＭ装置１００を利用したデータ検索システム１２０が利用されている。
【００４５】
具体的に、データ検索システム１２０は、ＴＣＡＭ装置１００とＮＰＵ（Network Processor Unit）１０１とを含む。ＮＰＵ１０１は、ＴＣＡＭ装置１００の動作を制御するためのものであり、ＴＣＡＭ装置１００に対して、各種コマンド（書込みコマンド、読出しコマンド、サーチコマンドなど）および各種データ（書込みデータ、サーチデータなど）を出力する。さらに、ＴＣＡＭ装置１００には制御レジスタが設けられており、ＴＣＡＭ装置１００は、この制御レジスタ用のコマンドおよびデータも出力する。
【００４６】
図６において、ＴＣＡＭ装置１００のみが１つの半導体装置として構成されていてもよいし、ＴＣＡＭ装置１００とＮＰＵ（Network Processor Unit）１０１とを併せて１つの半導体装置として構成されていてもよい。
【００４７】
ネットワーク管理者が作成したＡＣＬルールファイルは、ＮＰＵ１０１のデータ変換部１０３においてＴＣＡＭ用のデータに変換され、変換後のデータがＴＣＡＭ装置内部に格納される。ＴＣＡＭ装置１００は、ネットワークパケットに含まれるＩＰアドレスなどに基づくサーチデータと、ＴＣＡＭ装置内部に格納されている全てのデータとを同時に比較できる能力を有している。ただし、ＴＣＡＭの検索動作には大電流を発生してしまうデメリットがある。ＴＣＡＭ装置を搭載するネットワークシステムおよびデータ検索システムでは、低消費電力化が課題となっている。
【００４８】
［ＡＣＬルールファイルおよび対応するＴＣＡＭ用データの例について］
図７は、ＡＣＬルールファイルの一例を表形式で示す図である。図７では、ＡＣＬが３行のみ示されているが、実際にはより多数の行によってＡＣＬルールファイルが構成される。図７に示すように、ＡＣＬは、ネットワークから入力されたパケットのプロトコル番号、宛先ポート番号、送信元ポート番号、宛先ＩＰアドレス、および送信元ＩＰアドレスをチェックするためのものである。これらのチェック要素は、範囲指定が可能となっている。
【００４９】
たとえば、図７の参照符号２０１で示された行は、送信元ＩＰアドレスについて範囲指定されている。具体的に、“１４７．１２１．５６．１５２／２９”は、アドレス３２ビットのうち上位２９ビットを固定し、残り３ビットをマスク（wild card）とした表現である。すなわち、１４７．１２１．５６．１５２〜１４７．１２１．５６．２５５の範囲が指定されている。宛先ＩＰアドレスについても、同様の範囲指定記載が可能である。
【００５０】
図７の参照符号２０２で示された行は、送信元ポート番号について範囲指定されている。すなわち、“０：６５５３５”の表現によって、０〜６５５３５の範囲が指定されている。
【００５１】
図７の参照符号２０３で示された行は、宛先ポート番号が範囲指定されている。すなわち、“１０２４：６５５３５”の表現によって、１０２４〜６５５３５の範囲が指定されている。
【００５２】
図８は、図７のＡＣＬを変換することによって得られたＴＣＡＭ用データの一例を示す図である。
【００５３】
図８を参照して、１つのルールは、プロトコル番号が８ビット、宛先ポート番号が１６ビット、送信元ポート番号が１６ビット、宛先ＩＰアドレスが３２ビット、送信元ＩＰアドレスが３２ビットの合計１０４ビットのデータで構成される。図中の“ｘ”は、ドントケア（don't care）データ（wild cardデータ）を示す。ドントケアデータは、“１”または“０”のどちらにでも一致するデータのことである。
【００５４】
図８の参照符号２０１，２０２，２０３で示された行の表記は、図７の参照符号２０１，２０２，２０３で示された行のＡＣＬルールにそれぞれ対応している。参照符号２０３で示すように、ＡＣＬルールでは１行の範囲指定ルール（１０２４〜６５５３５）であったものが、ＴＣＡＭ用データに変換すると６行のデータになる場合がある。さらに、宛先ポート番号と送信元ポート番号などの複数の要素が範囲指定ルールとなった場合には、ＴＣＡＭに必要な行数がより一層増加してしまう。たとえば、宛先ポート番号と送信元ポート番号ともに１０２４〜６５５３５の領域指定ルールであるとすると、ＴＣＡＭ装置には３６行のデータ領域が必要となる。したがって、ＡＣＬに領域指定ルールが多く含まれている場合には、ＴＣＡＭ用データにはドントケア（don't care）データが多く含まれることが分かる。
【００５５】
図９は、ＡＣＬに基づく変換データが書込まれたＴＣＡＭ装置の記憶状態を模式的に示す図である。図９では、範囲指定ルールの多いＡＣＬルールファイルがＴＣＡＭ装置の記憶領域に書込まれた状態が示されている。
【００５６】
図９のＴＣＡＭ装置は４０９６エントリの記憶領域を有し、１エントリあたり１２８ビットのデータを記憶可能である。ＴＣＡＭ装置全体は、１６行４列の合計６４個のサブアレイＳＡ［０，０］〜ＳＡ［１５，３］に区分される。
【００５７】
ＴＣＡＭ装置の記憶領域のうち図９の太枠で囲まれた領域２１０が、ＡＣＬに基づく変換データが書き込まれた領域である。データが書き込まれた領域２１０のビット幅は、１０４ビットであり、図８で説明した５つのチェック要素（プロトコル番号：８ビット、宛先ポート番号：１６ビット、送信元ポート番号：１６ビット、宛先ＩＰアドレス：３２ビット、送信元ＩＰアドレス：３２ビット）に対応している。太枠の領域２１０のうち、狭い間隔の斜線のハッチングが付された領域２１１は、ドントケアデータの領域を示しており、残りの領域は“０”および“１”のデータ領域を示す。
【００５８】
１０４ビットのＡＣＬルールに対して、ＴＣＡＭ装置のビット幅は１２８ビットなので、ＴＣＡＭ装置にはデータの埋まらない２４ビット幅の領域２１２ができてしまう。この領域２１２のＴＣＡＭセルには、ドントケアデータが格納される。
【００５９】
さらに、ＴＣＡＭ装置の総エントリ数が４０９６エントリであるのに対して、ルール数が不足している場合には、データが埋まらない１２８ビット幅の空き領域２１３が存在する。この空き領域は、インバリッドエントリ（Invalid Entry）（検索非対象エントリとも称する）として設定される。インバリッドエントリの領域は、サーチ時に必ずミス（miss：不一致）になる。
【００６０】
具体的に、図９のＴＣＡＭでは、サブアレイＳＡ［１４，１］，ＳＡ［１２，２］，ＳＡ［１３，２］，ＳＡ［１４，２］，ＳＡ［ｊ，３］（ｊ＝７〜１４）については、各サブアレイ内の全てのセルデータがドントケアであるため、これらのサブアレイの全ての行のサーチ結果は自明である（全てヒット（hit）となる）。図９のサブアレイＳＡ［１５，１］，ＳＡ［１５，２］，ＳＡ［１５，３］については、当該サブアレイの各行は、ドントケアのセルデータのみによって構成されているか、インバリッドエントリに該当するかのいずれかであるので、これらのサブアレイの各行のサーチ結果は自明である。ところが、従来のＴＣＡＭでは、サーチコマンドが入力されると全てのサブアレイに対してサーチ動作が実行されるので、上記のようにサーチ結果が自明のサブアレイに対してもサーチ動作が実行されてしまう。このために、無駄に電流を消費してしまうという問題があった。
【００６１】
＜第１の実施形態＞
第１の実施形態では、ＴＣＡＭ装置内のサーチ結果が自明な領域、具体的にはドントケア（don't care）データ領域のサーチ動作を停止させながらも、正常なサーチ結果を出力する技術が提供される。これによって、従来技術において無駄に消費してしまう電流を削減することができるので、より低消費電力なＴＣＡＭ装置ならびにＴＣＡＭ装置を用いたデータ検索システムを提供することができる。以下、図面を参照して具体的に説明する。
【００６２】
［サブアレイの構成］
図１０は、第１の実施形態によるＴＣＡＭ装置において、サブアレイの構成を示すブロック図である。図１０を参照して、図１０のサブアレイＳＡは、レジスタＲＥＧ１をさらに含む点で、図３のサブアレイＳＡと異なる。図１０では、レジスタＲＥＧ１は、制御論理回路２４の内部に設けられているように図示しているが、制御論理回路２４の外部に設けられていても構わない。図１０のその他の構成は図３の場合と同様であるので、同一または相当する部分には同一の参照符号を付して説明を繰返さない。図１０ではデータ検索に関する部分を主として記載しているので、データ書込みに関する書込みドライバ２１は図示していない。
【００６３】
レジスタＲＥＧ１は、ＴＣＡＭセルアレイ２０の全てのデータがドントケアである場合にハイレベル“Ｈ”（この明細書では“１”とする）に設定され、少なくとも１つがドントケアでない場合（「非ドントケア」と称する）にローレベル“Ｌ”（この明細書では“０”とする）に設定される。具体的には、ＴＣＡＭセルアレイ２０内の全てのデータがドントケアであるか否かの解析をＴＣＡＭ装置内の専用回路が行い、当該専用回路が、解析結果に基づいてレジスタＲＥＧ１の値を設定するようにしてもよい。もしくは、上記の解析を外部（たとえば、図６のＮＰＵ１０１のデータ解析部１０４）で行い、解析結果を外部からレジスタＲＥＧ１に書込むようにしてもよい。
【００６４】
制御論理回路２４は、レジスタＲＥＧ１に設定された論理レベルに応じて、サーチ動作を制御するための制御信号（ｓｌｅ，ｆｏｒｃｅ＿ｈｉｔ，ｍａｅ，ｍｌｐｒｅ＿ｎ）を生成する。以下、図１１〜図１５を参照して、具体的に説明する。
【００６５】
［サーチ系制御回路の構成］
図１１は、図１０の制御論理回路のうち、サーチ動作に関係する部分の構成を示す回路図である。図１０および図１１を参照して、制御論理回路２４は、レジスタＲＥＧ１と、インバータ４２，４７，４８と、ＡＮＤゲート４３，４９，５１と、Ｄフリップフロップ４４，４５と、遅延段５０とを含む。レジスタＲＥＧ１は、Ｄフリップフロップ４０と、ＡＮＤゲート４１とを含む。
【００６６】
レジスタ設定データは、レジスタ書込みコマンドが“Ｈ”レベルに活性化されると、クロック信号ｃｌｋの立ち上がり時に（すなわち、ＡＮＤゲート４１の出力が“Ｈ”になると）、Ｄフリップフロップ４０に書込まれる。サブアレイ内の全セルのデータがドントケアの場合に、Ｄフリップフロップ４０には“１”（“Ｈ”レベル）が書き込まれ、非ドントケアの場合に、Ｄフリップフロップ４０には“０”（“Ｌ”レベル））が書き込まれる。レジスタ設定データおよびレジスタ書込みデータは、ＴＣＡＭ装置の外部（たとえば、図６のＮＰＵ１０１など）から与えられる。レジスタ設定データの書込みは、たとえば、ＴＣＡＭ装置の起動時に行われる。
【００６７】
Ｄフリップフロップ４０の出力信号は、制御信号ｆｏｒｃｅ＿ｈｉｔとしてマッチアンプ部２３の各マッチアンプＭＡに入力される。Ｄフリップフロップの出力は、さらに、インバータ４２を介してＡＮＤゲート４３に入力される。
【００６８】
サーチコマンドは、ＡＮＤゲート４３、フリップフロップ４４，４５、ＡＮＤゲート４６、およびインバータ４７を順に介して、マッチ線プリチャージ信号ｍｌｐｒｅ＿ｎとしてマッチアンプ部２３に出力される。上記のＡＮＤゲート４３の他方の入力ノードにはインバータ４２によって反転された制御信号ｆｏｒｃｅ＿ｈｉｔが入力される。上記のフリップフロップ４４，４５のクロック端子にはクロック信号ｃｌｋが入力される。上記のＡＮＤゲート４６の他方の入力ノードには、クロック信号ｃｌｋが入力される。
【００６９】
上記のフリップフロップ４５の出力信号は、さらに、ＡＮＤゲート４９を介して、サーチ線イネーブル信号ｓｌｅとしてサーチ線ドライバ２２に出力される。ＡＮＤゲート４９の他方の入力ノードには、クロック信号ｃｌｋをインバータ４８によって反転した信号が入力される。
【００７０】
上記のＡＮＤゲート４９の出力信号は、さらに、遅延段５０を介してＡＮＤゲート５１の第１の入力ノードに入力されるとともに、遅延段５０を介さずに直接ＡＮＤゲート５１の第２の入力ノードに入力される。ＡＮＤゲート５１の出力信号は、マッチアンプイネーブル信号ｍａｅとしてマッチアンプ部２３の各マッチアンプＭＡに入力される。
【００７１】
上記の回路構成によれば、制御信号ｆｏｒｃｅ＿ｈｉｔは、レジスタＲＥＧ１の設定値に従って、レジスタＲＥＧ１の設定値が“１”の場合は“Ｈ”レベルとなり、レジスタＲＥＧ１の設定値が“０”の場合は“Ｌ”レベルとなる。サーチ動作制御用の制御信号（ｓｌｅ，ｍａｅ，ｍｌｐｒｅ＿ｎ）は、レジスタＲＥＧ１の設定値およびサーチコマンドに従って変化する。
【００７２】
具体的に、レジスタＲＥＧ１の格納データが“Ｌ”（非ドントケア）であり、かつ、サーチコマンドが“Ｈ”レベルに活性化された場合には、最初に、マッチ線プリチャージ信号ｍｌｐｒｅ＿ｎが“Ｌ”レベルに活性化される。次に、サーチ線イネーブル信号ｓｌｅが“Ｈ”レベルに活性化される。最後に、マッチアンプイネーブル信号ｍａｅが“Ｈ”レベルに活性化される。
【００７３】
逆に、レジスタＲＥＧ１の設定データが“Ｈ”（ドントケア）の場合には、サーチコマンドが“Ｈ”レベルに活性化されたとしても、マッチ線プリチャージ信号ｍｌｐｒｅ＿ｎは“Ｈ”レベル（非活性状態）を維持し、サーチ線イネーブル信号ｓｌｅは“Ｌ”レベル（非活性状態）を維持し、マッチアンプイネーブル信号ｍａｅは“Ｌ”レベル（非活性状態）を維持する。
【００７４】
［サーチ線ドライバの構成および動作］
図１２は、図１０のサーチ線ドライバの構成の一例を示す回路図である。図１０および図１２を参照して、サーチ線ドライバ２２は、サーチ線イネーブル信号ｓｌｅが“Ｈ”レベルに活性化されたときに、入力サーチデータｓｄ［ｉ］（ｉ＝０，１，…，ｋ）をサーチ線ＳＬ［ｉ］に出力するとともに、入力サーチデータｓｄ［ｉ］の論理レベルを反転した信号を相補のサーチ線ＳＬ＿ｎ［ｉ］に出力する。
【００７５】
具体的に、サーチ線ドライバ２２は、サーチ線ＳＬ［０］〜ＳＬ［ｋ］にそれぞれ対応するＡＮＤゲート６０［０］〜６０［ｋ］と、サーチ線ＳＬ＿ｎ［０］〜ＳＬ＿ｎ［ｋ］にそれぞれ対応するＡＮＤゲート６１［０］〜６１［ｋ］と、インバータ６２［０］〜６２［ｋ］とを含む。サーチ線イネーブル信号ｓｌｅは、ＡＮＤゲート６０［０］〜６０［ｋ］およびＡＮＤゲート６１［０］〜６１［ｋ］に共通に入力される。さらに、ＡＮＤゲート６０［ｉ］（ｉ＝０，１，…，ｋ）には、対応するサーチデータｓｄ［ｉ］、および対応するマスク信号ｍａｓｋ＿ｎ［ｉ］が入力される。ＡＮＤゲート６０［ｉ］（ｉ＝０，１，…，ｋ）の出力信号はサーチ線ＳＬ［ｉ］に送信される。ＡＮＤゲート６１［ｉ］（ｉ＝０，１，…，ｋ）には、対応するサーチデータｓｄ［ｉ］を反転した信号、および対応するマスク信号ｍａｓｋ＿ｎ［ｉ］が入力される。
【００７６】
上記構成によれば、たとえば、サーチ線イネーブル信号ｓｌｅが“Ｈ”レベルに活性化され、かつ、入力データｓｄ［ｉ］が“Ｈ”レベル（“１”）である場合には、サーチ線ＳＬ［ｉ］の電圧が“Ｈ”レベルとなり、サーチ線ＳＬ＿ｎ［ｉ］の電圧が“Ｌ”レベルとなる。サーチ線イネーブル信号ｓｌｅが“Ｈ”レベルに活性化され、かつ、入力データｓｄ［ｉ］が“Ｌ”レベル（“０”）である場合には、サーチ線ＳＬ［ｉ］の電圧が“Ｌ”レベルとなり、サーチ線ＳＬ＿ｎ［ｉ］の電圧が“Ｈ”レベルとなる。マスクサーチ（サーチ動作をマスクする動作モード）の場合、マスク信号ｍａｓｋ＿ｎ［ｉ］（ｉ＝０，１，…，ｋ）が“Ｌ”レベルに活性化されると、サーチ線ＳＬ［ｉ］の電圧が“Ｌ”レベルとなり、サーチ線ＳＬ＿ｎ［ｉ］の電圧が“Ｌ”レベルとなる。
【００７７】
［マッチアンプの構成および動作］
図１３は、図１０のマッチアンプの構成の一例を示す回路図である。図１０および図１３を参照して、マッチアンプＭＡは、プリチャージ回路としてのＰチャネルＭＯＳトランジスタ７０と、インバータ７１〜７４と、論理ゲート（ＮＡＮＤゲート）７５とを含む。図１３では、プリチャージ回路としてのＭＯＳトランジスタ７０がマッチアンプＭＡの内部にあるように図示しているが、ＭＯＳトランジスタ７０はマッチアンプＭＡの外部に設けられていても構わない。
【００７８】
以下、上記の構成要素の接続について説明する。ＭＯＳトランジスタ７０は、対応するマッチ線ＭＬと電源電位ＶＤＤを与える電源ノードとの間に接続される。ＭＯＳトランジスタ７０のゲートには、マッチ線プリチャージ信号ｍｌｐｒｅ＿ｎが入力される。マッチ線ＭＬは、さらに、インバータ７１の入力ノードに接続される。インバータ７１の出力ノードは、論理ゲート７５の第１の入力ノードに接続される。論理ゲート７５の第２の入力ノードには、インバータ７４を介して制御信号ｆｏｒｃｅ＿ｈｉｔが入力される。論理ゲート７５の出力ノードは、インバータ７２を介して論理ゲート７５の第１の入力ノードに接続される。マッチアンプイネーブル信号ｍａｅおよびその論理レベルをインバータ７３によって反転させた信号は、インバータ７１，７２の駆動電源ノードに接続される。マッチアンプイネーブル信号ｍａｅが非活性状態（“Ｌ”レベル）のとき、インバータ７１は非動作状態となり、インバータ７２は動作状態となる。マッチアンプイネーブル信号ｍａｅが活性状態（“Ｈ”レベル）のとき、インバータ７１は動作状態となり、インバータ７２は非動作状態となる。
【００７９】
次に、図１３のマッチアンプＭＡの回路動作について説明する。最初に、（ｉ）制御論理回路２４のレジスタＲＥＧ１が“Ｌ”レベル（非ドントケアを表す）に設定されている場合について説明する。この場合、制御信号ｆｏｒｃｅ＿ｈｉｔは“Ｌ”レベルであるので、論理ゲート７５はインバータとして機能する。
【００８０】
まず、マッチ線プリチャージ信号ｍｌｐｒｅ＿ｎが活性化される（“Ｌ”レベルになる）ことによって、ＭＯＳトランジスタ７０が導通する。これによって、マッチ線ＭＬが電源電位ＶＤＤまで充電される（プリチャージされる）。
【００８１】
マッチ線プリチャージ信号ｍｌｐｒｅ＿ｎが非活性化された後に、図１０のサーチ線イネーブル信号ｓｌｅが活性化される（“Ｈ”レベルになる）ことによって、サーチ線対ＳＬ，ＳＬ＿ｎにサーチデータが入力される。これによって、マッチ線ＭＬの電位がサーチ結果（入力サーチデータの対応部分とＴＣＡＭセルデータとの比較結果）に依存して変化する。すなわち、一致（ヒット：hit）の場合、マッチ線ＭＬの電位は電源電位ＶＤＤ（“Ｈ”レベル）のまま維持され、不一致（ミス：miss）の場合、マッチ線ＭＬの電荷が接地ノードに放電されるのでマッチ線のＭＬ電位は接地電位（“Ｌ”レベル）に変化する。
【００８２】
次に、マッチアンプイネーブル信号ｍａｅが活性化される（“Ｈ”レベルになる）。これによって、サーチ結果に基づくマッチ線ＭＬの電位が、インバータ７１および論理ゲート７５（インバータと同等）を介してマッチアンプ出力信号ｍｏとして出力される。マッチアンプイネーブル信号ｍａｅが非活性化される（“Ｌ”レベルになる）と、インバータとして機能する論理ゲート７５とインバータ７２とによって構成されるラッチ回路６９に、サーチ結果に基づくマッチ線ＭＬの電位が保持される。
【００８３】
一方、（ｉｉ）レジスタＲＥＧ１が“Ｈ”レベル（ドントケアを表す）に設定されている場合には、制御信号ｆｏｒｃｅ＿ｈｉｔは“Ｈ”レベルであるので、マッチアンプＭＡの出力信号ｍｏ（論理ゲート７５の出力信号）は、 “Ｈ”レベル（一致（hit）を表す）に固定される。さらに、この場合、マッチ線プリチャージ信号ｍｌｐｒｅ＿ｎは“Ｈ”レベル（非活性状態）であるので、マッチ線ＭＬのプリチャージは行われない。サーチ線イネーブル信号ｓｌｅは“Ｌ”レベル（非活性状態）であるので、サーチ線対ＳＬ，ＳＬ＿ｎはいずれも“Ｌ”レベルに固定されたままである（サーチ線ドライバ２２は動作しない）。マッチアンプイネーブル信号ｍａｅは“Ｌ”レベル（非活性状態）であるので、インバータ７１は非動作状態である。
【００８４】
［サーチ動作の一例］
以下、ある１つのサブアレイにおけるサーチ動作の例について、図１４および図１５のタイミング図を参照して説明する。
【００８５】
（レジスタＲＥＧ１に“０”が格納されている場合）
図１４は、図１０のサブアレイに設けられたレジスタＲＥＧ１に非ドントケアを表す“０”が格納されているときのサーチ動作を示すタイミング図である。図１４において、各サイクルはクロック信号ｃｌｋのポジティブエッジから次のポジティブエッジまでの期間である。制御論理回路２４から出力される制御信号ｆｏｒｃｅ＿ｈｉｔは、“Ｌ”レベルである。
【００８６】
図１４を参照して、Ｔ１サイクルへ切替わる付近で（Ｔ１サイクルの１つ前のサイクルの後半からＴ１サイクルの前半にかけて）、サーチコマンドとサーチデータとがＴＣＡＭ装置に入力される。Ｔ１サイクルの最初のクロック信号ｃｌｋの立上がりにおいて、サーチコマンドとサーチデータとが制御論理回路２４に取り込まれる。このサーチコマンドに応答して、次のＴ２サイクルの前半で制御論理回路２４は、マッチ線プリチャージ信号ｍｌｐｒｅ＿ｎを活性化する（“Ｌ”レベルにする）。これによって、マッチ線ＭＬが電源電位ＶＤＤまで充電される（プリチャージされる）。
【００８７】
サーチコマンドに応答して、Ｔ２サイクルの後半で、制御論理回路２４はサーチ線イネーブル信号ｓｌｅを活性化する（“Ｈ”レベルにする）。サーチ線イネーブル信号ｓｌｅが活性化する前に、マッチ線プリチャージ信号ｍｌｐｒｅ＿ｎは非活性化される（“Ｈ”レベルになる）。サーチ線イネーブル信号ｓｌｅの活性化によってサーチ線ドライバ２２が活性化され、サーチ線ドライバ２２はサーチデータｓｄをサーチ線対ＳＬ，ＳＬ＿ｎに転送する。この結果、マッチ線ＭＬに接続された全てのＴＣＡＭセルのセルデータと、サーチ線対ＳＬ，ＳＬ＿ｎを介して転送されたサーチデータｓｄとが一致した場合には（ヒット）、マッチ線ＭＬの電位は電源電位ＶＤＤ（“Ｈ”レベル）に維持される。マッチ線ＭＬに接続されたＴＣＡＭセルの格納値のうち１つでも、転送されたサーチデータｓｄと一致しない場合には（ミス）、マッチ線ＭＬにプリチャージされた電荷が放電されるために、マッチ線ＭＬの電位は接地電位（“Ｌ”レベル）に変化する。
【００８８】
サーチコマンドに応答して、Ｔ２サイクルの後半において、さらに、制御論理回路２４は、サーチ線イネーブル信号ｓｌｅを活性化した後でかつ非活性化する前に、マッチアンプイネーブル信号ｍａｅを活性化する（“Ｈ”レベルにする）。これによって、行（エントリ）ごとに、マッチアンプＭＡからマッチ線ＭＬの電位に基づく信号（サーチ結果）が出力される。同一のエントリに対応する複数のサブアレイ（マッチアンプＭＡ）でのサーチ結果は、ＡＮＤ演算された後にプライオリティ・エンコーダ３０に入力される。
【００８９】
次のＴ３サイクルにおいて、制御論理回路２４がマッチアンプイネーブル信号ｍａｅを非活性化する（“Ｌ”レベルにする）ことによって、各マッチ線ＭＬで検出されたサーチ結果は、対応するマッチアンプＭＡ内のラッチ回路６９に保持される。さらに、Ｔ３サイクルにおいて、プライオリティ・エンコーダ３０は、ヒットアドレス（サーチ結果）を出力する。ヒットアドレスが複数存在する場合には、最も優先度の高いものが出力される。
【００９０】
（レジスタＲＥＧ１に“１”が格納されている場合）
図１５は、図１０のサブアレイに設けられたレジスタＲＥＧ１にドントケアを表すデータ“１”が格納されているときのサーチ動作を示すタイミング図である。
【００９１】
図１５を参照して、電源立ち上げ時などにおいて、最初に（図１５では、Ｔ１サイクルの１つ前のサイクルの後半からＴ１サイクルの前半にかけて）、レジスタ書込みコマンドとドントケアを表すレジスタ設定データ（“Ｈ”レベル）とがＴＣＡＭ装置に入力される。Ｔ１サイクルの最初のクロック信号ｃｌｋの立上がりにおいて、レジスタ設定データ（“Ｈ”レベル）は、対応するサブアレイＳＡのレジスタＲＥＧ１に書込まれる。これによって、制御信号ｆｏｒｃｅ＿ｈｉｔが“Ｈ”レベルになり、各マッチアンプＭＡの出力信号ｍｏが“Ｈ”レベル（ヒットを表す）に固定される。
【００９２】
サーチ動作時において、最初に（図１５では、Ｔ２サイクルの後半からＴ３サイクルの前半にかけて）、サーチコマンドとサーチデータとがＴＣＡＭ装置に入力される。レジスタＲＥＧ１に“Ｌ”レベルが設定されている場合には、Ｔ３サイクルの最初のクロック信号ｃｌｋの立上がりにおいて、サーチコマンドが制御論理回路２４に取り込まれ、次のＴ４サイクルにおいてサーチ動作が実行される（図１４参照）。しかしながら、レジスタＲＥＧ１に“Ｈ”レベルが設定されている場合には、サーチコマンドが制御論理回路２４に取り込まれることはない。このため、次のＴ４サイクルにおいて、サーチ動作が開始されない。
【００９３】
このように、ある１つのサブアレイの全てのＴＣＡＭセルのセルデータがドントケアを表すデータの場合には、レジスタＲＥＧ１が“Ｈ”レベル（“１”）に設定される。この結果、当該サブアレイの各マッチアンプＭＡの出力が“Ｈ”レベル（ヒット）に固定されるとともに、当該サブアレイではサーチ動作（マッチ線のプリチャージおよびサーチ線ドライバの動作）が実行されないようになるので、省電力化を図ることができる。
【００９４】
［マッチアンプの構成の変形例］
たとえば、図９のＴＣＡＭ装置のサブアレイＳＡ［１５，１］，ＳＡ［１５，２］，ＳＡ［１５，３］については、データが格納されていないインバリッドエントリを含んでいる。すなわち、これらのサブアレイの各行は、全てのセルデータがドントケアに設定されているか、インバリッドエントリに該当するかのいずれかである。したがって、各行（エントリ）のサーチ結果は自明である。このような場合においても、図１０の制御論理回路２４内のレジスタＲＥＧ１を“Ｈ”レベル（“１”）に設定することによって、当該サブアレイではサーチ動作を行わないようにすることによって、低消費電力化を図ることができる。ただし、これらのサブアレイのうちインバリッドエントリに該当する行に関しては、マッチアンプＭＡがサーチ結果として“Ｌ”レベル（ミス）を出力するように変更する必要がある。
【００９５】
以下、上記のように、インバリッドエントリではサーチ結果としてミスを出力するように変更されたマッチアンプＭＡの構成について説明する。なお、図９で説明したように、インバリッドエントリ（Invalid Entry）とは、ＴＣＡＭ装置の総エントリのうちデータが格納されていない空きエントリを意味し、検索非対象エントリとなっている。一方、バリッドエントリ（Valid Entry）とは、ＴＣＡＭ装置の総エントリのうちデータが格納されている検索対象エントリである。
【００９６】
図１６は、図１０のマッチアンプの変形例を示す回路図である。図１６のマッチアンプＭＡは、ＡＮＤゲート７６とレジスタＲＥＧ２をさらに含む点で、図１０のマッチアンプと異なる。レジスタＲＥＧ２は、サブアレイの対応する行（エントリ）がインバリッドエントリの場合に“Ｌ”レベル（この明細書では“０”とする）に設定され、バリッドエントリの場合に“Ｈ”レベル（この明細書では“１”とする）に設定される。レジスタＲＥＧ２は、サブアレイＳＡの行ごとにマッチアンプＭＡに対応して設けられていればよいので、必ずしも図１６のようにマッチアンプＭＡの内部に設けられている必要はない。上記のレジスタＲＥＧ２の値の設定は、ＴＣＡＭ装置内部の専用回路が行ってもよいし、ＴＣＡＭ装置の外部（たとえば、図６のＮＰＵ１０１）から行うようにしてもよい。
【００９７】
ＡＮＤゲート７６は、レジスタＲＥＧ２から出力された制御信号ｖａｌ＿ｅｎｔと論理ゲート７５の出力信号とのＡＮＤ演算結果を、マッチアンプＭＡの出力信号ｍｏとして出力する。図１６のその他の構成は図１０の場合と同じであるので、同一または相当する部分には同一の参照符号を付して説明を繰返さない。
【００９８】
上記構成によれば、図１０および図１１で説明したレジスタＲＥＧ１が、ドントケアを表す“Ｈ”レベルの値（“１”）に設定されていた場合であっても、インバリッドエントリに対応するマッチアンプＭＡのレジスタＲＥＧ２を“Ｌ”レベルの値（“０”）に設定することによって、マッチアンプＭＡの出力信号ｍｏを“Ｌ”レベル（ミス）にすることができる。したがって、あるサブアレイの各行が、全てドントケアのセルデータによって構成されているか、インバリッドエントリに該当し、“１”または“０”のデータを格納するＴＣＡＭセルが含まれていない場合には、当該サブアレイでのサーチ動作を停止させた上で、各マッチアンプＭＡからヒット（ドントケアの場合）またはミス（インバリッドエントリの場合）を正常に出力させることができる。この結果、当該サブアレイの消費電力を低減させることができる。
【００９９】
［第１の実施形態の効果］
上記の実施形態によれば、サーチ結果が自明なサブアレイは、サーチ動作を行わないようにしたうえで、当該サブアレイから正常なサーチ結果を出力するように制御できる。具体的に、サブアレイに含まれるすべてのＴＣＡＭセルのデータがドントケアである場合には、各マッチアンプＭＡからヒットを表わす“Ｈ”レベルの信号が出力される。サブアレイの各行が、全てドントケアのセルデータによって構成されているか、インバリッドエントリに該当するかのいずれかである場合には、ドントケアの場合に対応するマッチアンプＭＡからヒットを表す“Ｈ”レベルの信号が出力され、インバリッドエントリの場合に対応するマッチアンプからミスを表す“Ｌ”レベルの信号が出力される。この結果、当該サブアレイの各マッチアンプＭＡは、マッチ線のプリチャージ電流および動作電流を発生しないので、ＴＣＡＭ装置の消費電力を低減させることができる。
【０１００】
さらに、サーチ結果が自明なサブアレイに対してサーチ動作を行わないことによって、サーチ動作時のピーク電流を低減させ、急激な電流変化を抑制することができる。さらに、急激な電流変化を抑制することによって、ＴＣＡＭ装置を搭載した半導体チップに供給する電源電圧の揺らぎを低減することができ、この結果、サーチ特性が安定した高品質なＴＣＡＭ装置を実現することができる。さらに、ＴＣＡＭ装置の消費電流およびサーチ動作時のピーク電流の削減によって、ＴＣＡＭ装置に接続する外部電源装置の必要能力（すなわち、電流の供給能力および応答性能など）を軽減することができるので、安価で高品質なデータ検索システムを実現することができる。
【０１０１】
＜第２の実施形態＞
［ＴＣＡＭサブアレイの構成］
図１７は、第２の実施形態によるＴＣＡＭ装置において、サブアレイＳＡの構成を示すブロック図である。図１７に示すサブアレイＳＡは、列方向（Ｙ方向）の両端に配置された２個の制御論理回路２４Ａ，２４Ｂと、列方向（Ｙ方向）の両端に配置された２個のサーチ線ドライバ２２Ａ，２２Ｂとを含む点で、図１０のサブアレイＳＡと異なる。図１７では図示していないが、書込みドライバについても列方向（Ｙ方向）の両端に配置されている。
【０１０２】
第０行から第（ｍ−１）／２行までのＴＣＡＭセル（セルアレイ２０Ａと称する）は、これらのＴＣＡＭセル（セルアレイ２０Ａ）に隣接するＳＬドライバ２２Ａ、マッチアンプ部２３Ａ、および制御論理回路２４Ａによって制御される。
【０１０３】
セルアレイ２０Ａがドントケアのデータのみを格納している場合には、制御論理回路２４Ａに設けられたレジスタＲＥＧ１Ａに“Ｈ”レベルの値（“１”）が設定される。この場合、制御論理回路２４Ａから出力される制御信号ｆｏｒｃｅ＿ｈｉｔは“Ｈ”レベル（“１”）となるので、マッチアンプ部２３Ａに設けられたマッチアンプ（不図示）からの出力信号ｍｏ［０］〜ｍｏ［（ｍ−１）／２］は“Ｈ”レベル（ヒット）に固定される。
【０１０４】
第（ｍ−１）／２＋１行から第ｍ行までのＴＣＡＭセル（セルアレイ２０Ｂと称する）は、これらのＴＣＡＭセル（セルアレイ２０Ｂ）に隣接するＳＬドライバ２２Ｂ、マッチアンプ部２３Ｂ、および制御論理回路２４Ｂによって制御される。
【０１０５】
セルアレイ２０Ｂがドントケアのデータのみを格納している場合には、制御論理回路２４Ｂに設けられたレジスタＲＥＧ１Ｂに“Ｈ”レベルの値（“１”）が設定される。この場合、制御論理回路２４Ｂから出力される制御信号ｆｏｒｃｅ＿ｈｉｔは“Ｈ”レベル（“１”）となるので、マッチアンプ部２３Ｂに設けられたマッチアンプ（不図示）からの出力信号ｍｏ［（ｍ−１）／２＋１］〜ｍｏ［ｍ］は“Ｈ”レベル（ヒット）に固定される。
【０１０６】
図１７のサブアレイＳＡのマッチアンプ部２３Ａ，２３Ｂに設けられた各マッチアンプ（不図示）は、図１６で説明したレジスタＲＥＧ２を有するマッチアンプＭＡの構成としてもよい。この場合、サブアレイＳＡのセルアレイ２０Ａ，２０Ｂのうちインバリッドエントリに該当する行のマッチアンプからの出力信号ｍｏは“Ｌ”レベル（ミス）となる。
【０１０７】
図１７のその他の点は、図１０などで説明した第１の実施形態の場合と同様であるので、同一または相当する部分については同一の参照符号を付して説明を繰返さない。
【０１０８】
［第２の実施形態の効果］
上記の構成のサブアレイを備えたＴＣＡＭ装置によれば、第１の実施形態のＴＣＡＭ装置と同様の効果を奏するとともに、さらに次のような効果を奏する。まず、第１の実施形態の図１０の構成のサブアレイに比べて、総エントリ（行）数が半分の領域に対してドントケア領域か否かの設定が可能になる。したがって、ドントケア領域が比較的小さなＡＣＬルールファイルに対しても省電力化を図ることができる。
【０１０９】
さらに、図１０の構成のサブアレイＳＡを複数配置する場合には、デザインルールの制約のために、サーチ線ドライバ２２などのドライバ回路とセルアレイ２０Ａとが近接しないように、隣合うサブアレイＳＡの間にある程度の間隔を設ける必要がある。これに対して、図１７の構成のサブアレイＳＡを複数配置する場合には、各サブアレイＳＡのサーチ線ドライバ２２Ａおよび制御論理回路２４Ａを、隣接するサブアレイＳＡのサーチ線ドライバ２２Ｂおよび制御論理回路２４Ｂに近接して配置することができるので、隣合うサブアレイの間隔を図１０の場合ほどあけなくてもよいというメリットがある。
【０１１０】
＜第３の実施形態＞
たとえば、図９のサブアレイＳＡ［６，１］，ＳＡ［１３，１］については、サブアレイ内の全ての行のＴＣＡＭセルがドントケアに設定されているわけではないので、図１０および図１１で説明したレジスタＲＥＧ１を“Ｈ”レベル（“１”）に設定することはできない。しかしながら、一部の行のＴＣＡＭセルについては全てドントケアに設定されているので、これらの一部の行についてはサーチ結果がヒットになることは自明である。
【０１１１】
そこで、第３の実施形態のＴＣＡＭ装置は、サブアレイの行ごとに、マッチ線ＭＬのプリチャージを停止し、マッチアンプＭＡの回路動作を行わないよう制御可能にしたものである。これによって一層の低消費電力化を図ることができる。以下、図面を参照して具体的に説明する。
【０１１２】
［マッチアンプの構成および動作］
図１８は、第３の実施形態によるＴＣＡＭ装置において、マッチアンプＭＡの構成を示す回路図である。図１８のマッチアンプＭＡは、レジスタＲＥＧ３、ＯＲゲート７７、ＡＮＤゲート７８、およびインバータ７９をさらに含む点で、図１３のマッチアンプＭＡと異なる。さらに、図１８のマッチアンプＭＡは、インバータ７４に代えてＮＯＲゲート８０を含む点で図１３のマッチアンプＭＡと異なる。
【０１１３】
マッチ線ＭＬを介してマッチアンプＭＡに接続された全てのＴＣＡＭセルのセルデータがドントケアに設定されている場合には、レジスタＲＥＧ３は“Ｈ”レベル（この明細書では“１”に対応する）に設定される。マッチ線ＭＬを介してマッチアンプＭＡに接続されているＴＣＡＭセルのうち少なくとも１つのセルデータがドントケアでない場合には、レジスタＲＥＧ３は“Ｌ”レベル（この明細書では“０”に対応する）に設定される。レジスタＲＥＧ３は、サブアレイＳＡの行ごとにマッチアンプＭＡに対応して設けられていればよいので、必ずしも図１８のようにマッチアンプＭＡの内部に設けられている必要はない。
【０１１４】
ＯＲゲート７７は、レジスタＲＥＧ３から出力された制御信号ｄｎｃ＿ｈｉｔとマッチ線プリチャージ信号ｍｌｐｒｅ＿ｎとのＯＲ演算を実行し、演算結果をＰチャネルＭＯＳトランジスタ７０のゲートに出力する。したがって、レジスタＲＥＧ３の設定値に従う制御信号ｄｎｃ＿ｈｉｔが“Ｈ”レベルのときは、ＭＯＳトランジスタ７０はオフ状態に固定されるので、マッチ線ＭＬのプリチャージは生じない。
【０１１５】
ＡＮＤゲート７８は、レジスタＲＥＧ３から出力された制御信号ｄｎｃ＿ｈｉｔの論理レベルをインバータ７９によって反転させた値とマッチアンプイネーブル信号ｍａｅとのＡＮＤ演算を行う。ＡＮＤゲート７８のＡＮＤ演算結果と、このＡＮＤ演算結果の論理レベルをインバータ７３によって反転させた信号とが、インバータ７１，７２の駆動電源ノードに供給される。したがって、レジスタＲＥＧ３の設定値に従う制御信号ｄｎｃ＿ｈｉｔが“Ｈ”レベルの場合には、インバータ７１は非動作状態となり、インバータ７２は動作状態となるので、マッチ線ＭＬの電位は後段の回路に出力されず、マッチ線ＭＬの電位のラッチも行われない。
【０１１６】
ＮＯＲゲート８０は、レジスタＲＥＧ３から出力された制御信号ｄｎｃ＿ｈｉｔと制御信号ｆｏｒｃｅ＿ｈｉｔとのＮＯＲ演算を行い、演算結果を論理ゲート７５（ＮＡＮＤゲート）の第２の入力ノードに入力する。したがって、レジスタＲＥＧ３（制御信号ｄｎｃ＿ｈｉｔ）が“Ｈ”レベルに設定されているときは、マッチアンプＭＡの出力信号ｍｏ（論理ゲート７５の出力信号）は、 “Ｈ”レベル（一致（hit）を表す）に固定される。
【０１１７】
以上のように、レジスタＲＥＧ３（制御信号ｄｎｃ＿ｈｉｔ）が“Ｈ”レベルに設定されているときは、レジスタＲＥＧ１が“Ｌ”レベルに設定されていたとしても、マッチアンプＭＡの出力信号ｍｏを“Ｈ”レベル（ヒット）に固定するとともに、マッチ線ＭＬのプリチャージおよびマッチアンプＭＡの回路動作を停止させることができる。
【０１１８】
図１８のその他の構成および動作は図１３と同様であるので、同一または相当する部分に同一の参照符号を付して説明を繰返さない。たとえば、制御論理回路２４に設けられたレジスタＲＥＧ１とマッチアンプＭＡに設けられたレジスタＲＥＧ３とが共に“Ｌ”レベル（非ドントケアを表す）に設定されている場合には、マッチアンプＭＡとマッチ線ＭＬを介して接続されたＴＣＡＭセルについては通常のサーチ動作が行われる。制御論理回路２４に設けられたレジスタＲＥＧ１が“Ｈ”レベル（ドントケアを表す）に設定されている場合には、サブアレイ全体のサーチ動作が停止される。
【０１１９】
［レジスタＲＥＧ３へのデータ設定方法］
以下、図１８〜図２１を参照して、レジスタＲＥＧ３へのデータ設定方法について説明する。
【０１２０】
図１８に示すように、レジスタＲＥＧ３には、レジスタ書込み信号ｒｅｇ＿ｗ＿ｓｉｇとレジスタデータｒｅｇ＿ｄａｔａとが入力される。レジスタＲＥＧ３は、レジスタ書込み信号ｒｅｇ＿ｗ＿ｓｉｇが活性化されたときに、レジスタデータｒｅｇ＿ｄａｔａを格納する。レジスタ書込み信号ｒｅｇ＿ｗ＿ｓｉｇおよびレジスタデータｒｅｇ＿ｄａｔａは、ＴＣＡＭ装置内部の専用回路から与えてもよいし、ＴＣＡＭ装置外部のプロセッサ（たとえば、図６のＮＰＵ１０１）から与えてもよい。
【０１２１】
特に、ＴＣＡＭ装置内部に専用回路（図１９のデータ判定回路３３）を設けた場合には、当該専用回路は、ＴＣＡＭ装置へのデータ書込み時に、共通のマッチ線ＭＬに接続された全てのＴＣＡＭセルへの書込みデータがドントケアであるか否かを判定し、判定結果に基づいて即座にレジスタＲＥＧ３に書込みを行うことができるので、都合がよい。当該専用回路は、共通のマッチ線ＭＬに接続された全てのＴＣＡＭセルがドントケアに設定される場合に、レジスタＲＥＧ３を“Ｈ”レベル（“１”）に設定し、そうでない場合に、レジスタＲＥＧ３を“Ｌ”レベル（“０”）に設定する。
【０１２２】
これに対して、ＴＣＡＭ装置の外部のプロセッサによってレジスタＲＥＧ３の設定を行う場合には、ＴＣＡＭ装置へのデータ書込み後に、外部のプロセッサがＴＣＡＭ装置からエントリごとにデータを読出して、上記の判定条件が満たされているか否かを判定することになる。したがって、ＴＣＡＭ装置内部に専用回路を設けるよりも、余計に手間がかかってしまう。
【０１２３】
以下、上記の専用回路（図１９のデータ判定回路３３）の動作について、図面を参照して詳しく説明する。
【０１２４】
図１９は、第３の実施形態によるＴＣＡＭ装置の構成を示すブロック図である。図１９のＴＣＡＭ装置は、データ判定回路３３［０］〜３３［３］（総称する場合または不特定のものを示す場合にデータ判定回路３３と記載する）をさらに含む点で、図４のＴＣＡＭ装置と異なる。
【０１２５】
図１９に示すように、データ判定回路３３［０］は、サブアレイＳＡ［０，０］，ＳＡ［１，０］，ＳＡ［２，０］，…に対応して設けられる。データ判定回路３３［０］は、コマンド入力回路３２を介して入力された書込みコマンドを検出したとき、対応するサブアレイへの書込みデータｄ［０：３１］に基づいて、同一行（エントリ）の全ての書込みデータがドントケアであるという条件が満たされているか否かを判定する。データ判定回路３３［０］は、上記の判定条件が満たされている場合に、当該行に対応するレジスタＲＥＧ３を“Ｈ”レベル（ドントケアを表す）に設定する。
【０１２６】
同様に、データ判定回路３３［１］は、サブアレイＳＡ［０，１］，ＳＡ［１，１］，ＳＡ［２，１］，…に対応して設けられ、対応するサブアレイへの書込みデータｄ［３２：６３］に基づいて、対応するサブアレイの各レジスタＲＥＧ３の設定を行う。データ判定回路３３［２］は、サブアレイＳＡ［０，２］，ＳＡ［１，２］，ＳＡ［２，２］，…に対応して設けられ、対応するサブアレイへの書込みデータｄ［６４：９５］に基づいて、対応するサブアレイの各レジスタＲＥＧ３の設定を行う。データ判定回路３３［３］は、サブアレイＳＡ［０，３］，ＳＡ［１，３］，ＳＡ［２，３］，…に対応して設けられ、対応するサブアレイへの書込みデータｄ［９６：１２７］に基づいて、対応するサブアレイの各レジスタＲＥＧ３の設定を行う。
【０１２７】
図２０は、図１９のデータ判定回路３３の動作を示すフローチャートである。図１９および図２０を参照して、ＴＣＡＭセルへのデータ書込み時に、データ入力回路３１は、エントリごとに、各ＴＣＡＭセルのＸセル（図１参照）用の書込みデータを出力し、次にＹセル用の書込みデータを出力する。データ入力回路３１から順次出力されたＸセル用およびＹセル用の書込みデータｄ［０：３１］，ｄ［３２：６３］，ｄ［６４：９５］，ｄ［９６：１２７］は、３２ビットごとに対応するサブアレイＳＡの書込みドライバ２１に入力され、書込みドライバ２１から各ビット線対ＢＬ，ＢＬ＿ｎに出力される。Ｘセル用およびＹセル用の書込みデータｄ［０：３１］，ｄ［３２：６３］，ｄ［６４：９５］，ｄ［９６：１２７］は、３２ビットごとに対応するデータ判定回路３３に入力される。言い替えると、データ判定回路３３は、同一マッチラインに接続された書込み対象であるＴＣＡＭセルのＸセルおよびＹセル用の書込みデータを順次受信する（ステップＳ１００）。
【０１２８】
次に、データ判定回路３３は、受信した３２ビットのＸセル用の書込みデータの全ビットと３２ビットのＹセル用の書込みデータの全ビットとが全て“０”であるという条件が満たされているか否かを判定する（ステップＳ１１０）。具体的には、データ判定回路３３は、Ｘセル用の書込みデータの全ビットのＯＲ演算を行い、さらに、Ｙセル用の書込みデータの全ビットのＯＲ演算を行う。データ判定回路３３は、これらのＯＲ演算の演算結果のＮＯＲ演算を実行し、最終的に得られた値が“１”（ドントケア）であるか“０”（非ドントケア）であるかを判定する。
【０１２９】
上記のＸセル用データおよびＹセル用データの全ビットが“０”であるという判定条件が満たされている場合、すなわち、上記の論理演算によって最終的に得られた値が“１”（ドントケア）である場合（ステップＳ１１０でＹＥＳ）、データ判定回路３３は、書込み対象のエントリに対応するレジスタＲＥＧ３を、ドントケアを表す値“１”（“Ｈ”レベル）に設定する（ステップＳ１２０）。レジスタＲＥＧ３に値“１”を設定するタイミングは、ＴＣＡＭセルにデータを書込むタイミングと同じでよい。
【０１３０】
逆に、上記の判定条件が満たされていない場合、すなわち、上記の論理演算によって最終的に得られた値が“０”（非ドントケア）である場合（ステップＳ１１０でＮＯ）、データ判定回路３３は、書込み対象のエントリに対応するレジスタＲＥＧ３を、非ドントケアを表す値“０”（“Ｌ”レベル）に設定する（ステップＳ１３０）。
【０１３１】
図２１は、第３の実施形態のＴＣＡＭ装置において、図１８のレジスタＲＥＧ３へのデータ書込み手順を示すタイミング図である。図２１において、各サイクルはクロック信号ｃｌｋのポジティブエッジから次のポジティブエッジまでの期間である。
【０１３２】
図１９および図２１を参照して、最初に、Ｔ１サイクルへ切替わる付近で（Ｔ１サイクルの１つ前のサイクルの後半からＴ１サイクルの前半にかけて）、Ｘセル用の書込みデータ（１２８ビット）とＸセルへの書込みを指令するためのコマンドとが、それぞれ、データ入力回路３１とコマンド入力回路３２とに入力される。データ入力回路３１は、入力されたＸセル用データ（１２８ビット）を、３２ビットごとに分割し、分割後のＸセル用データ（３２ビット）の各々を対応するサブアレイＳＡおよび対応するデータ判定回路３３に出力する。コマンド入力回路３２は、入力されたコマンド（Ｘセルへの書込み）を各サブアレイＳＡおよび各データ判定回路３３に出力する。Ｔ１サイクルにおいて、各データ判定回路３３は、対応する３２ビット分のＸセル用データを取り込む。
【０１３３】
次に、Ｔ２サイクルへ切替わる付近で（Ｔ１サイクルの後半からＴ２サイクルの前半にかけて）、Ｙセル用の書込みデータ（１２８ビット）とＹセルへの書込みを指令するためのコマンドとが、それぞれ、データ入力回路３１とコマンド入力回路３２とに入力される。データ入力回路３１は、入力されたＹセル用データ（１２８ビット）を、３２ビットごとに分割し、分割後のＹセル用データ（３２ビット）の各々を対応するサブアレイＳＡおよび対応するデータ判定回路３３に出力する。コマンド入力回路３２は、入力されたコマンド（Ｙセルへの書込み）を各サブアレイＳＡおよび各データ判定回路３３に出力する。
【０１３４】
Ｔ２サイクルにおいて、各データ判定回路３３は、対応する３２ビット分のＹセル用の書込みデータを取り込む。さらに、各データ判定回路３３は、Ｔ１サイクルで取り込んだＸセル用データの全ビットのＯＲ演算を行い、演算結果（“０”または“１”）を、たとえば、データ判定回路３３ごとに設けられた２ビットのシフトレジスタの第１ビット目に保持する。
【０１３５】
次のＴ３サイクルにおいて、Ｘセル用データのＯＲ演算結果は、シフトレジスタの第２ビット目にシフトされる。各データ判定回路３３は、Ｔ２サイクルで取り込んだＹセル用データの全ビットのＯＲ演算を行い、演算結果（“０”または“１”）を、上記のシフトレジスタの第１ビット目に保持する。その後、各データ判定回路３３は、対応するシフトレジスタの第１ビット目と第２ビット目とのＮＯＲ演算を行う（すなわち、Ｔ２サイクルで得られたＸセル用データのＯＲ演算結果とＴ３サイクルで得られたＹセル用データのＯＲ演算結果とのＮＯＲ演算がさらに実行される）。以上の論理演算の最終的な結果が“１”の場合は、３２ビットのＸセル用データおよび３２ビットのＹセル用データの各ビットは全て“０”であること、すなわち、３２ビットの書込みデータの全ビットがドントケアであることがわかる。
【０１３６】
次のＴ４サイクルにおいて、データ判定回路３３は、ＮＯＲ演算結果をレジスタデータｒｅｇ＿ｄａｔａとして、対応するサブアレイＳＡの各レジスタＲＥＧ３に出力する。データ判定回路３３は、Ｔ４サイクルのクロック信号ｃｌｋのネガティブエッジで、書込み対象エントリに対応するマッチアンプＭＡに設けられたレジスタＲＥＧ３に供給されるレジスタ書込み信号ｒｅｇ＿ｗ＿ｓｉｇを活性化する（“Ｈ”レベルにする）。この結果、書込み対象エントリのＴＣＡＭセルの値が全てドントケアの場合には、レジスタＲＥＧ３に“１”（“Ｈ”レベル）が設定され、そうでない場合（非ドントケアの場合）には、レジスタＲＥＧ３に“０”（“Ｌ”レベル）が設定される。レジスタ書込み信号ｒｅｇ＿ｗ＿ｓｉｇをクロック信号ｃｌｋのネガティブエッジで発生させる理由は、セットアップ時間およびホールド時間を十分に確保するためである。
【０１３７】
［マッチアンプの変形例］
図２２は、図１８のマッチアンプＭＡの変形例を示すブロック図である。図２２のマッチアンプＭＡは、対応する行がデータの格納されていないインバリッドエントリの場合にも適用可能なものである。
【０１３８】
具体的に、図２２のマッチアンプＭＡは、レジスタＲＥＧ２、ＡＮＤゲート７６、インバータ８１、およびＯＲゲート８２をさらに含む点で図１８のマッチアンプＭＡと異なる。
【０１３９】
レジスタＲＥＧ２は、サブアレイの対応する行がインバリッドエントリの場合に“Ｌ”レベル（この明細書では“０”とする）に設定され、バリッドエントリの場合に“Ｈ”レベル（この明細書では“１”とする）に設定される。レジスタＲＥＧ２は、サブアレイＳＡの行ごとにマッチアンプＭＡに対応して設けられていればよいので、必ずしも図２２のようにマッチアンプＭＡの内部に設けられている必要はない。上記のレジスタＲＥＧ２の値の設定は、ＴＣＡＭ装置内部の専用回路が行ってもよいし、ＴＣＡＭ装置の外部（たとえば、図６のＮＰＵ１０１）から行うようにしてもよい。
【０１４０】
ＡＮＤゲート７６は、レジスタＲＥＧ２から出力された制御信号ｖａｌ＿ｅｎｔと論理ゲート７５の出力信号とのＡＮＤ演算結果を、マッチアンプＭＡの出力信号ｍｏとして出力する。したがって、レジスタＲＥＧ１の設定値が“１”（ドントケア）であるか、または、レジスタＲＥＧ３の設定値が“１”（ドントケア）であったとしても、レジスタＲＥＧ２の設定値が“０”（インバリッド）であれば、レジスタＲＥＧ２のインバリッド設定が優先されるため、マッチアンプＭＡの出力信号ｍｏを“Ｌ”レベル（ミス）にすることができる。
【０１４１】
ＯＲゲート８２は、レジスタＲＥＧ３から出力された制御信号ｄｎｃ＿ｈｉｔと、レジスタＲＥＧ２から出力された制御信号ｖａｌ＿ｅｎｔの論理レベルをインバータ８１によって反転させた値とのＯＲ演算を行う。
【０１４２】
ＯＲゲート７７は、ＯＲゲート８２の出力値とマッチ線プリチャージ信号ｍｌｐｒｅ＿ｎとのＯＲ演算を実行し、演算結果をＰチャネルＭＯＳトランジスタ７０のゲートに出力する。したがって、レジスタＲＥＧ３の設定値に従う制御信号ｄｎｃ＿ｈｉｔが“Ｈ”レベル（ドントケア）の場合、および／または、レジスタＲＥＧ２の設定値に従う制御信号ｖａｌ＿ｅｎｔが“Ｌ”レベル（インバリッド）の場合に、ＭＯＳトランジスタ７０はオフ状態に固定されるので、マッチ線ＭＬのプリチャージは生じない。
【０１４３】
ＡＮＤゲート７８は、ＯＲゲート８２の出力値の論理レベルをインバータ７９によって反転させた値とマッチアンプイネーブル信号ｍａｅとのＡＮＤ演算を行う。ＡＮＤゲート７８のＡＮＤ演算結果と、このＡＮＤ演算結果の論理レベルをインバータ７３によって反転させた信号とが、インバータ７１，７２の駆動電源ノードに供給される。したがって、レジスタＲＥＧ３の設定値に従う制御信号ｄｎｃ＿ｈｉｔが“Ｈ”レベル（ドントケア）の場合、および／または、レジスタＲＥＧ２の設定値に従う制御信号ｖａｌ＿ｅｎｔが“Ｌ”レベル（インバリッド）の場合には、インバータ７１は非動作状態となり、インバータ７２は動作状態となるので、マッチ線ＭＬの電位は後段の回路に出力されず、マッチ線ＭＬの電位のラッチも行われない。
【０１４４】
図２２のその他の構成は図１８の場合と同じであるので、同一または相当する部分には同一の参照符号を付して説明を繰返さない。
【０１４５】
このように、マッチアンプＭＡに対応する行がインバリッドエントリの場合にもサーチ結果が自明（ミスになる）であるため、マッチ線ＭＬのプリチャージ動作が停止され、マッチアンプＭＡの回路動作が停止される。この場合には、マッチアンプＭＡの出力信号が“Ｌ”レベル（ミス）に固定されることによって、正常なサーチ結果が出力される。
【０１４６】
図２２において、インバータ８１およびＯＲゲート８２を設けないような変形例も可能である。すなわち、レジスタＲＥＧ２から出力された制御信号ｖａｌ＿ｅｎｔは、ＡＮＤゲート７６にのみ入力される。この場合、レジスタＲＥＧ２を“０”（インバリッド）に設定しただけでは、対応するマッチ線ＭＬのプリチャージを停止したり、マッチアンプＭＡの回路動作を停止したりすることができない。したがって、レジスタＲＥＧ２を“０”（インバリッド）に設定した場合には、必ず、レジスタＲＥＧ３を“１”（ドントケア）に設定する必要がある。
【０１４７】
［第３の実施形態の効果］
上記のとおり、サブアレイ内の全てのセルデータがドントケアでない場合であっても、全セルデータがドントケアである行（以下、「ドントケアエントリ」と称する）を含んでいる場合、もしくは、データが設定されていないインバリッドエントリを含んでいる場合には、当該行のサーチ結果は自明である。このような場合には、当該行（ドントケアエントリまたはインバリッドエントリ）のマッチ線ＭＬのプリチャージ動作が停止され、マッチアンプＭＡの回路動作が停止される。これによって、ＴＣＡＭ装置の消費電力を低減させることができる。そして、ドントケアエントリに対応するマッチアンプＭＡからの出力信号を“Ｈ”レベル（ヒット）に固定し、インバリッドエントリに対応するマッチアンプＭＡからの出力信号を“Ｌ”レベル（ミス）に固定することによって、正常なサーチ動作を行うことができる。
【０１４８】
第３の実施形態のＴＣＡＭ装置によれば、サブアレイ内にドントケアエントリまたはインバリッドエントリが散在している場合に有効な低消費電力化手段を与えることができる。
【０１４９】
＜第４の実施形態＞
第４の実施形態のＴＣＡＭ装置では、図１０および図１１で説明した、サブアレイ全体のサーチ動作を停止可能するためのレジスタＲＥＧ１が設けられていない場合について説明する。この場合、図１８および図２２で説明したマッチアンプＭＡごとに設けられているレジスタＲＥＧ３の設定値に基づいて、サブアレイ全体のサーチ動作を停止するか否かが判定される。以下、図面を参照して詳しく説明する。
【０１５０】
［サブアレイの構成］
図２３は、第４の実施形態によるＴＣＡＭ装置において、サブアレイの構成を模式的に示すブロック図である。図２３のサブアレイＳＡは、制御論理回路２４内のレジスタＲＥＧ１が設けられておらず、このレジスタＲＥＧ１に代えて論理積回路２７が設けられている点で、図１０のサブアレイＳＡと異なる。図２３のその他の構成は図１０と同様であるので、同一または相当する部分には同一の参照符号を付して説明を繰返さない。
【０１５１】
論理積回路２７は、ＴＣＡＭセルアレイ２０の行ごとに（マッチ線ＭＬごとに）設けられたレジスタＲＥＧ３［０］〜ＲＥＧ３［ｍ］のそれぞれの設定値ｄｎｃ＿ｈｉｔ［０］〜ｄｎｃ＿ｈｉｔ［ｍ］の論理積を演算し、演算結果を制御信号ｆｏｒｃｅ＿ｈｉｔとして出力する。制御信号ｆｏｒｃｅ＿ｈｉｔは、制御論理回路２４に入力される。既に説明したように、レジスタＲＥＧ３は、サブアレイ内の対応する行のセルデータが全てドントケアであるときに“１”（“Ｈ”レベル）に設定され、そうでない場合に“０”（“Ｌ”レベル）に設定される。したがって、サブアレイ内の全てのセルデータがドントケアの場合に制御信号ｆｏｒｃｅ＿ｈｉｔは“Ｈ”レベル（“１”）になり、そうでない場合に制御信号ｆｏｒｃｅ＿ｈｉｔは“Ｌ”レベル（“０”）になる。
【０１５２】
［制御論理回路の構成］
図２４は、図２３の制御論理回路２４において、検索動作に関係する部分の構成を示す回路図である。図２４の制御論理回路２４は、レジスタＲＥＧ１を含まない点で図１１の制御論理回路２４と異なる。図２４の場合、インバータ４２への入力される制御信号ｆｏｒｃｅ＿ｈｉｔは、図２３の論理積回路２７から与えられる。
【０１５３】
さらに、図２４の場合、制御信号ｆｏｒｃｅ＿ｈｉｔは制御論理回路２４から各マッチアンプＭＡに出力されない。したがって、図１８および図２２のマッチアンプＭＡでは、ＮＯＲゲート８０に代えて、レジスタＲＥＧ３から出力された制御信号ｄｎｃ＿ｈｉｔの論理レベルを反転するためのインバータが設けられる。このインバータの出力信号が論理ゲート７５に入力される。図２４のその他の構成は図１１と同様であるので、同一または相当する部分には同一の参照符号を付して説明を繰返さない。
【０１５４】
［第４の実施形態の効果］
上記の構成によれば、サブアレイ内の全てのセルデータがドントケアに設定されており、これによって、サブアレイ内の行ごとに設けられたレジスタＲＥＧ３が全てドントケアに設定されている場合には、自動的にサブアレイのサーチ動作を停止することができる。図１９〜図２１で説明したように、レジスタＲＥＧ３の値の設定については、データ判定回路３３を用いて自動的に行うことができるので、レジスタＲＥＧ１の値を設定するために、ＴＣＡＭ装置へのデータ書込み後にＴＣＡＭセルデータの内容を解析する必要がないというメリットがある。
【０１５５】
変形例として、図１０および図１１で説明したレジスタＲＥＧ１と、図２３の論理積回路２７とのいずれも設けないという構成が考えられる。しかし、この変位例の構成において、サブアレイ内の全てのセルデータがドントケアに設定されていた場合には、全てのマッチ線ＭＬのプリチャージ動作を停止し、全てのマッチアンプＭＡの回路動作を停止することはできるけれども、サーチ線ドライバ２２の動作を停止することができない。上記の実施形態では、全てのサーチ動作が停止可能か否かを判定するために、論理積回路２７が設けられている。
【０１５６】
＜第５の実施形態＞
［バッファアンプ部の構成について］
図２５は、制御論理回路２４からの出力信号のために用いられるバッファアンプの配置について説明するための図である。
【０１５７】
図１１の制御論理回路２４から出力された制御信号ｆｏｒｃｅ＿ｈｉｔ、マッチ線プリチャージ信号ｍｌｐｒｅ＿ｎ、およびマッチアンプイネーブル信号ｍａｅは、サブアレイ内の全てのマッチアンプＭＡに出力される。したがって、サブアレイごとのエントリ数が多い場合には、バッファアンプを設ける必要がある。このため、図２５の場合には、４個のマッチアンプＭＡごとにバッファアンプ部８４が設けられている。
【０１５８】
図２５を参照して、バッファアンプ部８４は、４個のマッチアンプＭＡ［０］，ＭＡ［１］，ＭＡ［２］，ＭＡ［３］に対応して設けられ、バッファ８５，８６，８７を含む。マッチ線プリチャージ信号ｍｌｐｒｅ＿ｎは、バッファ８５によって整形された後に、対応する４個のマッチアンプＭＡ［０］，ＭＡ［１］，ＭＡ［２］，ＭＡ［３］の各々のＯＲゲート７７に入力される。マッチアンプイネーブル信号ｍａｅは、バッファ８６によって整形された後に、対応する４個のマッチアンプＭＡ［０］，ＭＡ［１］，ＭＡ［２］，ＭＡ［３］の各々のＡＮＤゲート７８に入力される。制御信号ｆｏｒｃｅ＿ｈｉｔは、バッファ８７によって整形された後に、対応する４個のマッチアンプＭＡ［０］，ＭＡ［１］，ＭＡ［２］，ＭＡ［３］の各々のＮＯＲゲート８０に入力される。
【０１５９】
なお、図２５では、マッチアンプＭＡ［０］，ＭＡ［１］，ＭＡ［２］について、それぞれレジスタＲＥＧ３［０］，ＲＥＧ３［１］，ＲＥＧ３［２］を除く部分の回路部分８３は、マッチアンプＭＡ［３］の回路部分８３と同一構成であるので、図示を省略している。
【０１６０】
［バッファアンプ部の変形例］
図２６は、第５の実施形態のＴＣＡＭ装置において、バッファアンプ部の構成を説明するための図である。図２６のバッファアンプ部８４は、低消費電力化のために、図２５のバッファアンプ部８４の構成を変更したものである。
【０１６１】
具体的に、図２６のバッファアンプ部では、図２５のバッファに代えて論理ゲートを設けることによって、入力波形の整形機能に加えて論理演算が可能になっている。すなわち、図２６のバッファアンプ部８４では、バッファ８５に代えてＯＲゲート８９が設けられ、バッファ８６に代えてＡＮＤゲート９０およびインバータ９１が設けられ、バッファ８７に代えてＯＲゲート９２が設けられている。
【０１６２】
さらに、図２６のバッファアンプ部８４は、対応するマッチアンプＭＡ［０］〜ＭＡ［３］に設けられたレジスタＲＥＧ３［０］〜ＲＥＧ３［３］から出力された制御信号ｄｎｃ＿ｈｉｔ［０］〜ｄｎｃ＿ｈｉｔ［３］のＡＮＤ演算を行うＡＮＤゲート８８を含む。ＡＮＤゲート８８は、レジスタＲＥＧ３［０］〜ＲＥＧ３［３］から出力された制御信号ｄｎｃ＿ｈｉｔ［０］〜ｄｎｃ＿ｈｉｔ［３］が全てドントケアを表す“Ｈ”レベル（設定値“１”に対応）の場合、“Ｈ”レベルの信号を出力する。
【０１６３】
ＯＲゲート８９は、マッチ線プリチャージ信号ｍｌｐｒｅ＿ｎとＡＮＤゲート８８の出力信号とのＯＲ演算結果を、局所的なマッチ線プリチャージ信号ｍｌｐｒｅ＿ｌｏｃａｌ＿ｎとして、対応するマッチアンプＭＡ［０］〜ＭＡ［３］に出力する。ＡＮＤゲート９０は、マッチアンプイネーブル信号ｍａｅと、ＡＮＤゲート８８の出力信号の論理レベルをインバータ９１によって反転させた信号とのＡＮＤ演算結果を、局所的なマッチアンプイネーブル信号ｍａｅ＿ｌｏｃａｌとして、対応するマッチアンプＭＡ［０］〜ＭＡ［３］に出力する。ＯＲゲート９２は、制御信号ｆｏｒｃｅ＿ｈｉｔとＡＮＤゲート８８の出力信号とのＯＲ演算結果を、局所的な制御信号ｆｏｒｃｅ＿ｈｉｔ＿ｌｏｃａｌとして、対応するマッチアンプＭＡ［０］〜ＭＡ［３］に出力する。
【０１６４】
したがって、対応するレジスタＲＥＧ３［０］〜ＲＥＧ３［３］から出力された制御信号ｄｎｃ＿ｈｉｔ［０］〜ｄｎｃ＿ｈｉｔ［３］が全てドントケアを表す“Ｈ”レベル（“１”に対応する）の場合、局所的なマッチ線プリチャージ信号ｍｌｐｒｅ＿ｌｏｃａｌ＿ｎは“Ｈ”レベルに固定され、局所的なマッチアンプイネーブル信号ｍａｅ＿ｌｏｃａｌは“Ｌ”レベルに固定される。さらに、この場合、局所的な制御信号ｆｏｒｃｅ＿ｈｉｔ＿ｌｏｃａｌは“Ｈ”レベルに固定される。このため、これらの局所的な制御信号を伝達するための配線の充放電に要する電流消費を低減することができる。さらに、上記のバッファアンプ部は、第１〜第４の実施形態においても必要な回路を変形したものであるので、実質的な面積の増加はほとんど生じない。
【０１６５】
＜第６の実施形態＞
図２７は、電源立ち上げ後において、各レジスタＲＥＧ１，ＲＥＧ２，ＲＥＧ３へのデータ書込みの手順について説明するための図である。図２７では、３つのサブアレイＳＡ［０，０］，ＳＡ［１，０］，ＳＡ［２，０］が代表的に示されている。各サブアレイには、図１０および図１１で説明したレジスタＲＥＧ１が制御論理回路２４に設けられ、図１８および図２２で説明したレジスタＲＥＧ２，ＲＥＧ３が行ごとに設けられる。
【０１６６】
レジスタＲＥＧ１は、サブアレイ全体のセルデータがドントケア（“１”）であるか、そうでない非ドントケア（“０”）であるかを設定するためのものである。レジスタＲＥＧ２は、対応する行が各ＴＣＡＭセルにデータが書込まれたバリッドエントリ（“１”）であるか、データ書き込まれていないインバリッドエントリ（“０”）であるかを示すものである。レジスタＲＥＧ３は、対応する行のセルデータが全てドントケア（“１”）であるか、そうでない非ドントケア（“０”）であるかを設定するためのものである。
【０１６７】
各レジスタへのデータの書込みは、ＴＣＡＭ装置内部の専用回路（たとえば、図１９のデータ判定回路３３）から行ってもよいし、ＴＣＡＭ装置外部のプロセッサ（たとえば、図６のＮＰＵ１０１）から行ってもよい。
【０１６８】
図２７（Ａ）を参照して、電源立ち上げ直後には、全てのレジスタＲＥＧ１，ＲＥＧ２，ＲＥＧ３が不定状態となっている。図２７（Ａ）において、レジスタが不定状態であることを、ハッチングを付して示している。
【０１６９】
図２７（Ｂ）を参照して、ＴＣＡＭ装置にデータを書込む前の初期状態において、各レジスタＲＥＧ１に“１”（ドントケア）が設定され、各レジスタＲＥＧ２に“０”（インバリッド）が設定され、各レジスタＲＥＧ３に“１”（ドントケア）が設定される。
【０１７０】
図２７（Ｃ）は、ＴＣＡＭ装置にＡＣＬルールファイルを書き込んだ後の状態（サーチ可能状態）を模式的に表すものである。図２７（Ｃ）に示すように、サブアレイＳＡ［０，０］の全ての行のＴＣＡＭセルには、データが書き込み済みである。サブアレイＳＡ［１，０］の一部の行のＴＣＡＭセルにはデータが書き込まれていない。サブアレイＳＡ［２，０］のいずれの行のＴＣＡＭセルにもデータは書き込まれていない。
【０１７１】
ある行のＴＣＡＭセルにデータを書込む際には、当該行に対応するレジスタＲＥＧ２の値は“０”（インバリッド）から“１”（バリッド）に変更され、レジスタＲＥＧ３の値は、多くの場合、“１”（ドントケア）から“０”（非ドントケア）に変更される。ただし、当該行の全てのセルデータがドントケアの場合には、レジスタＲＥＧ３の値は“１”のまま維持される。さらに、サブアレイ内のいずれかのＴＣＡＭセルに“１”または“０”の値（すなわち、ドントケア以外）を書き込んだ時点で、レジスタＲＥＧ１の値は“１”（ドントケア）から“０”（非ドントケア）に変更される。
【０１７２】
以上の手順に従って、各レジスタへのデータ書込みが行われた結果、図２７（Ｃ）に示すように、全行のＴＣＡＭセルにデータが書き込まれたサブアレイＳＡ［０，０］については、レジスタＲＥＧ１は“０”（非ドントケア）に設定され、各レジスタＲＥＧ２は“１”（バリッド）に設定され、各レジスタＲＥＧ３は“０”（非ドントケア）に設定される。各行に対応するマッチアンプＭＡは、各ＴＣＡＭセルに書込まれたデータとサーチデータの対応部分との比較結果に基づいて、“Ｈ”レベル（マッチ）または“Ｌ”レベル（ミス）の信号を出力する。
【０１７３】
一部の行のＴＣＡＭセルのデータ書込みが行われたサブアレイＳＡ［１，０］については、レジスタＲＥＧ１は“０”（非ドントケア）に設定される。データ書込みが行われたバリッドエントリに対応するレジスタＲＥＧ２およびＲＥＧ３はそれぞれ“１”（バリッド）および“０”（非ドントケア）に設定される。これらの行に対応するマッチアンプＭＡはサーチ結果に基づく信号（“Ｈ”レベル（マッチ）または“Ｌ”レベル（ミス））を出力する。
【０１７４】
一方、サブアレイＳＡ［１，０］において、データ書込みが行われていないインバリッドエントリに対応するレジスタＲＥＧ２およびＲＥＧ３の値は、それぞれ初期設定された“０”（インバリッド）および“１”（ドントケア）のまま変更がない。これらの行に対応するマッチアンプＭＡは、レジスタＲＥＧ２の値“０”（インバリッド）に従って“Ｌ”レベル（ミス）の信号を出力する。さらに、これらの未使用の領域については、レジスタＲＥＧ２およびＲＥＧ３の値が“０”（インバリッド）および“１”（ドントケア）にそれぞれ設定されていることによって、マッチ線ＭＬのプリチャージ動作が停止され、マッチアンプＭＡの回路動作が停止される。これによって、ＴＣＡＭ装置の消費電力を低減させることができる。
【０１７５】
サブアレイ内の全ＴＣＡＭセルについてデータ書込みが行われていないサブアレイＳＡ［２，０］については、レジスタＲＥＧ１，ＲＥＧ２，ＲＥＧ３の値は、それぞれ初期設定された“１”（ドントケア）、“０”（インバリッド）、および“１”（ドントケア）のまま変更がない。各行に対応するマッチアンプＭＡはレジスタＲＥＧ２の値“０”（インバリッド）に従って“Ｌ”レベル（ミス）の信号を出力する。レジスタＲＥＧ１の値が“１”（ドントケア）に設定されていることによって、サブアレイＳＡ［２，０］のサーチ動作を停止することができるので（すなわち、マッチ線ＭＬのプリチャージ、マッチアンプＭＡの回路動作、およびサーチ線ドライバ２２のいずれも停止することができる）、消費電流を低減することができる。
【０１７６】
このように、各レジスタＲＥＧ１，ＲＥＧ２，ＲＥＧ３の値を初期設定し、ＴＣＡＭセルへのデータ書込み時に、書込みデータの値に応じて各レジスタＲＥＧ１，ＲＥＧ２，ＲＥＧ３の値を変更することによって、効率良く容易に各レジスタの値が設定可能になる。
【０１７７】
なお、マッチアンプＭＡが図２２のように構成されていれば、レジスタＲＥＧ３の値が“０”（非ドントケア）に設定されていても、レジスタＲＥＧ２の値が“０”（インバリッド）に設定されておれば、マッチ線ＭＬのプリチャージおよびマッチアンプＭＡの回路動作を停止することができる。したがって、この場合には、図２７（Ｂ）の初期設定において、各レジスタＲＥＧ３の値を“０”（非ドントケア）に設定してもよい。
【０１７８】
＜第７の実施形態＞
上述した第１〜第６の実施形態で説明したＴＣＡＭ装置の低消費電力化技術は、各サブアレイのマッチ線ＭＬに接続されたＴＣＡＭセルが全てドントケア（don't care）に設定されている場合にのみ適用することができる。したがって、ドントケアに設定された比較的多数のＴＣＡＭセルが連続して並んでいたとしても、これらのＴＣＡＭセルが２つのマッチ線に跨っており、各マッチ線には“１”または“０”に設定されたＴＣＡＭセルも含まれている場合には、前述した低消費電力化技術を適用することはできない。
【０１７９】
第７の実施形態では、上記のような場合に、ＴＣＡＭセルデータの配列を変更することによって、前述の低消費電力化技術を適用可能にするものである。以下、図面を参照して詳しく説明する。なお、以下の説明で用いる入力データのビット幅、入力データの分割数などは一例であって、この例に限られるものではない。
【０１８０】
図２８は、入力データの配列変換について説明するための図である。図２８（Ａ）では、入力データのビット幅が３２ビットの場合に、配列変換を行わずにそのままの順序で２個のサブアレイＳＡ＿０，ＳＡ＿１に入力される例が示されている。すなわち、データ書込み時に、３２ビットの書込みデータのうち前半の１６ビットの書込みデータ（ビット番号０〜１５）がサブアレイＳＡ＿０の１６個のＴＣＡＭセル（ビット番号０〜１５）にそれぞれ書込まれ、後半の１６ビットの書込みデータ（ビット番号１６〜３１）がサブアレイＳＡ＿１の１６個のＴＣＡＭセル（ビット番号１６〜３１）にそれぞれ書込まれる。サーチ時についても同様に、３２ビットの入力サーチデータのうち前半の１６ビットのサーチデータ（ビット番号０〜１５）がサブアレイＳＡ＿０の１６個のＴＣＡＭセル（ビット番号０〜１５）にそれぞれ入力され、後半の１６ビットのサーチデータ（ビット番号１６〜３１）がサブアレイＳＡ＿１の１６個のＴＣＡＭセル（ビット番号１６〜３１）にそれぞれ入力される。
【０１８１】
ここで、データの配列変換を行わない場合には、図２８（Ａ）に示すように、ビット番号０からビット番号９までと、ビット番号２９からビット番号３１までの各ＴＣＡＭセル（図中の黒四角）には、“１”または“０”のデータが書き込まれているものとする。ビット番号１０からビット番号２８までの連続する１９個のＴＣＡＭセル（図中のハッチングされた四角）の各々にはドントケアを表すデータが書き込まれているものとする。この場合、ドントケアを表すデータビット数は１６以上あって連続しているが、これらのドントケアを表すデータが格納されたＴＣＡＭセルは、サブアレイＳＡ＿０とサブアレイＳＡ＿１とに跨っている。このために、各マッチ線ＭＬ＿０，ＭＬ＿１には、ドントケアに設定されたＴＣＡＭセル以外に“０”または“１”に設定されたＴＣＡＭセルも接続されているので、前述の低消費電力化技術を適用することができない。
【０１８２】
図２８（Ｂ）の例は、図２８（Ａ）の例でデータ配列を変更することによって、サブアレイＳＡ＿０のマッチ線ＭＬ＿１に接続された全てのＴＣＡＭセルがドントケアに設定されているようにしたものである。これによって、前述の低消費電力化技術が適用可能になる。具体的に、入力データ（書込みデータおよびサーチデータ）のうちビット番号２９〜３１の部分の配列順を繰り上げて、これらのデータがビット番号１０〜１２のＴＣＡＭセルにそれぞれ入力されるようにデータ配列が変更される。さらに、入力データのうちビット番号１０〜２８の部分の配列順を繰り下げて、これらのデータがビット番号１３〜３１のＴＣＡＭセルにそれぞれ入力されるようにデータ配列が変更される。この結果、図２８（Ｂ）に示すように、サブアレイＳＡ＿１のマッチ線ＭＬ＿１に接続された全てのＴＣＡＭセル（ビット番号１６〜３１）をドントケア（図中のハッチングされた四角）に設定することができるので、前述の低消費電力化技術（マッチ線ＭＬ＿１のプリチャージの停止およびマッチアンプＭＡ＿１の動作停止）を実現することができる。
【０１８３】
図２９は、第７の実施形態の検索システムの構成を示すブロック図である。図２９の検索システム１２０は、データ配列を変換するためのスイッチ回路１１０（以下、データ配列変換スイッチと称する）をさらに含む点で図６の検索システム１２０と異なる。図２９には、入力データｄｉｎのビット数が１２８ビットの場合の例が示されている。
【０１８４】
図２９を参照して、ＮＰＵ（Network Processor Unit）１０１のデータ変換部１０３において、記憶装置１０２に格納されていたＡＣＬルールファイルはＴＣＡＭ用データに変換される。ＴＣＡＭ用データは、“０”、“１”、および“ドントケア”（“１”でも“０”でもよい）の３値で構成される。ＴＣＡＭ用データは、入力データｄｉｎ［０：１２７］として、ＮＰＵ１０１のデータ出力回路１０５からデータ配列変換スイッチ１１０に入力される。
【０１８５】
データ配列変換スイッチ１１０は、予め定められた規則に従って、入力データｄｉｎ［０：１２７］（書込みデータおよびサーチデータ）の配列順を入れ替える。データ配列変換スイッチ１１０は、配列順の変更後の入力データをＴＣＡＭ装置１００のデータ入力回路３１［０］〜３１［３］に入力する。図２９の場合、データ入力回路３１［０］〜３１［３］は、各サブアレイに対応して４つに分割されている（たとえば、データ入力回路３１［０］はビット（bit）番号０〜３１に対応している）。データ配列変換スイッチ１１０における変換規則は、ＮＰＵ１０１のデータ解析部１０４によって、ＴＣＡＭ用データの解析結果に基づいて定められる。
【０１８６】
図３０は、データ配列変換の対象となるＴＣＡＭ用データの一例が書き込まれたＴＣＡＭ装置の記憶状態を模式的に示す図である。図３０の記憶状態を表す図面は、図９に対応するものであり、図９と異なる点は、ドントケアデータが格納される領域２１１（図中で間隔の狭いハッチングが付された領域）の配置である。図３０のその他の点は図９と同様であるので、同一または相当する部分には同一の参照符号を付して説明を繰返さない。
【０１８７】
図３０のＴＣＡＭ用データの配列の場合、ドントケアを表す領域のビット幅はサブアレイＳＡのビット幅である３２ビットを超えている部分があるが、１つのサブアレイＳＡのビット幅全体に亘ってドントケアに設定された部分がないので、これまで説明した第１〜第６の実施形態の低消費電力化技術を適用できない。
【０１８８】
そこで、たとえば、ビット番号２６〜３１の部分の全データとビット番号５８〜６３の部分の全データとを図２９のデータ変換配列スイッチを用いて入れ替える。これによって、ビット番号３２〜６３の部分の１６個のサブアレイＳＡ［０，１］，ＳＡ［１，１］〜ＳＡ［１５，１］について、インバリッドエントリを除くＴＣＡＭセルデータを全てドントケアにすることができる。この結果、サブアレイＳＡ［０，１］，ＳＡ［１，１］〜ＳＡ［１５，１］の各々について、レジスタＲＥＧ１を“１”（ドントケア）に設定することによってサーチ動作を停止することができる。サブアレイＳＡ［１５，１］についてはインバリッドエントリのレジスタＲＥＧ２を“０”（インバリッド）に設定することによって、マッチアンプＭＡの出力信号を“Ｌ”レベル（ミス）にすることができる。
【０１８９】
以上のとおり第７の実施形態では、サブアレイのビット幅以上のデータ幅でドントケアに設定された領域が、インバリッドエントリを除くＴＣＡＭ装置の全エントリについて存在する場合において、低消費電力化を可能にする技術を開示した。この場合、サブアレイのマッチ線に接続されたＴＣＡＭセルが全てドントケアに設定されていなくても、各マッチ線に対応するビット番号に応じてデータ配列を入れ替えることによって、これまでの実施形態で説明した低消費電力化技術が適用可能になる。よって、低消費電力の検索システムを構築するためには、各マッチ線がどのビット番号に対応しているかを仕様書などでユーザに公開するのが望ましい。
【０１９０】
上記の実施形態では、ＴＣＡＭ装置の全エントリについてデータ配列の変更を行ったが、データ配列変更するためのスイッチ回路をサブアレイＳＡごとに設ければ、サブアレイに属するエントリ単位でデータ配列の変更を行うことも可能である。
【０１９１】
＜第８の実施形態＞
第１〜第７の実施形態では、全サブアレイがほぼ同じタイミングでサーチ動作を行い、各サブアレイの出力信号に基づいてプライオリティ・エンコーダがサーチ結果を出力していた。第８の実施形態では、行方向に並ぶ（よって、共通のエントリに対応する）複数のサブアレイがパイプライン方式で順番に検索を行うように構成された例を開示する。この場合、各サブアレイは、前段のサブアレイのサーチ動作の終了後にサーチ動作を開始する。
【０１９２】
図３１は、第８の実施形態によるＴＣＡＭ装置の構成を示すブロック図である。図３１のＴＣＡＭ装置では、４個のサブアレイＳＡ＿０〜ＳＡ＿３が代表的に示され、プライオリティ・エンコーダは図示していない。サーチ動作は、サブアレイＳＡ＿０、サブアレイＳＡ＿１、サブアレイＳＡ＿２、サブアレイＳＡ＿３の順に実行される。各サブアレイＳＡはｍ＋１本のマッチ線ＭＬを有する。
【０１９３】
図３１に示すように、サブアレイＳＡ＿０においてマッチ線ＭＬ＿０，ｊ（ｊ＝１，２，…，ｍ）のサーチ後の電位と電源電位ＶＤＤとが、対応するマッチアンプＭＡに入力され、このマッチアンプＭＡから出力信号ｍｏ＿０，ｊが出力される。同様に、サブアレイＳＡ＿ｉ（ｉ＝１，２，３）において、マッチ線ＭＬ＿ｉ，ｊ（ｊ＝１，２，…，ｍ）のサーチ後の電位と、前段のサブアレイＳＡ＿ｉ−１の同一エントリの出力信号ｍｏ＿ｉ−１，ｊとが、対応するマッチアンプＭＡに入力され、このマッチアンプＭＡから出力信号ｍｏ＿ｉ，ｊが出力される。
【０１９４】
図３２は、図３１のマッチアンプＭＡの構成例を示す回路図である。図３２のマッチアンプＭＡは、図３１のサブアレイＳＡ＿ｉ（ｉ＝０，１，２，３）において、マッチ線ＭＬ＿ｉ，ｊ（ｊ＝１，２，…，ｍ）に接続されたマッチアンプの構成例を示している。図３２では、図１３のマッチアンプＭＡの構成を変更したものを示しているが、図１６、図１８、図２２のいずれのマッチアンプＭＡについても同様に変更することができる。
【０１９５】
具体的に、図３２のマッチアンプＭＡは、図１３（もしくは、図１６、図１８、または、図２２）のマッチアンプＭＡに、Ｄフリップフロップ８３、ＮＡＮＤゲート８４、インバータ８５、ＡＮＤゲート２６をさらに追加したものである。Ｄフリップフロップ８３およびＡＮＤゲート２６は、図３２ではマッチアンプＭＡの内部に設けられているように図示されているが、エントリごとにマッチアンプＭＡにそれぞれ対応して設けられていればよいので、マッチアンプＭＡの外部に設けられていても構わない。
【０１９６】
Ｄフリップフロップ８３は、前ステージのサブアレイの対応する行のマッチアンプＭＡの出力信号ｍｏ＿ｐｒｅ（前サイクルのサーチ結果）を保持する。ただし、サーチ期間の最初にサーチ動作を行うサブアレイＳＡ＿０（すなわち、ｉ＝０）については、前段の対応する行のマッチアンプＭＡの出力信号に代えて、電源電位ＶＤＤが入力される。
【０１９７】
図１３などの変更前の回路においてＰチャネルＭＯＳトランジスタ７０のゲートに入力されていた信号は、インバータ８５によって論理レベルを反転させた後に、ＮＡＮＤゲート８４の第１の入力ノードに入力されるように変更される。ＮＡＮＤゲート８４の第１の入力ノードには、上記のＤフリップフロップ８３の出力信号ｍｏ＿ｐｒｅ（前サイクルのサーチ結果）が入力される。ＮＡＮＤゲート８４の演算結果は、ＭＯＳトランジスタ７０のゲートに入力される。
【０１９８】
したがって、上記のＤフリップフロップ８３の出力信号ｍｏ＿ｐｒｅ（前サイクルのサーチ結果）が“Ｌ”レベル（ミス）の場合は、ＭＯＳトランジスタ７０のゲートには、“Ｈ”レベルの信号が入力される。この結果、ＭＯＳトランジスタ７０は常にオフとなってマッチ線ＭＬのプリチャージが停止する。
【０１９９】
ＡＮＤゲート２６は、上記のＤフリップフロップ８３の出力信号ｍｏ＿ｐｒｅ（前サイクルのサーチ結果）と、図１３（もしくは、図１６、図１８、または、図２２）に示す変更前の構成のマッチアンプＭＡの場合の出力信号ｍｏ＿ｎｏｗとのＡＮＤ演算を行い、演算結果をマッチアンプＭＡの出力信号ｍｏとして出力する。ＡＮＤゲート２６は、図５のＡＮＤゲートに対応するものであり、図５のＡＮＤゲート２６をマッチアンプＭＡ内に取り込んだものと考えることができる。
【０２００】
したがって、上記のＤフリップフロップ８３の出力信号ｍｏ＿ｐｒｅ（前サイクルの対応する行のサーチ結果）が“Ｌ”レベル（ミス）の場合には、ＡＮＤゲート２６の出力信号（すなわち、マッチアンプＭＡの出力信号ｍｏ）は“Ｌ”レベル（ミス）となる。図３２にその他の点は、図１３（もしくは、図１６、図１８、または、図２２）のマッチアンプＭＡと同様であるであるので、同一または相当する部分には同一の参照符号を付して説明を繰返さない。
【０２０１】
図３３は、図３１のＴＣＡＭ装置の動作を説明するための図である。各マッチアンプＭＡにおいてハッチングを付した領域は、ＴＣＡＭセルデータがドントケアになっていることを示す。
【０２０２】
第１サイクルにおいて、サブアレイＳＡ＿０がサーチ動作を行う。各エントリのサーチ結果（ヒット（hit）の場合“１”、ミス（miss）の場合“０”）は、次段のサブアレイＳＡ＿１のマッチアンプ部２３の対応する行のＤフリップフロップ８３に格納される。図３２で説明したようにＤフリップフロップ８３に“０”が格納されている場合には、次の第２サイクルにおいて対応する行のマッチ線ＭＬプリチャージが停止される。
【０２０３】
第２サイクルにおいて、通常は、サブアレイＳＡ＿１の各行のうち前段のサブアレイＳＡ＿０のサーチ動作でヒットになった行のみサーチ動作が行われる。しかしながら、図３３の場合、サブアレイＳＡ＿１の全ＴＣＡＭセルデータがドントケアに設定されているので、レジスタＲＥＧ１を“１”（ドントケア）に設定することによって、サブアレイＳＡ＿１全体のサーチ動作が停止される。第１サイクルでヒットとなったエントリの出力信号は、自動的にヒットとなり、次段のサブアレイＳＡ＿２のマッチアンプ部２３の対応するＤフリップフロップには“１”が書き込まれる。その他のＤフリップフロップには“０”が書込まれる。
【０２０４】
第３サイクルにおいて、サブアレイＳＡ＿２の各行のうち、サブアレイＳＡ＿１からヒットを表す信号が入力された行についてのみサーチ動作が行われる。Ｄフリップフロップ８３に“０”が格納されている行については、マッチ線プリチャージが停止される。サブアレイＳＡ＿２においてサーチ結果がヒットとなった行については、次段のサブアレイＳＡ＿３のマッチアンプ部２３の対応するＤフリップフロップ８３に“１”が格納される。サブアレイＳＡ＿３のその他の行のＤフリップフロップ８３には“０”が格納される。
【０２０５】
第４サイクルにおいて、サブアレイＳＡ＿３のＴＣＡＭセルアレイについて検索動作が行われる。この場合、前段のサブアレイＳＡ＿２からヒットを表す信号が入力された行のうちで、マッチ線２２０，２２１に対応する行を除いたものについてサーチ動作が行われる。マッチ線２２０，２２１に接続されたＴＣＡＭセルは全てドントケアに設定されているので、レジスタＲＥＧ３に“１”（ドントケア）を設定することによって、これらのマッチ線２２０，２２１のプリチャージおよび対応するマッチアンプＭＡの回路動作が停止される。マッチ線２２０，２２１に接続されたマッチアンプＭＡからはプライオリティ・エンコーダ３０にヒットを表す信号が自動的に出力される。その他のサーチ動作が行われた行のマッチアンプＭＡからもサーチ結果がプライオリティ・エンコーダ３０に出力される。
【０２０６】
このように、第８の実施形態では、第１〜第７の実施形態で説明した低消費電力化技術に組合わせて、行方向に並ぶ複数のサブアレイをパイプライ方式で順番に検索することによって、前サイクルでヒットとなったエントリのみサーチ動作を行うようにする。これによって、さらに消費電力を低減することができる。
【０２０７】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は上記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【符号の説明】
【０２０８】
１１  ＳＲＡＭセル（Ｘセル）、１２  ＳＲＡＭセル（Ｙセル）、１３  データ比較部、２０  セルアレイ、２１  書込みドライバ、２２  サーチ線ドライバ、２３  マッチアンプ部、２４  制御論理回路、２７  論理積回路、３０  プライオリティ・エンコーダ、３１  データ入力回路、３２  コマンド入力回路、３３  データ判定回路、４０，４４，４５，８３  フリップフロップ、６９  ラッチ回路、８４  バッファアンプ部、８５，８６，８７  バッファ、１００  ＴＣＡＭ装置、１０２  記憶装置、１０３  データ変換部、１０４  データ解析部、１０５  データ出力回路、１１０  スイッチ回路（データ配列変換スイッチ）、１２０  データ検索システム、２２０，２２１，ＭＬ  マッチ線、ＢＬ  ビット線対、ＭＡ  マッチアンプ、ＭＣ  ＴＣＡＭセル、ＮＤ１，ＮＤ２  記憶ノード、ＲＥＧ１，ＲＥＧ２，ＲＥＧ３  レジスタ、ＳＡ  サブアレイ、ＳＬ  サーチ線対、ＶＤＤ  電源電位、ＷＬＸ，ＷＬＹ  ワード線、ｃｌｋ  クロック信号、ｄ  書込みデータ、ｆｏｒｃｅ＿ｈｉｔ  制御信号、ｍａｅ  マッチアンプイネーブル信号、ｍｌｐｒｅ  マッチ線プリチャージ信号、ｍｏ  出力信号、ｓｄ  入力サーチデータ、ｓｌｅ  サーチ線イネーブル信号。
【図１】
0006533129.tif 000002
【図２】
0006533129.tif 000003
【図３】
0006533129.tif 000004
【図４】
0006533129.tif 000005
【図５】
0006533129.tif 000006
【図６】
0006533129.tif 000007
【図７】
0006533129.tif 000008
【図８】
0006533129.tif 000009
【図９】
0006533129.tif 000010
【図１０】
0006533129.tif 000011
【図１１】
0006533129.tif 000012
【図１２】
0006533129.tif 000013
【図１３】
0006533129.tif 000014
【図１４】
0006533129.tif 000015
【図１５】
0006533129.tif 000016
【図１６】
0006533129.tif 000017
【図１７】
0006533129.tif 000018
【図１８】
0006533129.tif 000019
【図１９】
0006533129.tif 000020
【図２０】
0006533129.tif 000021
【図２１】
0006533129.tif 000022
【図２２】
0006533129.tif 000023
【図２３】
0006533129.tif 000024
【図２４】
0006533129.tif 000025
【図２５】
0006533129.tif 000026
【図２６】
0006533129.tif 000027
【図２７】
0006533129.tif 000028
【図２８】
0006533129.tif 000029
【図２９】
0006533129.tif 000030
【図３０】
0006533129.tif 000031
【図３１】
0006533129.tif 000032
【図３２】
0006533129.tif 000033
【図３３】
0006533129.tif 000034