(57)【要約】    【課題】  範囲指定されたＩＰアドレスを効率よく記憶することにより、必要なエントリ数を低減し、ＴＣＡＭのメモリ容量の向上を図る。    【解決手段】  本発明の代表的な手段の一つを示せば以下の通りである。即ち、記憶情報（エントリ）および入力情報（比較情報または検索キー）を、いずれかのビットが必ず論理値‘1’となるような共通のブロック符号とする。また、マッチ線を階層構造とし、複数のサブマッチ線と複数のサーチ線との交点にメモリセルを配置する。さらに、サブマッチ線を、サブマッチ判定回路を介してメインマッチ線にそれぞれ接続し、メインマッチ線にメインマッチ判定回路を配置する。【選択図】  図１
2005190543.tif 000002
【特許請求の範囲】
【請求項１】
複数のビット線と、
前記複数のビット線の方向に、前記複数のビット線のそれぞれと対をなすように配置された複数のサーチ線と、
前記複数のビット線に交差する方向に配置された複数のワード線と、
前記複数のワード線の方向に配置された複数のメインマッチ線と、
前記メインマッチ線の方向に、前記複数のメインマッチ線のそれぞれと対をなすように配置された複数のサブマッチ線と、
前記複数のビット線と前記複数のワード線のそれぞれの交点に配置されたメモリセルと、
前記複数のサブマッチ線のそれぞれに接続されたサブマッチ判定回路と、
前記複数のメインマッチ線のそれぞれに接続されたメインマッチ判定回路とを備え、
前記メモリセルは、対応する前記複数のサブマッチ線の一に接続されるとともに、対応するサブマッチ判定回路を介して前記複数のメインマッチ線の一に接続され、前記複数のサーチ線を介して入力された情報と前記メモリセルに保持された情報との比較を行うことを特徴とする半導体装置。
【請求項２】
前記メモリセルは、前記複数のサブマッチ線に偶数個接続されることを特徴とする請求項１に記載の半導体装置。
【請求項３】
前記メモリセルは、メモリセル二つを用いて４通りの情報を記憶することを特徴とする請求項２に記載の半導体装置。
【請求項４】
前記メモリセルは、前記複数のサブマッチ線のそれぞれと接地電極との間に電流経路を形成するように接続された第１および第２のＭＯＳトランジスタと、
二値情報を保持する記憶回路とをそれぞれ有し、
前記第１のＭＯＳトランジスタは、そのゲート電極に前記複数のサーチ線が接続され、
前記第２のＭＯＳトランジスタは、そのゲート電極に前記の記憶回路が接続されることを特徴とする請求項３に記載の半導体装置。
【請求項５】
前記の記憶回路は、第３のＭＯＳトランジスタとキャパシタとを有し、読み出しと書き込みを所定の時間間隔毎にリフレッシュ動作を行いながら情報を保持することを特徴とする請求項４に記載の半導体装置。
【請求項６】
第１の信号線群と第２の信号線群とを接続するように配置された入出力回路と、第１のレジスタと、エンコーダと、エントリ圧縮回路と、メモリアレイとを有する半導体装置において、
前記入出力回路は、第１または第２の情報を前記第２の信号線群に出力し、
前記第１のレジスタは、前記第１の情報を保持し、
前記エンコーダは、前記第２の信号線群を介して受信した前記第１および第２の情報に基づいて符号化した第３の情報を第３の信号線群に出力し、
前記エントリ圧縮回路は、前記第３の信号線群を介して連続して入力される複数の前記第３の情報に論理演算を行うことにより第４の情報を発生させて第４の信号線群に出力し、
前記のメモリアレイは、前記第４の信号線群を介して入力された前記第４の情報を記憶すると共に、前記第３の信号線群を介して入力された前記第３の情報との比較動作を行うことを特徴とする半導体装置。
【請求項７】
前記エンコーダは、複数のビット毎に符号化を行うことを特徴とする請求項６に記載の半導体装置。
【請求項８】
前記エントリ圧縮回路は、第１の複数のレジスタと、比較回路と、OR演算回路とを有し、
前記第１の複数のレジスタは、複数の前記第３の情報を記憶し、
前記比較回路は、前記第１の複数のレジスタにそれぞれ記憶された情報をビット毎に比較し、
前記のOR演算回路は、前記比較回路の比較結果に応じて、前記複数のレジスタにそれぞれ記憶された情報に対してビット毎にOR演算を行うことにより前記第４の情報を発生することを特徴とする請求項７に記載の半導体装置。
【請求項９】
第２および第３のレジスタと、デコーダと、エントリ展開回路とを有し、
前記エントリ展開回路は、前記第４の信号線群を介して前記メモリアレイから読み出した前記第４の情報を分割して第１の複数の情報を発生して記憶し、
前記デコーダは、第５の信号線群を介して受信した前記第１の複数の情報のそれぞれを復号して得られる複数の前記第１および第２の情報を記憶し、
前記第２のレジスタは、第５の信号線群を介して受信した複数の前記第１の情報を記憶し、
前記第３のレジスタは、前記第５の信号線群を介して受信した複数の前記第２の情報を記憶し、
前記第２および第３のレジスタに保持された複数の前記第１および第２の情報を、前記第２の信号線群から前記入出力回路を介して前記第１の信号線群に出力することを特徴とする請求項８に記載の半導体装置。
【請求項１０】
カウンタと、ダイナミック型メモリセルからなるメモリアレイとを有し、
前記カウンタは、リフレッシュ動作において、前記複数のメモリセルを選択的に選択するためのロウ・アドレスを発生することを特徴とする請求項９に記載の半導体装置。
【請求項１１】
複数のビット線と、
前記複数のビット線の方向に、前記複数のビット線のそれぞれと対をなすように配置された複数のサーチ線と、
前記複数のビット線に交差する方向に配置された複数のワード線と、
前記複数のワード線の方向に配置された複数のメインマッチ線と、
前記メインマッチ線の方向に、前記複数のメインマッチ線のそれぞれと対をなすように配置された複数のサブマッチ線と、
前記複数のビット線と前記複数のワード線のそれぞれの交点に配置されたメモリセルと、
前記複数のサブマッチ線のそれぞれに接続されたサブマッチ判定回路と、
前記複数のメインマッチ線のそれぞれに接続されたメインマッチ判定回路とを備え、
前記メモリセルは、前記複数のサブマッチ線に接続され、前記複数のサーチ線を介して入力された情報と前記メモリセルに保持された情報との比較動作において、前記複数のサブマッチ線が放電されることにより対応する情報が一致したと判定することを特徴とする半導体装置。
【請求項１２】
前記複数のサブマッチ線と、それに対応する前記複数のメインマッチ線との間に配置されたサブマッチ判定回路を複数有し、
前記サブマッチ判定回路は、第１および第２のＭＯＳトランジスタを含み、
前記第１のＭＯＳトランジスタは、該ＭＯＳトランジスタの一端子である第１電極と前記複数のサブマッチ線との間に電流経路を形成するように接続され、
前記第２のＭＯＳトランジスタは、該ＭＯＳトランジスタの一端子である第２電極と前記複数のメインマッチ線との間に電流経路を形成するように接続されるとともに、前記第２のＭＯＳトランジスタのゲート電極には、前記複数のサブマッチ線が接続されることを特徴とする請求項１１に記載の半導体装置。
【請求項１３】
前記第１電極には第１の電源電圧が供給され、
前記第２電極には第２の電源電圧が供給され、
前記第１の電源電圧は前記第２の電源電圧よりも高電位であることを特徴とする請求項１２に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置に関し、蓄積ノードに記憶された情報と入力された情報との比較を行うコンテント・アドレッサブル・メモリセル（ＣＡＭセル）を含む半導体装置において、装置内部で符号化した情報を記憶または比較するＣＡＭアレイを含む半導体装置に関する。
【背景技術】
【０００２】
インターネットの爆発的な普及に伴い、ネットワークにおけるルータやスイッチに要するテーブル規模が急増しており、テーブル検索の高速化が課題となっている。この課題をハードウェア的に解決する手段として、ターナリ・コンテント・アドレッサブル・メモリ（ＴＣＡＭ）が注目されている。
図２は、ルータの構成を模式的に示したものである。同図では、一例として、ネットワーク・インターフェイスNIF、ネットワーク・プロセッサNP、検索エンジンSE、検索テーブルLUT、コンテント・メモリCMで構成された例を示している。ネットワーク・インターフェイスNIFとネットワーク・プロセッサNPは、システム・バスSBSで接続されている。ネットワーク・プロセッサNPと検索エンジンSEは、内部バスIBSで接続されている。検索エンジンSEと検索テーブルLUTは、データ・バスDQで接続されている。ここで、検索テーブルLUTはＴＣＡＭ、コンテント・メモリCMはスタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）やダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）である。
ルータは、インターネット網IPNからネットワーク・インターフェイスNIFを介してパケットを送受信する。ネットワーク・プロセッサNPは、受信したパケットの内容を解読および再構成する。例えば、パケットのヘッダから読み出された宛先インターネット・プロトコル・アドレス（ＩＰアドレス）は、検索エンジンSEを介して検索テーブルLUTに転送される。検索テーブルLPTは、複数の宛先ＩＰアドレスを記憶しており、入力された宛先ＩＰアドレスが記憶されている場合に、その宛先ＩＰアドレスに関する情報をコンテント・メモリCMから読み出すためのアドレスを発生する。コンテント・メモリCMは、パケット転送に必要な経路情報やルータのポート番号などを記憶しており、コンテント・メモリ・アドレス・バスCADDを介して入力されたアドレスに応じた情報を、コンテント・バスCBSおよび検索エンジンSEを介してネットワーク・プロセッサNPに出力する。ネットワーク・プロセッサNPは、これらの情報に基づいてヘッダの内容を再構成し、指定されたポートから次の中継点へパケットを転送する。
【０００３】
非特許文献１は、ＴＣＡＭにおけるＴＣＡＭセル構成を記載する。図３に非特許文献１のFig.1のセル構成を示す。このセルは、次の３つの回路ブロックで構成される。第一の回路ブロックは、所謂ＳＲＡＭセルと同じように、NMOSトランジスタN311、N312、N313、N314とPMOSトランジスタP311、P312で構成されるメモリセルSMC31である。第二の回路ブロックは、メモリセルSMC31同様に、NMOSトランジスタN321、N322、N323、N324とPMOSトランジスタP321、P322で構成されるメモリセルSMC32である。第三の回路ブロックは、NMOSトランジスタN331、N332、N333、N334、M335で構成される比較回路MUCである。メモリセルSMC31は‘0’または‘1’の二値情報、メモリセルSMC32は所謂『Don't care』状態と呼ばれる第三の情報‘X’をそれぞれ記憶する。これらの情報は、選択的にワード線WL31またはWL32を活性化することにより、公知のＳＲＡＭと同様に書き込んだり読み出したりすることができる。また、比較回路MUC は、記憶情報と入力情報とを比較するためのXNOR演算を行う。
【０００４】
一例として、記憶情報が‘1’の場合の検索動作を以下に説明する。この場合、メモリセルSMC311内の記憶ノードNTが電源電圧VDD、記憶ノードNBが接地電圧VSSに駆動されているものとする。今、ＴＣＡＭセルはDon't care状態におらず、メモリセルSMC32内の記憶ノードDCが電源電圧VDDに駆動されているものとすると、比較回路MUC内のトランジスタN331、N335はそれぞれ導通し、トランジスタN332はカットオフ状態にある。このような状態において、マッチ線MLを接地電圧VSSよりも高い電圧にプリチャージしてから情報‘1’を入力すると、接地電圧VSSにあったビット線BLTとBLBのうち、ビット線BLBが電源電圧VDDに駆動されることにより比較回路MUC内のトランジスタN334が導通状態となる。しかし、トランジスタN332がカットオフ状態にあるので、マッチ線MLと接地電極の間は開放された状態に保たれる。したがって、プリチャージ電圧に保持されたマッチ線MLの電圧を、図示されていないマッチ線センスアンプで弁別することにより、比較した情報が一致していたと判定される。反対に、情報‘0’を入力すると、接地電圧VSSにあったビット線BLTとBLBのうち、ビット線BLTが電源電圧VDDに駆動されることにより比較回路MUC内のトランジスタN333が導通状態となる。したがって、トランジスタN335、N331、N333を介してマッチ線MLと接地電極とが短絡されるので、マッチ線MLが放電される。すなわち、マッチ線MLの電圧低下をマッチ線センスアンプで弁別することにより、比較した情報が不一致であったと判定される。なお、同図のTCAMセルがDon't care状態にある場合、メモリセルSMC32内の記憶ノードDCが接地電圧VSSに駆動されているので、比較回路MUC内のトランジスタN335はカットオフされる。したがって、如何なる情報が入力されようとも、マッチ線MLと接地電極との間に電流経路が形成されないので、マッチ線MLはプリチャージ電圧に保持され、強制的に一致と判定される。また、入力情報が所謂『マスク』状態を示す第三の情報‘Ｘ’の場合においても、ビット線BLTおよびBLBは共に接地電位VSSに保持されるので、比較回路MUC内のトランジスタN333およびN334はカットオフされる。したがって、メモリセルSMC31が如何なる情報を記憶していようとも、この場合もマッチ線MLと接地電極との間に電流経路が形成されないので、マッチ線MLはプリチャージ電圧に保持され、強制的に一致と判定される。
【０００５】
非特許文献２は、別のＴＣＡＭセル構成を記載する。図４に非特許文献２のFig.2のセル構成を示す。このセルは、NMOSトランジスタT1、T2、T4、T6とキャパシタC1、C2により蓄積ノードN1、N2を構成し、三値情報を記憶する。また、トランジスタT3、T4、T5、T6によるXNOR演算機能を有し、記憶情報と入力情報との比較を行う。
まず、メモリ機能について説明する。三値情報は、情報1'、情報0'、 Don't care状態を表す情報X'である。高電圧を論理1'、低電圧を論理0'とすると、蓄積ノード（N1,N2）の論理値は、情報1'の場合（1,0）、情報0'の場合（0,1）、情報X'の場合（0,0）である。記憶情報のリフレッシュはトランジスタT1、T2を介して行われ、同図では省略されているが、ビット線BL1、BL2にそれぞれ接続されたセンスアンプを用いて読み出しと再書き込みが行われる。
【０００６】
次に、XNOR演算機能について説明する。記憶情報と比較される情報は、サーチ線SL1、SL2 を介して入力され、三値情報である。その内訳は、情報1'と情報0'、さらに、マスク状態を表す情報X'である。比較動作において双方の情報が一致した場合、高電圧にプリチャージされたマッチ線MLと低電圧（例えば接地電圧VSS）に固定された放電線DCLとの間に電流経路が形成されないので、マッチ線はプリチャージ電圧に保持される。一方、双方の情報が異なる場合、マッチ線MLと放電線DCLとの間に電流経路が形成されるので、マッチ線MLは放電される。以上の動作によるマッチ線MLの電圧変化を、図示されていないマッチ線センスアンプで弁別することにより、比較結果を判定する。なお、記憶情報や入力情報がX'の場合は、マッチ線MLと放電線DCLとの間に電流経路が形成されないので、一致と判定される。
【０００７】
特許文献１は、さらに別のＴＣＡＭセル構成を記載する。図５に特許文献１のFig.4のセル構成を示す。このセルTMCは、マッチ線MLと比較データ線C0〜C3との交点にそれぞれ配置された４つのメモリセルHMC0〜HMC3で構成される。メモリセルの各々は、NMOSトランジスタT41、T42と記憶回路SCで構成される。記憶回路SCとトランジスタT41のゲート電極とが接続されるノードを記憶ノードと呼び、同図ではメモリセル毎に区別するために、記憶ノードD0〜D3が明示されている。このようなセルTMCは、例えば図４に示したようなＴＣＡＭセル２つ分の回路構成に相当するので、ツインＴＣＡＭセルと呼ばれている。
【０００８】
図１９は、ツインＴＣＡＭセルのターナリ値に対するデータパターンを示している。比較情報のデータパターンは、00〜11（バイナリ値）に対して、比較データ線C0〜C3のいずれか１本だけが論理値‘1’に駆動されるようにそれぞれ定義されている。これに対して、各メモリセルMC0〜MC3の記憶回路SCには、比較データ線C0〜C3に定義された論理値の極性を反転した値が記憶される。ターナリ値を記憶する場合のデータパターンは、対応するバイナリ値の記憶情報について、ビット毎にAND演算を行って得られる値である。例えばターナリ情報‘X0’に対応するデータパターンは、バイナリ値‘00’に相当する記憶情報‘1110’とバイナリ値‘10’に相当する記憶情報‘1011’について、ビット毎にAND演算を行った結果のパターン‘1010’である。このような論理値の定義により、比較データ線の駆動本数が低減されるので、検索動作における電力を低減することができる。
【０００９】
【特許文献１】米国特許第６２８８９２２号明細書
【００１０】
【非特許文献１】アイ・イー・イー・イー、ジャーナル・オブ・ソリッド・ステート・サーキッツ、第３１巻、第１１号、第1601頁から第1609頁（IEEE Journal of Solid-state circuits, vol. 31, No. 11, November 1996, p.1601-1609）
【非特許文献２】レコーズ・オブ・ザ・2000・アイ・イー・イー・イー、インターナショナル・ワークショップ・オン・メモリ・テクノロジー、デザイン・アンド・テスティング、2000、第101頁から第105頁（Records of the 2000 IEEE International Workshop on Memory Technology, Design and Testing, 2000, p.101-105）
【非特許文献３】アイ・イー・イー・イー、ネットワーク、３月／４月、2001、第8頁から第23（IEEE Network, March/April, 2001, p.8-23）
【非特許文献４】アイ・イー・イー・イー、ネットワーク、３月／４月、2001、第24頁から第32（IEEE Network, March/April, 2001, Page(s): 24-32）
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本願発明者等は、本願に先立ち、ＴＣＡＭアレイの大容量化について検討した。特に、範囲指定されたＩＰアドレスを記憶する際に使用するワード数に注目したところ、ＴＣＡＭは、複数のＩＰアドレスを記憶する際に複数のワードを必要とするために容量不足を招いていることに気がついた。なお、ＴＣＡＭでは、ＤＲＡＭやＳＲＡＭで広く使われているワードに対応する言葉として、“エントリ”を用いるのが普通である。エントリは、各ワードに記憶された情報も指す言葉であるので、以下では慣例に従ってエントリを用いることにする。
【００１２】
非特許文献３は、ＩＰアドレスの検索アルゴリズムに使用する経路検索テーブルを記載する。インターネット・プロトコル・バージョン・４（ＩＰｖ４）では、ＩＰアドレスは、３２ビットの２進数で表記される。また、３２ビットの２進数で表記されたＩＰアドレスを、８ビットずつに区切って、４組の１０進数で表記することも可能である。例えば、10進数表記のＩＰアドレス130.86.16.66は、２進数で10000010_01010110_00010000_01000010と表される。ＩＰアドレスの上位ビット（左側の複数の桁）は、階層構造をなすインターネット網の上位レベルであるネットワーク、下位ビット（右側の桁）は、下位レベルであるホストを表している。特に、ネットワークを表す上位ビットとそれに続く下位ビットをアスタリスク記号‘＊’で表記したものをアドレス・プリフェックス（address prefix）と呼ぶ。例えば、address prefix：アドレス・プリフェックス1000001001010110*は、上位ビットが1000001001010110で始まる、２の１６乗通りのアドレスを示す。また、prefix：1000001001010110*は、ＩＰアドレスと同様に、１０進数で130.86/16と表記することも可能である。ここで、スラッシュ‘/’に続く数字はprefix長を示す。
【００１３】
図２０に、非特許文献３のTable 1の経路検索テーブルを示す。パケットは、ネットワークに設置された複数のルータを介して宛先へ届けられる。したがって、各ルータは、ホスト各々のアドレスではなく、複数のホストに共通するネットワークのアドレスだけを記憶すればよい。すなわち、図２０に示すように経路検索テーブルには、宛先アドレス・プリフェックス（Destination address prefix）だけを記憶すればよい。図２０に従うと、例えば、宛先ＩＰアドレスが130.86.16.66のパケットは、第６番目の出力インターフェース（Output interface）から次の中継器となるルータ（Next-hop）192.41.177.181へ転送されることになる。
【００１４】
従来のネットワークは、その規模に応じて三つの階級（クラス）に分類されていた。すなわち、クラスＡはprefix長２４のネットワークであり、このクラスには２の２４乗個のホストに割り当てられるＩＰアドレスが確保されていた。また、クラスＢはprefix長１６のネットワークであり、２の１６乗個のホストに割り当てられるＩＰアドレスが確保されていた。さらに、クラスＣはprefix長８のネットワークであり、２の８乗個のホストに割り当てられるＩＰアドレスが確保されていた。しかし、近年、インターネットの普及に伴い、細分化されたホストに効率よくＩＰアドレスを割り当てるために、クラス分けを廃してあらゆる長さのprefixを認めたクラスレス・インタードメイン・ルーティング（classless interdomain routing: ＣＩＤＲ）と呼ばれる手法が導入されている。
【００１５】
ＣＩＤＲ環境では、様々な範囲のＩＰアドレスを経路検索テーブルに記憶しなければならない。例えば、ＩＰアドレス130.86.16.1〜130.86.16.30が割り付けられたホストがあるグループを形成しているものと仮定して、これら複数のＩＰアドレスの記憶方法を、図２１を用いて説明する。なお、ここでは説明を簡単にするために、４つの１０進数で表記されたＩＰアドレスのうち右端の１〜３０について考えることとする。また、これに対応して、バイナリ（２進数）表記で全３２ビットのうち、下位８ビットのデータパターンについて考えることとする。１〜３０（１０進数）は、ターナリ値で表記する場合、Don't care状態を表す情報‘Ｘ’を用いて２のベキ乗単位で対応するバイナリ値をグループ化することにより、８通りのパターンで表記される。これは、ＴＣＡＭを用いた経路検索テーブルにホストのＩＰアドレス130.86.16.1〜130.86.16.30を記憶する場合、８エントリに展開して記憶しなければならないことを意味している。このように、ＴＣＡＭは、細かく範囲指定されたＩＰアドレスを記憶する場合にメモリ容量の不足を招いている。
この問題は、図２や図３に示したＴＣＡＭセルが、原理上、四値情報を記憶することができるにも関わらず、三値情報しか記憶していないことに起因している。この原因は、例えば、二つのＴＣＡＭセルで記憶可能な情報を考えることによって具体的に理解できる。図２２は、０〜３（１０進数）について、１５通りの組み合わせを示している。なお、本来、四つの標本から任意の数を抽出する場合の組み合わせは１６通り（＝２の４乗通り）あるが、同図では、いずれの数も選択しない（すなわち０〜３のいずれも記憶しない）という組み合わせを省略している。これらの数の組み合わせをターナリ値で表記しようとすると、９通り（＝３の２乗通り）の組み合わせしか表記できない。したがって、例えば、三値情報を記憶する二つのＴＣＡＭセルで範囲１〜３（１０進数）を記憶する場合、１（ターナリ表記で‘０１’）と２〜３（ターナリ表記で‘１Ｘ’）の二つのエントリに展開して記憶しなければならないことを意味している。すなわち、範囲指定されたＩＰアドレスを記憶する場合、メモリの使用効率が悪化する。
【００１６】
このような問題は、経路検索以外にルータで行われている検索動作にＴＣＡＭを用いる場合において、さらに悪化する。例えば、非特許文献４で述べられているパケット・クラシフィケーション（Packet classification）のように、宛先ＩＰアドレスと送信元ＩＰアドレスを基にパケット送信の可否を制御する場合、両方のＩＰアドレスをエントリに記憶しなければならない。しかし、両方のＩＰアドレスが範囲指定されているとすると、それぞれの範囲はターナリ表記で複数に展開されるから、これらの組み合わせに応じてエントリ数が増加する。具体例を挙げると、宛先ＩＰアドレスが130.86.16.1〜130.86.16.30かつ送信元ＩＰアドレスが230.86.16.1〜230.86.16.30の場合、それぞれの指定範囲は８通りのターナリ値で表せられるから、それらの組み合わせは６４通りとなり、結局６４個のエントリが必要となる。
【００１７】
ところで、図５に示したツインＴＣＡＭセルTMCは、二値情報を記憶するメモリセル４つで構成されているので、０〜３（１０進数）について１５通り全ての組み合わせを１エントリで記憶することが可能である。しかし、比較情報が、図１９に示したように、複数の数の組み合わせを取り得ないので、図２や図３で説明したようなマスク状態に相当する第三の情報‘X’を用いた検索動作を行うことができない。
以上の説明から、本発明の課題は、範囲指定されたＩＰアドレスを効率良く記憶して、ＴＣＡＭのメモリ容量不足を解消することにある。すなわち、本発明の目的は、大容量のＴＣＡＭを実現するためのＩＰアドレスの記憶方法およびＴＣＡＭアレイ構成を提供することである。
【課題を解決するための手段】
【００１８】
本発明の代表的な手段の一つを示せば以下の通りである。即ち、記憶情報（エントリ）および入力情報（比較情報または検索キー）を、いずれかのビットが必ず論理値‘1’となるような共通のブロック符号とする。また、マッチ線を階層構造とし、複数のサブマッチ線と複数のサーチ線との交点にメモリセルを配置する。サブマッチ線は、サブマッチ判定回路を介してメインマッチ線にそれぞれ接続される。検索動作において、情報の比較結果をサブマッチ線毎に判定し、これらの比較結果に応じてメインマッチ線に発生された微小信号をメインマッチ判定回路で弁別することにより、エントリ全体の比較結果を判定する。
【発明の効果】
【００１９】
従来のＴＣＡＭと同様に、第三の情報‘X’を用いたエントリや検索キーの検索動作を可能としながら、範囲指定されたＩＰアドレスを効率良く記憶することができる。したがって、メモリアレイ容量を実効的に増加することができる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の実施例について、図面を用いて詳細に説明する。実施例の各ブロックを構成する回路素子は、特に制限されないが、典型的には公知のＣＭＯＳ（相補型ＭＯＳトランジスタ）等の半導体集積回路技術によって、単結晶シリコンのような１個の半導体基板上に形成される。
【００２１】
＜実施例１＞
《One-hot-spotブロック符号》
図２２は、本発明による符号のデータパターンの例を従来のターナリ表記に対応させて示している。詳細は後述するが、本符号の特徴は３つある。第一の特徴は、論理値‘1’の位置の違いが０〜３（１０進数）に対応する点にある。第二の特徴は、エントリと検索キーに共通なデータパターンである点にある。第三の特徴は、本符号を用いた検索動作を行うＣＡＭが、従来のＴＣＡＭと同様に入力された複数ビットのデータ（ここではＩＰアドレス）を、図２２に従って、２ビット単位で符号化する点にある。本発明で用いるこのような符号を、以下では“One-hot-spotブロック”符号と呼ぶことにする。
まず、０〜３（１０進数）に対応する符号を、順番に‘0001’、‘0010’、‘0100’、‘1000’というように、論理値‘1’の位置を最下位ビット（右端の桁）から１つずつ移動させた符号とする。複数の数の組み合わせに対応する符号は、それぞれの数に対応する符号についてビット毎にOR演算を行って得る。例えば、０と１（１０進数）の組み合わせに対応する符号は、符号‘0001’と‘0010’にOR演算を行った ‘0011’である。同様のOR演算を行うと、図２２に示すように、全ての組み合わせに対応する符号を得る。このような符号化の原理に従って、より大きな情報の場合における符号について以下に説明する。
【００２２】
図２３は、０〜３１（１０進数）に対する符号をそれぞれ示している。同図では、８ビットのバイナリ値を、図２２に従って、２ビット単位で符号化した例が示されている。得られる符号は、１ブロックあたり４ビット（＝２の２乗ビット）の符号を４ブロック（＝８［ビット］／２［ビット／ブロック］）羅列した１６ビットからなるデータパターンである。ここで、四つの符号ブロックを左から降順でBTW3、BTW2、BTW1、BTW0と表すことにする。また、符号ブロックBTWi（i=0,1,2,3）の要素を、後述するエントリは左から降順で（Ni3,Ni2,Ni1,Ni0）、検索キーは（SLi3,SLi2,SLi1,SLi0）と示すことにする。なお、２ビット単位で符号化されていることを明示するために、以下では、各符号ブロックの間に空白を挿入することとする。
【００２３】
まず、０〜３（１０進数）に対するOne-hot-spotブロック符号を定義する。符号ブロックBTW0を、図２２で述べたように、論理値‘1’をN00（またはSL00）からN03（またはSL03）へ１ビットずつ移動させたデータパターンとする。また、符号ブロックBTW1〜BTW3のデータパターンを、全て‘0001’とする。
次に、４〜７（１０進数）に対しては、符号ブロックBTW1における論理値‘1’を左へ（N10（またはSL10）からN11（またはSL11）へ）１ビット移動させた状態で、符号ブロックBTW0における論理値‘1’を再びN00（またはSL00）からN03（またはSL03）へ１ビットずつ移動させたデータパターンとする。以下同様に、１０進数の数が４増加する毎に符号ブロックBTW1における論理値‘1’を左へ１ビット移動させながら、符号ブロックBTW0における論理値‘1’の移動を繰り返すことにより、８〜１５（１０進数）に対するブロック符合を定める。
【００２４】
さて、隣り合う下位の符号ブロック（ここでは、ブロックBTW0およびBTW1）のデータパターンが共に‘1000’に到達した場合、一つ上位の符号ブロック（ここではブロックBTW2）における論理値‘1’を左へ（ここではN30（またはSL30）からN31（またはSL31）へ）１ビット移動させる。この状態で、０〜１５（１０進数）と同じように、符号ブロックBTW0およびBTW1のデータパターンを割り振ることにより、１６〜３１（１０進数）に対する符号を定める。
【００２５】
次に、複数の数を表記する場合のデータパターンについて、１〜３０（１０進数）の範囲を例に以下に説明する。まず、１〜３（１０進数）の範囲について、図２２と同様にブロックBTW0を一纏めにして、符合‘0001 0001 0001 1110’で表す。次に、４〜１５（１０進数）の範囲について、対応するブロック符号の各ビットにOR演算を行うことにより、符号‘0001 0001 1110 1111’で表す。同様に、１６〜２７（１０進数）の範囲を、符号‘0001 0010 0111 1111’で表す。最後に、２８〜３０（１０進数）の範囲を、符号‘0001 0010 1000 0111’で表す。この結果、１〜３０（１０進数）の範囲は、四つのブロック符号で表記される。この個数は、図２１で説明した従来のターナリ表記の場合（８個）の半分である。したがって、範囲指定されたエントリを記憶する際に必要なエントリ数を抑制することができて、効率よく記憶することが可能となる。
【００２６】
なお、本実施例による符号は、バイナリ値に対応して符号化された検索キーのデータパターンには論理値‘1’が一つしか含まれないので、図５に示したツインＴＣＡＭセルTMCの場合と同様に、検索動作におけるサーチ線の充放電電力を低減できるという効果が得られる。また、これまでは、１０進数が１増加する毎に、論理値‘1’を左へ１ビット移動させたデータパターンによる符号を説明してきた。しかし、データパターンはこれに限定されず、他のデータパターンも可能である。例えば、０〜３（１０進数）に対する符号ブロックBTW0を、図２３とは逆に、論理値‘1’がN03（またはSL03）からN00（またはSL00）へ右に１ビットずつ移動するようなデータパターンとすることも可能である。この場合も、図２３と同じように、１〜３０（１０進数）の範囲を四つのブロック符号で表記できる。しかし、以下では、データパターンとＴＣＡＭ内の信号線との対応を容易にするために、図２２および図２３で説明したデータパターンに則って説明することにする。さらに、これまでは説明を簡単にするため、０〜３１（１０進数）について考えてきたが、以上の手順を拡張すると、３１〜２５５（１０進数）に対する符号も定義可能なことは、容易に推測することができる。
【００２７】
《エントリの符号化と書き込み方法》
次に、図６と図２４に従って、符号化および書き込み方法を説明する。図６は、本実施例による符号を用いた検索動作を行うＴＣＡＭにおける、エントリの符号化および書き込みアルゴリズムの一例を示している。また、図２４は、１〜３０（１０進数）の範囲を指定する場合のターナリ値に対応させたマスク情報および二値情報と、符号化されたエントリのデータパターンを示している。なお、同図でも、マスク情報および二値情報のデータパターンはそれぞれ８ビットである。これらの特徴は、次のように２つある。第一の特徴は、従来のＴＣＡＭと同じようにチップ外部からマスク情報と二値情報をそれぞれ入力し、チップ内部で符号化する点にある。第二の特徴は、複合化した複数のエントリをチップ内部で圧縮し、ターナリ値では表現できない範囲指定を行う点にある。以下では、これらの点に注目しながら符号化および書き込み方法を説明する。
【００２８】
まず、１（１０進数）に対応するマスク情報‘11111111’を入力し、マスク・レジスタに記憶する。このマスク情報と、次に入力する二値情報‘00000001’を用いて図２２に倣ってブロック符号化を行って得た符号‘0001 0001 0001 0010’を、第一テンポラリ・エントリ・レジスタを介して第二テンポラリ・エントリ・レジスタに記憶する。次に、２〜３（１０進数）の範囲に対応するマスク情報‘11111110’を入力し、新たにマスク・レジスタに記憶する。このマスク情報と、続いて入力する二値情報‘00000010’を用いて符号化を行い、ブロック符号‘0001 0001 0001 1100’を第一テンポラリ・エントリ・レジスタに記憶する。以上から、第一および第二テンポラリ・エントリ・レジスタに保持されたエントリをビット毎に比較して、データパターンの異なる符合ブロックの数を調べる。ここでは、異なるブロックがBTW0のみなので、第一および第二テンポラリ・エントリ・レジスタに保持されたエントリについてビット毎にOR演算を行うことにより、二つのエントリを一つに圧縮する。また、圧縮して得たブロック符号‘0001 0001 0001 1110’を新たに第二テンポラリ・エントリ・レジスタに記憶する。
【００２９】
続いて、４〜７（１０進数）の範囲に対応するマスク情報‘11111100’を入力し、新たにマスク・レジスタに記憶する。このマスク情報と、さらに入力する二値情報‘00000100’を用いて符号化を行い、ブロック符号‘0001 0001 0010 1111’を新たに第一テンポラリ・エントリ・レジスタに記憶する。以上から、再び第一および第二テンポラリ・エントリ・レジスタに保持されたエントリをビット毎に比較して、データパターンの異なる符合ブロックの数を調べる。今度は、異なるブロックがBTW0とBTW1の二つなので、例えば、後述するネクスト・フリーアドレス・レジスタが指定するロウ・アドレス上のメモリセルを活性化することにより、第二テンポラリ・エントリ・レジスタに保持されたブロック符号‘0001 0001 0001 1110’をメモリアレイに書き込む。その後、第一テンポラリ・エントリ・レジスタに保持されたブロック符号‘0001 0001 0010 1111’を、新たに第二テンポラリ・エントリ・レジスタに記憶する。以上の動作を、３０（１０進数）まで続け、随時ロウ・アドレスを設定し直しながら、第二テンポラリ・エントリ・レジスタに保持されたブロック符号をメモリアレイに書き込む。そして、最後のエントリを書き込んだ時点で、エントリ数などメモリアレイの使用状況に関する情報をＴＣＡＭコントローラ等の外部制御チップに出力して、書き込み動作を終える。
【００３０】
以上の動作から、次の二つの効果が得られる。第一の効果は、従来のＴＣＡＭと同じようにチップ外部から二値情報とマスク情報をそれぞれ入力し、チップ内部で符号化することにより、従来と互換性のあるインターフェースを持ったＴＣＡＭを実現できる点にある。この結果、ＴＣＡＭユーザーは、チップ内部における記憶方法を考慮せずに従来と同じようにエントリを書き込むことができる。また、本符号化では、図２４に示した例から理解できるように、エントリのビット数が８ビットから１６ビット（＝２の８乗ビット）に倍増するが、チップ内部で符号化することによりエントリの入力に必要なデータ・バス幅を抑制することができるので、ＴＣＡＭの実装コストを抑制できるという効果も得られる。第二の特徴は、複合化した複数のエントリをチップ内部で圧縮し、ターナリ値では表現できない範囲のエントリを発生することにある。この結果、従来のＴＣＡＭでは八つ必要だったエントリ数を、四つにまで低減できて、効率よくエントリを記憶することが可能になることは、以上の説明から容易に理解できる。
【００３１】
なお、これまでは、エントリがターナリ表記で八つに展開される場合を例に、符号化と書き込み方法を説明してきた。しかし、入力されるエントリの数は様々であるので、エントリ数に依らず、符号化したエントリを二つのテンポラリ・エントリ・レジスタに転送しながら圧縮を行って正しくメモリアレイに書き込む必要がある。このため、特に、エントリがターナリ表記で一個であった場合は、そのエントリを２回入力することとする。例えば、３０（１０進数）だけを書き込む場合について説明すると、まず、マスク情報‘11111111’を入力し、マスク・レジスタに記憶する。このマスク情報と、次に入力する二値情報‘00011110’を用いて符号化を行い、ブロック符号‘0001 0010 1000 0100’を第二テンポラリ・エントリ・レジスタを介して第二テンポラリ・エントリ・レジスタに記憶する。次に、これらと同じ情報を入力して、ブロック符号‘0001 0010 1000 0100’を第一テンポラリ・エントリ・レジスタに記憶する。以上から、第一および第二テンポラリ・エントリ・レジスタに保持されたエントリをビット毎に比較して、データパターンの異なる符合ブロックの数を調べる。この場合、双方のテンポラリ・エントリ・レジスタに保持されたエントリは同じブロック符合であるので、異なるブロックはない。したがって、第一および第二テンポラリ・エントリ・レジスタに保持されたエントリについてビット毎にOR演算を行った結果は変わらず、OR演算する前と同じ符号が第一テンポラリ・エントリ・レジスタに記憶される。このような動作により、３０（１０進数）に対するブロック符号‘0001 0010 1000 0100’を、確実にメモリアレイに書き込むことが可能となる。
【００３２】
また、検索動作では、書き込み動作と同様にマスク情報と二値情報を続けて入力することにより、チップ内部で符合化された検索キーを発生することは、これまでの説明から容易に理解することができる。符号化したエントリは、第一および第二のテンポラリ・エントリ・レジスタを介さずに直接メモリアレイに入力する。
【００３３】
《エントリの復号と読み出し方法》
図７は、エントリの複合および読み出し方法の例を示している。この方法は、図６で説明してきた符号化の逆の手順である。まず、チップ外部から入力されたアドレスに従って、メモリアレイから読み出したエントリを展開し、複数の読み出しエントリ・レジスタに記憶する。次に、これらのエントリに記憶されたエントリを順番に複合して、読み出し情報レジスタと読み出しマスク・レジスタを介してチップ外部に出力する。このような方法により、範囲指定されたエントリを、従来のＴＣＡＭと同様にターナリ値に対応する範囲を示す情報として読み出すことが可能となる。
【００３４】
《ＴＣＡＭ全体構成》
次に、これまで述べたOne-hot-spotブロック符号化情報による検索動作を実現するＴＣＡＭの全体構成を説明する。図８は、ＴＣＡＭの要部ブロック図である。本構成は、メモリアレイMA、データ入出力回路DIO、各種レジスタ、ＣＡＭ制御回路CAMCTL、フラグロジック回路FLGC、リフレッシュ・カウンタRFCNT、エントリ・エンコーダENCDR、エントリ・デコーダDCDR、エントリ圧縮回路CMP、エントリ展開回路EXT、プライオリティ・エンコーダPENC、ＲＡＭ制御回路RAMCTLを有する。メモリアレイMAは図１に示すような構成であり、詳しく後述することとする。データ入出力回路DIOは、データ・バスDQとチップ内部データ・バスDBSとの間に配置され、データやアドレス信号、さらにチップの各種設定を定義する制御信号の授受を行う。
【００３５】
各種レジスタは、データ・バスDQの信号線数に応じた複数ビットのレジスタでそれぞれ構成される。同図では、データ・バスDBSを介してデータを受信するためのレジスタとして、マスク・レジスタMKREGとコンパランド・レジスタCPREGの二つが示されている。第一のマスク・レジスタMKREGは、ＴＣＡＭにおける第三の情報X'やMASK'を所望のビットに発生するための情報を記憶し、マスク信号バスMKBSを介して後述するエントリ・エンコーダENCDRに入力する。コンパランド・レジスタCPREGは、検索動作で入力された検索キーを記憶する。この検索キーは、検索動作で一致するエントリがなかった場合に、前述したエントリ圧縮回路CMPを介してメモリアレイMAへ書き込まれる。また、同図には、データ・バスDBSを介してデータを送信するためのレジスタとして、読み出しマスク・レジスタRMKREGと読み出し二値情報レジスタRBREGの二つが示されている。第一の読み出しマスク・レジスタRMKREGは、後述するエントリ・デコーダDCDRから第三のエントリ・バスを介して受信した第三の情報X'を記憶し、さらにデータ・バスDBSを介してデータ入出力回路DIOへ出力する。第二の読み出し二値情報レジスタRBREGは、読み出しマスク・レジスタRMSKREGと同様に、エントリ・デコーダDCDRから第三のエントリ・バスを介して受信した二値情報を記憶し、さらにデータ・バスDBSを介してデータ入出力回路DIOへ出力する。
データ・バスDBSを介してアドレス信号の授受を行うレジスタは、バースト・ライト・レジスタWREG、ネクスト・フリーアドレス・レジスタNREG、バースト・リード・レジスタRREGの三つが示されている。第一のバースト・ライト・レジスタWREGは、バースト・ライト動作における１サイクル目のロウ・アドレスとバースト長とを記憶し、バースト・ライト動作が始まるとエントリの圧縮動作と協調しながらカウントアップして２サイクル目以降のアドレスを発生する。第二のネクスト・フリーアドレス・レジスタNREGは、エントリが空のロウ・アドレスを記憶する。
【００３６】
第三のバースト・リード・レジスタRREGは、バースト・リード動作における１サイクル目のロウ・アドレスとバースト長を記憶し、バースト・リード動作が始まるとエントリの展開動作と協調しながらカウントアップして２サイクル目以降のアドレスを発生する。これらのレジスタが発生したアドレス信号は、ロウ・アドレス・バスXBSを介してメモリアレイMAに入力される。また、データ・バスおよびデータ入出力回路を介して、チップの外に出力される。
【００３７】
データ・バスDBSを介して制御信号を受信するレジスタは、インストラクション・レジスタISREG、インフォメーション・レジスタIFREG、コンフィガレーション・レジスタCFREGの三つが示されている。第一のインストラクション・レジスタISREGは、データ・バスDBSを介して入力された制御信号を記憶して、チップの初期化方法、縦続接続されたＴＣＡＭチップ数、チップ内部のテーブル構成を定義する。ここで、テーブル構成とは、エントリ数およびそのデータパターンのビット数に応じた論理的なメモリアレイ構成のことである。第二のインフォメーション・レジスタIFREGは、ルータなどのシステム上に割り当てられたチップ固有のデバイス番号を記憶する。第三のコンフィガレーション・レジスタCFREGは、例えば、前述したように論理的に分割されたメモリアレイMAの活性化を制御するための信号、後述するマルチ・マッチ信号やＲＡＭ用クロックが有効か否かをそれぞれ定義するイネーブル信号を記憶する。図８では、これらの他に、後述するマッチ・アドレス・バスMABSとデータ・バスDBSとの間に挿入されたマッチ・アドレス・レジスタMAREGがそれぞれ示されている。
【００３８】
ＣＡＭ制御回路CAMCTLは、入力された外部クロックCLK、外部制御信号群CMDに応じて、リード・アクノーリッジ信号ACKやエンド・オブ・トランスファ信号EOT、エントリ・カウント信号EC、内部制御信号を発生する。外部制御信号群CMDは、前述したネットワーク・プロセッサや検索エンジンSEのような特定用途向け集積回路ASICなどを用いた外部の制御チップで発生される。リード・アクノーリッジ信号ACKは、読み出し動作中に読み出しデータに同期して出力されるストローブ信号であり、エンド・オブ・トランスファ信号EOTは、バースト・リード動作やバースト・ライト動作における最終データに同期して出力されるフラグ信号である。
【００３９】
エントリ・カウント信号群ECは、チップ内部で圧縮および展開されたエントリに関する情報を示す複数の信号である。この信号群は単独で、あるいは前述したアドレス信号と共に、例えば図２で説明したネットワーク・プロセッサNPや検索エンジンSEのようなＴＣＡＭを制御するチップに送信される。そして、これらコントローラがエントリの圧縮および展開やメモリアレイの使用状況を把握するために用いられる。なお、同図では簡単のため内部制御信号を省略したが、実際は複数の制御信号が動作に応じて各回路ブロックに分配されている。
【００４０】
フラグロジック回路FLGCは、ＴＣＡＭチップ同士でフル信号のやり取りを行う。例えば、ルータでは高速テーブル検索動作を実現するために、一般に、複数のＴＣＡＭを従続接続して大容量の検索テーブルを構築する。このため、フル・イン信号群FINおよびフル・アウト信号群FOUTをチップ間で送受信することにより、メモリアレイの使用状況把握と、新たに記憶するエントリの入力先の制御を行う。この他に、フラグロジック回路FLGCは、検索動作において一致したエントリが複数存在した場合に、マルチ・マッチ信号MMを活性化する。
【００４１】
リフレッシュ・カウンタRFCNTは、リフレッシュ動作に応じてロウ・アドレスを発生する。このアドレスは、データ・バスDBSを介してメモリアレイMAに入力される。
エントリ・エンコーダENCDR、エントリ圧縮回路CMP、エントリ展開回路EXT、エントリ・デコーダDCDRの各々は、本実施例によるＴＣＡＭに特有の回路ブロックである。第一のエントリ・エンコーダENCDRは、前述したマスク・レジスタMSKREGに保持された第三の情報と、データ・バスDBSを介して入力された二値情報を用いて、エントリまたは検索キーをOne-hot-spotブロック符号化する。符号化された情報は、書き込み動作においては符号化データ・バスENBSからメモリアレイMA、検索動作においてはエントリ圧縮回路CMPへそれぞれ出力される。エントリ圧縮回路CMPは、符号化されたエントリを記憶するための２つのテンポラリ・エントリ・レジスタFTEREG、STEREG、これらのレジスタに記憶されたエントリの符号をビット毎に比較する比較回路BMUCおよびOR演算回路LORCで構成される。これらの回路ブロック間は、結線が同図では省略されているが、図６で行った説明から、符号化されたエントリの一時記憶、比較、圧縮動作をそれぞれ適宜行い、圧縮されたエントリを第一エントリ・バスFEBSからメモリアレイMAに出力することは、容易に理解することができる。エントリ展開回路EXTは、第一エントリ・バスFEBSを介してメモリアレイMAから読み出したエントリを、ターナリ値で表記できる範囲に対応する符号に分割するエントリ分割回路EDVDと、分割したエントリを一時的に記憶する複数のレジスタ群MLREGで構成される。これらの回路ブロック間は、結線が同図では省略されているが、図７で行った説明から、符号化されたエントリの展開と一時記憶動作をそれぞれ適宜行い、展開された複数のエントリを第二エントリ・バスSEBSからエントリ・デコーダDCDRに出力することは、容易に理解することができる。
【００４２】
エントリ・デコーダDCDRは、エントリ展開回路EXT内の複数のレジスタ群MLREGに保持されたエントリを第二エントリ・バスSEBSを介して順番に受信し、復号する。また、復号した結果を第三エントリ・バスTEBSを介して読み出し二値情報レジスタRBREGおよび読み出しエントリ・レジスタRMSKREGにそれぞれ出力する。
プライオリティ・エンコーダPENCは検索動作において、一致信号バスHBSから入力された信号に応じて、検索キーと一致したエントリに対応するアドレス信号を発生する。なお、一致したエントリが複数あった場合、最上位（例えば、対応するロウ・アドレスが最も小さい番号の行）のエントリに応じたアドレス信号から順に出力する機能を有する。発生されたアドレス信号は、マッチ・アドレス・バスMABSを介してマッチ・アドレス・レジスタMAREGに入力される。
【００４３】
ＲＡＭ制御回路RAMCTLはデータ・バスDBSから入力された信号に応じて、図２で説明したＴＣＡＭと共に用いられるコンテント・メモリCMを制御するための信号を出力する。同図では、ＲＡＭ用クロックRCLK、ＲＡＭ制御信号群RCTL、ＲＡＭアドレスRADDが示されている。ＲＡＭ制御信号群RCTLは複数の制御信号で構成され、例えばチップイネーブル信号やライトイネーブル信号である。ＲＡＭアドレスRADDは、前述したプライオリティ・エンコーダPENCが発生したアドレス信号であり、例えば、図２で説明したコンテント・メモリ・アドレス・バスCADDに出力される。複数のアドレス信号が発生された場合は、マッチ・アドレス・レジスタMAREGからデータ・バスDBSを介して順々にアドレスを出力する。
このような構成により、本実施例によるＴＣＡＭは、次のような種々の動作を行うことができる。第一に、エントリ・エンコーダENCDR、エントリ・デコーダDCDR、エントリ圧縮回路CMP、エントリ展開回路EXTを用いることにより、チップ内部でターナリ値とone-hot-spotブロック符号の変換を行うことが可能となり、従来と互換性のあるＴＣＡＭを実現することができる。第二に、バースト・ライト・レジスタWREGやネクスト・フリー・アドレス・レジスタNREG、バースト・リード・レジスタRREGを適宜用いることにより、複数のエントリを連続して書き込んだり、読み出したりすることができる。第三に、上記のレジスタが発生するアドレスとエントリ・カウント信号群ECとにより、圧縮および展開されたエントリ数やメモリアレイ使用状況に関する情報を外部制御回路と共有することが可能となるので、動作の信頼性を向上することができる。第四に、符号化データ・バスEBSを介して検索キーをメモリアレイMAに入力することにより、検索動作を行うことができる。ここで、検索キーと一致するエントリが見つかった場合、そのエントリに対応するアドレス信号をプライマリー・エンコーダPENCにより発生して、マッチ・アドレス・レジスタMAREGおよびＲＡＭ制御回路RAMCTLを介してコンテント・メモリに出力することができる。第五に、データ・バスDBSを介してリフレッシュ・カウンタRFCNTを用いて発生したロウ・アドレスをメモリアレイMAに入力することにより、リフレッシュ動作を行うことができる。
【００４４】
《ＴＣＡＭアレイ構成》
図１は、本発明によるOne-hot-spotブロック符号化情報を用いた検索動作を行うＴＣＡＭアレイの構成例を示している。本メモリアレイの特徴は、マッチ線が、メインマッチ線とサブマッチ線からなる階層構造を形成する点にある。以下では、この点に注目しながらメモリアレイ構成を説明する。
メモリセルは、複数のワード線WLm（m=0,1,…）と複数のビット線BLni（n=0,1,…,i=0,1,2,3）との交点にそれぞれ配置される。ビット線BLni（n=0,1,…,i=0,1,2,3）には、対応する複数のサーチ線SLni（n=0,1,…,i=0,1,2,3）がそれぞれ平行に配置される。また、ワード線WLm（m=0,1,…）には、対応する複数のメインマッチ線MMLm（m=0,1,…）がそれぞれ平行に配置される。さらに、複数のサブマッチ線SMLmj（m=0,1,…,j=0,1,…）が、対応するメインマッチ線MMLm（m=0,1,…）にそれぞれ平行に配置される。サブマッチ線には、例えばサブマッチ線SML01のように、四つのメモリセルMCi（i=0,1,2,3）がそれぞれ接続される。これら四つのメモリセルMCi（i=0,1,2,3）からなるグループを、以下ではメモリブロックMBmj（m=0,1,…,j=0,1,…）とそれぞれ示す。また、サブマッチ線SMLmj（m=0,1,…,j=0,1,…）と対応するメインマッチ線MMLm（m=0,1,…）との間に、サブマッチ判定回路SMDmj（m=0,1,…,j=0,1,…）をそれぞれ配置する。サブマッチ判定回路は、対応するサブマッチ線をプリチャージしたり、サブマッチ線に発生された微小な信号の弁別を行ったりする。
【００４５】
図１は、さらにＴＣＡＭアレイを制御する直接周辺回路も示されている。ロウ・デコーダXDECは、複数のワード線WLm（m=0,1,…）の中から、前述したロウ・アドレス・バスXBSを介して入力された複数のロウ・アドレス信号に応じたワード線を選択する。メインマッチ判定回路ブロックMMDBは、マッチ線MLm（m=1,2,…）のプリチャージと、マッチ線に発生された微小な信号の弁別を行う。また、微小信号の検出結果に応じて発生する信号を、前述した一致信号バスHBSへ出力する。サーチ線駆動回路ブロックSDBは、前述した符号化データ・バスENBSとサーチ線SLni（n=0,1,…、i=0,1,2,3）との間に配置され、符号化された検索キーの論理値に応じた電圧に、サーチ線を駆動する。読み書き回路ブロックRWBは、前述した第一エントリ・バスFEBSとビット線BLni（ｎ=0,1,…、i=0,1,2,3）との間に配置され、符号化および圧縮されたエントリの読み書き動作を行う。具体的には、例えば半導体メモリで広く知られているような、２つのＰＭＯＳトランジスタと２つのＮＭＯＳトランジスタがクロスカップルされた回路を用いた構成のセンスアンプをビット線毎に配置した構成である。
【００４６】
次に、図９に従い、図１に示したメモリアレイ構成における回路ブロックの具体的な構成例を説明する。図９では、説明を簡単にするために、メモリブロックMB00に注目し、これに関係するサブマッチ判定回路SMD00とメインマッチ判定回路ブロックMMDBの構成要素であるメインマッチ判定回路MMD0が示されている。なお、以下の説明においては、接地電圧をVSS、アレイ電圧をVDL、サブマッチ線のプリチャージ電圧をVPCとそれぞれ表す。アレイ電圧VDLは、接地電圧VSSよりも高いが、電源電圧VDDと同じかそれよりも小さな電圧に設定されているのものとする。プリチャージ電圧VPCは、接地電圧VSSよりも高いが、アレイ電圧VDLと同じか、NMOSトランジスタが十分導通する程度までアレイ電圧よりも低い電圧に設定されているのものとする。
【００４７】
まず、メモリブロックMB00を構成するメモリセルMCi（i=0,1,2,3）は、３つのNMOSトランジスタと１つのキャパシタで構成される。トランジスタT611とキャパシタCは、広く知られているＤＲＡＭのメモリセルと同じ構成をなし、エントリを記憶する。トランジスタT611のゲート電極をワード線WL0に接続し、ドレイン電極またはソース電極のいずれか一方を対応するビット線BL0i（i=0,1,2,3）、他方をキャパシタCの一方の電極にそれぞれ接続する。キャパシタCの他方の電極には、所謂プレート電圧VPLTを印加する。トランジスタT612、T613は、サブマッチ線SML00と接地電極との間に直列接続され、情報の比較を行う。トランジスタT612のゲート電極は対応するサーチ線、トランジスタT613のゲート電極はキャパシタCの一方の電極にそれぞれ接続される。このような構成のメモリセルでは、キャパシタCの一方の電極に電荷を蓄積することにより情報を記憶するので、トランジスタT611、T613、キャパシタCの接続ノードを記憶ノードと呼ぶことにする。同図では、メモリセル毎に記憶ノードを区別するために、メモリセルMCi（i=0,1,2,3）に応じて記憶ノードをN0i（i=0,1,2,3）と明示している。
【００４８】
サブマッチ判定回路SMD00は、二つのNMOSトランジスタN621、N622で構成される。一方のトランジスタN621は、サブマッチ線SML00をプリチャージ電圧VPCに充電する。ゲート電極をプリチャージ起動信号線PC、ドレイン電極をサブマッチ線SML00にそれぞれ接続し、ソース電極にプリチャージ電圧VPCを印加する。他方のトランジスタT622は、サブマッチ線の電圧変化に応じて、メインマッチ線MML0を駆動する。ゲート電極をサブマッチ線SML00、ドレイン電極をメインマッチ線MML0に接続する。また、接地電圧VSSをソース電極に印加する。なお、トランジスタT622は、待機時において、ゲート電極がプリチャージ電圧VPCに印加されているので導通状態にあり、メインマッチ線MML0を接地電圧VSSにプリチャージする役割も果たす。また、トランジスタN621をPMOSトランジスタとする構成もあり得るが、メモリアレイ内でウェル分離が複数必要になるので面積が大きくなる。このため、アレイ面積抑制の観点で、NMOSトランジスタを用いた方が望ましい。
【００４９】
メインマッチ判定回路MMD0は、PMOSトランジスタT631とセンスアンプSAで構成される。トランジスタT631は、検索動作において、メインマッチ線MML0に電流を印加する。ゲート電極を検索イネーブル信号線線SEB、ドレイン電極をメインマッチ線MML0にそれぞれに接続し、ソース電極にアレイ電圧VDLを印加する。センスアンプSAは、例えば半導体メモリで広く知られているような、２つのＰＭＯＳトランジスタと２つのＮＭＯＳトランジスタがクロスカップルされた回路を用いた構成であり、メインマッチ線MML0に発生された微小電圧を弁別し、その電圧レベルに応じて一致信号HIT0を駆動する。なお、トランジスタT631とサブマッチ判定回路SMD00内のトランジスタT622のゲート長およびゲート幅は、双方が導通状態となった場合のメインマッチ線MML0の電圧が、ほぼ接地電圧VSSに近い電圧レベルとなるように設定する。
【００５０】
次に、このような構成を用いた検索動作について説明する。まず、検索キーとエントリが一致した場合、同一ワード線上の全てのメモリブロックにおいて、対応するサーチ線と記憶ノードの論理値が共に‘１’のメモリセルが存在するので、トランジスタT612およびT613が導通することにより、対応する全てのサブワード線が放電される。したがって、対応するサブマッチ判定回路内のトランジスタT622がカットオフされるので、接地電圧VSSに駆動されていた対応するメインマッチ線がメインマッチ判定回路内のトランジスタT631により充電される。反対に、検索キーとエントリが異なる場合、同一ワード線上のいずれかのメモリブロックにおいて、対応するサーチ線と記憶ノードの論理値が全て反対極性となるので、当該ブロックのサブマッチ線と接地電極との間に電流経路が形成されず、対応するサブワード線がプリチャージ電圧VPCに保持される。したがって、対応するサブマッチ判定回路内のトランジスタT622が導通するので、メインマッチ線は、ほぼ接地電圧VSSに保たれる。これらメインマッチ線の電圧変化を、メインマッチ判定回路内のセンスアンプSAで弁別することにより、比較結果を判定する。
【００５１】
なお、未使用のメモリセルの状態は、他のメモリセルにおける検索動作に影響を与えない限り制限されるものではないが、論理値‘0’に対応する情報を記憶するのが望ましい。この場合、メモリセル内のトランジスタT613がカットオフ状態となるので、エントリ検索動作におけるサブマッチ線の放電を阻止することができて、エントリ（ここではＩＰアドレス）を記憶しないワードに対応するサブマッチ線の消費電力を低減することが可能となる。
次に、以上の原理に基づいて、図１および図９に示した構成のＴＣＡＭセルの検索動作を詳しく説明する。
【００５２】
《検索動作》
以下の動作説明においては、プリチャージ起動信号線PCに供給される電圧を、ワード線に供給する昇圧電圧と同じであるものとしてVPPと表す。この昇圧電圧VPPは、アレイ電圧VDLよりも高い電圧であり、その差がNMOSトランジスタのしきい値以上になるように設定されているものとする。また、メインマッチ判定回路内のセンスアンプSAが微小電圧の分別に用いる参照電圧をVREFと表す。この参照電圧VREFは、接地電圧VSSとアレイ電圧VDLとの間の電圧レベルに設定されているものとする。なお、メモリセル内の記憶ノードは、電源電圧VDDまたは接地電圧VSSに駆動されるものとする。高電圧レベルをアレイ電圧VDLとすることもできるが、十分な読み出し信号量を発生しながら確実に記憶情報を読み出すためには、アレイ電圧VDLよりも高い電源電圧VDDとすることが好ましい。また、検索動作における消費電力のためにも、後述するように、サーチ線の高電圧を電源電圧VDDよりも低い電圧とするのが望ましいので、記憶ノードの高電圧をアレイ電圧VDLとは別の電圧に設定するのが理想的である。これらの仮定に基づき、検索動作について説明する。
はじめに、図１０に従って、検索キーとエントリとが一致する場合の検索動作を説明する。ここでは、説明を簡単にするために、図１に示したメモリアレイが、１本のワード線あたり２つのメモリブロックを有する構成であるものと仮定する。また、注目するワード線WL0上には、１〜３（１０進数）の範囲に対応するエントリが記憶されており、１（１０進数）に対応する検索キーとの比較が行われるものと仮定する。したがって、図１０では、ブロック符号化されたエントリ‘0001 1110’に応じて、メモリブロックMB00内の記憶ノードN00およびメモリブロックMB01内の記憶ノードN11〜N13が接地電圧VSS、メモリブロックMB01内のN01〜N03およびメモリブロックMB01内の記憶ノードN10が電源電圧VDDに保持されている。
【００５３】
まず、待機状態において、プリチャージ起動信号線PCを昇圧電圧VPPに駆動することにより、サブマッチ判定回路内のトランジスタT621が導通状態にあるので、サブマッチ線SML00、SML01がプリチャージ電圧VPCにそれぞれ駆動される。ここで、プリチャージ電圧VPCは、前述したように、サブマッチ判定回路内のトランジスタT622が十分導通する程度の電圧レベルであるので、メインマッチ線MML0が接地電圧VSSに駆動される。
検索動作が始まると、昇圧電圧VPPとなっているプリチャージ起動信号線PCを接地電圧VSSに駆動して、サブマッチ線のプリチャージを止めてから、接地電圧VSSとなっているサーチ線を検索キーに応じてアレイ電圧VDLに駆動する。同図では、符号化された検索キー‘0001 0010’に応じて、サーチ線SL00、SL02〜SL03、SL11〜SL13を接地電圧VSSにそれぞれ保持したまま、接地電圧VSSとなっているサーチ線SL01、SL10をアレイ電圧VDLに駆動する例が示されている。ここで、メモリブロックMB00内のメモリセルMC1とメモリブロックMB01内のメモリセルMC0において、トランジスタT612、T613が共に導通状態となるので、プリチャージ電圧VPCとなっているサブマッチ線SML00、SML01がそれぞれ放電される。したがって、サブマッチ判定回路内のトランジスタT622がカットオフされる。この状態で、アレイ電圧VDLとなっている検索イネーブル信号線SEBを接地電圧VSSに駆動すると、メインマッチ判定回路MMD0内のトランジスタT631が導通状態となるので、接地電圧VSSとなっているメインマッチ線MML0がアレイ電圧VDLに向かって充電される。メインマッチ線MML0が参照電圧VREFよりも十分高い電圧まで充電されたタイミングで、メインマッチ判定回路内のセンスアンプは、これらの電位差を弁別することによりエントリと検索キーが一致したと判定し、この比較結果に応じた電圧に同図では省略されている一致信号HIT0を駆動する。最後に、接地電圧VSSとなっている検索イネーブル信号線SEBをアレイ電圧VDL、アレイ電圧VDLに駆動されているサーチ線を接地電圧VSSにそれぞれ駆動し、さらに接地電圧VSSとなっているプリチャージ起動信号線PCを昇圧電圧VPPに駆動することにより、サブマッチ線SML00、SML01をプリチャージ電圧VPC、メインマッチ線MML0を接地電圧VSSに駆動して、再び待機状態に戻る。
【００５４】
次に、図１１に従って、検索キーとエントリとが一致しない場合の検索動作を説明する。ここでは、図１０と同様に、ワード線WL0上に１〜３（１０進数）の範囲に対応するエントリが記憶されており、０（１０進）に対応する検索キーとの比較が行われるものと仮定する。なお、プリチャージ動作や各信号の駆動タイミングは図１０の説明と同じであるので、以下では省略する。
検索動作が始まると、符号化された検索キー‘0001 0001’に応じて、サーチ線SL01〜SL03、SL11〜SL13を接地電圧VSSにそれぞれ保持したまま、接地電圧VSSとなっているサーチ線SL00、SL10をアレイ電圧VDLに駆動する。ここで、メモリブロックMB01内のメモリセルMC0において、トランジスタT612、T613が共に導通状態となるので、プリチャージ電圧VPCとなっているサブマッチ線SML01が放電される。しかし、メモリブロックMB00において導通状態となるトランジスタは、メモリセルMC0内のトランジスタT612とメモリセルMC1〜MC3内のトランジスタT613であるので、いずれのメモリセルにおいてもサブマッチ線SML00と接地電極との間に電流経路が形成されない。すなわち、サブマッチ線SML00は、プリチャージ電圧VPCに保たれ、サブマッチ判定回路SMD00内のトランジスタT622は導通状態であり続ける。したがって、検索イネーブル信号線SEBが活性化されると、メインマッチ線MML0は、メインマッチ判定回路MMD0内のトランジスタT631とサブマッチ判定回路SMD00内のトランジスタT622との抵抗分割で決まる電圧に駆動される。この電圧レベルは、前述したように、ほぼ接地電圧VSSに近いので、参照電圧VREFを超えることはない。メインマッチ判定回路内のセンスアンプは、これらの電位差を弁別することによりエントリと検索キーが一致しないと判定し、この比較結果に応じた電圧に同図では省略されている一致信号HIT0を駆動する。図２５は、以上の検索動作におけるサブマッチ線とメインマッチ線の電圧をまとめた表である。
【００５５】
以上の構成と動作により、図１および図９に示したメモリアレイは、次の二つの効果を得る。第一に、サブマッチ線およびメインマッチ線に接続されるトランジスタ数が低減されることにより、動作速度の劣化を防ぐことが可能となる。第二に、従来のＴＣＡＭと同じように三値情報を受信しながら、符号化された情報を用いた検索動作を行うことが可能となる。
なお、これまでは、範囲指定されたエントリとバイナリ値に対してそれぞれブロック符号化された検索キーとの検索動作について説明を行ってきた。しかし、検索キーはこれだけに限らず、範囲指定されたターナリ値に対して符号化した検索キーとの検索動作も可能であることは、これまでの説明から明らかである。
【００５６】
また、図１０および図１１では、メインマッチ判定回路MMD0内のセンスアンプが、前述したようなクロスカップル型の構成であるとして、参照電圧VREFを定めた。しかし、センスアンプの構成はこれに限らず、論理しきい値を参照電圧VREFに設定したインバータ回路でもよい。この場合、回路を構成するトランジスタ数が少ないので、センスアンプ面積を低減することができる。また、センスアンプの起動信号を取り除くこともできるので、タイミング設計が容易になるという利点も得られる。
さらに、図１や図９に示したメモリブロック内のメモリセル数は、入力情報および比較情報を何ビット毎に符号化するかによって異なる。これらの図では、２ビット単位で符合する場合のメモリアレイが示されているので、メモリブロックは、四個（２の２乗個）のメモリセルMCi（i=0,1,2,3）でグループ化された例が示されていた。このメモリブロックは、図５で説明したツインＴＣＡＭセルに相当する回路構成である。したがって、本実施例は、符号化方法とメモリアレイ構成を工夫することにより、図４で説明した三値情報を記憶するＴＣＡＭセルを二つ用いて、一つのＴＣＡＭセルに記憶する情報を三値から四値に増加させたメモリアレイであるとも言える。このように考えれば、メモリセル数が同じにも関わらず、図２２で説明したように、一つのエントリで表記できる場合の数が増加され、効率よく情報を記憶できる効果が得られたことを容易に理解することができる。
【００５７】
《本実施例の効果》
以上で述べたOne-hot-spotブロック符号と、ＴＣＡＭの構成および動作による効果を、以下にまとめる。
第一の効果は、図２２で説明したように、論理値‘1’の位置の違いが意味を持つように定義した所謂One-hot-spotブロック符号化により、１エントリあたりに記憶できる情報量を増加させ、範囲指定されたＩＰアドレスを記憶するのに必要なエントリ数を従来よりも低減した点にある。図４に示したような従来のＴＣＡＭセル構成で比較すると、本符号によって記憶情報量が三値から四値に増加されたことによって、範囲指定されたＩＰアドレスを効率良く記憶することができるので、ＴＣＡＭのメモリ容量を実効的に増加することが可能となる。なお、バイナリ値に対応した本符号のデータパターンには論理値‘1’が一つしか含まれないので、検索動作におけるサーチ線の充放電電力を低減できるという効果も得られる。また、メモリアレイの使用効率が向上することによりエントリ（ここではＩＰアドレス）を記憶しないワード数が増え、さらに対応するメモリセルの記憶情報を論理値‘0’に応じた値とすることにより、対応するサブマッチ線の放電を阻止することができるので、検索動作におけるメモリアレイあたりの消費電力を低減することも可能となる。
【００５８】
第二の効果は、図８で説明したように、エントリ・エンコーダENCDR、エントリ・デコーダDCDR、エントリ圧縮回路CMP、エントリ展開回路EXTのそれぞれチップに内蔵することにより、チップ内部でターナリ値とone-hot-spotブロック符号の変換を行うことができる点にある。本実施例の符号化により、エントリおよび検索キーのビット数は入力情報より増加してしまうが、チップ内部で符号化と復号を行うことによりデータ・バスDQのバス幅を維持し、従来と互換性のあるインターフェースを持ったＴＣＡＭを実現できる点にある。第三の効果は、図１や図９で説明したように、マッチ線をサブマッチ線とメインマッチ線からなる構造とすることによって、エントリと検索キーに共通な符号を使用できるようになった点にある。この効果によって、図５に示したような従来のツインＴＣＡＭセルで不可能だった、範囲指定された情報を検索キーとする検索動作が可能となる。また、サブマッチ線とメインマッチ線に接続されるトランジスタ数が低減されて負荷容量がそれぞれ低減されることにより、動作速度の劣化を抑制する効果も得られる。
なお、これまでメモリアレイに用いられるNMOSトランジスタの仕様については、特に言及しなかったが、図９に示したメモリセルMC内のトランジスタN611は、汎用ＤＲＡＭのメモリセルにおける伝達ゲートで広く知られているように、耐圧を考慮したゲート酸化膜厚に設計されている。また、記憶ノードにおける蓄積電荷の漏れ（リーク）を防ぐために、チャネルの不純物濃度が高く設計されている。これらの理由から、トランジスタN611のしきい電圧は、メモリアレイの周辺に配置された論理回路に用いられるトランジスタのしきい電圧よりも高いレベルに設計される。一方、メモリセルMC内のトランジスタN622やN623は比較動作に用いられるので、スイッチング応答を速くするのが望ましい。このため、チャネルの不純物濃度を調整してしきい電圧を下げ、導通状態における抵抗と拡散容量を低く設計した方が、検索時間の短縮に好適である。同様に、サブマッチ判定回路内のトランジスタN621は、ゲート電圧に昇圧電圧VPPを印加するために、耐圧を考慮したゲート酸化膜厚とする。また、トランジスタN622は検索動作に関わる素子であるので、そのしきい電圧を低く設計した方が、検索時間短縮の観点で望ましい。なお、しきい電圧を低くすることにより、ゲート電極に印加する電圧が低くともトランジスタを導通させることができる。したがって、プリチャージ電圧VPCを抑えることにより、サブマッチ線の充放電電力を低減できるという効果も同時に得られる。
【００５９】
＜実施例２＞
次に、実施例１で説明したOne-hot-spotブロック符号を用いた情報の検索動作を行うＴＣＡＭのメモリアレイ構造の別な例を説明する。この構造の特徴は、３ビット単位に符号化を行うのに対して、メモリブロックを八つのメモリセルで構成する点にある。図１２は、この点に注目して図９に対応させ、八つのメモリセルMCi（i=0,1,…,7）で構成されたメモリブロックTMB00が示されている。また、図２６は、図２３に対応させて、０〜３１（１０進数）に対する符号をそれぞれ示している。８ビットのバイナリ値に対応する符号は、１ブロックあたり８ビット（＝２の３乗ビット）の符号を３ブロック（＝８［ビット］／２［ビット／ブロック］）羅列した２４ビットからなるデータパターンである。ここで、三つの符号ブロックを左から降順でBTD2、BTD1、BTD0と表すことにする。また、符号ブロックBTDi（i=0,1,2）の要素を、エントリは左から降順で（Ni7,Ni6,…,Ni0）、検索キーは（SLi7,SLi6,…,SLi0）と示すことにする。なお、３ビット単位で符号化されていることを明示するために、以下では、各符号ブロックの間に空白が挿入されている。
【００６０】
まず、０〜７（１０進数）に対するOne-hot-spotブロック符号を定義する。符号ブロックBTD0を、図２３で述べたように、論理値‘1’をN00（またはSL00）からN07（またはSL07）へ１ビットずつ移動させたデータパターンとする。また、符号ブロックBTD1およびBTD2のデータパターンを、全て‘00000001’とする。
次に、８〜１５（１０進数）に対しては、符号ブロックBTD1における論理値‘1’を左へ（N10（またはSL10）からN11（またはSL11）へ）１ビット移動させた状態で、符号ブロックBTD0における論理値‘1’を再びN00（またはSL00）からN07（またはSL07）へ１ビットずつ移動させたデータパターンとする。以下同様に、１０進数の数が８増加する毎に符号ブロックBTD1における論理値‘1’を左へ１ビット移動させながら、符号ブロックBTD0における論理値‘1’の移動を繰り返すことにより、１６〜３１（１０進数）に対するブロック符合を定める。
【００６１】
次に、複数の数を表記する場合のデータパターンについて、１〜３０（１０進数）の範囲を例に以下に説明する。まず、１〜７（１０進数）の範囲について、図２３で説明した２ビット単位の符号化と同様に、ブロックBTD0を一纏めにして符合‘00000001 00000001 11111110’で表す。次に、８〜２３（１０進数）の範囲について、対応するブロック符号の各ビットにOR演算を行うことにより、符号‘00000001 00000110 11111111’で表す。最後に、２４〜３０（１０進数）の範囲を、符号‘00000001 00001000 01111111’で表す。この結果、１〜３０（１０進数）の範囲は、三つのブロック符号で表記される。この個数は、図２３で説明した２ビット単位の符号化と比べて一つ少ない。したがって、符号化するビット単位を大きくすることにより、範囲指定されたエントリを記憶する際に必要なエントリ数をさらに抑制することができて、効率よく記憶することが可能となる。また、実施例１と同様に、メモリアレイの使用効率が向上することによりエントリを記憶しないワード数が増えるので、対応するメモリセルにおける放電動作を阻止することができることにより、検索動作におけるメモリアレイあたりの消費電力をさらに低減することも可能となる。
【００６２】
なお、本実施例による符号は、図２３に示した２ビット単位の符号と同様に、バイナリ値に対応して符号化された検索キーのデータパターンには論理値‘1’が一つしか含まれない。また、符号化するビット単位が大きいので、検索動作におけるサーチ線の充放電電力をより低減できるという効果が得られる。また、これまでは、１０進数が１増加する毎に、論理値‘1’を左へ１ビット移動させたデータパターンによる符号を説明してきた。しかし、データパターンはこれに限定されず、他のデータパターンも可能である。例えば、０〜７（１０進数）に対する符号ブロックBTD0を、図２６とは逆に、論理値‘1’がN07（またはSL07）からN00（またはSL00）へ右に１ビットずつ移動するようなデータパターンとすることも可能である。この場合も、図２６と同じように、１〜３０（１０進数）の範囲を四つのブロック符号で表記できる。さらに、これまでは説明を簡単にするため、０〜３１（１０進数）について考えてきた。しかし、隣り合う下位の符号ブロック（ここでは、ブロックBTD0およびBTD1）のデータパターンが共に‘10000000’に到達した場合、一つ上位の符号ブロック（ここではブロックBTD2）における論理値‘1’を左へ（ここではN30（またはSL30）からN31（またはSL31）へ）１ビット移動させた状態で、再び符号ブロックBTD0およびBTD1のデータパターンを割り振るというように、以上の手順を拡張すると、３１〜２５５（１０進数）に対する符号も定義可能なことは、容易に推測することができる。
【００６３】
＜実施例３＞
次に、実施例１で説明したOne-hot-spotブロック符号を用いた情報の検索動作を行うＴＣＡＭのメモリアレイ構造、特にサブマッチ判定回路の別な例を説明する。本実施例の目的は、ターナリ表記の検索キーにおいて、ブロック符号化するために分割された複数のビットが全て第三の情報‘X’（所謂マスク状態）の場合、対応する全てのサーチ線が駆動されないような符号および回路構成を提供することにある。具体的には、例えば、２ビット単位のブロック符号の場合、検索キーとしてターナリ表記の情報‘XX’（０〜３（１０進数）全ての値）を入力すると、図２２で説明した符号では、全てのビットが論理値‘1’の符号が得られ、対応する全てのサーチ線が活性化される。このため、実施例１の構成では、サーチ線の駆動本数が大きくなり、検索動作の消費電力が増加するという問題がある。この問題を解決するために、本実施例は、情報‘XX’に対応する符号を‘0000’として、対応するサーチ線を待機状態に保ちつつも、正しく検索動作を行うことができるような回路構成を提供する。
【００６４】
図１３は、図１および図９に対応させて、本実施例によるメモリアレイの一部を示している。この構成の図９との相違点は、サブマッチ判定回路SMD00において、NMOSトランジスタT623が新たに追加されている点にある。トランジスタT623のゲート電極にブロックマスク信号BMSK0、ドレイン電極にサブマッチ線SML00をそれぞれ接続する。また、ソース電極を接地する。図２７は、サーチ線SL0i（i=0,1,…,3）とブロックマスク信号BMSK0との対応を、０〜３（１０進数）の場合を例に示している。検索キーに定義された符号の図２２との相違点は、０〜３（１０進数）の全てを表す場合のデータパターンが、‘1111’から‘0000’に変更された点にある。この変更に応じて、０〜３（１０進数）の範囲に指定された検索キーの場合のみ、ブロックマスク信号の論理値を‘1’とする。
次に、図１４に従って、検索キーとエントリとが一致する場合の検索動作を説明する。ここでは、注目するワード線WL0上には、２つのメモリブロックMB00、MB01が接続されており、対応するサブマッチ線SML00、SML01の各々に接続されたサブマッチ判定回路には、ブロックマスク信号BMSK0、BMSK1がそれぞれ接続されているものと仮定する。また、図１０と同様に、１〜３（１０進数）の範囲に対応するエントリが記憶されており、０〜３（１０進数）に対応する検索キーとの比較が行われるものと仮定する。したがって、図１４では、ブロック符号化されたエントリ‘0001 1110’に応じて、メモリブロックMB00内の記憶ノードN00およびメモリブロックMB01内の記憶ノードN11〜N13が接地電圧VSS、メモリブロックMB01内のN01〜N03およびメモリブロックMB01内の記憶ノードN10が電源電圧VDDに保持されている。
【００６５】
検索動作が始まると、符号化された検索キー‘0001 0000’に応じて、サーチ線SL00〜SL03、SL11〜SL13を接地電圧VSSにそれぞれ保持したまま、接地電圧VSSとなっているサーチ線SL10をアレイ電圧VDLに駆動する。ここで、メモリブロックMB01内のメモリセルMC0において、トランジスタT612、T613が共に導通状態となるので、プリチャージ電圧VPCとなっているサブマッチ線SML01が放電される。一方、メモリブロックMB00において導通状態となるトランジスタは、メモリセルMC1〜MC3内のトランジスタT613だけであるので、いずれのメモリセルにおいてもサブマッチ線SML00と接地電極との間に電流経路が形成されない。しかし、接地電圧VSSとなっているブロックマスク信号BMSK0がアレイ電圧VDLに駆動されることにより、サブマッチ判定回路SMD00内のトランジスタT623が導通するので、プリチャージ電圧VPCとなっているサブマッチ線SML00が放電される。したがって、接地電位VSSとなっているメインマッチ線MML0は、メインマッチ判定回路MMD0により充電されて、比較結果が一致と判定される。
【００６６】
以上の構成と動作により、検索キー‘XX’に応じたサーチ線の活性化本数を低減することができて、検索動作の消費電力を抑制することが可能となる。なお、これまでは、２ビット単位に符号化を行う場合について説明してきたが、単位ビット数はこれに限定されない。例えば、実施例２の図２６で説明したように３ビット単位に符号化する場合、ターナリ表記の情報‘XXX’に対して符号‘00000000’を定義することにより同様の効果が得られることは、容易に理解することができる。この場合、実施例２では、８本のサーチ線が活性化されていたのに対して、１本のブロックマスク信号を活性化するだけで済むので、検索動作における消費電力を大幅に低減することが可能である。
【００６７】
＜実施例３の変形例＞
なお、サブマッチ判定回路の構成は図１３に示した構成に限らず、図１７のような構成も可能である。この構成の図１３との相違点は、サブマッチ判定回路SMD00において、NMOSトランジスタT623を取り除いた代わりに、NMOSトランジスタT622と直列にNMOSトランジスタT624が新たに追加されている点にある。トランジスタT624のゲート電極にブロックマスク信号BMSKB0、ドレイン電極にメインマッチ線MML0、ソース電極にトランジスタT622のドレイン電極をそれぞれ接続する。ここで、トランジスタT622とT624の接続順は、逆にすることも可能である。しかし、後述するように、一致時に充電動作が行われるメインマッチ線の負荷容量を抑制するには、トランジスタT624をメインマッチ線MLL0側に接続してサブマッチ判定回路の内部負荷を切り離せるようにすることが望ましい。図２８は、サーチ線SL0i（i=0,1,…,3）とブロックマスク信号BMSKB0との対応を、０〜３（１０進数）の場合を例に示している。図２７との相違点は、ブロックマスク信号BMSKB0の極性がブロックマスク信号BMSK0と反対になっている点にある。
【００６８】
次に、図１８に従って、検索キーとエントリとが一致する場合の検索動作を説明する。ここでは、注目するワード線WL0上には、２つのメモリブロックMB00、MB01が接続されており、対応するサブマッチ線SML00、SML01の各々に接続されたサブマッチ判定回路には、ブロックマスク信号BMSKB0、BMSKB1がそれぞれ接続されているものと仮定する。また、図１４と同様に、１〜３（１０進数）の範囲に対応するエントリが記憶されており、０〜３（１０進数）に対応する検索キーとの比較が行われるものと仮定する。したがって、図１８では、ブロック符号化されたエントリ‘0001 1110’に応じて、メモリブロックMB00内の記憶ノードN00およびメモリブロックMB01内の記憶ノードN11〜N13が接地電圧VSS、メモリブロックMB01内のN01〜N03およびメモリブロックMB01内の記憶ノードN10が電源電圧VDDに保持されている。
検索動作が始まると、符号化された検索キー‘0001 0000’に応じて、サーチ線SL00〜SL03、SL11〜SL13を接地電圧VSSにそれぞれ保持したまま、接地電圧VSSとなっているサーチ線SL10をアレイ電圧VDLに駆動する。ここで、メモリブロックMB01内のメモリセルMC0において、トランジスタT612、T613が共に導通状態となるので、プリチャージ電圧VPCとなっているサブマッチ線SML01が放電される。一方、メモリブロックMB00において導通状態となるトランジスタは、メモリセルMC1〜MC3内のトランジスタT613だけであるので、いずれのメモリセルにおいてもサブマッチ線SML00と接地電極との間に電流経路が形成されず、サブマッチ線SML00はプリチャージ電圧VPCに保たれる。しかし、アレイ電圧VDLとなっているブロックマスク信号BMSK0が接地電圧VSSに駆動されることにより、サブマッチ判定回路SMD00内のトランジスタT624がカットオフされるので、接地電位VSSとなっているメインマッチ線MML0は、メインマッチ判定回路MMD0により充電されて、比較結果が一致と判定される。
以上の構成と動作により、サブマッチ判定回路SMD00に対応する検索キーが情報‘XX’だった場合に、サブマッチ線SML00をプリチャージ電圧VPCに保ちながら、マッチ線MML0と接地電極との間の電流経路を遮断することが可能となる。すなわち、検索キー‘XX’に応じたサーチ線の活性化本数を低減すると共に、サブマッチ線の充放電動作を停止することができて、検索動作の消費電力をさらに抑制することが可能となる。
【００６９】
＜実施例４＞
次に、実施例１で説明したOne-hot-spotブロック符号を用いた情報の検索動作を行うＴＣＡＭのメモリアレイ構造、特にメインマッチ判定回路のさらに別な例を説明する。本実施例の目的は、エントリ（ここではＩＰアドレス）を記憶しないメモリセルに対応するメインマッチ線の消費電力を低減することにある。
図１５は、図１および図９に対応させて、本実施例によるメモリアレイの一部を示している。この構成の図９との相違点は、メインマッチ判定回路MMD0において、PMOSトランジスタT632と空フラグ・レジスタEFREGが新たに追加されている点にある。トランジスタT632は、トランジスタT631とアレイ電圧VDLが供給される電極との間に電流経路を形成するように挿入される。空フラグ・レジスタEFREGは、対応するワード線上のメモリセルにエントリが記憶されているか否かの情報を保持する回路であり、保持する情報は、検索イネーブル信号線SEBに平行に配置された空フラグ線EFLGを介して書き込まれる。また、空フラグ・レジスタEFREGの記憶ノードSNE0は、トランジスタT632のゲート電極に接続される。
【００７０】
次に、このような構成におけるメインマッチ判定回路の検索動作を説明する。まず、対応するワード線WL0上のメモリセルにエントリが保持されている場合、記憶ノードSNE0の電圧は、論理値‘0’に対応する低電圧レベルであるものとする。この時、トランジスタT632が導通状態に保たれるので、メインマッチ判定回路MMD0は、メインマッチ線MML0を駆動することにより、比較結果の判定を行う。一方、対応するワード線WL0上のメモリセルにエントリが保持されていない場合、記憶ノードSNE0の電圧は、論理値‘1’に対応する高電圧レベルであるものとする。この時、トランジスタT632がカットオフされることにより、メインマッチ判定回路MMD0は比較結果の判定を行わず、メインマッチ線MML0は非活性状態に保たれる。なお、空フラグ・レジスタEFREGに保持する情報は、エントリと同時に書き込まれる。
【００７１】
以上の構成と動作により、本実施例によるメインマッチ判定回路は、メモリアレイの使用状況に応じてメインマッチ線の駆動を制御することができる。すなわち、検索動作において、エントリを記憶していないメモリセルに対応するメインマッチ線の充放電電力を削減することができる。したがって、メモリアレイ使用効率の高いメモリアレイではエントリを記憶していないメモリセルが多数存在するので、本メインマッチ判定回路は、図１で説明したメモリアレイに最適である。また、図１３に示したサブマッチ判定回路と組み合わせることにより、さらに消費電力の小さなメモリアレイを実現することができる。
【００７２】
＜実施例５＞
図１６は、図８で説明した実施例１によるOne-hot-spotブロック符号化情報による検索動作を実現するＴＣＡＭの別の全体構成の例を示している。この構成の特徴は、エントリと検索キーを、共にエントリ圧縮回路CMPから第一符号化エントリ・バスFEBSを介してメモリアレイMAに入力する構成とした点にある。このような構成により、範囲指定された検索キーは、エントリと同様に圧縮された後にメモリアレイに入力される。したがって、メモリアレイMAに入力する検索キーの数を低減することができるので、検索動作における消費電力の小さなＴＣＡＭを実現することが可能となる。なお、図１３で説明したサブマッチ判定回路や図１５で説明したメインマッチ判定回路を適用したメモリアレイMAを用いれば、さらに消費電力の小さなＴＣＡＭを実現することができることは、実施例３や実施例４の説明から明らかである。
【００７３】
以上、One-hot-spotブロック符号化した情報を用いた検索動作を行うＴＣＡＭについて説明してきた。しかし、本発明による構成や動作は、以上の説明に限定されず、種々の変形が可能である。例えば、メモリセル構成は、図９に示した構成に限らず、種種の構成が可能である。具体的には、図５に示したメモリセルのように、直列接続されたトランジスタT612、T613の順番を入れ替えた構成も可能である。この場合、待機状態において、導通状態のT613によってトランジスタT612とT613との接続ノードをプリチャージすることができるので、サーチ線に接続されたトランジスタT612が導通することによって起こるチャージシェアによるサブマッチ線の電圧降下を防ぐことができて、正確な検索動作が可能となる。
【００７４】
また、図９では、サーチ線とビット線を別個に設けたメモリセル構成を示したが、これらの信号線を共通化することも可能である。この場合、図１で説明したようなサーチ線駆動回路ブロックSDBを省くことができるので、チップ面積を削減することが可能となる。
さらに、図９では、一つのトランジスタと一つのキャパシタを用いた回路構成で情報を記憶していた。しかし、この部分を図２に示したような六つのトランジスタで構成された所謂ＳＲＡＭセルや、浮遊ゲートに電荷を蓄積することにより情報を記憶する例えばフラッシュメモリのような電気的に消去とプログラムが可能なリード・オンリー・メモリ（Electronically Erasable and Programmable Read Only Memory：ＥＥＰＲＯＭ）に置き換えることも可能である。一方のＳＲＡＭセルに置き換える場合、キャパシタを形成するための特殊な加工工程が不要となるので、チップ製造コストを抑制することができる。また、メモリアレイの周辺に配置された論理回路と同じようにスイッチング特性に優れたトランジスタを使用できるので、検索動作を高速に行うメモリアレイを実現することが可能となる。さらに、図９に示したメモリセルで行われていたリフレッシュ動作が不要となるので、本ＴＣＡＭは、より長く検索動作を行うことが可能となる。また、本ＴＣＡＭを用いたシステム設計が容易になる。他方のＥＥＰＲＯＭに置き換える場合、ＳＲＡＭと同じようにリフレッシュ動作が不要になる。また、メモリセル面積を低減できるので、大容量化および低コスト化が可能となる。さらに、メモリセルは、電源が遮断されたエントリを保持し続けることができるので、損害リスクの低いＴＣＡＭを実現することができる。
最後に、図８では、エントリ・エンコーダENCDRやエントリ圧縮回路CMPを用いて、チップ内部で受信したターナリ表記の情報を符合化および圧縮することにより、広範囲のＩＰアドレスを書き込む方法を説明したが、種々の方法が可能である。例えば、前述したコンパランド・レジスタCPREGを、検索キーとエントリに共通なレジスタとする。また、このレジスタはカウンタを内蔵し、検索キーおよびエントリの上限と下限だけを受信および保持して、指定された範囲に応じた検索キーおよびエントリをチップ内部で発生する機能を有するものとする。このような構成と機能により、範囲指定されたＩＰアドレスの送受信回数を抑制することができるので、データ入出力回路の消費電力を低減した低電力ＴＣＡＭを実現することが可能である。
【００７５】
また、チップ内部のクロック周波数がデータ・バスDQよりも高い場合に、書き込み動作および読み出し動作に要するサイクル数を低減することができるので、より高速な動作を行うことも可能となる。
また、図２で説明したネットワーク・プロセッサNPや検索エンジンSEのような外部の制御チップでOne-hot-spotブロック符号化されたエントリを受信して、直接メモリアレイに書き込むことも可能である。この場合、エントリ・エンコーダENCDRやエントリ圧縮回路CMPの他に、エントリの展開、復号をそれぞれ行うエントリ展開回路EXT、エントリ・デコーダEDCRをそれぞれ除くことができて、チップ面積を低減することが可能となる。また、効率よくエントリおよび検索キーを受信することができるので、書き込み動作および読み出し動作に要するサイクル数および消費電力を低減することも可能である。さらに、エントリに限らず、広範囲のＩＰアドレスを検索キーとして入力する場合に要するサイクル数を低減することもできるので、検索動作を高速かつ低電力に行うことも可能となる。
【００７６】
以上、本発明者によってなされた発明を発明の実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、本発明によるＴＣＡＭは、オフチップすなわち単体デバイスに限らず、所謂システム・オン・チップ（ＳｏＣ）と呼ばれるシステムＬＳＩに搭載されるＴＣＡＭブロックにも適用することが可能であり、これまで述べた実施例と同様の効果が得られる。
以上のように、本発明にかかる半導体装置は、ＩＰアドレスに限らず、様々な情報に関して１エントリあたりの情報量を増加することが可能であり、情報量の大きなテーブルを用いた検索動作を行う技術に適している。
【００７７】
＜実施例６＞
図２９は、図８や図１６で説明したメモリアレイMAの構成の例を示している。この構成の特徴は、次に述べるように二つある。第一の特徴は、図１で説明したメモリアレイからなる二つのサブアレイSMA0、SMA1を有する点にある。第二の特徴は、第一符号化エントリ・バスFEBSの構成要素である第一符号化エントリ線（FEL00〜FEL03、FEL10〜FEL13、…）を受けてサーチ線（SL000〜SL003、SL010〜SL013、…、SL100〜SL103、SL110〜SL113、…）を駆動するサーチ線駆動回路ブロックSDB0、SDB1のそれぞれを、対応するメインマッチ判定回路ブロックMMDB0、MMDB1を用いて制御する点にある。なお、同図では、説明を簡単にするために、サブアレイSMA0、SMA1に配置されるロウ・デコーダや読み書き回路ブロック、ビット線やワード線を省略している。以下では、これらの特徴について、サブアレイSMA0に注目しながら詳しく説明する。
【００７８】
まず、サブアレイSMA0は、256本のメインマッチ線MML00〜MML0255を有し、こららのメインマッチ線とサーチ線SL000〜SL003、SL010〜SL013、…との交点にメモリブロックMB00、MB01、…、MB2550、MB2551、…が配置されている。また、メモリブロックに応じて、サブマッチ線判定回路SMD00、SMD01、…、SMD2550、SMD2551、…がそれぞれ配置されている。
サーチ線駆動回路ブロックSDB0は、第一符号化エントリ線FEL00〜FEL03、FEL10〜FEL13、…とサーチ線SL000〜SL003、SL010〜SL013、…との間にそれぞれ配置されたサーチ線駆動回路SD00〜SD03、SD10〜SD13、…と256入力NAND回路NDMで構成される。サーチ線駆動回路の各々は、図３０に示すように、インバータ回路INVとNAND回路NDとで構成される。例えば、サーチ線駆動回路SD00の場合、NAND回路NDの一方の入力端子に第一符号化エントリ線FEL00、他方の入力端子にNAND回路NDMの出力信号SNE0Bをそれぞれ接続する。また、NAND回路NDの出力端子をインバータ回路INVの入力端子に接続し、インバータ回路INVの出力をサーチ線SL00とする。
メインマッチ判定回路ブロックMMDB0は、256個のメインマッチ判定回路MMD0〜MMD255で構成される。各メインマッチ判定回路における空フラグ・レジスタEFREGの記憶ノードに接続された信号SNE00〜SNE0255（例えば、図１５におけるメインマッチ判定回路MMD0内の記憶ノードSNE0が信号SNE00に対応する）を、前述したサーチ線駆動回路ブロックSDB0内の256入力NAND回路NDMの各入力端子に接続する。
【００７９】
このような構成により、次の二つの効果が得られる。第一の効果は、メモリアレイMAが分割されたことによりサーチ線長が短くなり、負荷容量が軽減されるので、サーチ線駆動に要する時間を短縮することができる点にある。すなわち、検索動作時間を短縮することが可能となる。第二の効果は、サブアレイ内のメモリセルにエントリが一つも書き込まれていない場合、対応するサーチ線の駆動を停止できる点にある。すなわち、エントリが空の場合、図１５で説明したように対応する空エントリ・レジスタの記憶ノードは論理値‘1’に対応する高電圧レベルであるので、サブアレイSMA0が空の場合、信号SNE0Bが接地電圧VSSに保持されることにより、対応するサーチ線が接地電圧VSSに保たれる。したがって、検索動作において駆動するサーチ線を抑制することができるので、消費電力を低減することが可能となる。
【００８０】
なお、前述した第二の効果は、本発明によるOne-hot-spotブロック符号を用いてエントリを記憶するＣＡＭの場合に、特に大きい。この理由は、図２４で説明したように、本ＣＡＭは範囲指定されたＩＰアドレスを従来よりも少ないエントリ数で記憶することができるので、情報の比較が行われるメモリアレイ領域を縮小することができる。したがって、全メモリアレイで検索動作を行う必要がないので、不要なサブアレイにおける検索動作を停止することができて、チップ全体の消費電力を削減することが可能となるためである。
以上では、図２９を例に、本実施例によるメモリアレイ構成を説明したが、その構成は種種の変形が可能である。例えば、同図では、256本のメインマッチ線を有するサブアレイ毎にサーチ線駆動回路ブロックを配置する構成が示されているが、その配置はこれに限らない。本発明によるＣＡＭは、従来のＤＲＡＭと同様にチャージシェア動作によってエントリの読み出しを行うので、十分な読み出し信号を得るためにビット線容量すなわちビット線長が制限される。この長さを、例えば図２９のようにマッチ線256本分の長さと仮定すると、サーチ線の長さはこれに限らず、サーチ線の駆動に要する時間が検索動作に許容される範囲まで長くすることができる。この場合、メモリアレイ内のサーチ線駆動回路ブロック数を低減することができるので、メモリアレイ面積を抑制することが可能となる。
【００８１】
これに対して、サーチ線長をビット線長よりも短くして、サブアレイ毎に複数のサーチ線駆動回路ブロックを配置することもできる。この場合、活性化するサーチ線長を細かく制御することができるので、エントリ数によっては、さらに消費電力を削減することが可能である。
また、図２９では、サーチ線駆動回路ブロックに256入力NAND回路を用いる構成例を示したが、論理を逸脱しない範囲で、種種の変型が可能である。例えば、２乃至３入力のNAND回路やNOR回路とインバータ回路とを組み合わせることにより、サーチ線駆動回路ブロックのレイアウトを効率よく行うことができる。あるいは、エントリをメインマッチ判定回路MMD0に対応するメモリセルから順番に書き込む場合、サブアレイ内のエントリが空か否かの判定をメインマッチ判定回路MMD0の記憶ノードに対応する信号だけで判断できるので、この信号を256入力NAND回路NDMの代わりに配したインバータ回路で受けて、その出力信号で各サーチ線駆動回路を制御することもできる。この場合、論理回路面積および信号配線数を低減できるので、メモリアレイ面積を抑制することが可能となる。
【図面の簡単な説明】
【００８２】
【図１】実施例１に示すターナリ・コンテント・アドレッサブル・メモリにおける階層マッチ線構造を用いたメモリアレイの構成例の説明図である。
【図２】ルータの構成例を模式的に示す説明図である。
【図３】１７個のトランジスタで構成される従来のターナリ・コンテント・アドレッサブル・メモリセルの構成を示した説明図である。
【図４】６つのトランジスタと２つのキャパシタで構成される従来のターナリ・ダイナミック・コンテント・アドレッサブル・メモリセルの別の構成を示した説明図である。
【図５】２つのターナリ・コンテント・アドレッサブル・メモリセルで形成された従来のツイン・ターナリ・コンテント・アドレッサブル・メモリセルの構成を示した説明図である。
【図６】実施例１に示す図１のメモリアレイを用いたターナリ・コンテント・アドレッサブル・メモリにおけるエントリの符号化および書き込み方法の例の説明図である。
【図７】実施例１に示す図１のメモリアレイを用いたターナリ・コンテント・アドレッサブル・メモリにおけるエントリの復号および読み出し方法の例の説明図である。
【図８】実施例１に示す図１のメモリアレイを用いたターナリ・コンテント・アドレッサブル・メモリにおける要部ブロック構成例の説明図である。
【図９】実施例１に示す図１のメモリアレイにおける回路ブロックの具体的な構成例の説明図である。
【図１０】実施例１に示す図１のメモリアレイにおいて一致情報を検索する場合の動作タイミング例の説明図である。
【図１１】実施例１に示す図１のメモリアレイにおいて不一致情報を検索する場合の動作タイミング例の説明図である。
【図１２】実施例２に示す図１のメモリアレイにおいてメモリブロックの別の構成例の説明図である。
【図１３】実施例３に示す図１のメモリアレイにおいてサブマッチ判定回路の別の構成例の説明図である。
【図１４】実施例３に示す図１３のメモリアレイにおいて一致情報を検索する場合の動作タイミング例の説明図である。
【図１５】実施例４に示す図１のメモリアレイにおいてメインマッチ判定回路の別の構成例の説明図である。
【図１６】実施例５に示す図１のメモリアレイを用いたターナリ・コンテント・アドレッサブル・メモリにおける要部ブロック構成の別の例の説明図である。
【図１７】実施例３に追加した変形例で示す図１のメモリアレイにおいてサブマッチ判定回路のさらに別の構成例の説明図である。
【図１８】実施例３に追加した変形例で示す図１７のメモリアレイにおいて一致情報を検索する場合の動作タイミングの例の説明図である。
【図１９】図５のツイン・ターナリ・コンテント・アドレッサブル・メモリセルに用いる比較情報と記憶情報の論理値を示した説明図である。
【図２０】経路検索テーブルを示した説明図である。
【図２１】バイナリ表記とターナリ表記の対応を示した説明図である。
【図２２】実施例１で示す図１のメモリアレイに用いられるOne-hot-spotブロック符号のデータパターン例の説明図である。
【図２３】実施例１で示す図１のメモリアレイに用いられるOne-hot-spotブロック符号のデータパターンの別の例の説明図である。
【図２４】実施例１で示す図１のメモリアレイに用いられるOne-hot-spotブロック符号のデータパターンの別の例の説明図である。
【図２５】実施例１で示す図１のメモリアレイにおける検索結果に応じたマッチ線の電圧関係の説明図である。
【図２６】実施例２で示す図１２のメモリアレイに用いられるOne-hot-spotブロック符号のデータパターン例の説明図である。
【図２７】実施例３で示す図１３のメモリアレイに用いられるOne-hot-spotブロック符号とブロックマスク信号のデータパターン例の説明図である。
【図２８】実施例３に追加した変形例に示す図１７のメモリアレイに用いられるOne-hot-spotブロック符号とブロックマスク信号のデータパターンの別の例の説明図である。
【図２９】実施例６で示す図８のターナリ・コンテント・アドレッサブル・メモリに用いられるメモリアレイの構成の例を示した説明図である。
【図３０】実施例６で示すサーチ線駆動回路の構成の例を示した説明図である。
【符号の説明】
【００８３】
T1,T2,T3,T4,T5,T6,T51,T52,T611,T612,T613,T621,T622,T623,T624,P311,P312,N311,
N312,N313, N314, P321, P322, N321, N322, N323, N324, N331, N332, N333, N334, N334…NMOSトランジスタ、T631, P632…PMOSトランジスタ、C1, C2…キャパシタ、SMC31, SMC32, HMC0, HMC1, HMC2, HMC3, MCs（s=0、1、…、7）…メモリセル、MUC, BMUC…比較回路、SC…記憶回路、DCL…放電線、RWL…読み出しワード線、ML…マッチ線、MMLm（m=0、1、…）,MML00,・・・MML0255, MML10,・・・MML1255…メインマッチ線、SMLmj（m=0、1、…、j=0、1、…）…サブマッチ線、WL, WL31, WL32, WLm（m=0、1、…）…ワード線、BLT, BLB, BL1, BL2, BLni（n=0、1、…、i=0、1、…、7）…ビット線、SL1, SL2, SLni（n=0、1、…、i=0、１、…、7）, SL000〜SL003、SL010〜SL013、・・・、SL100〜SL103、SL110〜SL113、・・・…サーチ線、C0, C1, C2, C3…比較データ線、PC…プリチャージ起動信号線、SEB…検索イネーブル信号線、EFLG…空フラグ線、NT, NB, DC, N1, N2, D0, D1, D2, D3, N0i（i=0、1、…、7）,SNE0,SNE00,・・・,SNE0255,SNE10,・・・,SNE1255…記憶ノード、MBmj（m=0、1、…、j=0、1、…）, MB00, MB01,・・・,MB2550,MB2551,・・・,…メモリブロック、SMDmj（m=0、1、…、j=0、1、…）,SMD00,SMD01,・・・,SMD2550, SMD2551,・・・,…サブマッチ判定回路、EFREG…空フラグ・レジスタ、XDEC…ロウ・デコーダ、MMDB,MMDB0,MMDB1…メインマッチ判定回路ブロック、SDB,SDB0,SDB1…サーチ線駆動回路ブロック、RWB…読み書き回路ブロック、VDD…電源電圧、VSS…接地電圧、VDL…アレイ電圧、VPC…プリチャージ電圧、VPP…昇圧電位、NIF…ネットワーク・インターフェイス、NP…ネットワーク・プロセッサ、SE…検索エンジン、LUT…検索テーブル、CM…コンテント・メモリ、CADD…コンテント・メモリ・アドレス・バス、CBS…コンテント・バス、MA…メモリアレイ、SAM0,SMA1…サブアレイ、DIO…データ入出力回路、CAMCTL…ＣＡＭ制御回路、FLGC…フラグロジック回路、RFCNT…リフレッシュ・カウンタ、ENCDR…エントリ・エンコーダ、DCDR…エントリ・デコーダ、CMP…エントリ圧縮回路、EXT…エントリ展開回路、PENC…プライオリティ・エンコーダ、CRAMCTL…ランダム・アクセス・メモリ（ＲＡＭ）制御回路、MKREG…マスク・レジスタ、CPREG…コンパランド・レジスタ、WREG…バースト・ライト・レジスタ、NREG…ネクスト・フリーアドレス・レジスタ、RREG…バースト・リード・レジスタ、ISREG…インストラクション・レジスタ、IFREG…インフォメーション・レジスタ、CFREG…コンフィガレーション・レジスタ、MAREG…マッチ・アドレス・レジスタ、RMKREG…読み出しマスク・レジスタ、RBREG…読み出し二値情報レジスタ、FTEREG, STEREG…第一テンポラリ・エントリ・データ・レジスタ、LORC…OR演算回路、EDVD…エントリ分割回路、MLREG…レジスタ群、DQ…データ・バス、CLK…外部クロック、CMD…外部制御信号群、ACK…リード・アクノーリッジ信号、EOT…エンド・オブ・トランスファ信号、EC…エントリ・カウント信号群、RCLK…ＲＡＭクロック、RCTL…ＲＡＭ制御信号群、RADD…ＲＡＭアドレス、FIN…フル・イン信号群、FOUT…フル・アウト信号群、MM…マルチ・マッチ信号、DBS…内部データ・バス、MKBS…マスク信号バス、
XBS…ロウ・アドレス・バス、HBS…一致信号バス、MABS…マッチ・アドレス・バス、RDBS…読み出しデータ・バス、ENBS…符号化データ・バス、FEBS, SEBS, TEBS…エントリ・バス、FEL00〜FEL03,FEL10〜FEL13,・・・…第一符号化エントリ線、ND,NDM…NAND回路、INV…インバータ回路、SNE0B…NAND回路出力信号。
【図１】
2005190543.tif 000003
【図２】
2005190543.tif 000004
【図３】
2005190543.tif 000005
【図４】
2005190543.tif 000006
【図５】
2005190543.tif 000007
【図６】
2005190543.tif 000008
【図７】
2005190543.tif 000009
【図８】
2005190543.tif 000010
【図９】
2005190543.tif 000011
【図１０】
2005190543.tif 000012
【図１１】
2005190543.tif 000013
【図１２】
2005190543.tif 000014
【図１３】
2005190543.tif 000015
【図１４】
2005190543.tif 000016
【図１５】
2005190543.tif 000017
【図１６】
2005190543.tif 000018
【図１７】
2005190543.tif 000019
【図１８】
2005190543.tif 000020
【図１９】
2005190543.tif 000021
【図２０】
2005190543.tif 000022
【図２１】
2005190543.tif 000023
【図２２】
2005190543.tif 000024
【図２３】
2005190543.tif 000025
【図２４】
2005190543.tif 000026
【図２５】
2005190543.tif 000027
【図２６】
2005190543.tif 000028
【図２７】
2005190543.tif 000029
【図２８】
2005190543.tif 000030
【図２９】
2005190543.tif 000031
【図３０】
2005190543.tif 000032