連想メモリ
【課題】従来よりも高周波数動作が可能な連想メモリを提供する。
【解決手段】サーチ線ドライバDRは、サーチ制御回路40から供給されたサーチ線イネーブル信号SLEが活性化したとき、CAMメモリアレイ10の各CAMセルにサーチ線対SL,SL_Nを介して検索データSD,SD_Nを転送する。サーチ線イネーブル信号SLEは、サーチ制御回路40に接続された1本の制御信号線36(36A,36B,36C)を介して各サーチ線ドライバDRに伝送される。制御信号線36は、サーチ線イネーブル信号SLEが、マッチアンプMAから見て遠い側からサーチ線ドライバDRの配列順で各サーチ線ドライバDRと制御信号線との接続ノードを通過するように、各サーチ線ドライバDRと接続される。
【解決手段】サーチ線ドライバDRは、サーチ制御回路40から供給されたサーチ線イネーブル信号SLEが活性化したとき、CAMメモリアレイ10の各CAMセルにサーチ線対SL,SL_Nを介して検索データSD,SD_Nを転送する。サーチ線イネーブル信号SLEは、サーチ制御回路40に接続された1本の制御信号線36(36A,36B,36C)を介して各サーチ線ドライバDRに伝送される。制御信号線36は、サーチ線イネーブル信号SLEが、マッチアンプMAから見て遠い側からサーチ線ドライバDRの配列順で各サーチ線ドライバDRと制御信号線との接続ノードを通過するように、各サーチ線ドライバDRと接続される。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は半導体素子を用いた連想メモリ(CAM:Content Addressable Memory)に関し、特に従来よりも高速動作が可能な連想メモリに関する。
【背景技術】
【0002】
一般に半導体メモリの高集積化および大容量化が進むにつれて半導体メモリの高速動作は困難になる。その原因の1つは、配線に接続されるメモリセル数の増加によって配線の容量が増大するために信号の伝搬遅延が生じるからである。
【0003】
特開平10−255477号公報(特許文献1)に開示された技術は、ワード線駆動回路から出力された駆動制御信号の伝搬遅延をなくすことを目的としたものである。この文献のワード線駆動回路は、信号発生部と、第1のドライバ回路と、第2のドライバ回路と、高速化ドライバ回路とを含む。信号発生部は所定のタイミングで駆動信号を発生する。第1のドライバ回路は、駆動信号に応答して、複数の被制御回路が接続された第1の配線の一端側を駆動する。第2のドライバ回路は、駆動信号に応答して、第1の配線より駆動負荷が小さい第2の配線の一端側を駆動する。高速化ドライバ回路は、第2の配線の他端側および第一の配線の他端側に入力が接続され、第1の配線の他端側と第2の配線の他端側のレベルが一致しないときに第1の配線の他端側を駆動する出力端子を有する。
【0004】
特開2001−357675号公報(特許文献2)は、読出時のアクセスタイムを高速化するための技術を開示する。この文献に記載の半導体記憶装置は、列方向に配列されたメモリセルと、各メモリセルに接続された一対のディジット線と、前記ディジット線と交差して敷設され各メモリセルを選択するワード線とを備える。さらに、この半導体装置は、ディジット線の一端に配置されたセンスアンプと、ディジット線のセンスアンプの近傍に配置された近端側プリチャージ回路と、ディジット線のセンスアンプと反対側の端部に配置された遠端側プリチャージ回路とを備える。このような半導体記憶装置において、読出動作時の遠端側プリチャージ回路のプリチャージ動作の終了時点が近端側プリチャージ回路のそれと同時かそれより早いことを特徴とする。好ましくは、読出動作時における遠端側プリチャージ回路に近い側のワード線の選択信号の方が近端側プリチャージ回路に近い側のワード線の選択信号より早く立ち上がる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平10−255477号公報
【特許文献2】特開2001−357675号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
この発明は、データ検索機能を備えた連想メモリを対象とする。従来のメモリは、アドレスが入力されたときにそのアドレスに対応したメモリセルの記憶データを出力する。これに対して、連想メモリでは検索データが入力され、検索データに合致した記憶データが探索される。そして、検索データに合致した記憶データがあれば、その記憶データに対応したアドレスまたはそのアドレスに関連したデータが出力される。
【0007】
具体的には、連想メモリでは複数のメモリセルが1本のマッチ線(一致線)に接続される。さらにマッチ線と交差してメモリセルごとに一対のサーチ線(検索線)が設けられる。検索動作時にはマッチ線が、たとえば“1”(H(High)レベル)にプリチャージされる。その後、サーチ線を介して検索データが転送される。転送された検索データとメモリセルに予め記憶されたデータとが一致したときには、マッチ線は“1”の状態に維持され、不一致のときは“0”(L(Low.)レベル)の状態に駆動される。マッチ線の論理レベルはマッチ線に接続されたマッチアンプによって検出される。
【0008】
このような構成の連想メモリで高速動作を可能にするためには、マッチ線をプリチャージするタイミング、対応のメモリセルに検索データを入力するタイミング、およびマッチ線の論理レベルを検出するタイミングなどの制御が重要である。しかしながら、従来技術では、これらのタイミング制御は半導体素子を用いた遅延段によって行なわれているので、回路動作が高速化するほど遅延段の設計が困難になっている。
【0009】
この発明の目的は、従来よりも高周波数動作が可能な連想メモリを提供することである。
【課題を解決するための手段】
【0010】
この発明の実施の一形態による連想メモリは、マッチ線と、プリチャージ部と、マッチ線に沿って配列された複数のメモリセルと、マッチアンプと、検索データ転送部とを備える。プリチャージ部は、マッチ線と接続され、マッチ線を所定の電圧にプリチャージするために設けられる。複数のメモリセルの各々は、データ検索時に、入力された検索データと予め記憶したデータとの一致または不一致によりマッチ線をプリチャージ状態から変化させる。マッチアンプは、マッチ線の一端に設けられ、マッチ線の論理レベルを検出する。検索データ転送部は、マッチアンプから遠い側のメモリセルから複数のメモリセルの配列順で各メモリセルに検索データを転送する。
【発明の効果】
【0011】
上記の実施の形態によれば、マッチアンプから遠い側のメモリセルからメモリセルの配列順で検索データが各メモリセルに転送される。したがって、メモリセルへの検索データの転送後に、マッチ線の遅延時間を考慮することなくマッチアンプによって論理レベルの検出を開始することができる。この結果、従来よりも高周波数動作が可能になる。
【図面の簡単な説明】
【0012】
【図1】この発明の実施の形態1による連想メモリ100の全体構成を示すブロック図である。
【図2】図1の連想メモリ100の一部の構成を詳細に示すブロック図である。
【図3】図2のプリチャージ部PC、CAMセルCC、およびマッチアンプMAの構成を示す回路図である。
【図4】図2のサーチ線ドライバDRの構成を示すブロック図である。
【図5】図3、図4の各信号のタイミング図である。
【図6】図1のサーチ制御回路40の構成を示すブロック図である。
【図7】図6のメインサーチ制御回路41の構成を示すブロック図である。
【図8】図7の各信号のタイミング図である。
【図9】図6のサブサーチ制御回路50の一部の構成を示すブロック図である(サーチ線イネーブル信号SLEおよびマッチ線プリチャージ信号MLPRE_Nの生成)。
【図10】図9の各信号のタイミング図である。
【図11】図6のサブサーチ制御回路50の一部の構成を示すブロック図である(マッチアンプ制御信号MAEなどの生成)。
【図12】図11の遅延段55の構成の一例を示すブロック図である。
【図13】図11の各信号のタイミング図である。
【図14】図2の連想メモリ100の比較例としての連想メモリ900の構成を示すブロック図である。
【図15】図4のサーチ制御回路940の一部の構成を示すブロック図である。
【図16】図2の制御信号線36の構成の一例を示す平面図である。
【図17】図2の制御信号線36の構成の他の例を示す平面図である。
【図18】この発明の実施の形態2のよる連想メモリ100Aの構成を示すブロック図である。
【図19】図18のサブサーチ制御回路50Aの一部の構成を示すブロック図である(サーチ線イネーブル信号SLE_0およびマッチ線プリチャージ信号MLPRE_0_Nの生成)。
【図20】図18のサブサーチ制御回路50Bの一部の構成を示すブロック図である(サーチ線イネーブル信号SLE_1およびマッチ線プリチャージ信号MLPRE_1_Nの生成)。
【図21】図19、図20の各信号のタイミング図である。
【図22】図18のサブサーチ制御回路50Aの一部の構成を示すブロック図である(マッチアンプ制御信号MAE_0などの生成)。
【図23】図18のサブサーチ制御回路50Bの一部の構成を示すブロック図である(マッチアンプ制御信号MAE_1などの生成)。
【図24】図22の各信号のタイミング図である。
【図25】図18の制御信号線120,121の構成の一例を示す平面図である。
【図26】図18の制御信号線120,121の構成の他の例を示す平面図である。
【発明を実施するための形態】
【0013】
以下、この発明の実施の形態について図面を参照して詳しく説明する。なお、同一または相当する部分には同一の参照符号を付して、その説明を繰返さない。
【0014】
<実施の形態1>
[連想メモリ100の全体構成と動作の概略]
図1は、この発明の実施の形態1による連想メモリ100の全体構成を示すブロック図である。
【0015】
図1を参照して、連想メモリ100は、半導体基板SUB上に形成されたCAMメモリアレイ10と、一致検出部20と、検索データ転送部30と、サーチ制御回路40(制御部)と、プライオリティエンコーダ70と、サーチ結果出力バッファ81と、アドレス/データバッファ74と、命令コードバッファ75と、命令コードデコーダ77と、クロックバッファ76と、アドレスデコーダ78と、センスアンプ79とを含む。
【0016】
CAMメモリアレイ10は、行列状に配列された複数のCAMセル(メモリセル)によって構成される。各CAMセルは1ビットのデータを記憶するとともに、検索データと予め記憶したデータとを比較する機能を有する。
【0017】
連想メモリ100は、通常のデータ書込およびデータ読出のためにCAMメモリアレイ10の各行に対応して設けられたワード線(図3の参照符号WL)と、CAMメモリアレイ10の各列に対応して設けられたビット線対(図3の参照符号BL,BL_N)を含む。さらに、連想メモリ100は、データ検索のためにCAMメモリアレイ10の各行に対応して設けられたマッチ線ML(一致線)と、CAMメモリアレイ10の各列に対応して設けられたサーチ線対SL,SL_N(検索線対)を含む。なお、この明細書では、論理レベルを反転させた相補的な関係にある場合に参照符号の末尾に_Nが付される。
【0018】
一致検出部20(マッチアンプ)は、各マッチ線MLの論理レベル(“1”または“0”)を検出する。これによって、各マッチ線MLに接続された各CAMセルにおいて検索データと予め記憶したデータとが一致したか否かが検知される。
【0019】
検索データ転送部30(サーチ線ドライバ)は、データ検索時にサーチ線対SL,SL_Nを介してCAMメモリアレイ10の各メモリセルに検索データを転送する。
【0020】
サーチ制御回路40は、入力されたクロックCLKに基づいて検索データ転送部30および一致検出部20の動作タイミングを制御する。
【0021】
プライオリティエンコーダ70は、一致検出部20の検出結果に基づいて、検索データと記憶データとが一致したアドレスを所定の優先順位に従ってサーチ結果として出力する。
【0022】
サーチ結果出力バッファ81は、プライオリティエンコーダ70から受けたサーチ結果を、サーチ結果出力端子82を介して外部に出力する。
【0023】
アドレス/データバッファ74は、アドレス/データ入力端子71を介して受けたアドレスまたはデータをアドレスデコーダ78およびセンスアンプ79に出力する。さらに、アドレス/データバッファ74は、データ検索に必要な多ビットの検索データSD,SD_Nをアドレス/データ入力端子71を介して受けて検索データ転送部30へ出力する。
【0024】
命令コードバッファ75は、命令コード入力端子72を介して受けた命令コードを、命令コードデコーダ77に出力する。命令コードには、データ書込を表わす命令コードおよびデータ検索を表わす命令コードなどがある。
【0025】
命令コードデコーダ77は、命令コードバッファ75から受けた命令コードをデコードして、命令内容に応じた信号を発生させる。たとえば、データ検索命令を受けたときは、命令コードバッファ75はサーチ信号SCMを活性化させる。リセット命令を受けたときは、命令コードバッファ75はリセット信号RSTを活性化させる。
【0026】
アドレスデコーダ78は、アドレス/データバッファ74から受けたアドレスに基づいて、データ書込時には書込対象のメモリセル群を選択し、データ読出時には読出対象のメモリセル群を選択する。
【0027】
クロックバッファ76は、クロック入力端子73を介して外部からクロックを受け、連想メモリ100の各部に出力する。
【0028】
センスアンプ79は、データ読出時に読出対象のCAMセルが接続されたビット線対の論理レベルを検出する。
【0029】
以下、データ検索に関係する構成要素についてさらに詳しく説明する。
図2は、図1の連想メモリ100の一部の構成を詳細に示すブロック図である。図2では、CAMメモリアレイ10と、一致検出部20と、検索データ転送部30と、サーチ制御回路40とが示されている。
【0030】
CAMメモリアレイ10は、n行m列の行列状に配列された複数のメモリセル(CAMセル)を含む。図2の場合、m=80である。以下では、第i行第j列(iは1以上n−1以下の整数、jは1以上m−1以下の整数)のCAMセルをCAMセルCC[i−1,j−1]と記載し、CAMセルについて総称するときまたは不特定のものを示すときCAMセルCCと記載する。さらに、CAMメモリアレイ10の行方向をX方向と称し、列方向をY方向と称する。X方向について向きを区別するときには+X方向、−X方向のように符号を付して記載する。Y方向についても同様である。
【0031】
図2に示すように、連想メモリ100は、CAMメモリアレイ10の行に対応して設けられ、X方向に延びるn本のマッチ線ML[0]〜ML[n−1]を含む。さらに、連想メモリ100は、CAMメモリアレイ10の列に対応して設けられ、Y方向に延びるm対のサーチ線対SL[0],SL_N[0]〜SL[m−1],SL_N[m−1]を含む(図2はm=80の場合が記載されている。)。マッチ線ML[0]〜ML[n−1]およびサーチ線対SL[0],SL_N[0]〜SL[79],SL_N[79]について、総称する場合または不特定のものを示す場合にマッチ線MLおよびサーチ線対SL,SL_Nとそれぞれ記載する。各CAMセルCCは、n本のマッチ線MLとm対のサーチ線対SL,SL_Nとの各交差点に対応して設けられる。各CAMセルCCは、対応のマッチ線MLおよび対応のサーチ線対SL,SL_Nと接続される。
【0032】
連想メモリ100は、さらに、n本のマッチ線ML[0]〜ML[n−1]にそれぞれ接続されたプリチャージ部PC[0]〜PC[n−1]を含む。プリチャージ部PC[0]〜PC[n−1]についても総称する場合または不特定のものを示す場合にプリチャージ部PCと記載する。各プリチャージ部PCは、サーチ制御回路40から受信したマッチ線プリチャージ信号MLPRE_N(第3の制御信号)が活性状態(“0”)になったとき、対応のマッチ線MLを所定の電圧(図2の場合、電源電圧)にプリチャージする。各プリチャージ部PCは、対応のマッチ線MLの−X方向側の端部に、すなわち、一致検出部20(マッチアンプMA[0]〜MA[n−1]に近接して設けられる。
【0033】
連想メモリでは複数のCAMセルCCによって構成された1エントリごとに、多ビットの検索データ(検索ワード)と予め記憶した記憶データ(記憶ワード)とが比較される。図2の場合、各マッチ線MLに接続された1行分(80個)のCAMセルCCによって1エントリが構成される。すなわち、エントリビット幅は80ビットである。検索ワードは、80対のサーチ線対SL,SL_Nを介してCAMメモリアレイ10の各エントリに入力される。入力された検索ワードと記憶ワードとは、CAMセルCCごとにビット単位で比較される。
【0034】
データ検索手順について簡単に説明すると、まず、プリチャージ部PCによって各マッチ線MLが“1”にプリチャージされる。次に、各CAMセルCCに、対応のサーチ線対SL,SL_Nを介して検索データが入力される。各CAMセルCCは、入力された検索データと予め記憶している1ビットの記憶データとを比較し、両者が異なっている場合はプリチャージ状態にある対応のマッチ線MLを放電させることによって対応のマッチ線MLの論理レベルを変化させる。
【0035】
したがって、各マッチ線MLに接続された複数のCAMセルCCのいずれについても記憶データと検索データとが一致(ヒット:HIT)したとき、すなわち、検索ワードと記憶ワードとが一致したときには、マッチ線MLの論理レベルは“1”に維持される。各マッチ線MLに接続された少なくとも1つのCAMセルCCについて記憶データと検索データとが不一致(ミス:MISS)のとき、すなわち、検索ワードと記憶ワードとが不一致のときには、プリチャージされた電荷が放電されるのでマッチ線MLの論理レベルは“0”になる。
【0036】
なお、データ検索手順としては、マッチ線を“0”にプリチャージし、記憶データと検索データとが一致したとき“1”に充電する方法や、マッチ線を“1”にプリチャージし、記憶データと検索データとが一致したとき“0”に放電する方法など様々な手順が考えられる。本願では、特にデータ検索手順に限定されるものではない。
【0037】
一致検出部20は、n本のマッチ線MLにそれぞれ対応するn個のマッチアンプMA[0]〜MA[n−1]を含む。以下、マッチアンプMA[0]〜MA[n−1]について総称する場合または不特定のものを示す場合にマッチアンプMAと記載する。各マッチアンプMAは、対応するマッチ線MLの−X方向側の端部に接続される。
【0038】
各マッチアンプMAは、対応のマッチ線MLの論理レベル(“1”または“0”)を検出する。図3で説明するように、各マッチアンプMAは、対応のマッチ線MLの電圧と参照線(図3のML_REF)に印加された参照電圧とを比較することによってマッチ線MLの論理レベルを検出する。各マッチアンプMAの動作は、サーチ制御回路40から出力されたマッチアンプ制御信号MLI,MAE,MALAT(第2の制御信号)によって制御される。
【0039】
検索データ転送部30は、合計でm対のサーチ線対SL[0],SL_N[0]〜SL[m−1],SL_N[m−1]にそれぞれ対応するm個のサーチ線ドライバDR[0]〜DR[m−1](図2の場合、m=80)を含む。サーチ線ドライバDR[0]〜DR[79]について総称する場合または不特定のものを示す場合、サーチ線ドライバDRと記載する。各サーチ線ドライバDRは、対応するサーチ線対SL,SL_Nの−Y方向側の端部に接続される。
【0040】
図2に示すように、第i番目(iは1以上m以下の整数)のサーチ線ドライバDR[i−1]は、個別の検索データSD[i−1],SD_N[i−1]と共通のサーチ線イネーブル信号SLE(第1の制御信号)とを受ける。検索データSD[i−1],SD_N[i−1]は、一方が“1”のとき他方が“0”となる相補のデータであり、図1のアドレス/データバッファ74から供給される。サーチ線イネーブル信号SLEは、1本の制御信号線36(36A,36B,36C)を介してサーチ制御回路40から供給される。サーチ線ドライバDR[i−1]は、サーチ線イネーブル信号SLEが活性状態(“1”)のとき検索データSD[i−1],SD_N[i−1]を対応のサーチ線対SL[i−1],SL_N[i−1]に転送する。なお、検索データSD[0],SD_N[0]〜SD[m−1],SD_N[m−1]についても、総称する場合または不特定のものを示す場合に検索データSD,SD_Nと記載する。
【0041】
[マッチアンプおよびサーチ線ドライバなどの詳細]
以下、プリチャージ部PC、CAMセル、マッチアンプMA、およびサーチ線ドライバDRの構成および動作についてさらに詳しく説明する。
【0042】
図3は、図2のプリチャージ部PC、CAMセルCC、およびマッチアンプMAの構成を示す回路図である。
【0043】
(1.プリチャージ部PC)
図3を参照して、各プリチャージ部PCは、PMOS(P-channel Metal Oxide Semiconductor)トランジスタQP1を含む。PMOSトランジスタQP1のドレインは対応のマッチ線MLに接続され、ソースは電源ノードVDDに接続され、ゲートにはマッチ線プリチャージ信号MLPRE_Nが入力される。マッチ線プリチャージ信号MLPRE_Nが活性化(“0”)されたときに、PMOSトランジスタQP1が導通することによってマッチ線MLに電源電圧が印加される。
【0044】
(2.CAMセルの構成)
CAMセルCCは、データを記憶するSRAM(Static Random Access Memory)セル11と、NMOS(N-channel Metal Oxide Semiconductor)トランジスタQN1〜QN4とを含む。
【0045】
SRAMセル11は、インバータ12,13からなるフリップフロップと、データ入出力用のNMOSトランジスタ14,15とを含む。インバータ12,13の各出力ノードは他方の入力ノードに接続される。インバータ12,13の出力ノードがデータを保持する記憶ノードND1,ND1_Nとして用いられる。記憶ノードND1,ND1_Nに記憶されるデータは一方が“1”のとき他方が“0”となる相補的なデータである。
【0046】
記憶ノードND1は、NMOSトランジスタ14を介して対応のビット線BLに接続され、記憶ノードND1_Nは、NMOSトランジスタ15を介して対応のビット線BL_Nに接続される。NMOSトランジスタ14,15のゲート電極が対応のワード線WLに接続される。ワード線WLおよびビット線対BL,BL_Nは、通常のデータ書込およびデータ読出のときに用いられる。
【0047】
NMOSトランジスタQN1,QN2は、この順でマッチ線MLと接地ノードGNDとの間に直列に接続される。NMOSトランジスタQN1のゲートは記憶ノードND1_Nに接続され、NMOSトランジスタQN2のゲートは対応のサーチ線SLに接続される。
【0048】
NMOSトランジスタQN3,QN4は、この順でマッチ線MLと接地ノードGNDとの間に直列接続される。NMOSトランジスタQN3のゲートは記憶ノードND1に接続され、NMOSトランジスタQN4のゲートは対応のサーチ線SL_Nに接続される。
【0049】
したがって、データ検索時に、記憶ノードND1が“1”(記憶ノードND1_Nが“0”)であり、かつ、サーチ線SLが“1”(サーチ線SL_Nが“0”)のとき(一致)、NMOSトランジスタQN2,QN3は導通状態になり、NMOSトランジスタQN1,QN4は非導通状態になる。この場合、マッチ線MLと接地ノードGNDとは非接続状態であるので、プリチャージされたマッチ線MLの電圧は維持される。
【0050】
データ検索時に、記憶ノードND1が“1”であり、かつ、サーチ線SLが“0”のとき(不一致)、NMOSトランジスタQN3,QN4は導通状態になり、NMOSトランジスタQN1,QN2は非導通状態になる。この場合、マッチ線MLと接地ノードGNDとはNMOSトランジスタQN3,QN4を介して接続される。この導電パスを介して、プリチャージされたマッチ線MLの電荷が放電される。
【0051】
データ検索時に、記憶ノードND1が“0”であり、かつ、サーチ線SLが“0”のとき(一致)、NMOSトランジスタQN1,QN4は導通状態になり、NMOSトランジスタQN2,QN3は非導通状態になる。この場合、マッチ線MLと接地ノードGNDとは非接続状態であるので、プリチャージされたマッチ線MLの電圧は維持される。
【0052】
データ検索時に、記憶ノードND1が“0”であり、かつ、サーチ線SLが“1”のとき(不一致)、NMOSトランジスタQN1,QN2は導通状態になり、NMOSトランジスタQN3,QN4は非導通状態になる。この場合、マッチ線MLと接地ノードGNDとはNMOSトランジスタQN1,QN2を介して接続される。この導電パスを介して、プリチャージされたマッチ線MLの電荷が放電される。
【0053】
(3.マッチアンプの構成)
マッチアンプMAは、図3に示すように、PMOSトランジスタである転送ゲートQP2,QP3と、比較回路21と、NMOSトランジスタである転送ゲートQN6,QN7と、ラッチ回路22と、PMOSトランジスタQP7〜QP10とを含む。マッチアンプMAには、図2のサーチ制御回路40からマッチアンプ制御信号MLI,MAE,MAE_N,MALATが供給される。
【0054】
転送ゲートQP2は、マッチ線MLとマッチアンプMA内部の信号線CRS_MLとの間を接続状態または非接続状態に切替える。転送ゲートQP3は、参照線ML_REFとマッチアンプMA内部の信号線CRS_REFとの間を接続状態または非接続状態に切替える。マッチ線MLの電圧と参照線ML_REFの参照電圧とがマッチアンプMAによって比較される場合は、転送ゲートQP2,QP3のゲート電極に入力されるマッチアンプ制御信号MLIが活性化(“1”)される。これによって、転送ゲートQP2,QP3が非導通状態になるので、マッチ線MLの容量の影響を受けないようにすることができる。
【0055】
比較回路21は、転送ゲートQP2,QP3を介して転送されたマッチ線MLの電圧と参照線ML_REFの参照電圧とを比較する。図3に示すように、比較回路21は、PMOSトランジスタQP4〜QP6と、NMOSトランジスタQN3〜QN5とを含む。これらのトランジスタの接続について説明すると、PMOSトランジスタQP4は電源ノードVDDとノードND3との間に接続され、NMOSトランジスタQN3は接地ノードGNDとノードND4との間に接続される。PMOSトランジスタQP5はノードND3と信号線CRS_REFとの間に接続され、PMOSトランジスタQP6はノードND3と信号線CRS_MLとの間に接続される。NMOSトランジスタQN4はノードND4と信号線CRS_REFとの間に接続され、NMOSトランジスタQN5はノードND4と信号線CRS_MLとの間に接続される。
【0056】
マッチアンプMAの動作時には、NMOSトランジスタQN3のゲート電極に印加されるマッチアンプ制御信号MAEが“1”に活性化され、PMOSトランジスタQP4のゲート電極に印加されるマッチアンプ制御信号MAE_Nが“0”に活性化される。これによって、マッチ線MLの電圧が参照線ML_PREの電圧より高い場合には、信号線CRS_MLの電圧は電源電圧に駆動され、信号線CRS_REFの電圧は接地電圧に駆動される。逆に、マッチ線MLの電圧が参照線ML_PREの電圧より低い場合には、信号線CRS_MLの電圧は接地電圧に駆動され、信号線CRS_REFの電圧は電源電圧に駆動される。
【0057】
転送ゲートQN6,QN7は、比較回路21とラッチ回路22との間を接続状態または非接続状態に切替えるために設けられる。転送ゲートQN6,QN7のゲート電極には、マッチアンプ制御信号MALATが入力される。マッチアンプ制御信号MALATが活性状態(“1”)のとき転送ゲートQN6,QN7は導通し、マッチアンプ制御信号MALATが非活性状態(“0”)のとき転送ゲートQN6,QN7は非導通状態になる。
【0058】
ラッチ回路22は、RS(Reset-Set)ラッチ回路であり、NAND回路23,24とインバータ回路25とを含む。NAND回路23の第1の入力ノードは転送ゲートQN6を介して信号線CRS_MLと接続され、NAND回路23の第2の入力ノードはNAND回路24の出力ノードに接続される。NAND回路24の第1の入力ノードは転送ゲートQN7を介して信号線CRS_REFと接続され、NAND回路24の第2の入力ノードはNAND回路23の出力ノードに接続される。インバータ回路25は、NAND回路24の出力を反転した信号をマッチアンプMAの出力信号MAO_Nとして出力する。
【0059】
PMOSトランジスタQP7,QP8は、転送ゲートQN6,QN7による電圧低下を補うために設けられている。図3に示すように、PMOSトランジスタQP7のソースは電源ノードVDDに接続され、ドレインはNAND回路23の第1の入力ノードに接続され、ゲートはNAND回路24の第1の入力ノードに接続される。PMOSトランジスタQP8のソースは電源ノードVDDに接続され、ドレインはNAND回路24の第1の入力ノードに接続され、ゲートはNAND回路23の第1の入力ノードに接続される。
【0060】
たとえば、比較回路21によってマッチ線MLおよび参照線ML_REFが駆動された結果、信号線CRS_MLの電圧が電源電圧に等しくなり、信号線CRS_REFの電圧が接地電圧に等しくなったとする。この場合、転送ゲートQN6によってNAND回路23に転送される電圧は、電源電圧よりもNMOSトランジスタの閾値電圧分だけ低くなってしまう。図3のようにPMOSトランジスタQP7,QP8を設けることによって、PMOSトランジスタQP7が導通するので、NAND回路23の第1の入力ノードの電圧を電源電圧に等しくすることができる。
【0061】
PMOSトランジスタQP9,QP10は、ラッチ回路22の動作状態を制御するために設けられている。図3に示すように、PMOSトランジスタQP9は電源ノードVDDとNAND回路23の第1の入力ノードとの間に接続され、PMOSトランジスタQP10は電源ノードVDDとNAND回路24の第1の入力ノードとの間に接続される。PMOSトランジスタQP9,QP10の各ゲートには、マッチアンプ制御信号MALATが入力される。
【0062】
マッチアンプ制御信号MALATが非活性状態(“0”)の場合には、PMOSトランジスタQP9,QP10が導通するので、ラッチ回路22の入力はいずれも“1”になる。このとき、ラッチ回路22は元の内部状態を保持する。マッチアンプ制御信号MALATが活性状態(“1”)の場合には、PMOSトランジスタQP9,QP10が非導通状態になるので、ラッチ回路22は、比較回路21の出力結果に応じた値を出力する。
【0063】
(4.サーチ線ドライバの構成)
図4は、図2のサーチ線ドライバDRの構成を示すブロック図である。図4を参照して、サーチ線ドライバDRは、AND回路31,32と、LスルーのDラッチ回路33,34とを含む。Dラッチ回路33,34の入力端子には、検索データSD,SD_Nがそれぞれ入力される。Dラッチ回路33,34のクロック端子にはサーチ線イネーブル信号SLEが共通に入力される。AND回路31にはDラッチ回路33の出力信号およびサーチ線イネーブル信号SLEが入力され、AND回路32にはDラッチ回路34の出力信号およびサーチ線イネーブル信号SLEが入力される。AND回路31,32の出力信号は、サーチ線SL,SL_Nにそれぞれ供給される。
【0064】
サーチ線イネーブル信号SLEが非活性状態(“0”)のとき、AND回路31,32の出力が“0”になるのでサーチ線SL,SL_Nにはいずれも“0”が出力される。サーチ線イネーブル信号SLEが非活性状態(“0”)から活性状態(“1”)に切替わると(サーチ線ドライバDRの活性化)、Dラッチ回路33,34は、活性状態(“1”)に切替わった時点の検索データSD,SD_Nを保持する。サーチ線イネーブル信号SLEが活性状態(“1”)の間、Dラッチ回路33,34に保持されたデータは、サーチ線SL,SL_Nにそれぞれ供給される。
【0065】
(5.タイミング図)
図5は、図3、図4の各信号のタイミング図である。図5は上から順に、クロックCLK、検索データSD,SD_N、サーチ線イネーブル信号SLE、サーチ線SL,SL_Nの電圧、マッチ線プリチャージ信号MLPRE_N、制御信号REF_DOWN、マッチアンプ制御信号MLI,MAE,MALATの各波形を示す。最下段の実線のグラフはマッチ線MLの電圧波形を示し、一点鎖線のグラフは図3の信号線CRS_MLの電圧波形を示し、点線のグラフは図3の信号線CRS_REFの電圧波形を示す。以下、図3〜図5を参照して、図5のタイミング図について説明する。
【0066】
まず、新たな検索データSD,SD_Nは、クロックCLKの立上がりのタイミングT10,T30,T50に応答して供給される。図5の場合、時刻T10〜T30の間に入力された検索データSD,SD_NはCAMセルCCに記憶されたデータに一致(HIT)し、時刻T30〜T50の間に入力された検索データSD,SD_NはCAMセルCCに記憶されたデータに不一致(MISS)であるとする。
【0067】
サーチ線イネーブル信号SLEは、クロックCLKの立下りのタイミングT20,T40,T60に応答して活性状態(“1”)になり、クロックCLKの立上がりのタイミングT30,T50に応答して非活性状態(“0”)になる。サーチ線イネーブル信号SLEの活性化に応じて、時刻T22〜T31の間および時刻T42〜T51の間にサーチ線SL,SL_Nに検索データSD,SD_Nが転送される。
【0068】
マッチ線プリチャージ信号MLPRE_Nは、クロックCLKの立上がりのタイミングT30,T50に応答して活性状態(“0”)になり、クロックCLKの立下りのタイミングT20,T40,T60に応答して非活性状態(“1”)になる。マッチ線プリチャージ信号MLPRE_Nは、サーチ線SL,SL_Nと同時に活性状態にならないように制御される。すなわち、マッチ線プリチャージ信号MLPRE_Nが非活性状態(“1”)になるタイミングT21,T41は、サーチ線SL,SL_Nに検索データSD,SD_Nが転送される活性化のタイミングT22,T42より早い。さらに、マッチ線プリチャージ信号MLPRE_Nが活性状態(“0”)になるタイミングT33,T53は、サーチ線SL,SL_Nが非活性化されるタイミングT31,T51より遅い。
【0069】
制御信号REF_DOWNは、図3の参照線ML_REFの電圧レベルを制御するための信号である。制御信号REF_DOWNが非活性状態(“0”)のとき参照線ML_REFの電圧は電源電圧に等しくなり、活性状態(“1”)のとき参照線ML_REFの電圧は電源電圧よりも所定の電圧(たとえば、100mV程度)だけ低い電圧になる。図5の場合、制御信号REF_DOWNは、サーチ線イネーブル信号SLEとほぼ同期して活性状態(“1”)になる。
【0070】
マッチアンプ制御信号MLI,MAE,MALATは、クロックCLKの立上がりのタイミングT30,T50に応答して所定の期間だけ活性状態(“1”)になる。このとき、MLI、MAE、およびMALATの順で活性状態(“1”)になり、MALAT、MAE、およびMLIの順で非活性状態(“0”)になる。マッチアンプ制御信号MLI,MAE,MALATについても、サーチ線SL,SL_Nと同時に活性状態にならないように制御される。すなわち、マッチアンプ制御信号MLI,MAE,MALATが活性化するタイミングは、サーチ線SL,SL_Nが非活性化されるタイミングT31,T51より遅い。
【0071】
上記のようなタイミングで各信号が供給される結果、マッチ線MLおよび信号線CRS_ML,CRS_REF電圧波形は図5の下段のような変化を示す。以下、これらの電圧波形について時間に流れの順に説明する。
【0072】
時刻T11〜T21でマッチ線プリチャージ信号MLPRE_Nが活性状態(“0”)である間、マッチ線ML、参照線ML_REF、および信号線CRS_ML,CRS_REFは所定の電圧(図5の場合、電源電圧VDD)にプリチャージされる。
【0073】
次の時刻T22で制御信号REF_DOWNが活性化されることによって参照線ML_REFの電圧レベルが電源電圧VDDよりも低下する。これによって、信号線CRS_REFの電圧レベルも低下する。
【0074】
時刻T22から時刻T31の間、サーチ線SL,SL_Nに検索データSD,SD_Nが転送されることによってサーチ線SL,SL_Nが活性化される。この時間帯では、検索データSD,SD_NとCAMセルCCに記憶されたデータとが一致(HIT)しているので、マッチ線MLおよび信号線CRS_MLの電圧に変化はなく電源電圧VDDが維持される。
【0075】
続いてマッチアンプ制御信号MLIが活性化されることによって、図3の転送ゲートQP2,QP3が遮断される。そして、次の時刻T32にマッチアンプ制御信号MAEが活性化されることによって、図3の比較回路21が動作し始める。この結果、信号線CRS_REFの電圧が接地電圧GNDまで低下する。さらに、マッチアンプ制御信号MALATが活性化されることによって、図3のラッチ回路22が検索結果MAO_Nを出力する。
【0076】
次の時刻T33では、比較回路21の動作と並行して、マッチ線プリチャージ信号MLPRE_Nが活性状態(“0”)になる。これによって、次のデータ検索のためにマッチ線MLがプリチャージされる。
【0077】
比較回路21による比較動作が終了した後、時刻T34にマッチアンプ制御信号MLIが非活性状態(“0”)に戻ることによって、図3の転送ゲートQP2,QP3が導通する。これによって、信号線CRS_REFの電圧が電源電圧VDDまで上昇する。以上で、最初のデータ検索が完了する。
【0078】
次の時刻T41にマッチ線プリチャージ信号MLPRE_Nが非活性状態(“1”)になることによって、マッチ線ML、参照線ML_REF、および信号線CRS_ML,CRS_REFのプリチャージが完了する。
【0079】
次の時刻T42で制御信号REF_DOWNが活性化されることによって参照線ML_REFの電圧レベルが電源電圧VDDよりも所定の電圧だけ低下する。これによって、信号線CRS_REFの電圧レベルも所定の電圧だけ低下する。
【0080】
次の時刻T42から時刻T51の間、サーチ線SL,SL_Nに検索データSD,SD_Nが転送される。この場合、検索データSD,SD_NとCAMセルCCに記憶されたデータとが不一致(MISS)であるので、プリチャージされたマッチ線MLおよび信号線CRS_MLの電荷がCAMセルCCを介して放電される。この結果、マッチ線MLおよび信号線CRS_MLの電圧が徐々に低下する。
【0081】
続いてマッチアンプ制御信号MLIが活性化されることによって、図3の転送ゲートQP2,QP3が遮断される。そして、次の時刻T52にマッチアンプ制御信号MAEが活性化されることによって、図3の比較回路21が動作し始める。この結果、信号線CRS_MLの電圧が接地電圧GNDまで低下する。さらに、マッチアンプ制御信号MALATが活性化されることによって、図3のラッチ回路22が検索結果MAO_Nを出力する。
【0082】
次の時刻T53では、比較回路21の動作と並行して、マッチ線プリチャージ信号MLPRE_Nが活性状態(“0”)になる。これによって、次のデータ検索のためにマッチ線MLがプリチャージされる。この結果、マッチ線MLの電圧が電源電圧VDDに向けて徐々に上昇する。
【0083】
比較回路21による比較動作が終了した後、時刻T54にマッチアンプ制御信号MLIが非活性状態(“0”)に戻ることによって、図3の転送ゲートQP2,QP3が導通する。これによって、信号線CRS_REFの電圧も電源電圧VDDまで上昇する。
【0084】
[連想メモリのタイミング制御の留意点]
以上に述べたようにデータ検索においては、マッチ線プリチャージ信号MLPRE_Nの活性化と、サーチ線対SL,SL_Nの活性化(検索データSD,SD_Nの転送)とが同時に生じないようにする必要がある。もし、サーチ線SL,SL_Nの活性化とマッチラインのプリチャージが重なると次のような問題が生じるからである。
【0085】
第1に、図3のプリチャージ用のPMOSトランジスタQP2からCAMセルCCへ貫通電流が流れてしまう。第2に、データ検索の結果が不一致(MISS)であったにもかかわらず、マッチ線プリチャージ信号MLPRE_Nの活性化によりマッチ線MLがHレベルに充電された結果、誤った検索結果を出力してしまう可能性がある。
【0086】
したがって、サーチ線イネーブル信号SLEの活性化のタイミングとマッチ線プリチャージ信号MLPRE_Nの活性化のタイミングとの調整が重要である。具体的には、マッチ線MLのプリチャージが終了した後に、サーチ線対SL,SL_Nに検索データSD,SD_Nの転送(サーチ線SL,SL_Nの活性化)を開始する必要がある。さらに、サーチ線SL,SL_Nが非活性状態になってから、マッチ線プリチャージ信号MLPRE_Nを活性化してマッチ線MLのプリチャージを開始する必要がある。
【0087】
上記の点に加えて、サーチ線SL,SL_Nに検索データSD,SD_Nを転送した後に、マッチアンプ制御信号MLI,MAE,MALATを活性化するタイミングにも留意する必要がある。データ検索の結果が不一致(MISS)であった場合にマッチ線MLがCAMセルCCによって放電されるが、マッチアンプMAからCAMセルCCが遠いほどマッチ線MLの容量のせいでマッチ線MLの電圧低下がマッチアンプMAに伝わるのに時間がかかるからである。
【0088】
従来の連想メモリでは、このようなタイミング制御は複数段のインバータを用いた遅延回路によって行なわれている。このため、製造プロセスによるMOSトランジスタの特性ばらつきの影響や、電源電圧および動作温度の変動の影響が大きくなるので、タイミングの設計に時間が費やされていた。さらに、連想メモリの動作周波数が高速化されると、遅延回路の設計自体が困難になっていた。実施の形態1の連想メモリ100は、従来と異なるタイミング制御の方法を用いることによって、プロセスばらつきの影響や電源電圧および動作温度の変動の影響を抑制することが可能である。以下、詳細に説明する。
【0089】
[連想メモリ100のタイミング制御の詳細]
再び図2を参照して、連想メモリ100は、マッチアンプMAおよびサーチ線ドライバDRの動作タイミングを制御するために設けられたサーチ制御回路40を含む。図1の場合、サーチ制御回路40は、一致検出部20(マッチアンプMA)の−Y方向側、かつ、検索データ転送部30(サーチ線ドライバDR)の−X方向側に設けられる。
【0090】
サーチ制御回路40は、図1のクロックバッファ76からクロックCLKを受け、命令コードデコーダ77からサーチ信号SCMおよびリセット信号RST_Nを受ける。サーチ制御回路40は、受信したこれらの信号に基づいて前述のサーチ線イネーブル信号SLE、マッチ線プリチャージ信号MLPRE_N、およびマッチアンプ制御信号MLI,MAE,MAE_N,MALATを生成して出力する。
【0091】
連想メモリ100において特徴的な点は、サーチ線イネーブル信号SLEを各サーチ線ドライバDRに伝送するために1本の制御信号線36(36A,36B,36C)が設けられている点である。制御信号線36は、サーチ制御回路40の出力ノードから+X方向に延在する配線部36Aと、サーチ線イネーブル信号SLEが折り返される折返し部36Bと、折返し部36Bから−X方向にサーチ制御回路40まで延在する配線部36Cとを含む。
【0092】
配線部36Cは、サーチ線ドライバDRの配列順で各サーチ線ドライバDRと接続され、さらにサーチ制御回路40と接続される。したがって、サーチ線イネーブル信号SLEは、サーチ制御回路40から出力された後、配線部36Aを通過して折返し部36Bに到達する。折返し部36Bで折り返されたサーチ線イネーブル信号SLEは、最初にマッチアンプMAから最も遠いサーチ線ドライバDR[79]と配線部36Cとの接続ノードを通過する。続いて、サーチ線イネーブル信号SLEは、サーチ線ドライバDR[78]、DR[77]、…、DR[0]の順で各サーチ線ドライバDRと配線部36Cとの接続ノードを通過する。サーチ線イネーブル信号SLEは、最後に再びサーチ制御回路40に到達する。以下、サーチ制御回路40から送信された時点のサーチ線イネーブル信号をSLE_SNDと記載し、サーチ制御回路40で再び受信した時点のサーチ線イネーブル信号をSLE_RCVと記載する。
【0093】
上記の制御信号線36を設けることによって、サーチ制御回路40がサーチ線イネーブル信号SLEを活性化させてから、少なくとも第1の配線36Aをサーチ線イネーブル信号SLEが伝播する時間が経過した後、最初のサーチ線ドライバDR[79]が活性化する。したがって、サーチ制御回路40からサーチ線ドライバDR[79]に至るサーチ線イネーブル信号SLEの伝送時間を、サーチ制御回路40からいずれのプリチャージ部PCに至るマッチ線プリチャージ信号MLPRE_Nの伝送時間よりも長くすることができる。この結果、プリチャージ部PCによるマッチ線MLのプリチャージが終了した後に、サーチ線対SL,SL_Nに検索データSD,SD_Nの転送(サーチ線SL,SL_Nの活性化)を開始することが可能である。
【0094】
ここで、サーチ線イネーブル信号SLEの伝送時間は、制御信号線36のRC遅延によって決まる。したがって、信号伝送時間は、配線長、配線の幅、および厚みによって制御することができる。従来の縦続接続されたインバータを用いた遅延回路と異なり、トランジスタの製造プロセスのばらつきの影響を受けることがない。制御信号線36と直列に高抵抗の配線部を挿入したり、制御信号線36と並列に容量負荷を設けたりすることによって伝送時間を調整することもできる。
【0095】
さらに、上記の制御信号線36を設けることによって、サーチ制御回路40に戻ったサーチ線イネーブル信号SLE_RCVを用いて、マッチ線プリチャージ信号MLPRE_Nおよびマッチアンプ制御信号MLI,MAE,MALATを生成することができる。したがって、サーチ線SL,SL_Nが非活性状態になった後に、マッチ線プリチャージ信号MLPRE_Nおよびマッチアンプ制御信号MLI,MAE,MALATを活性化することが容易にできる。
【0096】
さらに、サーチ線SL,SL_Nは、マッチアンプMAから遠いほうから順番に活性化されるので、マッチアンプMAの活性化のタイミングを決定するのにマッチ線MLの配線遅延を考慮する必要がない。
【0097】
このように、上記の構成の制御信号線36を設けることによって、遅延回路を用いなくても、サーチ線SL,SL_Nの活性化のタイミング、マッチ線プリチャージ信号MLPRE_Nの活性化のタイミングを容易に制御することができる。この結果、連想メモリを従来よりも高周波で動作させることができる。
【0098】
[サーチ制御回路40の構成]
以下、サーチ制御回路40の具体的な構成例について説明する。
【0099】
図6は、図1のサーチ制御回路40の構成を示すブロック図である。図6を参照して、サーチ制御回路40は、メインサーチ制御回路41とサブサーチ制御回路50とを含む。
【0100】
メインサーチ制御回路41は、受信したクロックCLK、サーチ信号SCM、およびリセット信号RST_Nに基づいて、マッチ線MLのプリチャージのトリガ信号SE_ACT0およびサーチ線SL,SL_Nの活性化のトリガ信号SE_ACT1を発生する。
【0101】
サブサーチ制御回路50は、サーチ線SL,SL_Nの活性化のトリガ信号SE_ACT1に基づいて、サーチ線イネーブル信号SLE_SNDを生成して出力する。さらに、サブサーチ制御回路50は、受信したサーチ線イネーブル信号SLE_RCVとマッチ線MLのプリチャージのトリガ信号SE_ACT0とに基づいてマッチ線プリチャージ信号MLPRE_Nを生成して出力する。サブサーチ制御回路50は、さらに、受信したサーチ線イネーブル信号SLE_RCVに基づいてマッチアンプ制御信号MLI,MAE,MALATを生成して出力する。
【0102】
(1.メインサーチ制御回路41の構成)
図7は、図6のメインサーチ制御回路41の構成を示すブロック図である。図7を参照して、メインサーチ制御回路41は、Dフリップフロップ42〜44と、AND回路45,46と、インバータ47とを含む。
【0103】
Dフリップフロップ42は、サーチ信号SCMをクロックCLKの立上りエッジのタイミングで保持し、保持した値(SE_C10)を出力する。
【0104】
Dフリップフロップ43は、Dフリップフロップ42の出力信号SE_C10をクロックCLKの立下りエッジのタイミングで保持し、保持した値(SE_C20)を出力する。
【0105】
Dフリップフロップ44は、Dフリップフロップ43の出力信号SE_C20をクロックCLKの立上がりエッジのタイミングで保持し、保持した値(SE_C30)を出力する。
【0106】
AND回路45は、Dフリップフロップ43の出力信号SE_C20とクロックCLKとの論理積を演算し、演算結果をマッチ線MLのプリチャージのトリガ信号SE_ACT0として出力する。
【0107】
AND回路46は、Dフリップフロップ44の出力信号SE_C30とクロックCLKをインバータ47によって反転させた信号との論理積を演算し、演算結果をサーチ線SL,SL_Nの活性化のトリガ信号SE_ACT1として出力する。
【0108】
Dフリップフロップ42〜44は、さらに、リセット信号RST_Nを受ける。リセット信号RST_Nが活性状態(“0”)になったとき、Dフリップフロップ42〜44の出力信号はいずれも“0”にリセットされる。
【0109】
図8は、図7の各信号のタイミング図である。図7、図8を参照して、クロックCLKは、時刻T10,T30,T50のタイミングで立上がり、時刻T20,T40,T60のタイミングで立下がるものとする。
【0110】
クロックCLKが立上がる時刻T10で、サーチ信号SCMが活性状態(“1”)になっている。したがって、Dフリップフロップ42の出力信号SE_C10は、時刻T10から次のクロックCLKの立上がり時刻T30までの間、Hレベルになる。
【0111】
次に、クロックCLKが立下る時刻T20で、Dフリップフロップ42の出力信号SE_C10がHレベルになっている。したがって、Dフリップフロップ43の出力信号SE_C20は、時刻T20から次のクロックCLKの立下り時刻T40までの間、Hレベルになる。
【0112】
次に、クロックCLKが再び立上がる時刻T30で、Dフリップフロップ43の出力信号SE_C20がHレベルになっている。したがって、Dフリップフロップ44の出力信号SE_C30は、時刻T30から次のクロックCLKの立上がり時刻T50までの間、Hレベルになる。
【0113】
次の時刻T30〜T40の間は、フリップフロップ43の出力信号SE_C20およびクロックCLKが共にHレベルであるので、AND回路45の出力であるトリガ信号SE_ACT0はHレベルになる。すなわち、クロックCLKの1周期のうち前半の半周期(T30〜T40)に、マッチ線MLのプリチャージのトリガ信号SE_ACT0が活性状態(“1”)になる。
【0114】
次の時刻T40〜T50の間は、フリップフロップ44の出力信号SE_C30がHレベルであり、クロックCLKがLレベルであるので、AND回路46の出力であるトリガ信号SE_ACT1はHレベルになる。すなわち、クロックCLKの1周期のうち後半の半周期(T40〜T50)に、サーチ線SL,SL_Nの活性化のトリガ信号SE_ACT1が活性状態(“1”)になる。
【0115】
(2.サブサーチ制御回路50の構成)
図9は、図6のサブサーチ制御回路50の一部の構成を示すブロック図である。図9はサーチ線イネーブル信号SLEおよびマッチ線プリチャージ信号MLPRE_Nの生成に関係したサブサーチ制御回路50の構成を示す。
【0116】
図9に示すように、サブサーチ制御回路50は、バッファ回路51,52と、インバータ53と、NAND回路54とを含む。
【0117】
バッファ回路51は、サーチ線SL,SL_Nの活性化のトリガ信号SE_ACT1を整形してサーチ線イネーブル信号SLE_SNDとして出力する。
【0118】
NAND回路54は、受信したサーチ線イネーブル信号SLE_RCVをインバータ53によって反転させた信号と、マッチ線MLのプリチャージのトリガ信号SE_ACT0とのNAND演算を行なう。
【0119】
バッファ回路52は、NAND回路54の演算結果を整形してマッチ線プリチャージ信号MLPRE_Nとして出力する。
【0120】
上記の構成によれば、サーチ線イネーブル信号SLE_RCVが活性状態(“1”)の間は、トリガ信号SE_ACT0が活性化されてもマッチ線プリチャージ信号MLPRE_Nは活性状態(“0”)にならない。サーチ線イネーブル信号SLE_RCVが非活性状態(“0”)になることによって、マッチ線プリチャージ信号MLPRE_Nを活性化することができる。
【0121】
図10は、図9の各信号のタイミング図である。図10は上から順に、クロックCLK、トリガ信号SE_ACT0,SE_ACT1、送信時のサーチ線イネーブル信号SLE_SND、サーチ線ドライバDR[79]に到達したサーチ線イネーブル信号SLE_SL[79]、サーチ制御回路40での受信時のサーチ線イネーブル信号SLE_RCV、およびマッチ線プリチャージ信号MLPRE_Nの各波形を示す。クロックCLKは時刻T10,T30のタイミングで立上がり、時刻T20,T40のタイミングで立下がるものとする。
【0122】
図10に示すように、時刻T20にマッチ線MLのプリチャージのトリガ信号SE_ACT0がLレベルに変化する。これに応答して、マッチ線プリチャージ信号MLPRE_Nが時刻T21にHレベルに変化することにより、マッチ線MLのプリチャージが完了する。
【0123】
さらに、時刻T20には、サーチ線SL,SL_Nの活性化のトリガ信号SE_ACT1がHレベルに変化する。これに応答して、サーチ線イネーブル信号SLE_SNDがHレベルに変化する(活性化する)。このサーチ線イネーブル信号SLE_SNDの活性化から配線遅延分だけ遅れた時刻T23に、サーチ線ドライバDR[79]で受信したサーチ線イネーブル信号SLE_SL[79]が活性化する。さらに、配線遅延分だけ遅れてサーチ制御回路40で受信したサーチ線イネーブル信号SLE_RCVが活性化する。
【0124】
したがって、マッチ線MLのプリチャージが完了した時刻T21と最初にサーチ線SL[79],SL_N[79]を活性化する時刻T23までの間にタイムマージンTD1をもたせることができる。
【0125】
次に、時刻T30に、マッチ線MLのプリチャージのトリガ信号SE_ACT0がHレベルに変化することによって、マッチ線プリチャージ信号MLPRE_Nが活性化できる状態になる。しかし、この時点ではサーチ制御回路40で受信するサーチ線イネーブル信号SLE_RCVがHレベルであるので、マッチ線プリチャージ信号MLPRE_Nは活性化されない。マッチ線プリチャージ信号MLPRE_Nは、サーチ制御回路40で受信するサーチ線イネーブル信号SLE_RCVがLレベルになってから活性化される(時刻T36)。
【0126】
図2で説明したように、サーチ線イネーブル信号SLEは、各サーチ線ドライバDRと制御信号線36との接続ノードを通過した後にサーチ制御回路40に到達する。したがって、サーチ線イネーブル信号SLE_RCVが非活化された時刻T35の時点までに、全てのサーチ線対SL,SL_Nの非活性化が完了している。この結果、全てのサーチ線対SL,SL_Nの非活性化が完了している時刻T35とマッチ線プリチャージ信号MLPRE_Nを活性化する時刻T36との間にタイムマージンTD2をもたせることができる。
【0127】
このように、連想メモリ100では、複数のインバータが縦続接続された遅延回路を用いることなく、マッチ線プリチャージ信号MLPRE_Nおよびサーチ線イネーブル信号SLEのタイミングを制御することができる。
【0128】
図11は、図6のサブサーチ制御回路50の一部の構成を示すブロック図である。図11は、マッチアンプ制御信号MLI,MAE,MAE_N,MALATの生成に関係したサブサーチ制御回路50の構成を示す。
【0129】
図11に示すように、サブサーチ制御回路50は、遅延段55〜59と、インバータ60,61と、AND回路62〜64と、バッファ回路65〜68とを含む。
【0130】
AND回路62は、サーチ線イネーブル信号SLE_RCVをインバータ60によって反転させた信号と、サーチ線イネーブル信号SLE_RCVを遅延段55,58,59によって遅延させた信号とのAND演算を行なう。AND回路62の演算結果は、バッファ回路65によって整形されてマッチアンプ制御信号MLIとして出力される。
【0131】
AND回路63は、サーチ線イネーブル信号SLE_RCVをインバータ60によって反転させてから遅延段56によって遅延させた信号と、サーチ線イネーブル信号SLE_RCVを遅延段55,58によって遅延させた信号とのAND演算を行なう。AND回路63の演算結果は、バッファ回路66によって整形されてマッチアンプ制御信号MAEとして出力される。AND回路63の演算結果は、さらに、インバータ61によって反転されてからバッファ回路67によって整形されてマッチアンプ制御信号MAE_Nとして出力される。
【0132】
AND回路64は、サーチ線イネーブル信号SLE_RCVをインバータ60によって反転させてから遅延段56,57によって遅延させた信号と、サーチ線イネーブル信号SLE_RCVを遅延段55によって遅延させた信号とのAND演算を行なう。AND回路64の演算結果は、バッファ回路68によって整形されてマッチアンプ制御信号MALATとして出力される。
【0133】
図12は、図11の遅延段55の構成の一例を示すブロック図である。図12を参照して、遅延段55は、縦続接続されたCMOS(Complementary Metal-Oxide Semiconductor)インバータ91〜96によって構成される。
【0134】
初段および最終段のCMOSインバータ91,96は、電源ノードVDDと接地ノードGNDとの間に直列に接続されたPMOSトランジスタQP21とNMOSトランジスタQN21とを含む。各トランジスタQP21,QN21のゲートに前段からの信号が入力され、トランジスタQP21,QN21の接続ノードから入力信号を反転させた信号が出力される。
【0135】
中間段のCMOSインバータ92〜96は、電源ノードVDDと接地ノードGNDとの間に直列に接続されたPMOSトランジスタQP22,QP23とNMOSトランジスタQN22,QN23とを含む。各トランジスタQP22,QP23,QN22,QN23のゲートに前段からの信号が入力され、トランジスタQP23,QN22の接続ノードから入力信号を反転させた信号が出力される。中間段のCMOSインバータ92〜96の段数を増減させることによって遅延時間を調整することができる。
【0136】
図11の他の遅延段56〜59の構成も図12と同様である。ただし、これらの遅延段56〜59の遅延時間は遅延段55の遅延時間よりも短いので、中間段のCMOSインバータの段数は遅延段55の段数よりも少ない。
【0137】
図13は、図11の各信号のタイミング図である。図13は上から順に、クロックCLK、トリガ信号SE_ACT1、サーチ制御回路40で受信したサーチ線イネーブル信号SLE_RCV、図11の遅延段55の出力信号SLE_RCV_DLY、およびマッチアンプ制御信号MLI,MAE,MALATの波形を示す。クロックCLKは時刻T10,T30のタイミングで立上がり、時刻T20,T40のタイミングで立下がるものとする。
【0138】
図13に示すように、時刻T30にサーチ線SL,SL_Nの活性化のトリガ信号SE_ACT1がLレベルに変化する。これに応答して、サーチ線イネーブル信号SLEがLレベルに変化するので、配線遅延分だけ遅延した時刻T35にサーチ制御回路40で受信するサーチ線イネーブル信号SLE_RCVがLレベルに変化する。マッチアンプ制御信号MLI,MAE,MALATは、サーチ線イネーブル信号SLE_RCVの立下がりに応答してこの順序でHレベルに変化する。
【0139】
次に、図11の遅延段55の出力信号SLE_RCV_DLYは、所定の遅延時間だけ遅延した時刻T37にLレベルに変化する。マッチアンプ制御信号MALAT,MAE,MLIは、この遅延段55の出力信号SLE_RCV_DLYの立下がりに応答してこの順序でLレベルに変化する。
【0140】
[比較例]
図14は、図2の連想メモリ100の比較例としての連想メモリ900の構成を示すブロック図である。
【0141】
図14の連想メモリ900は、図2の制御信号線36に代えてサーチ制御回路940から+X方向に延在する制御信号線936を含む点で、図2の連想メモリ100と異なる。制御信号線936は、マッチアンプMAに近い側からサーチ線ドライバDRの配列順で各サーチ線ドライバDRと接続される。+X方向に送信されたサーチ線イネーブル信号SLEは、途中で折返されることなく、サーチ線ドライバDRの番号順で各サーチ線ドライバDRに到達する。
【0142】
図15は、図4のサーチ制御回路940の一部の構成を示すブロック図である。図15はサーチ線イネーブル信号SLEおよびマッチ線プリチャージ信号MLPRE_Nの生成に関係したサブサーチ制御回路50の構成を示す。
【0143】
図15に示すように、サーチ制御回路940は、遅延段951,952と、バッファ回路953,954と、NAND回路955とを含む。サーチ線イネーブル信号SLE_SNDは、図8のサーチ線SL,SL_Nの活性化のトリガ信号SE_ACT1が遅延段951で遅延された後、バッファ回路953で整形されることによって生成される。マッチ線プリチャージ信号MLPRE_Nは、図8のマッチ線MLのプリチャージのトリガ信号SE_ACT0と遅延段952で遅延されたトリガ信号SE_ACT0とのNAND演算結果が、バッファ回路954で整形されることによって生成される。
【0144】
このように、図14の比較例の連想メモリ900の場合には、遅延段951,952によってサーチ線イネーブル信号SLEの活性化のタイミングとマッチ線プリチャージ信号MLPRE_Nの活性化のタイミングを制御する必要がある。遅延段951,952の遅延時間は、トランジスタの製造ばらつきや電源電圧および動作温度の変動によって大きく変化するので、タイミング調整に時間を要することになる。特に、動作周波数を高速化していくにつれて、マッチ線MLのプリチャージ期間を確保することが困難になってしまう。
【0145】
[制御信号線の構成例]
図16は、図2の制御信号線36の構成の一例を示す平面図である。図16では、図解を容易にするために一部の配線にハッチングが付されている。
【0146】
図16に示すように、制御信号線36は、同一の金属配線層に一体形成された配線部36A、折返し部36B、および配線部36Cによって構成される。
【0147】
配線部36Aの−X方向側の端部は、サーチ制御回路40に設けられたサーチ線イネーブル信号SLE_SNDの送信部の最終段のトランジスタ49A,49BとコンタクトNCS(接続ノード)を介して接続される。
【0148】
配線部36Cは、折返し部36Bから見て、最初にサーチ線ドライバDR[79]の入力初段のトランジスタ37A,37BとコンタクトNC[79](接続ノード)を介して接続される。配線部36Cは、続いてサーチ線ドライバDRの配列順で各サーチ線ドライバDRの入力初段のトランジスタ37A,37BとコンタクトNC[78]〜NC[1](接続ノード)を介して接続される。最後に、配線部36Cの−X方向側の端部は、サーチ制御回路40に設けられたサーチ線イネーブル信号SLE_RCVの受信部の入力初段のトランジスタ48A,48BとコンタクトNCR(接続ノード)を介して接続される。
【0149】
このように、図16の場合には、サーチ制御回路40は、メモリセルアレイ10の第1の方向(X方向)の一方端(−X方向側の端部)に配置される。制御信号配線36は、第1の配線部36C、第2の配線部36A、および折返し配線部36Bを有する。第1および第2の配線部36C,36Aは、メモリセルアレイ10の第1の方向(X方向)の一方端(−X方向側の端部)から他方端(+X方向側の端部)まで延在し、第2の方向(Y方向)に並んで配置される。折返し配線部36Bは、メモリセルアレイ10の第1の方向(X方向)の他方端(+X方向側の端部)にある。第1の配線部36Cの両端部はそれぞれサーチ線制御回路40と折返し配線部36Bとに接続される。第2の配線部36Aの両端部はそれぞれサーチ線制御回路40と折返し配線部36Bとに接続される。複数のサーチ線ドライバDRは、第1の配線部36Cに接続される。
【0150】
[制御信号線の他の構成例]
図17は、図2の制御信号線36の構成の他の例を示す平面図である。図17では、図解を容易にするために一部の配線にハッチングが付されている。
【0151】
図17に示すように、制御信号線36は、第P層の金属配線層に形成された配線部36Aと、第P層よりも上層の第Q層の金属配線層に形成された配線部36Cと、第P層の配線部36Aの+X方向側の端部と第Q層の配線部36C+X方向側の端部とを接続するコンタクトホール38A,38Bとを含む。コンタクトホール38A,38Bがサーチ線イネーブル信号SLEが折返される折返し部36Bに相当する。
【0152】
第P層の配線部36Aの−X方向側の端部は、サーチ制御回路40に設けられたサーチ線イネーブル信号SLE_SNDの送信部の最終段のトランジスタ49A,49BとコンタクトNCS(接続ノード)を介して接続される。
【0153】
第Q層の配線部36Cは、コンタクトホール38A,38Bから見て、最初にサーチ線ドライバDR[79]の入力初段のトランジスタ37A,37BとコンタクトNC[79](接続ノード)を介して接続される。配線部36Cは、続いてサーチ線ドライバDRの配列順で各サーチ線ドライバDRの入力初段のトランジスタ37A,37BとコンタクトNC[78]〜NC[1](接続ノード)を介して接続される。最後に、配線部36Cの−X方向側の端部は、サーチ制御回路40に設けられたサーチ線イネーブル信号SLE_RCVの受信部の入力初段のトランジスタ48A,48BとコンタクトNCR(接続ノード)を介して接続される。
【0154】
このように、図17の場合には、第1の配線部36Cと第2の配線部36Aはそれぞれ異なる配線層(Q層、P層)に配置され、折返し配線部36Bとしてのコンタクトホール38A,38Bを介して接続される。
【0155】
<実施の形態2>
[連想メモリ100Aの構成]
図18は、この発明の実施の形態2のよる連想メモリ100Aの構成を示すブロック図である。図18の連想メモリ100Aは、図1で説明した連想メモリの構成のうちの一部の配置を示したものである。
【0156】
連想メモリ100Aは、CAMメモリアレイ10が第1、第2のメモリブロック10A,10Bに分割される点で、図2の連想メモリ100と異なる。メモリブロック10A,10Bの各々は、n行m列のCAMセルCC[0,0]〜CC[n−1,m−1]を含む(ただし、m=80)。メモリブロック10A,10Bは、Y方向に延びる仮想線SYM1(対称線)の両側に互いに対称に配置される。以下、メモリブロック10A,10Bの各々において、仮想線SYM1から最も遠い列の列番号を0とし、仮想線SYM1に最も近い列の列番号を79とする。
【0157】
メモリブロック10A,10Bの各々には、各行に個別に対応してX方向に延びるn本のマッチ線ML[0]〜[n−1]と、各列に個別に対応してY方向に延びるm本のサーチ線対SL[0],SL_N[0]〜SL[m−1],SL_N[m−1](ただし、m=80)とが設けられる。以下、メモリブロック10Aに対応したマッチ線およびサーチ線対をマッチ線MLA、サーチ線対SLA,SLA_Nと記載し、メモリブロック10Bに対応したマッチ線およびサーチ線対をマッチ線MLB、サーチ線対SLB,SLB_Nと記載する。メモリブロック10Aに対応して設けられたマッチ線MLAおよびサーチ線対SLA,SLA_Nと、メモリブロック10Bに対応して設けられたマッチ線MLBおよびサーチ線対SLB,SLB_Nとは、仮想線SYM1に対して互いに対称に配置される。
【0158】
さらに、図18に示すように、連想メモリ100Aは、第1のメモリブロック10Aに対応して設けられた一致検出部20A、検索データ転送部30A、第1のプリチャージ部PCA[0]〜PCA[n−1]と、第2のメモリブロック10Bに対応して設けられた一致検出部20B、検索データ転送部30B、第2のプリチャージ部PCB[0]〜PCB[n−1]とを含む。
【0159】
一致検出部20Aは、マッチ線MLA[0]〜MLA[n−1]の各々の両端部のうち、対称線SYM1から遠い側の端部に個別に設けられたマッチアンプMAA[0]〜MAA[n−1]を含む。各マッチアンプMAAの構成は実施の形態1の場合と同じであるので説明を繰り返さない。一致検出部20Bを構成するマッチアンプMAB[0]〜MAB[n−1]についても同様である。一致検出部20Aの各マッチアンプMAAと一致検出部20Bの各マッチアンプMABとは、仮想線SYM1に対して互いに対称に配置される。
【0160】
検索データ転送部30Aは、−Y方向側のサーチ線対SLA[0],SLA_N[0]〜SLA[79],SLA_N[79]の端部にそれぞれ設けられたサーチ線ドライバDRA[0]〜DRA[79]を含む。各サーチ線ドライバDRAの構成は実施の形態1の場合と同じであるので説明を繰り返さない。検索データ転送部30Bを構成するサーチ線ドライバDRB[0]〜DRB[79]についても同様である。検索データ転送部30Aの各サーチ線ドライバDRAと検索データ転送部30Bの各サーチ線ドライバDRBとは、仮想線SYM1に対して互いに対称に配置される。
【0161】
上記の第1のメモリブロック10Aとそれに対応したマッチ線MLA、サーチ線対SLA,SLA_N、一致検出部20A、および検索データ転送部30Aとによってこの発明の第1のメモリ部130Aが構成される。同様に、上記の第2のメモリブロック10Bとそれに対応したマッチ線MLB、サーチ線対SLB,SLB_N、一致検出部20B、および検索データ転送部30Bとによってこの発明の第2のメモリ部130Bが構成される。第1および第2のメモリ部130A,130Bは、仮想線SYM1に対して互いに対称に配置される。
【0162】
第1のプリチャージ部PCA[0]〜PCA[n−1]は、メモリブロック10Aに設けられたマッチ線MLA[0]〜MLA[n−1]にそれぞれ対応して設けられる。第1のプリチャージ部PCA[0]〜PCA[n−1]は、一致検出部20A(マッチアンプMAA)に近接した側のマッチ線MLAの端部にそれぞれ接続される。
【0163】
同様に、第2のプリチャージ部PCB[0]〜PCB[n−1]は、メモリブロック10Bに設けられたマッチ線MLB[0]〜MLB[n−1]にそれぞれ対応して設けられる。第2のプリチャージ部PCB[0]〜PCB[n−1]は、一致検出部20B(マッチアンプMAB)に近接した側のマッチ線MLBの端部にそれぞれ接続される。第1および第2のプリチャージ部PCA,PCBの構成は、実施の形態1のプリチャージ部PCと同じであるので説明を繰り返さない。
【0164】
さらに、連想メモリ100Aは、仮想線SYM1に対して第1のメモリブロック10Aと同じ側に設けられたサブサーチ制御回路50Aと、仮想線SYM1に対して第2のメモリブロック10Bと同じ側に設けられたサブサーチ制御回路50Bとを含む。サブサーチ制御回路50Aとサブサーチ制御回路50Bとは、仮想線SYM1に対して互いに対称に配置される。図18の場合、サブサーチ制御回路50A,50Bの各々から仮想線SYM1までの距離は、一致検出部20A,20Bの各々から仮想線SYM1までの距離とほぼ等しい。
【0165】
サブサーチ制御回路50A(第2の制御部)は、仮想線SYM1を挟んで反対側の検索データ転送部30Bの各サーチ線ドライバDRBにサーチ線イネーブル信号SLE_0(第2の制御信号)を供給する。検索データ転送部30Bの各サーチ線ドライバDRBは、受信したサーチ線イネーブル信号SLE_0が活性化したとき、対応のサーチ線対SLB,SLB_Nに接続された各CAMセルCCに検索データSDB,SDB_Nを転送する。
【0166】
同様に、サブサーチ制御回路50B(第1の制御部)は、仮想線SYM1を挟んで反対側の検索データ転送部30Aの各サーチ線ドライバDRAにサーチ線イネーブル信号SLE_1(第1の制御信号)を供給する。検索データ転送部30Aの各サーチ線ドライバDRAは、受信したサーチ線イネーブル信号SLE_1が活性化したとき、対応のサーチ線対SLA,SLA_Nに接続された各CAMセルCCに検索データSDA,SDA_Nを転送する。
【0167】
サブサーチ制御回路50A(第2の制御部)は、さらに、仮想線SYM1を挟んで反対側のサブサーチ制御回路50B(第1の制御部)からサーチ線イネーブル信号SLE_1(第1の制御信号)を受ける。サブサーチ制御回路50Aは、サーチ線イネーブル信号SLE_1を用いてマッチアンプ制御信号MLI_0,MAE_0,MALAT_0(第4の制御信号)およびマッチ線プリチャージ信号MLPRE_0_N(第6の制御信号)を生成する。生成されたマッチアンプ制御信号MLI_0,MAE_0,MALAT_0およびマッチ線プリチャージ信号MLPRE_0_Nは、仮想線SYM1に対してサブサーチ制御回路50Aと同じ側の一致検出部20Aの各マッチアンプMAAおよび第1のプリチャージ部PCA[0]〜PCA[n−1]にそれぞれ出力される。一致検出部20Aの各マッチアンプMAAは、受信したマッチアンプ制御信号MLI_0,MAE_0,MALAT_0が活性化したとき、対応のマッチ線MLAの論理レベルを検出する。第1のプリチャージ部PCA[0]〜PCA[n−1]は、受信したマッチ線プリチャージ信号MLPRE_0_Nが活性化したとき、対応のマッチ線MLAに所定の電圧(電源電圧)を印加する。
【0168】
同様に、サブサーチ制御回路50B(第1の制御部)は、さらに、仮想線SYM1を挟んで反対側のサブサーチ制御回路50A(第2の制御部)からサーチ線イネーブル信号SLE_0(第2の制御信号)を受ける。サブサーチ制御回路50Bは、サーチ線イネーブル信号SLE_0を用いてマッチアンプ制御信号MLI_1,MAE_1,MALAT_1(第3の制御信号)およびマッチ線プリチャージ信号MLPRE_1_N(第5の制御信号)を生成する。生成されたマッチアンプ制御信号MLI_1,MAE_1,MALAT_1およびマッチ線プリチャージ信号MLPRE_1_Nは、仮想線SYM1に対してサブサーチ制御回路50Bと同じ側の一致検出部20Bの各マッチアンプMABおよび第2のプリチャージ部PCB[0]〜PCB[n−1]にそれぞれ出力される。一致検出部20Bの各マッチアンプMABは、受信したマッチアンプ制御信号MLI_1,MAE_1,MALAT_1が活性化したとき、対応のマッチ線MLBの論理レベルを検出する。第2のプリチャージ部PCB[0]〜PCB[n−1]は、受信したマッチ線プリチャージ信号MLPRE_1_Nが活性化したとき、対応のマッチ線MLBに所定の電圧(電源電圧)を印加する。
【0169】
図18に示すように、サブサーチ制御回路50Aから検索データ転送部30Bおよびサブサーチ制御回路50Bへサーチ線イネーブル信号SLE_0を伝送するために制御信号線120(第2の制御信号線)が設けられる。さらに、サブサーチ制御回路50Bから検索データ転送部30Aおよびサブサーチ制御回路50Aへサーチ線イネーブル信号SLE_1を伝送するために制御信号線121(第1の制御信号線)が設けられる。
【0170】
制御信号線120は、サブサーチ制御回路50Aから概ね+X方向に延在し、仮想線SYM1と交差して反対側のサブサーチ制御回路50Bに達する。制御信号線120は、サーチ線ドライバDRBの配列順(DRB[79]〜DRB[0])に検索データ転送部30Bの各サーチ線ドライバDRBと接続される。したがって、サブサーチ制御回路50Aから出力されたサーチ線イネーブル信号SLE_0は、仮想線SYM1に近い側からの順で検索データ転送部30Bの各サーチ線ドライバDRBに到達する。
【0171】
制御信号線121は、サブサーチ制御回路50Bから概ね−X方向に延在し、仮想線SYM1と交差して反対側のサブサーチ制御回路50Aに達する。制御信号線121は、サーチ線ドライバDRAの配列順(DRA[79]〜DRA[0])に検索データ転送部30Aの各サーチ線ドライバDRAと接続される。したがって、サブサーチ制御回路50Bから出力されたサーチ線イネーブル信号SLE_1は、仮想線SYM1に近い側からの順で検索データ転送部30Aの各サーチ線ドライバDRAに到達する。
【0172】
制御信号線120,121は、仮想線SYM1に関して概ね互いに対称な配置である。したがって、サブサーチ制御回路50Bを起点とし検索データ転送部30Aの任意の第1のサーチ線ドライバDRAまでのサーチ線イネーブル信号SLE_1の伝送経路長は、サブサーチ制御回路50Aを起点とし仮想線SYM1に関して第1のサーチ線ドライバDRAと対称に配置された第2のサーチ線ドライバDRBまでのサーチ線イネーブル信号SLE_0の伝送経路長に等しい。さらに、サブサーチ制御回路50Aからサブサーチ制御回路50Bに至るサーチ線イネーブル信号SLE_0の伝送経路長は、サブサーチ制御回路50Bからサブサーチ制御回路50Aに至るサーチ線イネーブル信号SLE_1の伝送経路長に等しい。したがって、制御信号線120,121の厚みおよび線幅を互いに等しく形成した場合には、信号の伝送時間も等しくなる。
【0173】
連想メモリ100Aは、さらに、第1および第2のメモリブロック10A,10Bに対して共通に設けられたプライオリティエンコーダ70およびメインサーチ制御回路41(第3の制御部)を含む。メインサーチ制御回路41は、サブサーチ制御回路50A,50Bにトリガ信号SE_ACT1,SE_ACT2(第7の制御信号)を出力する。
【0174】
プライオリティエンコーダ70は、仮想線SYM1に対して第2のメモリブロック10Bと同じ側(+X方向側)に設けられる。プライオリティエンコーダ70は、一致検出部20AのマッチアンプMAA[0]〜MAA[n−1]から、第1のメモリブロック10Aに設けられたマッチ線MLAの論理レベルの検出結果MAOA_N[0]〜MAOA_N[n−1]をそれぞれ受ける。さらに、プライオリティエンコーダ70は、一致検出部20BのマッチアンプMAB[0]〜MAB[n−1]から、第2のメモリブロック10Bに設けられたマッチ線MLBの論理レベルの検出結果MAOB_N[0]〜MAOB_N[n−1]をそれぞれ受ける。
【0175】
メインサーチ制御回路41は、仮想線SYM1に対してプライオリティエンコーダ70と同じ側(+X方向側)で、仮想線SYM1からプライオリティエンコーダ70とほぼ等距離の位置に設けられる。さらに、前述のように、サブサーチ制御回路50A,50Bの各々から仮想線SYM1までの距離は、一致検出部20A,20Bの各々から仮想線SYM1までの距離とほぼ等しい。
【0176】
このような配置にすることによって、メインサーチ制御回路41からサブサーチ制御回路50Aに至るトリガ信号SE_ACT1,SE_ACT2の伝送経路長は、一致検出部20Aからプライオリティエンコーダ70に至る検出結果の伝送経路長にほぼ等しくなる。さらに、メインサーチ制御回路41からサブサーチ制御回路50Bに至るトリガ信号SE_ACT1,SE_ACT2の伝送経路長は、一致検出部20Bからプライオリティエンコーダ70に至る検出結果の伝送経路長にほぼ等しくなる。したがって、トリガ信号SE_ACT1,SE_ACT2が伝送する配線と一致検出部20A,20Bの検出結果が伝送する配線とで、各配線の厚みおよび線幅が互いに等しく形成されている場合には、両信号の伝送時間も等しくなる。
【0177】
[連想メモリ100Aの効果]
以上の構成の連想メモリ100Aによれば、サブサーチ制御回路50Aから出力されたサーチ線イネーブル信号SLE_0が検索データ転送部30Bの最初のサーチ線ドライバDRB[79]に到達する時間を、サブサーチ制御回路50Aから出力されたマッチ線プリチャージ信号MLPRE_0_Nがいずれの第1のプリチャージ部PCAに到達する時間よりも長くすることができる。同様に、サブサーチ制御回路50Bから出力されたサーチ線イネーブル信号SLE_1が検索データ転送部30Aの最初のサーチ線ドライバDRA[79]に到達する時間を、サブサーチ制御回路50Bから出力されたマッチ線プリチャージ信号MLPRE_1_Nがいずれの第2のプリチャージ部PCBに到達する時間よりも長くすることができる。したがって、第1および第2のいずれのメモリブロック10A,10Bに対しても、プリチャージ部PCA,PCBによるマッチ線MLA,MLBのプリチャージが終了した後に、サーチ線SLA,SLA_N,SLB,SLB_Nの活性化を行なうことができる。
【0178】
さらに、サブサーチ制御回路50Aは、サブサーチ制御回路50Bから受けたサーチ線イネーブル信号SLE_1_RCVを用いてマッチ線プリチャージ信号MLPRE_0_Nおよびマッチアンプ制御信号MLI_0,MAE_0,MALAT_0を生成することができる。同様に、サブサーチ制御回路50Bは、サブサーチ制御回路50Aから受けたサーチ線イネーブル信号SLE_0_RCVを用いてマッチ線プリチャージ信号MLPRE_1_Nおよびマッチアンプ制御信号MLI_1,MAE_1,MALAT_1を生成することができる。したがって、第1および第2のメモリブロック10A,10Bに対応したサーチ線SLA,SLA_N,SLB,SLB_Nが非活性状態になった後に、マッチ線プリチャージ信号MLPRE_0_N,MLPRE_1_Nおよびマッチアンプ制御信号MLI_0,MAE_0,MALAT_0,MLI_1,MAE_1,MALAT_1を活性化することが容易にできる。
【0179】
さらに、第1および第2のメモリブロック10A,10Bのいずれに対しても、サーチ線SLA,SLA_N,SLB,SLB_Nは、対応のマッチアンプMAA,MABから遠いほうから順番に活性化されるので、マッチアンプMAA,MABの活性化のタイミングを決定するのにマッチ線MLA,MLBの配線遅延を考慮する必要がない。
【0180】
さらに、上記の構成の連想メモリ100Aによれば、第1および第2のメモリブロック間のアクセススキューを小さくすることができる。以下、その理由を具体的に説明する。
【0181】
まず、第1のメモリブロック10Aのデータ検索を行なう場合(第1のデータ検索)には、メインサーチ制御回路41から活性状態のトリガ信号SE_ACT1がサブサーチ制御回路50Bに送信される。これを受けてサブサーチ制御回路50Bから、活性状態のサーチ線イネーブル信号SLE_1が検索データ転送部30Aの各サーチ線ドライバDRAに送信される。これを受けて検索データ転送部30Aの各サーチ線ドライバDRAから、第1のメモリブロック10Aの各CAMセルCCに検索データSDA,SDA_Nが転送される。検索データSDA,SDA_Nと記憶データが不一致の場合に生じるマッチ線MLAの電圧変化は、一致検出部20Aの各マッチアンプMAAによって検出される。そして、一致検出部20Aの各マッチアンプMAAから検出結果がプライオリティエンコーダ70に送信される。
【0182】
次に、第2のメモリブロック10Bのデータ検索を行なう場合(第2のデータ検索)には、メインサーチ制御回路41から活性状態のトリガ信号SE_ACT1がサブサーチ制御回路50Aに送信される。これを受けてサブサーチ制御回路50Aから、活性状態のサーチ線イネーブル信号SLE_0が検索データ転送部30Bの各サーチ線ドライバDRBに送信される。これを受けて検索データ転送部30Bの各サーチ線ドライバDRBから、第2のメモリブロック10Bの各CAMセルCCに検索データSDB,SDB_Nが転送される。検索データSDB,SDB_Nと記憶データが不一致の場合に生じるマッチ線MLBの電圧変化は、一致検出部20Bの各マッチアンプMABによって検出される。そして、一致検出部20Bの各マッチアンプMABから検出結果がプライオリティエンコーダ70に送信される。
【0183】
上記の第1のデータ検索の場合と第2のデータ検索の場合を比較すると、メインサーチ制御回路41からプライオリティエンコーダ70に至る信号の伝送経路長が同じになる。この結果、信号の伝送時間も同じにできるので、サーチ結果の出力のばらつきが小さくなり、従来よりも高速周波数での連想メモリの動作が可能になる。
【0184】
[サブサーチ制御回路50A,50Bの構成]
以下、サブサーチ制御回路50A,50Bの具体的な構成例について説明する。
【0185】
図19は、図18のサブサーチ制御回路50Aの一部の構成を示すブロック図である。図19はサーチ線イネーブル信号SLE_0およびマッチ線プリチャージ信号MLPRE_0_Nの生成に関係したサブサーチ制御回路50Aの構成を示す。回路の内部構成は、図9の場合と同じであるので説明を繰返さない。図19のサブサーチ制御回路50Aは、メインサーチ制御回路41から受けたサーチ線SLB,SLB_Nの活性化のトリガ信号SE_ACT1を用いて、サーチ線イネーブル信号SLE_0_SNDを生成する。さらに、サブサーチ制御回路50Aは、マッチ線MLAのプリチャージのトリガ信号SE_ACT0およびサブサーチ制御回路50Bから受けたサーチ線イネーブル信号SLE_1_RCVを用いて、マッチ線プリチャージ信号MLPRE_0_Nを生成する。
【0186】
図20は、図18のサブサーチ制御回路50Bの一部の構成を示すブロック図である。図20はサーチ線イネーブル信号SLE_1およびマッチ線プリチャージ信号MLPRE_1_Nの生成に関係したサブサーチ制御回路50Bの構成を示す。回路の内部構成は、図9の場合と同じであるので説明を繰返さない。図20のサブサーチ制御回路50Bは、メインサーチ制御回路41から受けたサーチ線SLA,SLA_Nの活性化のトリガ信号SE_ACT1を用いて、サーチ線イネーブル信号SLE_1_SNDを生成する。さらに、サブサーチ制御回路50Bは、マッチ線MLBのプリチャージのトリガ信号SE_ACT0およびサブサーチ制御回路50Aから受けたサーチ線イネーブル信号SLE_0_RCVを用いて、マッチ線プリチャージ信号MLPRE_1_Nを生成する。
【0187】
図21は、図19、図20の各信号のタイミング図である。図21は上から順に、クロックCLK、トリガ信号SE_ACT0,SE_ACT1、サブサーチ制御回路50Aでの送信時のサーチ線イネーブル信号SLE_0_SND、検索データ転送部30Bのサーチ線ドライバDRB[79]に到達したサーチ線イネーブル信号SLE_0_SLB[79]、サブサーチ制御回路50Bでの受信時のサーチ線イネーブル信号SLE_0_RCV、およびマッチ線プリチャージ信号MLPRE_1_Nの各波形を示す。クロックCLKは時刻T10,T30のタイミングで立上がり、時刻T20,T40のタイミングで立下がるものとする。
【0188】
図21に示すように、時刻T20にマッチ線MLBのプリチャージのトリガ信号SE_ACT0がLレベルに変化する。これに応答して、サブサーチ制御回路50Bから出力されるマッチ線プリチャージ信号MLPRE_1_Nが時刻T21にHレベルに変化することにより、第2のメモリブロック10Bに対応したマッチ線MLBのプリチャージが完了する。
【0189】
さらに、時刻T20には、サーチ線SLB,SLB_Nの活性化のトリガ信号SE_ACT1がHレベルに変化する。これに応答して、サブサーチ制御回路50Aから送信されるサーチ線イネーブル信号SLE_0_SNDがHレベルに変化する。このサーチ線イネーブル信号SLE_0_SNDの活性化から配線遅延分だけ遅れた時刻T23に、検索データ転送部30Bのサーチ線ドライバDRB[79]で受信したサーチ線イネーブル信号SLE_0_SLB[79]が活性化する。さらに、配線遅延分だけ遅れてサブサーチ制御回路50Bで受信したサーチ線イネーブル信号SLE_0_RCVが活性化する。
【0190】
したがって、第2のメモリブロック10Bにおいて、マッチ線MLBのプリチャージが完了した時刻T21と最初のサーチ線SLB[79],SLB_N[79]を活性化する時刻T23までの間にタイムマージンTD1をもたせることができる。
【0191】
次に、時刻T30に、マッチ線MLBのプリチャージのトリガ信号SE_ACT0がHレベルに変化する。さらに、サブサーチ制御回路50Bで受信するサーチ線イネーブル信号SLE_0_RCVがLレベルになることによって、サブサーチ制御回路50Bから出力されるマッチ線プリチャージ信号MLPRE_1_Nが活性化する(時刻T36)。この結果、第2のメモリブロック10Bにおいて、全てのサーチ線対SLB,SLB_Nの非活性化が完了している時刻T35とマッチ線プリチャージ信号MLPRE_1_Nを活性化する時刻T36との間にタイムマージンTD2をもたせることができる。以上は、第2のメモリブロック10Bの場合について説明したが、第1のメモリブロック10Aの場合も同様である。
【0192】
図22は、図18のサブサーチ制御回路50Aの一部の構成を示すブロック図である。図22は、マッチアンプ制御信号MLI_0,MAE_0,MALAT_0の生成に関係したサブサーチ制御回路50Aの構成を示す。回路の内部構成は、図11の場合と同じであるので説明を繰返さない。サブサーチ制御回路50Aは、サブサーチ制御回路50Bから受信したサーチ線イネーブル信号SLE_1_RCVを用いてマッチアンプ制御信号MLI_0,MAE_0,MAE_0_N,MALAT_0を生成する。
【0193】
図23は、図18のサブサーチ制御回路50Bの一部の構成を示すブロック図である。図23は、マッチアンプ制御信号MLI_1,MAE_1,MALAT_1の生成に関係したサブサーチ制御回路50Bの構成を示す。回路の内部構成は、図11の場合と同じであるので説明を繰返さない。サブサーチ制御回路50Bは、サブサーチ制御回路50Aから受信したサーチ線イネーブル信号SLE_0_RCVを用いてマッチアンプ制御信号MLI_1,MAE_1,MALAT_1を生成する。
【0194】
図24は、図22の各信号のタイミング図である。図24は上から順に、クロックCLK、トリガ信号SE_ACT1、サブサーチ制御回路50Aで受信したサーチ線イネーブル信号SLE_1_RCV、図22の遅延段55の出力信号SLE_1_RCV_DLY、およびマッチアンプ制御信号MLI_0,MAE_0,MALAT_0の波形を示す。クロックCLKは時刻T10,T30のタイミングで立上がり、時刻T20,T40のタイミングで立下がるものとする。
【0195】
図24に示すように、時刻T30に、メインサーチ制御回路41から出力されるサーチ線SLA,SLA_Nの活性化のトリガ信号SE_ACT1がLレベルに変化する。これに応答して、サブサーチ制御回路50Bから出力されるサーチ線イネーブル信号SLE_1がLレベルに変化するので、配線遅延分だけ遅延した時刻T35にサブサーチ制御回路50Aで受信するサーチ線イネーブル信号SLE_1_RCVがLレベルに変化する。マッチアンプ制御信号MLI_0,MAE_0,MALAT_0は、サーチ線イネーブル信号SLE_1_RCVの立下がりに応答してこの順序でHレベルに変化する。
【0196】
次に、図22の遅延段55の出力信号SLE_1_RCV_DLYは、所定の遅延時間だけ遅延した時刻T37にLレベルに変化する。マッチアンプ制御信号MALAT_0,MAE_0,MLI_0は、この遅延段55の出力信号SLE_1_RCV_DLYの立下がりに応答してこの順序でLレベルに変化する。
【0197】
[制御信号線の構成例]
図25は、図18の制御信号線120,121の構成の一例を示す平面図である。図25では、図解を容易にするために一部の配線にハッチングが付されている。
【0198】
図25に示すように、制御信号線120は、第Q層の金属配線層に一体形成された配線部120A〜120Cを含む。配線部120Aの−X方向側の端部は、サブサーチ制御回路50Aに設けられたサーチ線イネーブル信号SLE_0の送信部の最終段のトランジスタ112A,112BとコンタクトNASを介して接続される。配線部120Aは、コンタクトNASから+X方向に延在する。配線部120Aの+X方向側の端部は、Y方向に延びる配線部120Bの一端と接続される。配線部120Cは、配線部120Bの他端から+X方向に延びる。配線部120Cの+X方向側の端部は、サブサーチ制御回路50Bに設けられたサーチ線イネーブル信号SLE_0の受信部の入力初段のトランジスタ113A,113BとコンタクトNBRを介して接続される。
【0199】
制御信号線121は、制御信号線120と同層の第Q層の金属配線層に形成された配線部121A,121Cと、第Q層のより下層の第P層の金属配線層に形成されたL字状の配線部121Bとを含む。配線部121Aの+X方向側の端部は、サブサーチ制御回路50Bに設けられたサーチ線イネーブル信号SLE_1の送信部の最終段のトランジスタ114A,114BとコンタクトNBSを介して接続される。配線部121Aは、コンタクトNBSから−X方向に延び、配線部121Bの一端とコンタクト122を介して接続される。配線部121Cは、配線部121Bの他端とコンタクト123を介して接続され、コンタクト123から−X方向に延びる。配線部121Cの−X方向側の端部は、サブサーチ制御回路50Aに設けられたサーチ線イネーブル信号SLE_1の受信部の入力初段のトランジスタ111A,111BとコンタクトNARを介して接続される。
【0200】
制御信号線121の配線部121Cは、制御信号線120の配線部120Aよりも検索データ転送部30A寄りに設けられる。配線部121Cは、仮想線SYM1側から見て最初に、検索データ転送部30Aのサーチ線ドライバDRA[79]の入力初段のトランジスタ37A,37BとコンタクトNA[79](接続ノード)を介して接続される。続いて配線部121Cは、サーチ線ドライバDRの配列順で各サーチ線ドライバDRAの入力初段のトランジスタ37A,37Bと接続され、最後にサーチ線ドライバDRA[0]の入力初段のトランジスタ37A,37BとコンタクトNA[0]を介して接続される。
【0201】
制御信号線120の配線部120Cは、制御信号線121の配線部121Aよりも検索データ転送部30B寄りに設けられる。配線部120Cは、仮想線SYM1側から見て最初に、検索データ転送部30Bのサーチ線ドライバDRB[79]の入力初段のトランジスタ37A,37BとコンタクトNB[79]を介して接続される。続いて配線部120Cは、サーチ線ドライバDRBの配列順で各サーチ線ドライバDRBの入力初段のトランジスタ37A,37Bと接続され、最後にサーチ線ドライバDRB[0]の入力初段のトランジスタ37A,37BとコンタクトNB[0]を介して接続される。
【0202】
以上をまとめると、図25の場合の制御信号配線120,121の構成は次のようになる。なお、以下では、第2のメモリ部130Bとサブサーチ制御回路50Bとを合わせて第1のブロックと称し、第1のメモリ部130Aとサブサーチ制御回路50Aとを合わせて第2のブロックと称する。第1および第2のブロックは第1の方向(X方向)に並んで配置される。
【0203】
第1のブロックのサーチ制御回路(サブサーチ制御回路50B)は、第1と第2のブロック全体の第1の方向(X方向)の一方端(+X方向側の端部)に配置される。第2のブロックのサーチ制御回路(サブサーチ制御回路50A)は第1と第2のブロック全体の第1の方向(X方向)の他方端(−X方向側の端部)に配置される。
【0204】
制御信号配線120,121は、第1〜第4の配線部を含む。第1の配線部120(120A〜120C)は、第1の方向(X方向)に延在し、両端部がそれぞれ、第1のブロックのサーチ制御回路50Bと第2のブロックのサーチ制御回路50Aとに接続される。第2の配線部121Bは、第1と第2ブロックの間に配置される。第3の配線部121Aは、第1の方向(X方向)に延在し、両端部がそれぞれ第1のブロックのサーチ制御回路50Bと第2の配線部121Bに接続される。第4の配線部121Cは、第1の方向に延在し、両端部がそれぞれ第2のブロックのサーチ制御回路50Aと第2の配線部121Bに接続される。
【0205】
より詳しくは、第1のブロックの複数のサーチ線ドライバDRBはそれぞれ第1の配線部120(120C)に接続される。第2のブロックの複数のサーチ線ドライバDRAはそれぞれ第4の配線部121Cに接続される。第1と第3と第4の配線部120,121A,121Cは第1の配線層(Q層)に配置され、第2の配線部121Bは第1の配線層(Q層)と異なる第2の配線層(P層)に配置される。
【0206】
[制御信号線の他の構成例]
図26は、図18の制御信号線120,121の構成の他の例を示す平面図である。図26では、図解を容易にするために一部の配線にハッチングが付されている。
【0207】
図26に示すように、制御信号線120は、第P層の金属配線層に形成された配線部120Aと、第P層より上層の第Q層の金属配線層に形成された配線部120Bとを含む。−X方向側の端部を除いて配線部120AはX方向に延在する。配線部120Aの−X方向側の端部はL字状に屈曲し、サブサーチ制御回路50Aに設けられたサーチ線イネーブル信号SLE_0の送信部の最終段のトランジスタ112A,112BとコンタクトNAS(接続ノード)を介して接続される。配線部120Bの−X方向側の端部は、仮想線SYM1付近で配線部120Aの+X方向側の端部とコンタクト124を介して接続される。配線部120Bは、コンタクト124から+X方向に延びる。配線部120Bの+X方向側の端部は、サブサーチ制御回路50Bに設けられたサーチ線イネーブル信号SLE_0の受信部の入力初段のトランジスタ113A,113BとコンタクトNBRを介して接続される。
【0208】
制御信号線121は、第P層の金属配線層に形成された配線部121Aと、第P層より上層の第Q層の金属配線層に形成された配線部121Bとを含む。配線部121AはL字状に屈曲する両端部を除いてX方向に延びる。配線部121Aの+X方向側の端部は、サブサーチ制御回路50Bに設けられたサーチ線イネーブル信号SLE_1の送信部の最終段のトランジスタ114A,114BとコンタクトNBSを介して接続される。配線部121Bは、クランク状に2回屈曲した+X方向側の端部を除いてX方向に延在する。配線部121Bの+X方向側の端部は、コンタクト125を介して配線部121Aの−X方向側の端部と接続される。配線部121Cの−X方向側の端部は、サブサーチ制御回路50Aに設けられたサーチ線イネーブル信号SLE_1の受信部の入力初段のトランジスタ111A,111BとコンタクトNARを介して接続される。
【0209】
第Q層に形成された制御信号線120の配線部120Bは、仮想線SYM1側から見て最初に、検索データ転送部30Bのサーチ線ドライバDRB[79]の入力初段のトランジスタ37A,37BとコンタクトNB[79]を介して接続される。続いて配線部120Bは、サーチ線ドライバDRBの配列順で検索データ転送部30Bの各サーチ線ドライバDRBの入力初段のトランジスタ37A,37Bと接続される。配線部120Bは、最後に検索データ転送部30Bのサーチ線ドライバDRB[0]の入力初段のトランジスタ37A,37BとコンタクトNB[0]を介して接続される。
【0210】
第Q層に形成された制御信号線121の配線部121Bは、仮想線SYM1側から見て最初に、検索データ転送部30Aのサーチ線ドライバDRA[79]の入力初段のトランジスタ37A,37BとコンタクトNA[79]を介して接続される。続いて配線部121Bは、サーチ線ドライバDRAの配列順で検索データ転送部30Aの各サーチ線ドライバDRAの入力初段のトランジスタ37A,37Bと接続される。配線部121Bは、最後に検索データ転送部30Aのサーチ線ドライバDRA[0]の入力初段のトランジスタ37A,37BとコンタクトNA[0]を介して接続される。
【0211】
以上をまとめると、図26の場合の制御信号配線120,121の構成は次のようになる。なお、以下では、第2のメモリ部130Bとサブサーチ制御回路50Bとを合わせて第1のブロックと称し、第1のメモリ部130Aとサブサーチ制御回路50Aとを合わせて第2のブロックと称する。第1および第2のブロックは第1の方向(X方向)に並んで配置される。
【0212】
第1のブロックのサーチ制御回路(サブサーチ制御回路50B)は、第1と第2のブロック全体の第1の方向(X方向)の一方端(+X方向側の端部)に配置される。第2のブロックのサーチ制御回路(サブサーチ制御回路50A)は、第1と第2のブロック全体の第1の方向(X方向)の他方端(−X方向側の端部)に配置される。
【0213】
制御信号配線120,121は、第1〜第4の配線部を含む。第1の配線部120Bおよび第2の配線部121Aは、第1の方向(X方向)に延在し、それぞれの一方端(+X方向側の端部)が、第1のブロックのサーチ制御回路50Bに接続される。第3の配線部121Bおよび第4の配線部120Aは、第1の方向(X方向)に延在し、それぞれの一方端(−X方向側の端部)が、第2のブロックのサーチ制御回路50Aに接続される。第1と第3の配線部120B,121Bは第1の配線層(Q層)に配置される。第2と第4の配線部121A,120Aは第1の配線層(Q層)とは異なる第2の配線層(P層)に配置される。第1と第4の配線部120B,120Aのそれぞれの他方端はコンタクト124を介して接続される。第2と第3の配線部121A,121Bのそれぞれの他方端はコンタクト125を介して接続される。
【0214】
より詳しくは、第1のブロックの複数のサーチ線ドライバDRBはそれぞれ第1の配線部120Bに接続される。第2のブロックの複数のサーチ線ドライバDRAはそれぞれ第3の配線部121Bに接続される。
【0215】
今回開示された実施の形態はすべての点で例示であって制限的なものでないと考えられるべきである。この発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0216】
CC CAMセル、DR,DRA,DRB サーチ線ドライバ、MA,MAA,MAB マッチアンプ、MLI,MAE,MALAT マッチアンプ制御信号、MAO_N,MAOA_N,MAOB_N マッチアンプの出力信号、ML,MLA,MLB マッチ線、MLPRE_N マッチ線プリチャージ信号、PC,PCA,PCB プリチャージ部、SD,SD_N,SDA,SDA_N,SDB,SDB_N 検索データ、SE_ACT0,SE_ACT1 トリガ信号、SL,SL_N サーチ線対、SLA,SLA_N サーチ線対、SLB,SLB_N サーチ線対、SLE サーチ線イネーブル信号、SYM1 仮想線(対称線)、10 CAMメモリアレイ、10A 第1のメモリブロック、10B 第2のメモリブロック、20,20A,20B 一致検出部、30,30A,30B 検索データ転送部、36 制御信号線、40 サーチ制御回路、41 メインサーチ制御回路、50,50A,50B サブサーチ制御回路、70 プライオリティエンコーダ、100,100A 連想メモリ、120,121 制御信号線、130A 第1のメモリ部、130B 第2のメモリ部。
【技術分野】
【0001】
この発明は半導体素子を用いた連想メモリ(CAM:Content Addressable Memory)に関し、特に従来よりも高速動作が可能な連想メモリに関する。
【背景技術】
【0002】
一般に半導体メモリの高集積化および大容量化が進むにつれて半導体メモリの高速動作は困難になる。その原因の1つは、配線に接続されるメモリセル数の増加によって配線の容量が増大するために信号の伝搬遅延が生じるからである。
【0003】
特開平10−255477号公報(特許文献1)に開示された技術は、ワード線駆動回路から出力された駆動制御信号の伝搬遅延をなくすことを目的としたものである。この文献のワード線駆動回路は、信号発生部と、第1のドライバ回路と、第2のドライバ回路と、高速化ドライバ回路とを含む。信号発生部は所定のタイミングで駆動信号を発生する。第1のドライバ回路は、駆動信号に応答して、複数の被制御回路が接続された第1の配線の一端側を駆動する。第2のドライバ回路は、駆動信号に応答して、第1の配線より駆動負荷が小さい第2の配線の一端側を駆動する。高速化ドライバ回路は、第2の配線の他端側および第一の配線の他端側に入力が接続され、第1の配線の他端側と第2の配線の他端側のレベルが一致しないときに第1の配線の他端側を駆動する出力端子を有する。
【0004】
特開2001−357675号公報(特許文献2)は、読出時のアクセスタイムを高速化するための技術を開示する。この文献に記載の半導体記憶装置は、列方向に配列されたメモリセルと、各メモリセルに接続された一対のディジット線と、前記ディジット線と交差して敷設され各メモリセルを選択するワード線とを備える。さらに、この半導体装置は、ディジット線の一端に配置されたセンスアンプと、ディジット線のセンスアンプの近傍に配置された近端側プリチャージ回路と、ディジット線のセンスアンプと反対側の端部に配置された遠端側プリチャージ回路とを備える。このような半導体記憶装置において、読出動作時の遠端側プリチャージ回路のプリチャージ動作の終了時点が近端側プリチャージ回路のそれと同時かそれより早いことを特徴とする。好ましくは、読出動作時における遠端側プリチャージ回路に近い側のワード線の選択信号の方が近端側プリチャージ回路に近い側のワード線の選択信号より早く立ち上がる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平10−255477号公報
【特許文献2】特開2001−357675号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
この発明は、データ検索機能を備えた連想メモリを対象とする。従来のメモリは、アドレスが入力されたときにそのアドレスに対応したメモリセルの記憶データを出力する。これに対して、連想メモリでは検索データが入力され、検索データに合致した記憶データが探索される。そして、検索データに合致した記憶データがあれば、その記憶データに対応したアドレスまたはそのアドレスに関連したデータが出力される。
【0007】
具体的には、連想メモリでは複数のメモリセルが1本のマッチ線(一致線)に接続される。さらにマッチ線と交差してメモリセルごとに一対のサーチ線(検索線)が設けられる。検索動作時にはマッチ線が、たとえば“1”(H(High)レベル)にプリチャージされる。その後、サーチ線を介して検索データが転送される。転送された検索データとメモリセルに予め記憶されたデータとが一致したときには、マッチ線は“1”の状態に維持され、不一致のときは“0”(L(Low.)レベル)の状態に駆動される。マッチ線の論理レベルはマッチ線に接続されたマッチアンプによって検出される。
【0008】
このような構成の連想メモリで高速動作を可能にするためには、マッチ線をプリチャージするタイミング、対応のメモリセルに検索データを入力するタイミング、およびマッチ線の論理レベルを検出するタイミングなどの制御が重要である。しかしながら、従来技術では、これらのタイミング制御は半導体素子を用いた遅延段によって行なわれているので、回路動作が高速化するほど遅延段の設計が困難になっている。
【0009】
この発明の目的は、従来よりも高周波数動作が可能な連想メモリを提供することである。
【課題を解決するための手段】
【0010】
この発明の実施の一形態による連想メモリは、マッチ線と、プリチャージ部と、マッチ線に沿って配列された複数のメモリセルと、マッチアンプと、検索データ転送部とを備える。プリチャージ部は、マッチ線と接続され、マッチ線を所定の電圧にプリチャージするために設けられる。複数のメモリセルの各々は、データ検索時に、入力された検索データと予め記憶したデータとの一致または不一致によりマッチ線をプリチャージ状態から変化させる。マッチアンプは、マッチ線の一端に設けられ、マッチ線の論理レベルを検出する。検索データ転送部は、マッチアンプから遠い側のメモリセルから複数のメモリセルの配列順で各メモリセルに検索データを転送する。
【発明の効果】
【0011】
上記の実施の形態によれば、マッチアンプから遠い側のメモリセルからメモリセルの配列順で検索データが各メモリセルに転送される。したがって、メモリセルへの検索データの転送後に、マッチ線の遅延時間を考慮することなくマッチアンプによって論理レベルの検出を開始することができる。この結果、従来よりも高周波数動作が可能になる。
【図面の簡単な説明】
【0012】
【図1】この発明の実施の形態1による連想メモリ100の全体構成を示すブロック図である。
【図2】図1の連想メモリ100の一部の構成を詳細に示すブロック図である。
【図3】図2のプリチャージ部PC、CAMセルCC、およびマッチアンプMAの構成を示す回路図である。
【図4】図2のサーチ線ドライバDRの構成を示すブロック図である。
【図5】図3、図4の各信号のタイミング図である。
【図6】図1のサーチ制御回路40の構成を示すブロック図である。
【図7】図6のメインサーチ制御回路41の構成を示すブロック図である。
【図8】図7の各信号のタイミング図である。
【図9】図6のサブサーチ制御回路50の一部の構成を示すブロック図である(サーチ線イネーブル信号SLEおよびマッチ線プリチャージ信号MLPRE_Nの生成)。
【図10】図9の各信号のタイミング図である。
【図11】図6のサブサーチ制御回路50の一部の構成を示すブロック図である(マッチアンプ制御信号MAEなどの生成)。
【図12】図11の遅延段55の構成の一例を示すブロック図である。
【図13】図11の各信号のタイミング図である。
【図14】図2の連想メモリ100の比較例としての連想メモリ900の構成を示すブロック図である。
【図15】図4のサーチ制御回路940の一部の構成を示すブロック図である。
【図16】図2の制御信号線36の構成の一例を示す平面図である。
【図17】図2の制御信号線36の構成の他の例を示す平面図である。
【図18】この発明の実施の形態2のよる連想メモリ100Aの構成を示すブロック図である。
【図19】図18のサブサーチ制御回路50Aの一部の構成を示すブロック図である(サーチ線イネーブル信号SLE_0およびマッチ線プリチャージ信号MLPRE_0_Nの生成)。
【図20】図18のサブサーチ制御回路50Bの一部の構成を示すブロック図である(サーチ線イネーブル信号SLE_1およびマッチ線プリチャージ信号MLPRE_1_Nの生成)。
【図21】図19、図20の各信号のタイミング図である。
【図22】図18のサブサーチ制御回路50Aの一部の構成を示すブロック図である(マッチアンプ制御信号MAE_0などの生成)。
【図23】図18のサブサーチ制御回路50Bの一部の構成を示すブロック図である(マッチアンプ制御信号MAE_1などの生成)。
【図24】図22の各信号のタイミング図である。
【図25】図18の制御信号線120,121の構成の一例を示す平面図である。
【図26】図18の制御信号線120,121の構成の他の例を示す平面図である。
【発明を実施するための形態】
【0013】
以下、この発明の実施の形態について図面を参照して詳しく説明する。なお、同一または相当する部分には同一の参照符号を付して、その説明を繰返さない。
【0014】
<実施の形態1>
[連想メモリ100の全体構成と動作の概略]
図1は、この発明の実施の形態1による連想メモリ100の全体構成を示すブロック図である。
【0015】
図1を参照して、連想メモリ100は、半導体基板SUB上に形成されたCAMメモリアレイ10と、一致検出部20と、検索データ転送部30と、サーチ制御回路40(制御部)と、プライオリティエンコーダ70と、サーチ結果出力バッファ81と、アドレス/データバッファ74と、命令コードバッファ75と、命令コードデコーダ77と、クロックバッファ76と、アドレスデコーダ78と、センスアンプ79とを含む。
【0016】
CAMメモリアレイ10は、行列状に配列された複数のCAMセル(メモリセル)によって構成される。各CAMセルは1ビットのデータを記憶するとともに、検索データと予め記憶したデータとを比較する機能を有する。
【0017】
連想メモリ100は、通常のデータ書込およびデータ読出のためにCAMメモリアレイ10の各行に対応して設けられたワード線(図3の参照符号WL)と、CAMメモリアレイ10の各列に対応して設けられたビット線対(図3の参照符号BL,BL_N)を含む。さらに、連想メモリ100は、データ検索のためにCAMメモリアレイ10の各行に対応して設けられたマッチ線ML(一致線)と、CAMメモリアレイ10の各列に対応して設けられたサーチ線対SL,SL_N(検索線対)を含む。なお、この明細書では、論理レベルを反転させた相補的な関係にある場合に参照符号の末尾に_Nが付される。
【0018】
一致検出部20(マッチアンプ)は、各マッチ線MLの論理レベル(“1”または“0”)を検出する。これによって、各マッチ線MLに接続された各CAMセルにおいて検索データと予め記憶したデータとが一致したか否かが検知される。
【0019】
検索データ転送部30(サーチ線ドライバ)は、データ検索時にサーチ線対SL,SL_Nを介してCAMメモリアレイ10の各メモリセルに検索データを転送する。
【0020】
サーチ制御回路40は、入力されたクロックCLKに基づいて検索データ転送部30および一致検出部20の動作タイミングを制御する。
【0021】
プライオリティエンコーダ70は、一致検出部20の検出結果に基づいて、検索データと記憶データとが一致したアドレスを所定の優先順位に従ってサーチ結果として出力する。
【0022】
サーチ結果出力バッファ81は、プライオリティエンコーダ70から受けたサーチ結果を、サーチ結果出力端子82を介して外部に出力する。
【0023】
アドレス/データバッファ74は、アドレス/データ入力端子71を介して受けたアドレスまたはデータをアドレスデコーダ78およびセンスアンプ79に出力する。さらに、アドレス/データバッファ74は、データ検索に必要な多ビットの検索データSD,SD_Nをアドレス/データ入力端子71を介して受けて検索データ転送部30へ出力する。
【0024】
命令コードバッファ75は、命令コード入力端子72を介して受けた命令コードを、命令コードデコーダ77に出力する。命令コードには、データ書込を表わす命令コードおよびデータ検索を表わす命令コードなどがある。
【0025】
命令コードデコーダ77は、命令コードバッファ75から受けた命令コードをデコードして、命令内容に応じた信号を発生させる。たとえば、データ検索命令を受けたときは、命令コードバッファ75はサーチ信号SCMを活性化させる。リセット命令を受けたときは、命令コードバッファ75はリセット信号RSTを活性化させる。
【0026】
アドレスデコーダ78は、アドレス/データバッファ74から受けたアドレスに基づいて、データ書込時には書込対象のメモリセル群を選択し、データ読出時には読出対象のメモリセル群を選択する。
【0027】
クロックバッファ76は、クロック入力端子73を介して外部からクロックを受け、連想メモリ100の各部に出力する。
【0028】
センスアンプ79は、データ読出時に読出対象のCAMセルが接続されたビット線対の論理レベルを検出する。
【0029】
以下、データ検索に関係する構成要素についてさらに詳しく説明する。
図2は、図1の連想メモリ100の一部の構成を詳細に示すブロック図である。図2では、CAMメモリアレイ10と、一致検出部20と、検索データ転送部30と、サーチ制御回路40とが示されている。
【0030】
CAMメモリアレイ10は、n行m列の行列状に配列された複数のメモリセル(CAMセル)を含む。図2の場合、m=80である。以下では、第i行第j列(iは1以上n−1以下の整数、jは1以上m−1以下の整数)のCAMセルをCAMセルCC[i−1,j−1]と記載し、CAMセルについて総称するときまたは不特定のものを示すときCAMセルCCと記載する。さらに、CAMメモリアレイ10の行方向をX方向と称し、列方向をY方向と称する。X方向について向きを区別するときには+X方向、−X方向のように符号を付して記載する。Y方向についても同様である。
【0031】
図2に示すように、連想メモリ100は、CAMメモリアレイ10の行に対応して設けられ、X方向に延びるn本のマッチ線ML[0]〜ML[n−1]を含む。さらに、連想メモリ100は、CAMメモリアレイ10の列に対応して設けられ、Y方向に延びるm対のサーチ線対SL[0],SL_N[0]〜SL[m−1],SL_N[m−1]を含む(図2はm=80の場合が記載されている。)。マッチ線ML[0]〜ML[n−1]およびサーチ線対SL[0],SL_N[0]〜SL[79],SL_N[79]について、総称する場合または不特定のものを示す場合にマッチ線MLおよびサーチ線対SL,SL_Nとそれぞれ記載する。各CAMセルCCは、n本のマッチ線MLとm対のサーチ線対SL,SL_Nとの各交差点に対応して設けられる。各CAMセルCCは、対応のマッチ線MLおよび対応のサーチ線対SL,SL_Nと接続される。
【0032】
連想メモリ100は、さらに、n本のマッチ線ML[0]〜ML[n−1]にそれぞれ接続されたプリチャージ部PC[0]〜PC[n−1]を含む。プリチャージ部PC[0]〜PC[n−1]についても総称する場合または不特定のものを示す場合にプリチャージ部PCと記載する。各プリチャージ部PCは、サーチ制御回路40から受信したマッチ線プリチャージ信号MLPRE_N(第3の制御信号)が活性状態(“0”)になったとき、対応のマッチ線MLを所定の電圧(図2の場合、電源電圧)にプリチャージする。各プリチャージ部PCは、対応のマッチ線MLの−X方向側の端部に、すなわち、一致検出部20(マッチアンプMA[0]〜MA[n−1]に近接して設けられる。
【0033】
連想メモリでは複数のCAMセルCCによって構成された1エントリごとに、多ビットの検索データ(検索ワード)と予め記憶した記憶データ(記憶ワード)とが比較される。図2の場合、各マッチ線MLに接続された1行分(80個)のCAMセルCCによって1エントリが構成される。すなわち、エントリビット幅は80ビットである。検索ワードは、80対のサーチ線対SL,SL_Nを介してCAMメモリアレイ10の各エントリに入力される。入力された検索ワードと記憶ワードとは、CAMセルCCごとにビット単位で比較される。
【0034】
データ検索手順について簡単に説明すると、まず、プリチャージ部PCによって各マッチ線MLが“1”にプリチャージされる。次に、各CAMセルCCに、対応のサーチ線対SL,SL_Nを介して検索データが入力される。各CAMセルCCは、入力された検索データと予め記憶している1ビットの記憶データとを比較し、両者が異なっている場合はプリチャージ状態にある対応のマッチ線MLを放電させることによって対応のマッチ線MLの論理レベルを変化させる。
【0035】
したがって、各マッチ線MLに接続された複数のCAMセルCCのいずれについても記憶データと検索データとが一致(ヒット:HIT)したとき、すなわち、検索ワードと記憶ワードとが一致したときには、マッチ線MLの論理レベルは“1”に維持される。各マッチ線MLに接続された少なくとも1つのCAMセルCCについて記憶データと検索データとが不一致(ミス:MISS)のとき、すなわち、検索ワードと記憶ワードとが不一致のときには、プリチャージされた電荷が放電されるのでマッチ線MLの論理レベルは“0”になる。
【0036】
なお、データ検索手順としては、マッチ線を“0”にプリチャージし、記憶データと検索データとが一致したとき“1”に充電する方法や、マッチ線を“1”にプリチャージし、記憶データと検索データとが一致したとき“0”に放電する方法など様々な手順が考えられる。本願では、特にデータ検索手順に限定されるものではない。
【0037】
一致検出部20は、n本のマッチ線MLにそれぞれ対応するn個のマッチアンプMA[0]〜MA[n−1]を含む。以下、マッチアンプMA[0]〜MA[n−1]について総称する場合または不特定のものを示す場合にマッチアンプMAと記載する。各マッチアンプMAは、対応するマッチ線MLの−X方向側の端部に接続される。
【0038】
各マッチアンプMAは、対応のマッチ線MLの論理レベル(“1”または“0”)を検出する。図3で説明するように、各マッチアンプMAは、対応のマッチ線MLの電圧と参照線(図3のML_REF)に印加された参照電圧とを比較することによってマッチ線MLの論理レベルを検出する。各マッチアンプMAの動作は、サーチ制御回路40から出力されたマッチアンプ制御信号MLI,MAE,MALAT(第2の制御信号)によって制御される。
【0039】
検索データ転送部30は、合計でm対のサーチ線対SL[0],SL_N[0]〜SL[m−1],SL_N[m−1]にそれぞれ対応するm個のサーチ線ドライバDR[0]〜DR[m−1](図2の場合、m=80)を含む。サーチ線ドライバDR[0]〜DR[79]について総称する場合または不特定のものを示す場合、サーチ線ドライバDRと記載する。各サーチ線ドライバDRは、対応するサーチ線対SL,SL_Nの−Y方向側の端部に接続される。
【0040】
図2に示すように、第i番目(iは1以上m以下の整数)のサーチ線ドライバDR[i−1]は、個別の検索データSD[i−1],SD_N[i−1]と共通のサーチ線イネーブル信号SLE(第1の制御信号)とを受ける。検索データSD[i−1],SD_N[i−1]は、一方が“1”のとき他方が“0”となる相補のデータであり、図1のアドレス/データバッファ74から供給される。サーチ線イネーブル信号SLEは、1本の制御信号線36(36A,36B,36C)を介してサーチ制御回路40から供給される。サーチ線ドライバDR[i−1]は、サーチ線イネーブル信号SLEが活性状態(“1”)のとき検索データSD[i−1],SD_N[i−1]を対応のサーチ線対SL[i−1],SL_N[i−1]に転送する。なお、検索データSD[0],SD_N[0]〜SD[m−1],SD_N[m−1]についても、総称する場合または不特定のものを示す場合に検索データSD,SD_Nと記載する。
【0041】
[マッチアンプおよびサーチ線ドライバなどの詳細]
以下、プリチャージ部PC、CAMセル、マッチアンプMA、およびサーチ線ドライバDRの構成および動作についてさらに詳しく説明する。
【0042】
図3は、図2のプリチャージ部PC、CAMセルCC、およびマッチアンプMAの構成を示す回路図である。
【0043】
(1.プリチャージ部PC)
図3を参照して、各プリチャージ部PCは、PMOS(P-channel Metal Oxide Semiconductor)トランジスタQP1を含む。PMOSトランジスタQP1のドレインは対応のマッチ線MLに接続され、ソースは電源ノードVDDに接続され、ゲートにはマッチ線プリチャージ信号MLPRE_Nが入力される。マッチ線プリチャージ信号MLPRE_Nが活性化(“0”)されたときに、PMOSトランジスタQP1が導通することによってマッチ線MLに電源電圧が印加される。
【0044】
(2.CAMセルの構成)
CAMセルCCは、データを記憶するSRAM(Static Random Access Memory)セル11と、NMOS(N-channel Metal Oxide Semiconductor)トランジスタQN1〜QN4とを含む。
【0045】
SRAMセル11は、インバータ12,13からなるフリップフロップと、データ入出力用のNMOSトランジスタ14,15とを含む。インバータ12,13の各出力ノードは他方の入力ノードに接続される。インバータ12,13の出力ノードがデータを保持する記憶ノードND1,ND1_Nとして用いられる。記憶ノードND1,ND1_Nに記憶されるデータは一方が“1”のとき他方が“0”となる相補的なデータである。
【0046】
記憶ノードND1は、NMOSトランジスタ14を介して対応のビット線BLに接続され、記憶ノードND1_Nは、NMOSトランジスタ15を介して対応のビット線BL_Nに接続される。NMOSトランジスタ14,15のゲート電極が対応のワード線WLに接続される。ワード線WLおよびビット線対BL,BL_Nは、通常のデータ書込およびデータ読出のときに用いられる。
【0047】
NMOSトランジスタQN1,QN2は、この順でマッチ線MLと接地ノードGNDとの間に直列に接続される。NMOSトランジスタQN1のゲートは記憶ノードND1_Nに接続され、NMOSトランジスタQN2のゲートは対応のサーチ線SLに接続される。
【0048】
NMOSトランジスタQN3,QN4は、この順でマッチ線MLと接地ノードGNDとの間に直列接続される。NMOSトランジスタQN3のゲートは記憶ノードND1に接続され、NMOSトランジスタQN4のゲートは対応のサーチ線SL_Nに接続される。
【0049】
したがって、データ検索時に、記憶ノードND1が“1”(記憶ノードND1_Nが“0”)であり、かつ、サーチ線SLが“1”(サーチ線SL_Nが“0”)のとき(一致)、NMOSトランジスタQN2,QN3は導通状態になり、NMOSトランジスタQN1,QN4は非導通状態になる。この場合、マッチ線MLと接地ノードGNDとは非接続状態であるので、プリチャージされたマッチ線MLの電圧は維持される。
【0050】
データ検索時に、記憶ノードND1が“1”であり、かつ、サーチ線SLが“0”のとき(不一致)、NMOSトランジスタQN3,QN4は導通状態になり、NMOSトランジスタQN1,QN2は非導通状態になる。この場合、マッチ線MLと接地ノードGNDとはNMOSトランジスタQN3,QN4を介して接続される。この導電パスを介して、プリチャージされたマッチ線MLの電荷が放電される。
【0051】
データ検索時に、記憶ノードND1が“0”であり、かつ、サーチ線SLが“0”のとき(一致)、NMOSトランジスタQN1,QN4は導通状態になり、NMOSトランジスタQN2,QN3は非導通状態になる。この場合、マッチ線MLと接地ノードGNDとは非接続状態であるので、プリチャージされたマッチ線MLの電圧は維持される。
【0052】
データ検索時に、記憶ノードND1が“0”であり、かつ、サーチ線SLが“1”のとき(不一致)、NMOSトランジスタQN1,QN2は導通状態になり、NMOSトランジスタQN3,QN4は非導通状態になる。この場合、マッチ線MLと接地ノードGNDとはNMOSトランジスタQN1,QN2を介して接続される。この導電パスを介して、プリチャージされたマッチ線MLの電荷が放電される。
【0053】
(3.マッチアンプの構成)
マッチアンプMAは、図3に示すように、PMOSトランジスタである転送ゲートQP2,QP3と、比較回路21と、NMOSトランジスタである転送ゲートQN6,QN7と、ラッチ回路22と、PMOSトランジスタQP7〜QP10とを含む。マッチアンプMAには、図2のサーチ制御回路40からマッチアンプ制御信号MLI,MAE,MAE_N,MALATが供給される。
【0054】
転送ゲートQP2は、マッチ線MLとマッチアンプMA内部の信号線CRS_MLとの間を接続状態または非接続状態に切替える。転送ゲートQP3は、参照線ML_REFとマッチアンプMA内部の信号線CRS_REFとの間を接続状態または非接続状態に切替える。マッチ線MLの電圧と参照線ML_REFの参照電圧とがマッチアンプMAによって比較される場合は、転送ゲートQP2,QP3のゲート電極に入力されるマッチアンプ制御信号MLIが活性化(“1”)される。これによって、転送ゲートQP2,QP3が非導通状態になるので、マッチ線MLの容量の影響を受けないようにすることができる。
【0055】
比較回路21は、転送ゲートQP2,QP3を介して転送されたマッチ線MLの電圧と参照線ML_REFの参照電圧とを比較する。図3に示すように、比較回路21は、PMOSトランジスタQP4〜QP6と、NMOSトランジスタQN3〜QN5とを含む。これらのトランジスタの接続について説明すると、PMOSトランジスタQP4は電源ノードVDDとノードND3との間に接続され、NMOSトランジスタQN3は接地ノードGNDとノードND4との間に接続される。PMOSトランジスタQP5はノードND3と信号線CRS_REFとの間に接続され、PMOSトランジスタQP6はノードND3と信号線CRS_MLとの間に接続される。NMOSトランジスタQN4はノードND4と信号線CRS_REFとの間に接続され、NMOSトランジスタQN5はノードND4と信号線CRS_MLとの間に接続される。
【0056】
マッチアンプMAの動作時には、NMOSトランジスタQN3のゲート電極に印加されるマッチアンプ制御信号MAEが“1”に活性化され、PMOSトランジスタQP4のゲート電極に印加されるマッチアンプ制御信号MAE_Nが“0”に活性化される。これによって、マッチ線MLの電圧が参照線ML_PREの電圧より高い場合には、信号線CRS_MLの電圧は電源電圧に駆動され、信号線CRS_REFの電圧は接地電圧に駆動される。逆に、マッチ線MLの電圧が参照線ML_PREの電圧より低い場合には、信号線CRS_MLの電圧は接地電圧に駆動され、信号線CRS_REFの電圧は電源電圧に駆動される。
【0057】
転送ゲートQN6,QN7は、比較回路21とラッチ回路22との間を接続状態または非接続状態に切替えるために設けられる。転送ゲートQN6,QN7のゲート電極には、マッチアンプ制御信号MALATが入力される。マッチアンプ制御信号MALATが活性状態(“1”)のとき転送ゲートQN6,QN7は導通し、マッチアンプ制御信号MALATが非活性状態(“0”)のとき転送ゲートQN6,QN7は非導通状態になる。
【0058】
ラッチ回路22は、RS(Reset-Set)ラッチ回路であり、NAND回路23,24とインバータ回路25とを含む。NAND回路23の第1の入力ノードは転送ゲートQN6を介して信号線CRS_MLと接続され、NAND回路23の第2の入力ノードはNAND回路24の出力ノードに接続される。NAND回路24の第1の入力ノードは転送ゲートQN7を介して信号線CRS_REFと接続され、NAND回路24の第2の入力ノードはNAND回路23の出力ノードに接続される。インバータ回路25は、NAND回路24の出力を反転した信号をマッチアンプMAの出力信号MAO_Nとして出力する。
【0059】
PMOSトランジスタQP7,QP8は、転送ゲートQN6,QN7による電圧低下を補うために設けられている。図3に示すように、PMOSトランジスタQP7のソースは電源ノードVDDに接続され、ドレインはNAND回路23の第1の入力ノードに接続され、ゲートはNAND回路24の第1の入力ノードに接続される。PMOSトランジスタQP8のソースは電源ノードVDDに接続され、ドレインはNAND回路24の第1の入力ノードに接続され、ゲートはNAND回路23の第1の入力ノードに接続される。
【0060】
たとえば、比較回路21によってマッチ線MLおよび参照線ML_REFが駆動された結果、信号線CRS_MLの電圧が電源電圧に等しくなり、信号線CRS_REFの電圧が接地電圧に等しくなったとする。この場合、転送ゲートQN6によってNAND回路23に転送される電圧は、電源電圧よりもNMOSトランジスタの閾値電圧分だけ低くなってしまう。図3のようにPMOSトランジスタQP7,QP8を設けることによって、PMOSトランジスタQP7が導通するので、NAND回路23の第1の入力ノードの電圧を電源電圧に等しくすることができる。
【0061】
PMOSトランジスタQP9,QP10は、ラッチ回路22の動作状態を制御するために設けられている。図3に示すように、PMOSトランジスタQP9は電源ノードVDDとNAND回路23の第1の入力ノードとの間に接続され、PMOSトランジスタQP10は電源ノードVDDとNAND回路24の第1の入力ノードとの間に接続される。PMOSトランジスタQP9,QP10の各ゲートには、マッチアンプ制御信号MALATが入力される。
【0062】
マッチアンプ制御信号MALATが非活性状態(“0”)の場合には、PMOSトランジスタQP9,QP10が導通するので、ラッチ回路22の入力はいずれも“1”になる。このとき、ラッチ回路22は元の内部状態を保持する。マッチアンプ制御信号MALATが活性状態(“1”)の場合には、PMOSトランジスタQP9,QP10が非導通状態になるので、ラッチ回路22は、比較回路21の出力結果に応じた値を出力する。
【0063】
(4.サーチ線ドライバの構成)
図4は、図2のサーチ線ドライバDRの構成を示すブロック図である。図4を参照して、サーチ線ドライバDRは、AND回路31,32と、LスルーのDラッチ回路33,34とを含む。Dラッチ回路33,34の入力端子には、検索データSD,SD_Nがそれぞれ入力される。Dラッチ回路33,34のクロック端子にはサーチ線イネーブル信号SLEが共通に入力される。AND回路31にはDラッチ回路33の出力信号およびサーチ線イネーブル信号SLEが入力され、AND回路32にはDラッチ回路34の出力信号およびサーチ線イネーブル信号SLEが入力される。AND回路31,32の出力信号は、サーチ線SL,SL_Nにそれぞれ供給される。
【0064】
サーチ線イネーブル信号SLEが非活性状態(“0”)のとき、AND回路31,32の出力が“0”になるのでサーチ線SL,SL_Nにはいずれも“0”が出力される。サーチ線イネーブル信号SLEが非活性状態(“0”)から活性状態(“1”)に切替わると(サーチ線ドライバDRの活性化)、Dラッチ回路33,34は、活性状態(“1”)に切替わった時点の検索データSD,SD_Nを保持する。サーチ線イネーブル信号SLEが活性状態(“1”)の間、Dラッチ回路33,34に保持されたデータは、サーチ線SL,SL_Nにそれぞれ供給される。
【0065】
(5.タイミング図)
図5は、図3、図4の各信号のタイミング図である。図5は上から順に、クロックCLK、検索データSD,SD_N、サーチ線イネーブル信号SLE、サーチ線SL,SL_Nの電圧、マッチ線プリチャージ信号MLPRE_N、制御信号REF_DOWN、マッチアンプ制御信号MLI,MAE,MALATの各波形を示す。最下段の実線のグラフはマッチ線MLの電圧波形を示し、一点鎖線のグラフは図3の信号線CRS_MLの電圧波形を示し、点線のグラフは図3の信号線CRS_REFの電圧波形を示す。以下、図3〜図5を参照して、図5のタイミング図について説明する。
【0066】
まず、新たな検索データSD,SD_Nは、クロックCLKの立上がりのタイミングT10,T30,T50に応答して供給される。図5の場合、時刻T10〜T30の間に入力された検索データSD,SD_NはCAMセルCCに記憶されたデータに一致(HIT)し、時刻T30〜T50の間に入力された検索データSD,SD_NはCAMセルCCに記憶されたデータに不一致(MISS)であるとする。
【0067】
サーチ線イネーブル信号SLEは、クロックCLKの立下りのタイミングT20,T40,T60に応答して活性状態(“1”)になり、クロックCLKの立上がりのタイミングT30,T50に応答して非活性状態(“0”)になる。サーチ線イネーブル信号SLEの活性化に応じて、時刻T22〜T31の間および時刻T42〜T51の間にサーチ線SL,SL_Nに検索データSD,SD_Nが転送される。
【0068】
マッチ線プリチャージ信号MLPRE_Nは、クロックCLKの立上がりのタイミングT30,T50に応答して活性状態(“0”)になり、クロックCLKの立下りのタイミングT20,T40,T60に応答して非活性状態(“1”)になる。マッチ線プリチャージ信号MLPRE_Nは、サーチ線SL,SL_Nと同時に活性状態にならないように制御される。すなわち、マッチ線プリチャージ信号MLPRE_Nが非活性状態(“1”)になるタイミングT21,T41は、サーチ線SL,SL_Nに検索データSD,SD_Nが転送される活性化のタイミングT22,T42より早い。さらに、マッチ線プリチャージ信号MLPRE_Nが活性状態(“0”)になるタイミングT33,T53は、サーチ線SL,SL_Nが非活性化されるタイミングT31,T51より遅い。
【0069】
制御信号REF_DOWNは、図3の参照線ML_REFの電圧レベルを制御するための信号である。制御信号REF_DOWNが非活性状態(“0”)のとき参照線ML_REFの電圧は電源電圧に等しくなり、活性状態(“1”)のとき参照線ML_REFの電圧は電源電圧よりも所定の電圧(たとえば、100mV程度)だけ低い電圧になる。図5の場合、制御信号REF_DOWNは、サーチ線イネーブル信号SLEとほぼ同期して活性状態(“1”)になる。
【0070】
マッチアンプ制御信号MLI,MAE,MALATは、クロックCLKの立上がりのタイミングT30,T50に応答して所定の期間だけ活性状態(“1”)になる。このとき、MLI、MAE、およびMALATの順で活性状態(“1”)になり、MALAT、MAE、およびMLIの順で非活性状態(“0”)になる。マッチアンプ制御信号MLI,MAE,MALATについても、サーチ線SL,SL_Nと同時に活性状態にならないように制御される。すなわち、マッチアンプ制御信号MLI,MAE,MALATが活性化するタイミングは、サーチ線SL,SL_Nが非活性化されるタイミングT31,T51より遅い。
【0071】
上記のようなタイミングで各信号が供給される結果、マッチ線MLおよび信号線CRS_ML,CRS_REF電圧波形は図5の下段のような変化を示す。以下、これらの電圧波形について時間に流れの順に説明する。
【0072】
時刻T11〜T21でマッチ線プリチャージ信号MLPRE_Nが活性状態(“0”)である間、マッチ線ML、参照線ML_REF、および信号線CRS_ML,CRS_REFは所定の電圧(図5の場合、電源電圧VDD)にプリチャージされる。
【0073】
次の時刻T22で制御信号REF_DOWNが活性化されることによって参照線ML_REFの電圧レベルが電源電圧VDDよりも低下する。これによって、信号線CRS_REFの電圧レベルも低下する。
【0074】
時刻T22から時刻T31の間、サーチ線SL,SL_Nに検索データSD,SD_Nが転送されることによってサーチ線SL,SL_Nが活性化される。この時間帯では、検索データSD,SD_NとCAMセルCCに記憶されたデータとが一致(HIT)しているので、マッチ線MLおよび信号線CRS_MLの電圧に変化はなく電源電圧VDDが維持される。
【0075】
続いてマッチアンプ制御信号MLIが活性化されることによって、図3の転送ゲートQP2,QP3が遮断される。そして、次の時刻T32にマッチアンプ制御信号MAEが活性化されることによって、図3の比較回路21が動作し始める。この結果、信号線CRS_REFの電圧が接地電圧GNDまで低下する。さらに、マッチアンプ制御信号MALATが活性化されることによって、図3のラッチ回路22が検索結果MAO_Nを出力する。
【0076】
次の時刻T33では、比較回路21の動作と並行して、マッチ線プリチャージ信号MLPRE_Nが活性状態(“0”)になる。これによって、次のデータ検索のためにマッチ線MLがプリチャージされる。
【0077】
比較回路21による比較動作が終了した後、時刻T34にマッチアンプ制御信号MLIが非活性状態(“0”)に戻ることによって、図3の転送ゲートQP2,QP3が導通する。これによって、信号線CRS_REFの電圧が電源電圧VDDまで上昇する。以上で、最初のデータ検索が完了する。
【0078】
次の時刻T41にマッチ線プリチャージ信号MLPRE_Nが非活性状態(“1”)になることによって、マッチ線ML、参照線ML_REF、および信号線CRS_ML,CRS_REFのプリチャージが完了する。
【0079】
次の時刻T42で制御信号REF_DOWNが活性化されることによって参照線ML_REFの電圧レベルが電源電圧VDDよりも所定の電圧だけ低下する。これによって、信号線CRS_REFの電圧レベルも所定の電圧だけ低下する。
【0080】
次の時刻T42から時刻T51の間、サーチ線SL,SL_Nに検索データSD,SD_Nが転送される。この場合、検索データSD,SD_NとCAMセルCCに記憶されたデータとが不一致(MISS)であるので、プリチャージされたマッチ線MLおよび信号線CRS_MLの電荷がCAMセルCCを介して放電される。この結果、マッチ線MLおよび信号線CRS_MLの電圧が徐々に低下する。
【0081】
続いてマッチアンプ制御信号MLIが活性化されることによって、図3の転送ゲートQP2,QP3が遮断される。そして、次の時刻T52にマッチアンプ制御信号MAEが活性化されることによって、図3の比較回路21が動作し始める。この結果、信号線CRS_MLの電圧が接地電圧GNDまで低下する。さらに、マッチアンプ制御信号MALATが活性化されることによって、図3のラッチ回路22が検索結果MAO_Nを出力する。
【0082】
次の時刻T53では、比較回路21の動作と並行して、マッチ線プリチャージ信号MLPRE_Nが活性状態(“0”)になる。これによって、次のデータ検索のためにマッチ線MLがプリチャージされる。この結果、マッチ線MLの電圧が電源電圧VDDに向けて徐々に上昇する。
【0083】
比較回路21による比較動作が終了した後、時刻T54にマッチアンプ制御信号MLIが非活性状態(“0”)に戻ることによって、図3の転送ゲートQP2,QP3が導通する。これによって、信号線CRS_REFの電圧も電源電圧VDDまで上昇する。
【0084】
[連想メモリのタイミング制御の留意点]
以上に述べたようにデータ検索においては、マッチ線プリチャージ信号MLPRE_Nの活性化と、サーチ線対SL,SL_Nの活性化(検索データSD,SD_Nの転送)とが同時に生じないようにする必要がある。もし、サーチ線SL,SL_Nの活性化とマッチラインのプリチャージが重なると次のような問題が生じるからである。
【0085】
第1に、図3のプリチャージ用のPMOSトランジスタQP2からCAMセルCCへ貫通電流が流れてしまう。第2に、データ検索の結果が不一致(MISS)であったにもかかわらず、マッチ線プリチャージ信号MLPRE_Nの活性化によりマッチ線MLがHレベルに充電された結果、誤った検索結果を出力してしまう可能性がある。
【0086】
したがって、サーチ線イネーブル信号SLEの活性化のタイミングとマッチ線プリチャージ信号MLPRE_Nの活性化のタイミングとの調整が重要である。具体的には、マッチ線MLのプリチャージが終了した後に、サーチ線対SL,SL_Nに検索データSD,SD_Nの転送(サーチ線SL,SL_Nの活性化)を開始する必要がある。さらに、サーチ線SL,SL_Nが非活性状態になってから、マッチ線プリチャージ信号MLPRE_Nを活性化してマッチ線MLのプリチャージを開始する必要がある。
【0087】
上記の点に加えて、サーチ線SL,SL_Nに検索データSD,SD_Nを転送した後に、マッチアンプ制御信号MLI,MAE,MALATを活性化するタイミングにも留意する必要がある。データ検索の結果が不一致(MISS)であった場合にマッチ線MLがCAMセルCCによって放電されるが、マッチアンプMAからCAMセルCCが遠いほどマッチ線MLの容量のせいでマッチ線MLの電圧低下がマッチアンプMAに伝わるのに時間がかかるからである。
【0088】
従来の連想メモリでは、このようなタイミング制御は複数段のインバータを用いた遅延回路によって行なわれている。このため、製造プロセスによるMOSトランジスタの特性ばらつきの影響や、電源電圧および動作温度の変動の影響が大きくなるので、タイミングの設計に時間が費やされていた。さらに、連想メモリの動作周波数が高速化されると、遅延回路の設計自体が困難になっていた。実施の形態1の連想メモリ100は、従来と異なるタイミング制御の方法を用いることによって、プロセスばらつきの影響や電源電圧および動作温度の変動の影響を抑制することが可能である。以下、詳細に説明する。
【0089】
[連想メモリ100のタイミング制御の詳細]
再び図2を参照して、連想メモリ100は、マッチアンプMAおよびサーチ線ドライバDRの動作タイミングを制御するために設けられたサーチ制御回路40を含む。図1の場合、サーチ制御回路40は、一致検出部20(マッチアンプMA)の−Y方向側、かつ、検索データ転送部30(サーチ線ドライバDR)の−X方向側に設けられる。
【0090】
サーチ制御回路40は、図1のクロックバッファ76からクロックCLKを受け、命令コードデコーダ77からサーチ信号SCMおよびリセット信号RST_Nを受ける。サーチ制御回路40は、受信したこれらの信号に基づいて前述のサーチ線イネーブル信号SLE、マッチ線プリチャージ信号MLPRE_N、およびマッチアンプ制御信号MLI,MAE,MAE_N,MALATを生成して出力する。
【0091】
連想メモリ100において特徴的な点は、サーチ線イネーブル信号SLEを各サーチ線ドライバDRに伝送するために1本の制御信号線36(36A,36B,36C)が設けられている点である。制御信号線36は、サーチ制御回路40の出力ノードから+X方向に延在する配線部36Aと、サーチ線イネーブル信号SLEが折り返される折返し部36Bと、折返し部36Bから−X方向にサーチ制御回路40まで延在する配線部36Cとを含む。
【0092】
配線部36Cは、サーチ線ドライバDRの配列順で各サーチ線ドライバDRと接続され、さらにサーチ制御回路40と接続される。したがって、サーチ線イネーブル信号SLEは、サーチ制御回路40から出力された後、配線部36Aを通過して折返し部36Bに到達する。折返し部36Bで折り返されたサーチ線イネーブル信号SLEは、最初にマッチアンプMAから最も遠いサーチ線ドライバDR[79]と配線部36Cとの接続ノードを通過する。続いて、サーチ線イネーブル信号SLEは、サーチ線ドライバDR[78]、DR[77]、…、DR[0]の順で各サーチ線ドライバDRと配線部36Cとの接続ノードを通過する。サーチ線イネーブル信号SLEは、最後に再びサーチ制御回路40に到達する。以下、サーチ制御回路40から送信された時点のサーチ線イネーブル信号をSLE_SNDと記載し、サーチ制御回路40で再び受信した時点のサーチ線イネーブル信号をSLE_RCVと記載する。
【0093】
上記の制御信号線36を設けることによって、サーチ制御回路40がサーチ線イネーブル信号SLEを活性化させてから、少なくとも第1の配線36Aをサーチ線イネーブル信号SLEが伝播する時間が経過した後、最初のサーチ線ドライバDR[79]が活性化する。したがって、サーチ制御回路40からサーチ線ドライバDR[79]に至るサーチ線イネーブル信号SLEの伝送時間を、サーチ制御回路40からいずれのプリチャージ部PCに至るマッチ線プリチャージ信号MLPRE_Nの伝送時間よりも長くすることができる。この結果、プリチャージ部PCによるマッチ線MLのプリチャージが終了した後に、サーチ線対SL,SL_Nに検索データSD,SD_Nの転送(サーチ線SL,SL_Nの活性化)を開始することが可能である。
【0094】
ここで、サーチ線イネーブル信号SLEの伝送時間は、制御信号線36のRC遅延によって決まる。したがって、信号伝送時間は、配線長、配線の幅、および厚みによって制御することができる。従来の縦続接続されたインバータを用いた遅延回路と異なり、トランジスタの製造プロセスのばらつきの影響を受けることがない。制御信号線36と直列に高抵抗の配線部を挿入したり、制御信号線36と並列に容量負荷を設けたりすることによって伝送時間を調整することもできる。
【0095】
さらに、上記の制御信号線36を設けることによって、サーチ制御回路40に戻ったサーチ線イネーブル信号SLE_RCVを用いて、マッチ線プリチャージ信号MLPRE_Nおよびマッチアンプ制御信号MLI,MAE,MALATを生成することができる。したがって、サーチ線SL,SL_Nが非活性状態になった後に、マッチ線プリチャージ信号MLPRE_Nおよびマッチアンプ制御信号MLI,MAE,MALATを活性化することが容易にできる。
【0096】
さらに、サーチ線SL,SL_Nは、マッチアンプMAから遠いほうから順番に活性化されるので、マッチアンプMAの活性化のタイミングを決定するのにマッチ線MLの配線遅延を考慮する必要がない。
【0097】
このように、上記の構成の制御信号線36を設けることによって、遅延回路を用いなくても、サーチ線SL,SL_Nの活性化のタイミング、マッチ線プリチャージ信号MLPRE_Nの活性化のタイミングを容易に制御することができる。この結果、連想メモリを従来よりも高周波で動作させることができる。
【0098】
[サーチ制御回路40の構成]
以下、サーチ制御回路40の具体的な構成例について説明する。
【0099】
図6は、図1のサーチ制御回路40の構成を示すブロック図である。図6を参照して、サーチ制御回路40は、メインサーチ制御回路41とサブサーチ制御回路50とを含む。
【0100】
メインサーチ制御回路41は、受信したクロックCLK、サーチ信号SCM、およびリセット信号RST_Nに基づいて、マッチ線MLのプリチャージのトリガ信号SE_ACT0およびサーチ線SL,SL_Nの活性化のトリガ信号SE_ACT1を発生する。
【0101】
サブサーチ制御回路50は、サーチ線SL,SL_Nの活性化のトリガ信号SE_ACT1に基づいて、サーチ線イネーブル信号SLE_SNDを生成して出力する。さらに、サブサーチ制御回路50は、受信したサーチ線イネーブル信号SLE_RCVとマッチ線MLのプリチャージのトリガ信号SE_ACT0とに基づいてマッチ線プリチャージ信号MLPRE_Nを生成して出力する。サブサーチ制御回路50は、さらに、受信したサーチ線イネーブル信号SLE_RCVに基づいてマッチアンプ制御信号MLI,MAE,MALATを生成して出力する。
【0102】
(1.メインサーチ制御回路41の構成)
図7は、図6のメインサーチ制御回路41の構成を示すブロック図である。図7を参照して、メインサーチ制御回路41は、Dフリップフロップ42〜44と、AND回路45,46と、インバータ47とを含む。
【0103】
Dフリップフロップ42は、サーチ信号SCMをクロックCLKの立上りエッジのタイミングで保持し、保持した値(SE_C10)を出力する。
【0104】
Dフリップフロップ43は、Dフリップフロップ42の出力信号SE_C10をクロックCLKの立下りエッジのタイミングで保持し、保持した値(SE_C20)を出力する。
【0105】
Dフリップフロップ44は、Dフリップフロップ43の出力信号SE_C20をクロックCLKの立上がりエッジのタイミングで保持し、保持した値(SE_C30)を出力する。
【0106】
AND回路45は、Dフリップフロップ43の出力信号SE_C20とクロックCLKとの論理積を演算し、演算結果をマッチ線MLのプリチャージのトリガ信号SE_ACT0として出力する。
【0107】
AND回路46は、Dフリップフロップ44の出力信号SE_C30とクロックCLKをインバータ47によって反転させた信号との論理積を演算し、演算結果をサーチ線SL,SL_Nの活性化のトリガ信号SE_ACT1として出力する。
【0108】
Dフリップフロップ42〜44は、さらに、リセット信号RST_Nを受ける。リセット信号RST_Nが活性状態(“0”)になったとき、Dフリップフロップ42〜44の出力信号はいずれも“0”にリセットされる。
【0109】
図8は、図7の各信号のタイミング図である。図7、図8を参照して、クロックCLKは、時刻T10,T30,T50のタイミングで立上がり、時刻T20,T40,T60のタイミングで立下がるものとする。
【0110】
クロックCLKが立上がる時刻T10で、サーチ信号SCMが活性状態(“1”)になっている。したがって、Dフリップフロップ42の出力信号SE_C10は、時刻T10から次のクロックCLKの立上がり時刻T30までの間、Hレベルになる。
【0111】
次に、クロックCLKが立下る時刻T20で、Dフリップフロップ42の出力信号SE_C10がHレベルになっている。したがって、Dフリップフロップ43の出力信号SE_C20は、時刻T20から次のクロックCLKの立下り時刻T40までの間、Hレベルになる。
【0112】
次に、クロックCLKが再び立上がる時刻T30で、Dフリップフロップ43の出力信号SE_C20がHレベルになっている。したがって、Dフリップフロップ44の出力信号SE_C30は、時刻T30から次のクロックCLKの立上がり時刻T50までの間、Hレベルになる。
【0113】
次の時刻T30〜T40の間は、フリップフロップ43の出力信号SE_C20およびクロックCLKが共にHレベルであるので、AND回路45の出力であるトリガ信号SE_ACT0はHレベルになる。すなわち、クロックCLKの1周期のうち前半の半周期(T30〜T40)に、マッチ線MLのプリチャージのトリガ信号SE_ACT0が活性状態(“1”)になる。
【0114】
次の時刻T40〜T50の間は、フリップフロップ44の出力信号SE_C30がHレベルであり、クロックCLKがLレベルであるので、AND回路46の出力であるトリガ信号SE_ACT1はHレベルになる。すなわち、クロックCLKの1周期のうち後半の半周期(T40〜T50)に、サーチ線SL,SL_Nの活性化のトリガ信号SE_ACT1が活性状態(“1”)になる。
【0115】
(2.サブサーチ制御回路50の構成)
図9は、図6のサブサーチ制御回路50の一部の構成を示すブロック図である。図9はサーチ線イネーブル信号SLEおよびマッチ線プリチャージ信号MLPRE_Nの生成に関係したサブサーチ制御回路50の構成を示す。
【0116】
図9に示すように、サブサーチ制御回路50は、バッファ回路51,52と、インバータ53と、NAND回路54とを含む。
【0117】
バッファ回路51は、サーチ線SL,SL_Nの活性化のトリガ信号SE_ACT1を整形してサーチ線イネーブル信号SLE_SNDとして出力する。
【0118】
NAND回路54は、受信したサーチ線イネーブル信号SLE_RCVをインバータ53によって反転させた信号と、マッチ線MLのプリチャージのトリガ信号SE_ACT0とのNAND演算を行なう。
【0119】
バッファ回路52は、NAND回路54の演算結果を整形してマッチ線プリチャージ信号MLPRE_Nとして出力する。
【0120】
上記の構成によれば、サーチ線イネーブル信号SLE_RCVが活性状態(“1”)の間は、トリガ信号SE_ACT0が活性化されてもマッチ線プリチャージ信号MLPRE_Nは活性状態(“0”)にならない。サーチ線イネーブル信号SLE_RCVが非活性状態(“0”)になることによって、マッチ線プリチャージ信号MLPRE_Nを活性化することができる。
【0121】
図10は、図9の各信号のタイミング図である。図10は上から順に、クロックCLK、トリガ信号SE_ACT0,SE_ACT1、送信時のサーチ線イネーブル信号SLE_SND、サーチ線ドライバDR[79]に到達したサーチ線イネーブル信号SLE_SL[79]、サーチ制御回路40での受信時のサーチ線イネーブル信号SLE_RCV、およびマッチ線プリチャージ信号MLPRE_Nの各波形を示す。クロックCLKは時刻T10,T30のタイミングで立上がり、時刻T20,T40のタイミングで立下がるものとする。
【0122】
図10に示すように、時刻T20にマッチ線MLのプリチャージのトリガ信号SE_ACT0がLレベルに変化する。これに応答して、マッチ線プリチャージ信号MLPRE_Nが時刻T21にHレベルに変化することにより、マッチ線MLのプリチャージが完了する。
【0123】
さらに、時刻T20には、サーチ線SL,SL_Nの活性化のトリガ信号SE_ACT1がHレベルに変化する。これに応答して、サーチ線イネーブル信号SLE_SNDがHレベルに変化する(活性化する)。このサーチ線イネーブル信号SLE_SNDの活性化から配線遅延分だけ遅れた時刻T23に、サーチ線ドライバDR[79]で受信したサーチ線イネーブル信号SLE_SL[79]が活性化する。さらに、配線遅延分だけ遅れてサーチ制御回路40で受信したサーチ線イネーブル信号SLE_RCVが活性化する。
【0124】
したがって、マッチ線MLのプリチャージが完了した時刻T21と最初にサーチ線SL[79],SL_N[79]を活性化する時刻T23までの間にタイムマージンTD1をもたせることができる。
【0125】
次に、時刻T30に、マッチ線MLのプリチャージのトリガ信号SE_ACT0がHレベルに変化することによって、マッチ線プリチャージ信号MLPRE_Nが活性化できる状態になる。しかし、この時点ではサーチ制御回路40で受信するサーチ線イネーブル信号SLE_RCVがHレベルであるので、マッチ線プリチャージ信号MLPRE_Nは活性化されない。マッチ線プリチャージ信号MLPRE_Nは、サーチ制御回路40で受信するサーチ線イネーブル信号SLE_RCVがLレベルになってから活性化される(時刻T36)。
【0126】
図2で説明したように、サーチ線イネーブル信号SLEは、各サーチ線ドライバDRと制御信号線36との接続ノードを通過した後にサーチ制御回路40に到達する。したがって、サーチ線イネーブル信号SLE_RCVが非活化された時刻T35の時点までに、全てのサーチ線対SL,SL_Nの非活性化が完了している。この結果、全てのサーチ線対SL,SL_Nの非活性化が完了している時刻T35とマッチ線プリチャージ信号MLPRE_Nを活性化する時刻T36との間にタイムマージンTD2をもたせることができる。
【0127】
このように、連想メモリ100では、複数のインバータが縦続接続された遅延回路を用いることなく、マッチ線プリチャージ信号MLPRE_Nおよびサーチ線イネーブル信号SLEのタイミングを制御することができる。
【0128】
図11は、図6のサブサーチ制御回路50の一部の構成を示すブロック図である。図11は、マッチアンプ制御信号MLI,MAE,MAE_N,MALATの生成に関係したサブサーチ制御回路50の構成を示す。
【0129】
図11に示すように、サブサーチ制御回路50は、遅延段55〜59と、インバータ60,61と、AND回路62〜64と、バッファ回路65〜68とを含む。
【0130】
AND回路62は、サーチ線イネーブル信号SLE_RCVをインバータ60によって反転させた信号と、サーチ線イネーブル信号SLE_RCVを遅延段55,58,59によって遅延させた信号とのAND演算を行なう。AND回路62の演算結果は、バッファ回路65によって整形されてマッチアンプ制御信号MLIとして出力される。
【0131】
AND回路63は、サーチ線イネーブル信号SLE_RCVをインバータ60によって反転させてから遅延段56によって遅延させた信号と、サーチ線イネーブル信号SLE_RCVを遅延段55,58によって遅延させた信号とのAND演算を行なう。AND回路63の演算結果は、バッファ回路66によって整形されてマッチアンプ制御信号MAEとして出力される。AND回路63の演算結果は、さらに、インバータ61によって反転されてからバッファ回路67によって整形されてマッチアンプ制御信号MAE_Nとして出力される。
【0132】
AND回路64は、サーチ線イネーブル信号SLE_RCVをインバータ60によって反転させてから遅延段56,57によって遅延させた信号と、サーチ線イネーブル信号SLE_RCVを遅延段55によって遅延させた信号とのAND演算を行なう。AND回路64の演算結果は、バッファ回路68によって整形されてマッチアンプ制御信号MALATとして出力される。
【0133】
図12は、図11の遅延段55の構成の一例を示すブロック図である。図12を参照して、遅延段55は、縦続接続されたCMOS(Complementary Metal-Oxide Semiconductor)インバータ91〜96によって構成される。
【0134】
初段および最終段のCMOSインバータ91,96は、電源ノードVDDと接地ノードGNDとの間に直列に接続されたPMOSトランジスタQP21とNMOSトランジスタQN21とを含む。各トランジスタQP21,QN21のゲートに前段からの信号が入力され、トランジスタQP21,QN21の接続ノードから入力信号を反転させた信号が出力される。
【0135】
中間段のCMOSインバータ92〜96は、電源ノードVDDと接地ノードGNDとの間に直列に接続されたPMOSトランジスタQP22,QP23とNMOSトランジスタQN22,QN23とを含む。各トランジスタQP22,QP23,QN22,QN23のゲートに前段からの信号が入力され、トランジスタQP23,QN22の接続ノードから入力信号を反転させた信号が出力される。中間段のCMOSインバータ92〜96の段数を増減させることによって遅延時間を調整することができる。
【0136】
図11の他の遅延段56〜59の構成も図12と同様である。ただし、これらの遅延段56〜59の遅延時間は遅延段55の遅延時間よりも短いので、中間段のCMOSインバータの段数は遅延段55の段数よりも少ない。
【0137】
図13は、図11の各信号のタイミング図である。図13は上から順に、クロックCLK、トリガ信号SE_ACT1、サーチ制御回路40で受信したサーチ線イネーブル信号SLE_RCV、図11の遅延段55の出力信号SLE_RCV_DLY、およびマッチアンプ制御信号MLI,MAE,MALATの波形を示す。クロックCLKは時刻T10,T30のタイミングで立上がり、時刻T20,T40のタイミングで立下がるものとする。
【0138】
図13に示すように、時刻T30にサーチ線SL,SL_Nの活性化のトリガ信号SE_ACT1がLレベルに変化する。これに応答して、サーチ線イネーブル信号SLEがLレベルに変化するので、配線遅延分だけ遅延した時刻T35にサーチ制御回路40で受信するサーチ線イネーブル信号SLE_RCVがLレベルに変化する。マッチアンプ制御信号MLI,MAE,MALATは、サーチ線イネーブル信号SLE_RCVの立下がりに応答してこの順序でHレベルに変化する。
【0139】
次に、図11の遅延段55の出力信号SLE_RCV_DLYは、所定の遅延時間だけ遅延した時刻T37にLレベルに変化する。マッチアンプ制御信号MALAT,MAE,MLIは、この遅延段55の出力信号SLE_RCV_DLYの立下がりに応答してこの順序でLレベルに変化する。
【0140】
[比較例]
図14は、図2の連想メモリ100の比較例としての連想メモリ900の構成を示すブロック図である。
【0141】
図14の連想メモリ900は、図2の制御信号線36に代えてサーチ制御回路940から+X方向に延在する制御信号線936を含む点で、図2の連想メモリ100と異なる。制御信号線936は、マッチアンプMAに近い側からサーチ線ドライバDRの配列順で各サーチ線ドライバDRと接続される。+X方向に送信されたサーチ線イネーブル信号SLEは、途中で折返されることなく、サーチ線ドライバDRの番号順で各サーチ線ドライバDRに到達する。
【0142】
図15は、図4のサーチ制御回路940の一部の構成を示すブロック図である。図15はサーチ線イネーブル信号SLEおよびマッチ線プリチャージ信号MLPRE_Nの生成に関係したサブサーチ制御回路50の構成を示す。
【0143】
図15に示すように、サーチ制御回路940は、遅延段951,952と、バッファ回路953,954と、NAND回路955とを含む。サーチ線イネーブル信号SLE_SNDは、図8のサーチ線SL,SL_Nの活性化のトリガ信号SE_ACT1が遅延段951で遅延された後、バッファ回路953で整形されることによって生成される。マッチ線プリチャージ信号MLPRE_Nは、図8のマッチ線MLのプリチャージのトリガ信号SE_ACT0と遅延段952で遅延されたトリガ信号SE_ACT0とのNAND演算結果が、バッファ回路954で整形されることによって生成される。
【0144】
このように、図14の比較例の連想メモリ900の場合には、遅延段951,952によってサーチ線イネーブル信号SLEの活性化のタイミングとマッチ線プリチャージ信号MLPRE_Nの活性化のタイミングを制御する必要がある。遅延段951,952の遅延時間は、トランジスタの製造ばらつきや電源電圧および動作温度の変動によって大きく変化するので、タイミング調整に時間を要することになる。特に、動作周波数を高速化していくにつれて、マッチ線MLのプリチャージ期間を確保することが困難になってしまう。
【0145】
[制御信号線の構成例]
図16は、図2の制御信号線36の構成の一例を示す平面図である。図16では、図解を容易にするために一部の配線にハッチングが付されている。
【0146】
図16に示すように、制御信号線36は、同一の金属配線層に一体形成された配線部36A、折返し部36B、および配線部36Cによって構成される。
【0147】
配線部36Aの−X方向側の端部は、サーチ制御回路40に設けられたサーチ線イネーブル信号SLE_SNDの送信部の最終段のトランジスタ49A,49BとコンタクトNCS(接続ノード)を介して接続される。
【0148】
配線部36Cは、折返し部36Bから見て、最初にサーチ線ドライバDR[79]の入力初段のトランジスタ37A,37BとコンタクトNC[79](接続ノード)を介して接続される。配線部36Cは、続いてサーチ線ドライバDRの配列順で各サーチ線ドライバDRの入力初段のトランジスタ37A,37BとコンタクトNC[78]〜NC[1](接続ノード)を介して接続される。最後に、配線部36Cの−X方向側の端部は、サーチ制御回路40に設けられたサーチ線イネーブル信号SLE_RCVの受信部の入力初段のトランジスタ48A,48BとコンタクトNCR(接続ノード)を介して接続される。
【0149】
このように、図16の場合には、サーチ制御回路40は、メモリセルアレイ10の第1の方向(X方向)の一方端(−X方向側の端部)に配置される。制御信号配線36は、第1の配線部36C、第2の配線部36A、および折返し配線部36Bを有する。第1および第2の配線部36C,36Aは、メモリセルアレイ10の第1の方向(X方向)の一方端(−X方向側の端部)から他方端(+X方向側の端部)まで延在し、第2の方向(Y方向)に並んで配置される。折返し配線部36Bは、メモリセルアレイ10の第1の方向(X方向)の他方端(+X方向側の端部)にある。第1の配線部36Cの両端部はそれぞれサーチ線制御回路40と折返し配線部36Bとに接続される。第2の配線部36Aの両端部はそれぞれサーチ線制御回路40と折返し配線部36Bとに接続される。複数のサーチ線ドライバDRは、第1の配線部36Cに接続される。
【0150】
[制御信号線の他の構成例]
図17は、図2の制御信号線36の構成の他の例を示す平面図である。図17では、図解を容易にするために一部の配線にハッチングが付されている。
【0151】
図17に示すように、制御信号線36は、第P層の金属配線層に形成された配線部36Aと、第P層よりも上層の第Q層の金属配線層に形成された配線部36Cと、第P層の配線部36Aの+X方向側の端部と第Q層の配線部36C+X方向側の端部とを接続するコンタクトホール38A,38Bとを含む。コンタクトホール38A,38Bがサーチ線イネーブル信号SLEが折返される折返し部36Bに相当する。
【0152】
第P層の配線部36Aの−X方向側の端部は、サーチ制御回路40に設けられたサーチ線イネーブル信号SLE_SNDの送信部の最終段のトランジスタ49A,49BとコンタクトNCS(接続ノード)を介して接続される。
【0153】
第Q層の配線部36Cは、コンタクトホール38A,38Bから見て、最初にサーチ線ドライバDR[79]の入力初段のトランジスタ37A,37BとコンタクトNC[79](接続ノード)を介して接続される。配線部36Cは、続いてサーチ線ドライバDRの配列順で各サーチ線ドライバDRの入力初段のトランジスタ37A,37BとコンタクトNC[78]〜NC[1](接続ノード)を介して接続される。最後に、配線部36Cの−X方向側の端部は、サーチ制御回路40に設けられたサーチ線イネーブル信号SLE_RCVの受信部の入力初段のトランジスタ48A,48BとコンタクトNCR(接続ノード)を介して接続される。
【0154】
このように、図17の場合には、第1の配線部36Cと第2の配線部36Aはそれぞれ異なる配線層(Q層、P層)に配置され、折返し配線部36Bとしてのコンタクトホール38A,38Bを介して接続される。
【0155】
<実施の形態2>
[連想メモリ100Aの構成]
図18は、この発明の実施の形態2のよる連想メモリ100Aの構成を示すブロック図である。図18の連想メモリ100Aは、図1で説明した連想メモリの構成のうちの一部の配置を示したものである。
【0156】
連想メモリ100Aは、CAMメモリアレイ10が第1、第2のメモリブロック10A,10Bに分割される点で、図2の連想メモリ100と異なる。メモリブロック10A,10Bの各々は、n行m列のCAMセルCC[0,0]〜CC[n−1,m−1]を含む(ただし、m=80)。メモリブロック10A,10Bは、Y方向に延びる仮想線SYM1(対称線)の両側に互いに対称に配置される。以下、メモリブロック10A,10Bの各々において、仮想線SYM1から最も遠い列の列番号を0とし、仮想線SYM1に最も近い列の列番号を79とする。
【0157】
メモリブロック10A,10Bの各々には、各行に個別に対応してX方向に延びるn本のマッチ線ML[0]〜[n−1]と、各列に個別に対応してY方向に延びるm本のサーチ線対SL[0],SL_N[0]〜SL[m−1],SL_N[m−1](ただし、m=80)とが設けられる。以下、メモリブロック10Aに対応したマッチ線およびサーチ線対をマッチ線MLA、サーチ線対SLA,SLA_Nと記載し、メモリブロック10Bに対応したマッチ線およびサーチ線対をマッチ線MLB、サーチ線対SLB,SLB_Nと記載する。メモリブロック10Aに対応して設けられたマッチ線MLAおよびサーチ線対SLA,SLA_Nと、メモリブロック10Bに対応して設けられたマッチ線MLBおよびサーチ線対SLB,SLB_Nとは、仮想線SYM1に対して互いに対称に配置される。
【0158】
さらに、図18に示すように、連想メモリ100Aは、第1のメモリブロック10Aに対応して設けられた一致検出部20A、検索データ転送部30A、第1のプリチャージ部PCA[0]〜PCA[n−1]と、第2のメモリブロック10Bに対応して設けられた一致検出部20B、検索データ転送部30B、第2のプリチャージ部PCB[0]〜PCB[n−1]とを含む。
【0159】
一致検出部20Aは、マッチ線MLA[0]〜MLA[n−1]の各々の両端部のうち、対称線SYM1から遠い側の端部に個別に設けられたマッチアンプMAA[0]〜MAA[n−1]を含む。各マッチアンプMAAの構成は実施の形態1の場合と同じであるので説明を繰り返さない。一致検出部20Bを構成するマッチアンプMAB[0]〜MAB[n−1]についても同様である。一致検出部20Aの各マッチアンプMAAと一致検出部20Bの各マッチアンプMABとは、仮想線SYM1に対して互いに対称に配置される。
【0160】
検索データ転送部30Aは、−Y方向側のサーチ線対SLA[0],SLA_N[0]〜SLA[79],SLA_N[79]の端部にそれぞれ設けられたサーチ線ドライバDRA[0]〜DRA[79]を含む。各サーチ線ドライバDRAの構成は実施の形態1の場合と同じであるので説明を繰り返さない。検索データ転送部30Bを構成するサーチ線ドライバDRB[0]〜DRB[79]についても同様である。検索データ転送部30Aの各サーチ線ドライバDRAと検索データ転送部30Bの各サーチ線ドライバDRBとは、仮想線SYM1に対して互いに対称に配置される。
【0161】
上記の第1のメモリブロック10Aとそれに対応したマッチ線MLA、サーチ線対SLA,SLA_N、一致検出部20A、および検索データ転送部30Aとによってこの発明の第1のメモリ部130Aが構成される。同様に、上記の第2のメモリブロック10Bとそれに対応したマッチ線MLB、サーチ線対SLB,SLB_N、一致検出部20B、および検索データ転送部30Bとによってこの発明の第2のメモリ部130Bが構成される。第1および第2のメモリ部130A,130Bは、仮想線SYM1に対して互いに対称に配置される。
【0162】
第1のプリチャージ部PCA[0]〜PCA[n−1]は、メモリブロック10Aに設けられたマッチ線MLA[0]〜MLA[n−1]にそれぞれ対応して設けられる。第1のプリチャージ部PCA[0]〜PCA[n−1]は、一致検出部20A(マッチアンプMAA)に近接した側のマッチ線MLAの端部にそれぞれ接続される。
【0163】
同様に、第2のプリチャージ部PCB[0]〜PCB[n−1]は、メモリブロック10Bに設けられたマッチ線MLB[0]〜MLB[n−1]にそれぞれ対応して設けられる。第2のプリチャージ部PCB[0]〜PCB[n−1]は、一致検出部20B(マッチアンプMAB)に近接した側のマッチ線MLBの端部にそれぞれ接続される。第1および第2のプリチャージ部PCA,PCBの構成は、実施の形態1のプリチャージ部PCと同じであるので説明を繰り返さない。
【0164】
さらに、連想メモリ100Aは、仮想線SYM1に対して第1のメモリブロック10Aと同じ側に設けられたサブサーチ制御回路50Aと、仮想線SYM1に対して第2のメモリブロック10Bと同じ側に設けられたサブサーチ制御回路50Bとを含む。サブサーチ制御回路50Aとサブサーチ制御回路50Bとは、仮想線SYM1に対して互いに対称に配置される。図18の場合、サブサーチ制御回路50A,50Bの各々から仮想線SYM1までの距離は、一致検出部20A,20Bの各々から仮想線SYM1までの距離とほぼ等しい。
【0165】
サブサーチ制御回路50A(第2の制御部)は、仮想線SYM1を挟んで反対側の検索データ転送部30Bの各サーチ線ドライバDRBにサーチ線イネーブル信号SLE_0(第2の制御信号)を供給する。検索データ転送部30Bの各サーチ線ドライバDRBは、受信したサーチ線イネーブル信号SLE_0が活性化したとき、対応のサーチ線対SLB,SLB_Nに接続された各CAMセルCCに検索データSDB,SDB_Nを転送する。
【0166】
同様に、サブサーチ制御回路50B(第1の制御部)は、仮想線SYM1を挟んで反対側の検索データ転送部30Aの各サーチ線ドライバDRAにサーチ線イネーブル信号SLE_1(第1の制御信号)を供給する。検索データ転送部30Aの各サーチ線ドライバDRAは、受信したサーチ線イネーブル信号SLE_1が活性化したとき、対応のサーチ線対SLA,SLA_Nに接続された各CAMセルCCに検索データSDA,SDA_Nを転送する。
【0167】
サブサーチ制御回路50A(第2の制御部)は、さらに、仮想線SYM1を挟んで反対側のサブサーチ制御回路50B(第1の制御部)からサーチ線イネーブル信号SLE_1(第1の制御信号)を受ける。サブサーチ制御回路50Aは、サーチ線イネーブル信号SLE_1を用いてマッチアンプ制御信号MLI_0,MAE_0,MALAT_0(第4の制御信号)およびマッチ線プリチャージ信号MLPRE_0_N(第6の制御信号)を生成する。生成されたマッチアンプ制御信号MLI_0,MAE_0,MALAT_0およびマッチ線プリチャージ信号MLPRE_0_Nは、仮想線SYM1に対してサブサーチ制御回路50Aと同じ側の一致検出部20Aの各マッチアンプMAAおよび第1のプリチャージ部PCA[0]〜PCA[n−1]にそれぞれ出力される。一致検出部20Aの各マッチアンプMAAは、受信したマッチアンプ制御信号MLI_0,MAE_0,MALAT_0が活性化したとき、対応のマッチ線MLAの論理レベルを検出する。第1のプリチャージ部PCA[0]〜PCA[n−1]は、受信したマッチ線プリチャージ信号MLPRE_0_Nが活性化したとき、対応のマッチ線MLAに所定の電圧(電源電圧)を印加する。
【0168】
同様に、サブサーチ制御回路50B(第1の制御部)は、さらに、仮想線SYM1を挟んで反対側のサブサーチ制御回路50A(第2の制御部)からサーチ線イネーブル信号SLE_0(第2の制御信号)を受ける。サブサーチ制御回路50Bは、サーチ線イネーブル信号SLE_0を用いてマッチアンプ制御信号MLI_1,MAE_1,MALAT_1(第3の制御信号)およびマッチ線プリチャージ信号MLPRE_1_N(第5の制御信号)を生成する。生成されたマッチアンプ制御信号MLI_1,MAE_1,MALAT_1およびマッチ線プリチャージ信号MLPRE_1_Nは、仮想線SYM1に対してサブサーチ制御回路50Bと同じ側の一致検出部20Bの各マッチアンプMABおよび第2のプリチャージ部PCB[0]〜PCB[n−1]にそれぞれ出力される。一致検出部20Bの各マッチアンプMABは、受信したマッチアンプ制御信号MLI_1,MAE_1,MALAT_1が活性化したとき、対応のマッチ線MLBの論理レベルを検出する。第2のプリチャージ部PCB[0]〜PCB[n−1]は、受信したマッチ線プリチャージ信号MLPRE_1_Nが活性化したとき、対応のマッチ線MLBに所定の電圧(電源電圧)を印加する。
【0169】
図18に示すように、サブサーチ制御回路50Aから検索データ転送部30Bおよびサブサーチ制御回路50Bへサーチ線イネーブル信号SLE_0を伝送するために制御信号線120(第2の制御信号線)が設けられる。さらに、サブサーチ制御回路50Bから検索データ転送部30Aおよびサブサーチ制御回路50Aへサーチ線イネーブル信号SLE_1を伝送するために制御信号線121(第1の制御信号線)が設けられる。
【0170】
制御信号線120は、サブサーチ制御回路50Aから概ね+X方向に延在し、仮想線SYM1と交差して反対側のサブサーチ制御回路50Bに達する。制御信号線120は、サーチ線ドライバDRBの配列順(DRB[79]〜DRB[0])に検索データ転送部30Bの各サーチ線ドライバDRBと接続される。したがって、サブサーチ制御回路50Aから出力されたサーチ線イネーブル信号SLE_0は、仮想線SYM1に近い側からの順で検索データ転送部30Bの各サーチ線ドライバDRBに到達する。
【0171】
制御信号線121は、サブサーチ制御回路50Bから概ね−X方向に延在し、仮想線SYM1と交差して反対側のサブサーチ制御回路50Aに達する。制御信号線121は、サーチ線ドライバDRAの配列順(DRA[79]〜DRA[0])に検索データ転送部30Aの各サーチ線ドライバDRAと接続される。したがって、サブサーチ制御回路50Bから出力されたサーチ線イネーブル信号SLE_1は、仮想線SYM1に近い側からの順で検索データ転送部30Aの各サーチ線ドライバDRAに到達する。
【0172】
制御信号線120,121は、仮想線SYM1に関して概ね互いに対称な配置である。したがって、サブサーチ制御回路50Bを起点とし検索データ転送部30Aの任意の第1のサーチ線ドライバDRAまでのサーチ線イネーブル信号SLE_1の伝送経路長は、サブサーチ制御回路50Aを起点とし仮想線SYM1に関して第1のサーチ線ドライバDRAと対称に配置された第2のサーチ線ドライバDRBまでのサーチ線イネーブル信号SLE_0の伝送経路長に等しい。さらに、サブサーチ制御回路50Aからサブサーチ制御回路50Bに至るサーチ線イネーブル信号SLE_0の伝送経路長は、サブサーチ制御回路50Bからサブサーチ制御回路50Aに至るサーチ線イネーブル信号SLE_1の伝送経路長に等しい。したがって、制御信号線120,121の厚みおよび線幅を互いに等しく形成した場合には、信号の伝送時間も等しくなる。
【0173】
連想メモリ100Aは、さらに、第1および第2のメモリブロック10A,10Bに対して共通に設けられたプライオリティエンコーダ70およびメインサーチ制御回路41(第3の制御部)を含む。メインサーチ制御回路41は、サブサーチ制御回路50A,50Bにトリガ信号SE_ACT1,SE_ACT2(第7の制御信号)を出力する。
【0174】
プライオリティエンコーダ70は、仮想線SYM1に対して第2のメモリブロック10Bと同じ側(+X方向側)に設けられる。プライオリティエンコーダ70は、一致検出部20AのマッチアンプMAA[0]〜MAA[n−1]から、第1のメモリブロック10Aに設けられたマッチ線MLAの論理レベルの検出結果MAOA_N[0]〜MAOA_N[n−1]をそれぞれ受ける。さらに、プライオリティエンコーダ70は、一致検出部20BのマッチアンプMAB[0]〜MAB[n−1]から、第2のメモリブロック10Bに設けられたマッチ線MLBの論理レベルの検出結果MAOB_N[0]〜MAOB_N[n−1]をそれぞれ受ける。
【0175】
メインサーチ制御回路41は、仮想線SYM1に対してプライオリティエンコーダ70と同じ側(+X方向側)で、仮想線SYM1からプライオリティエンコーダ70とほぼ等距離の位置に設けられる。さらに、前述のように、サブサーチ制御回路50A,50Bの各々から仮想線SYM1までの距離は、一致検出部20A,20Bの各々から仮想線SYM1までの距離とほぼ等しい。
【0176】
このような配置にすることによって、メインサーチ制御回路41からサブサーチ制御回路50Aに至るトリガ信号SE_ACT1,SE_ACT2の伝送経路長は、一致検出部20Aからプライオリティエンコーダ70に至る検出結果の伝送経路長にほぼ等しくなる。さらに、メインサーチ制御回路41からサブサーチ制御回路50Bに至るトリガ信号SE_ACT1,SE_ACT2の伝送経路長は、一致検出部20Bからプライオリティエンコーダ70に至る検出結果の伝送経路長にほぼ等しくなる。したがって、トリガ信号SE_ACT1,SE_ACT2が伝送する配線と一致検出部20A,20Bの検出結果が伝送する配線とで、各配線の厚みおよび線幅が互いに等しく形成されている場合には、両信号の伝送時間も等しくなる。
【0177】
[連想メモリ100Aの効果]
以上の構成の連想メモリ100Aによれば、サブサーチ制御回路50Aから出力されたサーチ線イネーブル信号SLE_0が検索データ転送部30Bの最初のサーチ線ドライバDRB[79]に到達する時間を、サブサーチ制御回路50Aから出力されたマッチ線プリチャージ信号MLPRE_0_Nがいずれの第1のプリチャージ部PCAに到達する時間よりも長くすることができる。同様に、サブサーチ制御回路50Bから出力されたサーチ線イネーブル信号SLE_1が検索データ転送部30Aの最初のサーチ線ドライバDRA[79]に到達する時間を、サブサーチ制御回路50Bから出力されたマッチ線プリチャージ信号MLPRE_1_Nがいずれの第2のプリチャージ部PCBに到達する時間よりも長くすることができる。したがって、第1および第2のいずれのメモリブロック10A,10Bに対しても、プリチャージ部PCA,PCBによるマッチ線MLA,MLBのプリチャージが終了した後に、サーチ線SLA,SLA_N,SLB,SLB_Nの活性化を行なうことができる。
【0178】
さらに、サブサーチ制御回路50Aは、サブサーチ制御回路50Bから受けたサーチ線イネーブル信号SLE_1_RCVを用いてマッチ線プリチャージ信号MLPRE_0_Nおよびマッチアンプ制御信号MLI_0,MAE_0,MALAT_0を生成することができる。同様に、サブサーチ制御回路50Bは、サブサーチ制御回路50Aから受けたサーチ線イネーブル信号SLE_0_RCVを用いてマッチ線プリチャージ信号MLPRE_1_Nおよびマッチアンプ制御信号MLI_1,MAE_1,MALAT_1を生成することができる。したがって、第1および第2のメモリブロック10A,10Bに対応したサーチ線SLA,SLA_N,SLB,SLB_Nが非活性状態になった後に、マッチ線プリチャージ信号MLPRE_0_N,MLPRE_1_Nおよびマッチアンプ制御信号MLI_0,MAE_0,MALAT_0,MLI_1,MAE_1,MALAT_1を活性化することが容易にできる。
【0179】
さらに、第1および第2のメモリブロック10A,10Bのいずれに対しても、サーチ線SLA,SLA_N,SLB,SLB_Nは、対応のマッチアンプMAA,MABから遠いほうから順番に活性化されるので、マッチアンプMAA,MABの活性化のタイミングを決定するのにマッチ線MLA,MLBの配線遅延を考慮する必要がない。
【0180】
さらに、上記の構成の連想メモリ100Aによれば、第1および第2のメモリブロック間のアクセススキューを小さくすることができる。以下、その理由を具体的に説明する。
【0181】
まず、第1のメモリブロック10Aのデータ検索を行なう場合(第1のデータ検索)には、メインサーチ制御回路41から活性状態のトリガ信号SE_ACT1がサブサーチ制御回路50Bに送信される。これを受けてサブサーチ制御回路50Bから、活性状態のサーチ線イネーブル信号SLE_1が検索データ転送部30Aの各サーチ線ドライバDRAに送信される。これを受けて検索データ転送部30Aの各サーチ線ドライバDRAから、第1のメモリブロック10Aの各CAMセルCCに検索データSDA,SDA_Nが転送される。検索データSDA,SDA_Nと記憶データが不一致の場合に生じるマッチ線MLAの電圧変化は、一致検出部20Aの各マッチアンプMAAによって検出される。そして、一致検出部20Aの各マッチアンプMAAから検出結果がプライオリティエンコーダ70に送信される。
【0182】
次に、第2のメモリブロック10Bのデータ検索を行なう場合(第2のデータ検索)には、メインサーチ制御回路41から活性状態のトリガ信号SE_ACT1がサブサーチ制御回路50Aに送信される。これを受けてサブサーチ制御回路50Aから、活性状態のサーチ線イネーブル信号SLE_0が検索データ転送部30Bの各サーチ線ドライバDRBに送信される。これを受けて検索データ転送部30Bの各サーチ線ドライバDRBから、第2のメモリブロック10Bの各CAMセルCCに検索データSDB,SDB_Nが転送される。検索データSDB,SDB_Nと記憶データが不一致の場合に生じるマッチ線MLBの電圧変化は、一致検出部20Bの各マッチアンプMABによって検出される。そして、一致検出部20Bの各マッチアンプMABから検出結果がプライオリティエンコーダ70に送信される。
【0183】
上記の第1のデータ検索の場合と第2のデータ検索の場合を比較すると、メインサーチ制御回路41からプライオリティエンコーダ70に至る信号の伝送経路長が同じになる。この結果、信号の伝送時間も同じにできるので、サーチ結果の出力のばらつきが小さくなり、従来よりも高速周波数での連想メモリの動作が可能になる。
【0184】
[サブサーチ制御回路50A,50Bの構成]
以下、サブサーチ制御回路50A,50Bの具体的な構成例について説明する。
【0185】
図19は、図18のサブサーチ制御回路50Aの一部の構成を示すブロック図である。図19はサーチ線イネーブル信号SLE_0およびマッチ線プリチャージ信号MLPRE_0_Nの生成に関係したサブサーチ制御回路50Aの構成を示す。回路の内部構成は、図9の場合と同じであるので説明を繰返さない。図19のサブサーチ制御回路50Aは、メインサーチ制御回路41から受けたサーチ線SLB,SLB_Nの活性化のトリガ信号SE_ACT1を用いて、サーチ線イネーブル信号SLE_0_SNDを生成する。さらに、サブサーチ制御回路50Aは、マッチ線MLAのプリチャージのトリガ信号SE_ACT0およびサブサーチ制御回路50Bから受けたサーチ線イネーブル信号SLE_1_RCVを用いて、マッチ線プリチャージ信号MLPRE_0_Nを生成する。
【0186】
図20は、図18のサブサーチ制御回路50Bの一部の構成を示すブロック図である。図20はサーチ線イネーブル信号SLE_1およびマッチ線プリチャージ信号MLPRE_1_Nの生成に関係したサブサーチ制御回路50Bの構成を示す。回路の内部構成は、図9の場合と同じであるので説明を繰返さない。図20のサブサーチ制御回路50Bは、メインサーチ制御回路41から受けたサーチ線SLA,SLA_Nの活性化のトリガ信号SE_ACT1を用いて、サーチ線イネーブル信号SLE_1_SNDを生成する。さらに、サブサーチ制御回路50Bは、マッチ線MLBのプリチャージのトリガ信号SE_ACT0およびサブサーチ制御回路50Aから受けたサーチ線イネーブル信号SLE_0_RCVを用いて、マッチ線プリチャージ信号MLPRE_1_Nを生成する。
【0187】
図21は、図19、図20の各信号のタイミング図である。図21は上から順に、クロックCLK、トリガ信号SE_ACT0,SE_ACT1、サブサーチ制御回路50Aでの送信時のサーチ線イネーブル信号SLE_0_SND、検索データ転送部30Bのサーチ線ドライバDRB[79]に到達したサーチ線イネーブル信号SLE_0_SLB[79]、サブサーチ制御回路50Bでの受信時のサーチ線イネーブル信号SLE_0_RCV、およびマッチ線プリチャージ信号MLPRE_1_Nの各波形を示す。クロックCLKは時刻T10,T30のタイミングで立上がり、時刻T20,T40のタイミングで立下がるものとする。
【0188】
図21に示すように、時刻T20にマッチ線MLBのプリチャージのトリガ信号SE_ACT0がLレベルに変化する。これに応答して、サブサーチ制御回路50Bから出力されるマッチ線プリチャージ信号MLPRE_1_Nが時刻T21にHレベルに変化することにより、第2のメモリブロック10Bに対応したマッチ線MLBのプリチャージが完了する。
【0189】
さらに、時刻T20には、サーチ線SLB,SLB_Nの活性化のトリガ信号SE_ACT1がHレベルに変化する。これに応答して、サブサーチ制御回路50Aから送信されるサーチ線イネーブル信号SLE_0_SNDがHレベルに変化する。このサーチ線イネーブル信号SLE_0_SNDの活性化から配線遅延分だけ遅れた時刻T23に、検索データ転送部30Bのサーチ線ドライバDRB[79]で受信したサーチ線イネーブル信号SLE_0_SLB[79]が活性化する。さらに、配線遅延分だけ遅れてサブサーチ制御回路50Bで受信したサーチ線イネーブル信号SLE_0_RCVが活性化する。
【0190】
したがって、第2のメモリブロック10Bにおいて、マッチ線MLBのプリチャージが完了した時刻T21と最初のサーチ線SLB[79],SLB_N[79]を活性化する時刻T23までの間にタイムマージンTD1をもたせることができる。
【0191】
次に、時刻T30に、マッチ線MLBのプリチャージのトリガ信号SE_ACT0がHレベルに変化する。さらに、サブサーチ制御回路50Bで受信するサーチ線イネーブル信号SLE_0_RCVがLレベルになることによって、サブサーチ制御回路50Bから出力されるマッチ線プリチャージ信号MLPRE_1_Nが活性化する(時刻T36)。この結果、第2のメモリブロック10Bにおいて、全てのサーチ線対SLB,SLB_Nの非活性化が完了している時刻T35とマッチ線プリチャージ信号MLPRE_1_Nを活性化する時刻T36との間にタイムマージンTD2をもたせることができる。以上は、第2のメモリブロック10Bの場合について説明したが、第1のメモリブロック10Aの場合も同様である。
【0192】
図22は、図18のサブサーチ制御回路50Aの一部の構成を示すブロック図である。図22は、マッチアンプ制御信号MLI_0,MAE_0,MALAT_0の生成に関係したサブサーチ制御回路50Aの構成を示す。回路の内部構成は、図11の場合と同じであるので説明を繰返さない。サブサーチ制御回路50Aは、サブサーチ制御回路50Bから受信したサーチ線イネーブル信号SLE_1_RCVを用いてマッチアンプ制御信号MLI_0,MAE_0,MAE_0_N,MALAT_0を生成する。
【0193】
図23は、図18のサブサーチ制御回路50Bの一部の構成を示すブロック図である。図23は、マッチアンプ制御信号MLI_1,MAE_1,MALAT_1の生成に関係したサブサーチ制御回路50Bの構成を示す。回路の内部構成は、図11の場合と同じであるので説明を繰返さない。サブサーチ制御回路50Bは、サブサーチ制御回路50Aから受信したサーチ線イネーブル信号SLE_0_RCVを用いてマッチアンプ制御信号MLI_1,MAE_1,MALAT_1を生成する。
【0194】
図24は、図22の各信号のタイミング図である。図24は上から順に、クロックCLK、トリガ信号SE_ACT1、サブサーチ制御回路50Aで受信したサーチ線イネーブル信号SLE_1_RCV、図22の遅延段55の出力信号SLE_1_RCV_DLY、およびマッチアンプ制御信号MLI_0,MAE_0,MALAT_0の波形を示す。クロックCLKは時刻T10,T30のタイミングで立上がり、時刻T20,T40のタイミングで立下がるものとする。
【0195】
図24に示すように、時刻T30に、メインサーチ制御回路41から出力されるサーチ線SLA,SLA_Nの活性化のトリガ信号SE_ACT1がLレベルに変化する。これに応答して、サブサーチ制御回路50Bから出力されるサーチ線イネーブル信号SLE_1がLレベルに変化するので、配線遅延分だけ遅延した時刻T35にサブサーチ制御回路50Aで受信するサーチ線イネーブル信号SLE_1_RCVがLレベルに変化する。マッチアンプ制御信号MLI_0,MAE_0,MALAT_0は、サーチ線イネーブル信号SLE_1_RCVの立下がりに応答してこの順序でHレベルに変化する。
【0196】
次に、図22の遅延段55の出力信号SLE_1_RCV_DLYは、所定の遅延時間だけ遅延した時刻T37にLレベルに変化する。マッチアンプ制御信号MALAT_0,MAE_0,MLI_0は、この遅延段55の出力信号SLE_1_RCV_DLYの立下がりに応答してこの順序でLレベルに変化する。
【0197】
[制御信号線の構成例]
図25は、図18の制御信号線120,121の構成の一例を示す平面図である。図25では、図解を容易にするために一部の配線にハッチングが付されている。
【0198】
図25に示すように、制御信号線120は、第Q層の金属配線層に一体形成された配線部120A〜120Cを含む。配線部120Aの−X方向側の端部は、サブサーチ制御回路50Aに設けられたサーチ線イネーブル信号SLE_0の送信部の最終段のトランジスタ112A,112BとコンタクトNASを介して接続される。配線部120Aは、コンタクトNASから+X方向に延在する。配線部120Aの+X方向側の端部は、Y方向に延びる配線部120Bの一端と接続される。配線部120Cは、配線部120Bの他端から+X方向に延びる。配線部120Cの+X方向側の端部は、サブサーチ制御回路50Bに設けられたサーチ線イネーブル信号SLE_0の受信部の入力初段のトランジスタ113A,113BとコンタクトNBRを介して接続される。
【0199】
制御信号線121は、制御信号線120と同層の第Q層の金属配線層に形成された配線部121A,121Cと、第Q層のより下層の第P層の金属配線層に形成されたL字状の配線部121Bとを含む。配線部121Aの+X方向側の端部は、サブサーチ制御回路50Bに設けられたサーチ線イネーブル信号SLE_1の送信部の最終段のトランジスタ114A,114BとコンタクトNBSを介して接続される。配線部121Aは、コンタクトNBSから−X方向に延び、配線部121Bの一端とコンタクト122を介して接続される。配線部121Cは、配線部121Bの他端とコンタクト123を介して接続され、コンタクト123から−X方向に延びる。配線部121Cの−X方向側の端部は、サブサーチ制御回路50Aに設けられたサーチ線イネーブル信号SLE_1の受信部の入力初段のトランジスタ111A,111BとコンタクトNARを介して接続される。
【0200】
制御信号線121の配線部121Cは、制御信号線120の配線部120Aよりも検索データ転送部30A寄りに設けられる。配線部121Cは、仮想線SYM1側から見て最初に、検索データ転送部30Aのサーチ線ドライバDRA[79]の入力初段のトランジスタ37A,37BとコンタクトNA[79](接続ノード)を介して接続される。続いて配線部121Cは、サーチ線ドライバDRの配列順で各サーチ線ドライバDRAの入力初段のトランジスタ37A,37Bと接続され、最後にサーチ線ドライバDRA[0]の入力初段のトランジスタ37A,37BとコンタクトNA[0]を介して接続される。
【0201】
制御信号線120の配線部120Cは、制御信号線121の配線部121Aよりも検索データ転送部30B寄りに設けられる。配線部120Cは、仮想線SYM1側から見て最初に、検索データ転送部30Bのサーチ線ドライバDRB[79]の入力初段のトランジスタ37A,37BとコンタクトNB[79]を介して接続される。続いて配線部120Cは、サーチ線ドライバDRBの配列順で各サーチ線ドライバDRBの入力初段のトランジスタ37A,37Bと接続され、最後にサーチ線ドライバDRB[0]の入力初段のトランジスタ37A,37BとコンタクトNB[0]を介して接続される。
【0202】
以上をまとめると、図25の場合の制御信号配線120,121の構成は次のようになる。なお、以下では、第2のメモリ部130Bとサブサーチ制御回路50Bとを合わせて第1のブロックと称し、第1のメモリ部130Aとサブサーチ制御回路50Aとを合わせて第2のブロックと称する。第1および第2のブロックは第1の方向(X方向)に並んで配置される。
【0203】
第1のブロックのサーチ制御回路(サブサーチ制御回路50B)は、第1と第2のブロック全体の第1の方向(X方向)の一方端(+X方向側の端部)に配置される。第2のブロックのサーチ制御回路(サブサーチ制御回路50A)は第1と第2のブロック全体の第1の方向(X方向)の他方端(−X方向側の端部)に配置される。
【0204】
制御信号配線120,121は、第1〜第4の配線部を含む。第1の配線部120(120A〜120C)は、第1の方向(X方向)に延在し、両端部がそれぞれ、第1のブロックのサーチ制御回路50Bと第2のブロックのサーチ制御回路50Aとに接続される。第2の配線部121Bは、第1と第2ブロックの間に配置される。第3の配線部121Aは、第1の方向(X方向)に延在し、両端部がそれぞれ第1のブロックのサーチ制御回路50Bと第2の配線部121Bに接続される。第4の配線部121Cは、第1の方向に延在し、両端部がそれぞれ第2のブロックのサーチ制御回路50Aと第2の配線部121Bに接続される。
【0205】
より詳しくは、第1のブロックの複数のサーチ線ドライバDRBはそれぞれ第1の配線部120(120C)に接続される。第2のブロックの複数のサーチ線ドライバDRAはそれぞれ第4の配線部121Cに接続される。第1と第3と第4の配線部120,121A,121Cは第1の配線層(Q層)に配置され、第2の配線部121Bは第1の配線層(Q層)と異なる第2の配線層(P層)に配置される。
【0206】
[制御信号線の他の構成例]
図26は、図18の制御信号線120,121の構成の他の例を示す平面図である。図26では、図解を容易にするために一部の配線にハッチングが付されている。
【0207】
図26に示すように、制御信号線120は、第P層の金属配線層に形成された配線部120Aと、第P層より上層の第Q層の金属配線層に形成された配線部120Bとを含む。−X方向側の端部を除いて配線部120AはX方向に延在する。配線部120Aの−X方向側の端部はL字状に屈曲し、サブサーチ制御回路50Aに設けられたサーチ線イネーブル信号SLE_0の送信部の最終段のトランジスタ112A,112BとコンタクトNAS(接続ノード)を介して接続される。配線部120Bの−X方向側の端部は、仮想線SYM1付近で配線部120Aの+X方向側の端部とコンタクト124を介して接続される。配線部120Bは、コンタクト124から+X方向に延びる。配線部120Bの+X方向側の端部は、サブサーチ制御回路50Bに設けられたサーチ線イネーブル信号SLE_0の受信部の入力初段のトランジスタ113A,113BとコンタクトNBRを介して接続される。
【0208】
制御信号線121は、第P層の金属配線層に形成された配線部121Aと、第P層より上層の第Q層の金属配線層に形成された配線部121Bとを含む。配線部121AはL字状に屈曲する両端部を除いてX方向に延びる。配線部121Aの+X方向側の端部は、サブサーチ制御回路50Bに設けられたサーチ線イネーブル信号SLE_1の送信部の最終段のトランジスタ114A,114BとコンタクトNBSを介して接続される。配線部121Bは、クランク状に2回屈曲した+X方向側の端部を除いてX方向に延在する。配線部121Bの+X方向側の端部は、コンタクト125を介して配線部121Aの−X方向側の端部と接続される。配線部121Cの−X方向側の端部は、サブサーチ制御回路50Aに設けられたサーチ線イネーブル信号SLE_1の受信部の入力初段のトランジスタ111A,111BとコンタクトNARを介して接続される。
【0209】
第Q層に形成された制御信号線120の配線部120Bは、仮想線SYM1側から見て最初に、検索データ転送部30Bのサーチ線ドライバDRB[79]の入力初段のトランジスタ37A,37BとコンタクトNB[79]を介して接続される。続いて配線部120Bは、サーチ線ドライバDRBの配列順で検索データ転送部30Bの各サーチ線ドライバDRBの入力初段のトランジスタ37A,37Bと接続される。配線部120Bは、最後に検索データ転送部30Bのサーチ線ドライバDRB[0]の入力初段のトランジスタ37A,37BとコンタクトNB[0]を介して接続される。
【0210】
第Q層に形成された制御信号線121の配線部121Bは、仮想線SYM1側から見て最初に、検索データ転送部30Aのサーチ線ドライバDRA[79]の入力初段のトランジスタ37A,37BとコンタクトNA[79]を介して接続される。続いて配線部121Bは、サーチ線ドライバDRAの配列順で検索データ転送部30Aの各サーチ線ドライバDRAの入力初段のトランジスタ37A,37Bと接続される。配線部121Bは、最後に検索データ転送部30Aのサーチ線ドライバDRA[0]の入力初段のトランジスタ37A,37BとコンタクトNA[0]を介して接続される。
【0211】
以上をまとめると、図26の場合の制御信号配線120,121の構成は次のようになる。なお、以下では、第2のメモリ部130Bとサブサーチ制御回路50Bとを合わせて第1のブロックと称し、第1のメモリ部130Aとサブサーチ制御回路50Aとを合わせて第2のブロックと称する。第1および第2のブロックは第1の方向(X方向)に並んで配置される。
【0212】
第1のブロックのサーチ制御回路(サブサーチ制御回路50B)は、第1と第2のブロック全体の第1の方向(X方向)の一方端(+X方向側の端部)に配置される。第2のブロックのサーチ制御回路(サブサーチ制御回路50A)は、第1と第2のブロック全体の第1の方向(X方向)の他方端(−X方向側の端部)に配置される。
【0213】
制御信号配線120,121は、第1〜第4の配線部を含む。第1の配線部120Bおよび第2の配線部121Aは、第1の方向(X方向)に延在し、それぞれの一方端(+X方向側の端部)が、第1のブロックのサーチ制御回路50Bに接続される。第3の配線部121Bおよび第4の配線部120Aは、第1の方向(X方向)に延在し、それぞれの一方端(−X方向側の端部)が、第2のブロックのサーチ制御回路50Aに接続される。第1と第3の配線部120B,121Bは第1の配線層(Q層)に配置される。第2と第4の配線部121A,120Aは第1の配線層(Q層)とは異なる第2の配線層(P層)に配置される。第1と第4の配線部120B,120Aのそれぞれの他方端はコンタクト124を介して接続される。第2と第3の配線部121A,121Bのそれぞれの他方端はコンタクト125を介して接続される。
【0214】
より詳しくは、第1のブロックの複数のサーチ線ドライバDRBはそれぞれ第1の配線部120Bに接続される。第2のブロックの複数のサーチ線ドライバDRAはそれぞれ第3の配線部121Bに接続される。
【0215】
今回開示された実施の形態はすべての点で例示であって制限的なものでないと考えられるべきである。この発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0216】
CC CAMセル、DR,DRA,DRB サーチ線ドライバ、MA,MAA,MAB マッチアンプ、MLI,MAE,MALAT マッチアンプ制御信号、MAO_N,MAOA_N,MAOB_N マッチアンプの出力信号、ML,MLA,MLB マッチ線、MLPRE_N マッチ線プリチャージ信号、PC,PCA,PCB プリチャージ部、SD,SD_N,SDA,SDA_N,SDB,SDB_N 検索データ、SE_ACT0,SE_ACT1 トリガ信号、SL,SL_N サーチ線対、SLA,SLA_N サーチ線対、SLB,SLB_N サーチ線対、SLE サーチ線イネーブル信号、SYM1 仮想線(対称線)、10 CAMメモリアレイ、10A 第1のメモリブロック、10B 第2のメモリブロック、20,20A,20B 一致検出部、30,30A,30B 検索データ転送部、36 制御信号線、40 サーチ制御回路、41 メインサーチ制御回路、50,50A,50B サブサーチ制御回路、70 プライオリティエンコーダ、100,100A 連想メモリ、120,121 制御信号線、130A 第1のメモリ部、130B 第2のメモリ部。
【特許請求の範囲】
【請求項1】
外部から入力される検索データと予め記憶したデータとの比較を行う連想メモリにおいて、
第1の方向に延在して配置される複数のマッチ線と、
前記第1の方向と交差する第2の方向に延在して配置される複数のサーチ線と、
前記複数のマッチ線と前記複数のサーチ線とのそれぞれの交点に配置される複数のメモリセルを有するメモリセルアレイと、
対応するサーチ線ごとに配置され、前記検索データに応じて前記複数のサーチ線を駆動する複数のサーチ線ドライバと、
前記複数のサーチ線ドライバに対して、前記第1の方向に延在する制御信号配線を介して前記検索データを伝送するサーチ制御回路とを備え、
前記サーチ制御回路は、前記メモリセルアレイの第1の方向の一方端に配置され、
前記制御信号配線は、
前記メモリセルアレイの第1の方向の一方端から他方端まで延在し、前記第2の方向に並んで配置される第1の配線部および第2の配線部と、
前記メモリセルアレイの第1の方向の他方端にある折返し配線部とを有し、
前記第1の配線部の両端部はそれぞれ前記サーチ制御回路と前記折返し配線部とに接続され、
前記第2の配線部の両端部はそれぞれ前記サーチ制御回路と前記折返し配線部とに接続される、連想メモリ。
【請求項2】
前記第1の配線部と前記第2の配線部はそれぞれ異なる配線層に配置され、
前記第1の配線部と前記第2の配線部は、前記折返し配線部を介して接続される、請求項1に記載の連想メモリ。
【請求項3】
前記複数のサーチ線ドライバは、前記第1の配線部に接続される、請求項1または2に記載の連想メモリ。
【請求項4】
外部から入力される検索データと予め記憶したデータとの比較を行う連想メモリにおいて、
第1の方向に延在して配置される複数のマッチ線と、
前記第1の方向と交差する第2の方向に延在して配置される複数のサーチ線と、
前記複数のマッチ線と前記複数のサーチ線とのそれぞれの交点に配置される複数のメモリセルを有するメモリセルアレイと、
対応するサーチ線ごとに配置され、前記検索データに応じて前記複数のサーチ線を駆動する複数のサーチ線ドライバと、
前記複数のサーチ線ドライバに対して、前記第1の方向に延在する制御信号配線を介して前記検索データを伝送するサーチ制御回路とをそれぞれ備える第1と第2のブロックを有し、
前記第1と第2のブロックは前記第1の方向に並んで配置され、
前記第1のブロックのサーチ制御回路は前記第1と第2のブロック全体の第1の方向の一方端に配置され、
前記第2のブロックのサーチ制御回路は前記第1と第2のブロック全体の第1の方向の他方端に配置され、
前記制御信号配線は、
前記第1の方向に延在し、両端部がそれぞれ、前記第1のブロックのサーチ制御回路と前記第2のブロックのサーチ制御回路とに接続される第1の配線部と、
前記第1と第2ブロックの間に配置される第2の配線部と、
前記第1の方向に延在し、両端部がそれぞれ前記第1のブロックのサーチ制御回路と前記第2の配線部に接続される第3の配線部と、
前記第1の方向に延在し、両端部がそれぞれ前記第2のブロックのサーチ制御回路と前記第2の配線部に接続される第4の配線部とを有する連想メモリ。
【請求項5】
前記第1のブロックの複数のサーチ線ドライバはそれぞれ前記第1の配線部に接続され、
前記第2のブロックの複数のサーチ線ドライバはそれぞれ前記第4の配線部に接続される、請求項4に記載の連想メモリ。
【請求項6】
前記第1と第3と第4の配線部は第1の配線層に配置され、
前記第2の配線部は前記第1の配線層と異なる第2の配線層に配置される、請求項4または5に記載の連想メモリ。
【請求項7】
外部から入力される検索データと予め記憶したデータとの比較を行う連想メモリにおいて、
第1の方向に延在して配置される複数のマッチ線と、
前記第1の方向と交差する第2の方向に延在して配置される複数のサーチ線と、
前記複数のマッチ線と前記複数のサーチ線とのそれぞれの交点に配置される複数のメモリセルを有するメモリセルアレイと、
対応するサーチ線ごとに配置され、前記検索データに応じて前記複数のサーチ線を駆動する複数のサーチ線ドライバと、
前記複数のサーチ線ドライバに対して、前記第1の方向に延在する制御信号配線を介して前記検索データを伝送するサーチ制御回路とをそれぞれ備える第1と第2のブロックを有し、
前記第1と第2のブロックは前記第1の方向に並んで配置され、
前記第1のブロックのサーチ制御回路は前記第1と第2のブロック全体の第1の方向の一方端に配置され、
前記第2のブロックのサーチ制御回路は前記第1と第2のブロック全体の第1の方向の他方端に配置され、
前記制御信号配線は、
前記第1の方向に延在し、それぞれの一方端が、前記第1のブロックのサーチ制御回路に接続される第1と第2の配線部と、
前記第1の方向に延在し、それぞれの一方端が、前記第2のブロックのサーチ制御回路に接続される第3と第4の配線部とを有し、
前記第1と第3の配線部は第1の配線層に配置され、
前記第2と第4の配線部は前記第1の配線層とは異なる第2の配線層に配置され、
前記第1と第4の配線部のそれぞれの他方端はコンタクトを介して接続され、
前記第2と第3の配線部のそれぞれの他方端はコンタクトを介して接続される、連想メモリ。
【請求項8】
前記第1のブロックの複数のサーチ線ドライバはそれぞれ前記第1の配線部に接続され、
前記第2のブロックの複数のサーチ線ドライバはそれぞれ前記第3の配線部に接続される、請求項7に記載の連想メモリ。
【請求項1】
外部から入力される検索データと予め記憶したデータとの比較を行う連想メモリにおいて、
第1の方向に延在して配置される複数のマッチ線と、
前記第1の方向と交差する第2の方向に延在して配置される複数のサーチ線と、
前記複数のマッチ線と前記複数のサーチ線とのそれぞれの交点に配置される複数のメモリセルを有するメモリセルアレイと、
対応するサーチ線ごとに配置され、前記検索データに応じて前記複数のサーチ線を駆動する複数のサーチ線ドライバと、
前記複数のサーチ線ドライバに対して、前記第1の方向に延在する制御信号配線を介して前記検索データを伝送するサーチ制御回路とを備え、
前記サーチ制御回路は、前記メモリセルアレイの第1の方向の一方端に配置され、
前記制御信号配線は、
前記メモリセルアレイの第1の方向の一方端から他方端まで延在し、前記第2の方向に並んで配置される第1の配線部および第2の配線部と、
前記メモリセルアレイの第1の方向の他方端にある折返し配線部とを有し、
前記第1の配線部の両端部はそれぞれ前記サーチ制御回路と前記折返し配線部とに接続され、
前記第2の配線部の両端部はそれぞれ前記サーチ制御回路と前記折返し配線部とに接続される、連想メモリ。
【請求項2】
前記第1の配線部と前記第2の配線部はそれぞれ異なる配線層に配置され、
前記第1の配線部と前記第2の配線部は、前記折返し配線部を介して接続される、請求項1に記載の連想メモリ。
【請求項3】
前記複数のサーチ線ドライバは、前記第1の配線部に接続される、請求項1または2に記載の連想メモリ。
【請求項4】
外部から入力される検索データと予め記憶したデータとの比較を行う連想メモリにおいて、
第1の方向に延在して配置される複数のマッチ線と、
前記第1の方向と交差する第2の方向に延在して配置される複数のサーチ線と、
前記複数のマッチ線と前記複数のサーチ線とのそれぞれの交点に配置される複数のメモリセルを有するメモリセルアレイと、
対応するサーチ線ごとに配置され、前記検索データに応じて前記複数のサーチ線を駆動する複数のサーチ線ドライバと、
前記複数のサーチ線ドライバに対して、前記第1の方向に延在する制御信号配線を介して前記検索データを伝送するサーチ制御回路とをそれぞれ備える第1と第2のブロックを有し、
前記第1と第2のブロックは前記第1の方向に並んで配置され、
前記第1のブロックのサーチ制御回路は前記第1と第2のブロック全体の第1の方向の一方端に配置され、
前記第2のブロックのサーチ制御回路は前記第1と第2のブロック全体の第1の方向の他方端に配置され、
前記制御信号配線は、
前記第1の方向に延在し、両端部がそれぞれ、前記第1のブロックのサーチ制御回路と前記第2のブロックのサーチ制御回路とに接続される第1の配線部と、
前記第1と第2ブロックの間に配置される第2の配線部と、
前記第1の方向に延在し、両端部がそれぞれ前記第1のブロックのサーチ制御回路と前記第2の配線部に接続される第3の配線部と、
前記第1の方向に延在し、両端部がそれぞれ前記第2のブロックのサーチ制御回路と前記第2の配線部に接続される第4の配線部とを有する連想メモリ。
【請求項5】
前記第1のブロックの複数のサーチ線ドライバはそれぞれ前記第1の配線部に接続され、
前記第2のブロックの複数のサーチ線ドライバはそれぞれ前記第4の配線部に接続される、請求項4に記載の連想メモリ。
【請求項6】
前記第1と第3と第4の配線部は第1の配線層に配置され、
前記第2の配線部は前記第1の配線層と異なる第2の配線層に配置される、請求項4または5に記載の連想メモリ。
【請求項7】
外部から入力される検索データと予め記憶したデータとの比較を行う連想メモリにおいて、
第1の方向に延在して配置される複数のマッチ線と、
前記第1の方向と交差する第2の方向に延在して配置される複数のサーチ線と、
前記複数のマッチ線と前記複数のサーチ線とのそれぞれの交点に配置される複数のメモリセルを有するメモリセルアレイと、
対応するサーチ線ごとに配置され、前記検索データに応じて前記複数のサーチ線を駆動する複数のサーチ線ドライバと、
前記複数のサーチ線ドライバに対して、前記第1の方向に延在する制御信号配線を介して前記検索データを伝送するサーチ制御回路とをそれぞれ備える第1と第2のブロックを有し、
前記第1と第2のブロックは前記第1の方向に並んで配置され、
前記第1のブロックのサーチ制御回路は前記第1と第2のブロック全体の第1の方向の一方端に配置され、
前記第2のブロックのサーチ制御回路は前記第1と第2のブロック全体の第1の方向の他方端に配置され、
前記制御信号配線は、
前記第1の方向に延在し、それぞれの一方端が、前記第1のブロックのサーチ制御回路に接続される第1と第2の配線部と、
前記第1の方向に延在し、それぞれの一方端が、前記第2のブロックのサーチ制御回路に接続される第3と第4の配線部とを有し、
前記第1と第3の配線部は第1の配線層に配置され、
前記第2と第4の配線部は前記第1の配線層とは異なる第2の配線層に配置され、
前記第1と第4の配線部のそれぞれの他方端はコンタクトを介して接続され、
前記第2と第3の配線部のそれぞれの他方端はコンタクトを介して接続される、連想メモリ。
【請求項8】
前記第1のブロックの複数のサーチ線ドライバはそれぞれ前記第1の配線部に接続され、
前記第2のブロックの複数のサーチ線ドライバはそれぞれ前記第3の配線部に接続される、請求項7に記載の連想メモリ。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【公開番号】特開2013−101750(P2013−101750A)
【公開日】平成25年5月23日(2013.5.23)
【国際特許分類】
【出願番号】特願2013−41776(P2013−41776)
【出願日】平成25年3月4日(2013.3.4)
【分割の表示】特願2009−180502(P2009−180502)の分割
【原出願日】平成21年8月3日(2009.8.3)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【公開日】平成25年5月23日(2013.5.23)
【国際特許分類】
【出願日】平成25年3月4日(2013.3.4)
【分割の表示】特願2009−180502(P2009−180502)の分割
【原出願日】平成21年8月3日(2009.8.3)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
[ Back to top ]