[実施の形態1]
図1は、この発明の実施の形態1に従う内容参照メモリの要部の構成を概略的に示す図である。図1において、メモリアレイ1が、複数のエントリENT♯0−ENT♯N−1に分割される。エントリENT♯0−ENT♯N−1の各々は、複数ビット(本実施の形態においては1オクテット:8ビット)単位でサブエントリSERYに分割される。サブエントリSERYの各々は、サーチデータのビット列に対応する情報データを記憶するデータ記憶セルCEL0と、マスクビットを記憶するマスクセルCEL1を含む。
なお、以下の説明においては、サーチデータに対応するデータを情報データと称し、マスクデータと区別する。以下、単に「データ」と称する場合には、この情報データを参照する。
1つのサブエントリSERYにおいては、8つのデータ記憶セルCEL0と4つのマスクセルCEL1とが配置される。データ記憶セルCEL0は、単にサーチ対象のデータの情報ビットを記憶するだけであり、また、マスクセルも単にマスクビットを記憶するだけである。これらのデータ記憶セルCEL0およびマスクセルCEL1は、一致検出機能は有していない。したがって、1オクテットを記憶するサブエントリSERYのメモリセルの数は、12個であり、通常のTCAMにおける1オクテットの単位セルのメモリセルの16ビットに比べて、メモリセルの数は低減され、レイアウト面積が低減される。
エントリENT♯0−ENT♯N−1の格納データとサーチデータとの比較を行なうために、センスアンプ回路11と比較/論理処理回路15とがエントリENT♯0−ENT♯N−1に共通に設けられる。
センスアンプ回路11は、サブエントリに対応して配置されるセンスアンプユニットSAUを含む。このセンスアンプユニットSAUは、その構成は後に詳細に説明するが、データ記憶セルおよびマスクセルそれぞれに対応するセンスアンプを含む。
比較/論理処理回路15は、センスアンプユニットSAUそれぞれに対応して設けられる比較/論理処理ユニットCLUを含む。この比較/論理処理ユニットCLUは、データ記憶セルの記憶する情報データとサーチデータとの比較を行なう比較器CMPと、マスクセルの記憶するマスクビットをデコードするデコーダDECを含む。デコーダDECにより4ビットマスクデータが、8ビットのマスク指示信号に展開され、比較・論理処理ユニットCLUにおける比較処理に対して選択的にマスクがかけられる。
図1に示すように、複数のエントリENT♯0−ENT♯N−1に共通にセンスアンプ回路および比較/論理処理回路15を設けることにより、各エントリそれぞれに比較器(XOR回路)を設ける構成に比べて、CAM(内容参照メモリ)の占有面積を低減することができる。
また、サーチデータは、サーチデータバスSLBを介して比較/論理処理回路15へ伝達されるだけであり、複数のエントリ全体に対してサーチデータを伝達するサーチ線を配設することは要求されない。したがって、サーチ線の充放電に要する電流を低減することが出来、消費電流を低減することが出来る。また、比較・論理処理回路15において、比較/論理処理が行なわれ、エントリ内においては、比較処理は行なわれない。したがって、各エントリに対して一致線を配置する必要がなく、一致線の充放電に要する電流量を低減することが出来る。
なお、サブエントリSERYが、1オクテットのデータを記憶するように構成されるのは、インターネットなどのネットワークにおいて、IPアドレスの経路検索等の処理を行なう用途を想定しているためである。この発明に従う内容参照メモリが適用される用途に応じて、サブエントリSERYのビット幅が、適宜定められればよい。
図1に示す構成において、エントリENT♯0−ENT♯N−1のうち1つのエントリを、検索データの特徴に従って選択する。その後、センスアンプ回路11で、選択されたエントリの記憶する情報データおよびマスクデータを増幅し、比較/論理処理回路で比較および大小判定を実行する。
図2は、図1に示すサブエントリSERYの具体的構成を示す図である。図2において、エントリENT♯a、ENT♯bおよびENT♯cの構成を代表的に示す。図2において、メモリセルが行列状に配列され、メモリセル行に対応してワード線WLが配設され、メモリセル列に対応してビット線対BL,/BLが配設される。1つのエントリのメモリセルに対して共通に1つのワード線が配設される。図2において、エントリENT♯aおよびENT♯bに対応して配置されるワード線WLaおよびWLbを示す。
サブエントリSERYにおいては、情報データを記憶するデータ記憶セルCEL00−CEL03およびCEL04−CEL07と、マスクビットを記憶するマスクセルCEL10−CEL13が行方向(エントリの延在方向)に整列して配置される。データ記憶セルCEL00−−CEL07とマスクセルCEL10−CEL13は同一構成を有するため、図2においては、データ記憶セルCEL00およびマスクセルCEL10の構成を代表的に示す。また、これらのデータ記憶セルCEL00およびマスクセルCEL10は、同一構成であり、対応する部分には同一の参照番号を付す。
データ記憶セルCEL00およびマスクセルCEL10の各々は、インバータラッチを構成するインバータIV1およびIV2と、対応のワード線WLa上の信号に従ってインバータIV1およびIV2の入力部をそれぞれビット線BLおよび/BLに結合するアクセストランジスタAT1およびAT2とを含む。ここで、データ記憶セルおよびマスクセルの各列に対応してビット線対が配置される。図2においては、記憶セルCEL00−CEL03を含む各メモリセル列に対応してビット線対BL0,/BL0−BL3,/BL3が配置される。マスクセルCEL10のメモリセル列に対応してビット線BL4,/BL4が配置され、マスクセルCEL13のメモリセル列に対応してビット線対BL7,/BL7が配置される。同様、データを記憶するデータ記憶セルCEL04−CEL07各々を含むメモリセル列に対応して、ビット線対BL8,/BL8−BL11,/BL11が設けられる。
図2に示すように、データ記憶セルCEL0(CEL00−CEL07)およびマスクセルCEL1(CEL10−CEL13)は、SRAMセルと同じ構成を有する。データ記憶セルCEL00−CEL07およびマスクセルCEL10−CEL13は、単に情報データおよびマスクデータを記憶するだけであり、メモリセル内には、一致判定を行なうXOR回路は設けられていない。したがって、メモリアレイ1のサブエントリのメモリセルCEL(CEL0,CEL1)の占有面積を、従来のTCAMのような2つのSRAMセルおよびXOR回路でCAMセルを構成する場合に比べて低減することができる。
データの読出時には、1つのワード線を選択状態に駆動し、選択行のエントリの記憶内容を対応のビット線対に読出す。情報およびマスクデータの書込時においても、同様、1つのワード線を選択状態に駆動し、対応のビット線対に書込データ(情報データおよびBマスクデータ)を転送して、メモリセルにビット線の情報/マスクデータを書込む。
図3は、図1に示すセンスアンプユニットSAUおよび比較/論理ユニットCLUの構成の一例を示す図である。図3において、センスアンプユニットSAUは、ビット線対BL0,/BL0−BL11,/BL11各々に対して設けられるセンスアンプSA0−SA11を含む。図3においては、データ記憶セルに対するセンスアンプSA0−SA3およびSA8−SA11の構成を示し、マスクビットを記憶するマスクセルに対するセンスアンプは示していない。しかしながら、マスクセルが配置されるビット線対BL4,/BL4−BL7,/BL7についても同様センスアンプが設けられる。
これらのセンスアンプSA0−SA11は、各々同一の構成を有し、図3においては、センスアンプSA0−SA11の対応する構成要素には同一参照番号を付す。センスアンプSA0−SA11の各々は、交差結合されるPチャネルMOSトランジスタ(絶縁ゲート型電界効果トランジスタ)PX1およびPX2と、交差結合されるNチャネルMOSトランジスタNX1およびNX2と、センスアンプ活性化信号/SAENに従ってハイ側センス電源ノードSVHを電源ノードに結合するPチャネルMOSトランジスタPX3と、センスアンプ活性化信号SAENに従ってロー側センス電源ノードSVLを接地ノードに結合するNチャネルMOSトランジスタNX3を含む。ハイ側センス電源ノードSVHおよびロー側センス電源ノードSVLは、図3においてはセンスアンプSA0−SA11に共通に結合されるように示す。これらのハイ側センス電源ノードSVHおよびロー側センス電源ノードSVLは、センスアンプSA0−SA11それぞれに個々に分離されてもよい。
これらのセンスアンプSA0−SA11は、交差結合型のラッチセンスアンプであり、それぞれ、活性化時、対応のセンスノードCSN0,/CSN0−CSN11,/CSN11の電位を差動的に増幅してラッチする。
センスアンプユニットSAUは、さらに、センスアンプ活性化信号SAENの非活性化に応答してビット線対BL0,/BL0−BL11,/BL11を、それぞれセンスアンプSA0−SA11に結合するビット線読出ゲートRGT0−RGT11を含む。これらのビット線読出ゲートRGT0−RGT11は、同一構成を有するため、図3においては、これらのビット線読出ゲートRGT0−RGT11の対応する構成要素に同一の参照番号を付す。ビット線読出ゲートRGT0−RGT11の各々は、センスアンプ活性化信号SAENの非活性化時導通し、それぞれ対応のビット線BL(BL0−BL11)および/BL(/BL0−/BL11)を対応のセンスノードCSN(CSN0−CSN11)および/CSN(/CSN0−/CSN11)に結合するPチャネルMOSトランジスタPTaおよびPTbを含む。
このビット線読出ゲートRGT0−RGT11においてPチャネルMOSトランジスタPTaおよびPTbを用いるのは以下の理由による。すなわち、ビット線BL0,/BL0−BL11,/BL11は、それぞれ図示しないビット線負荷回路により、電源電圧レベルにプリチャージされる。したがって、メモリセルの記憶データ読出時、ビット線電位が、電源電圧レベルのHレベルから少し低下した状態に変化する。このハイレベルのビット線電位を、確実に、対応のセンスアンプSA(SA0−SA11)に伝達するために、PチャネルMOSトランジスタPTaおよびPTbが用いられる。
センスアンプ活性化信号SAENが、非活性化時、ビット線プリチャージ電圧(例えば電源電圧)よりも高い電圧レベルに設定される場合には、このビット線読出ゲートRGT0−RGT11においてNチャネルMOSトランジスタが用いられればよい。
なお、情報およびマスクデータの書込時においても、このビット線読出ゲートを介して書込データが転送される(この書込経路は示していない)。この場合には、センスアンプは特に用いる必要はない。メモリセルは、SRAMセルであり、データは非破壊読出であり、DRAM(ダイナミック・ランダム・アクセス・メモリ)と異なり、記憶データの再書き込みは要求されない。
比較/論理処理ユニットCLUは、センスアンプSA0−SA3およびSA8−SA11それぞれに対応して設けられる4出力のXOR回路XRL0−XRL3およびXRL4−XRL7を含む。これらのXOR回路XRL0−XRL3およびXRL4−XRL7が、各々図1に示す比較器CMPに対応する。これらのXOR回路XRL0−XRL3およびXRL4−XRL7は、データ記憶セルに対応して設けられ、マスクビットを記憶するマスクセルすなわちビット線対BL4,/BL4−BL7,/BL7に対しては、XOR回路は設けられない。マスクセルに対して、後に説明するようにデコーダが配置される。
比較/論理処理ユニットCLUは、さらに、出力イネーブル信号CMENに従ってセンスアンプSA0−SA3およびSA8−SA11をそれぞれXOR回路XRL0−XRL3およびXRL4−XRL7に結合するセンスデータ転送ゲートTX0−TX3およびTX8−TX11を含む。センスデータ転送ゲートは、また、マスクセルに対しても設けられ、対応のセンスアンプのセンスデータがデコーダ(図3には示していない)へ転送される。これらのセンスデータ転送ゲートTX0−TX11は、各々同一構成を有するため、図3においては対応する部分には同一の参照番号を付す。センスデータ転送ゲートTX0−TX11の各々は、比較活性化信号CMENの活性化に従って対応のセンスアンプSA(SA0−SA11のいずれか)のセンスノードCSN(CSN0−CSN11)および/CSN(/CSN0−/CSN11)を対応のXOR回路XRL(XRL0−XRL7)に結合するNチャネルMOSトランジスタNTaおよびNTbを含む。
XOR回路XRL0−XRL7の各々は、対応のセンスアンプから転送されるデータとサーチ線SL(SL0−SL7)および/SL(SL0−/SL7)のデータとの比較を行ない、その比較結果に従って4つの出力OUT0−OUT3を生成する。図3においては、これらのXOR回路XRL0−XRL7の出力信号に対し、山括弧により、このビット位置を示す。たとえば、XOR回路XRL0は、出力ビットOUT0<0>、OUT1<0>、OUT2<0>およびOUT3<0>を生成する。ビット位置<0>が対応のサブエントリにおける最下位ビット位置を示し、ビット位置<7>が対応のサブエントリにおける最上位ビット位置を示す。
この4つの出力信号OUT0−OUT3により、一致および大小関係などの比較・論理処理結果を示す信号を生成する。
図4は、図1から3に示す内部参照メモリの動作を示すタイミング図である。以下、図4を参照して、この図1から3に示す内部参照メモリ(CAMまたはTCAM)の動作について説明する。
検索データSDは、クロック信号CLKに同期して転送される。ここで、この発明に従う内容参照メモリ(CAM)の用途として、インターネット環境におけるルータまたはスイッチを想定する。
検索データSDがクロック信号CLKに同期してCAM内部に取込まれ、応じて、サーチ線SLおよび/SLが、検索データSDに応じた電圧レベルに駆動される。ここで、図4においては、サーチ線SLおよび/SLは、スタンバイ時Lレベルにプリチャージされる状態を一例として示す。
検索データSDが与えられると、この検索データSDに含まれる特徴データ(たとえばIPアドレスの特定のオクテット)に従って、メモリアレイ1の1つのエントリが指定され、対応のワード線WLが選択状態へ駆動される。ワード線WLが選択状態へ駆動されると、選択エントリにおけるメモリセルCEL0およびCEL1においてアクセストランジスタAT1およびAT2が導通し、それぞれの記憶データが対応のビット線BLおよび/BL上に伝達される。このメモリセルの記憶データの読出は、通常のSRAMのデータ読出と同じである。図4においては、ビット線BLおよび/BLが電源電圧レベルのHレベルにプリチャージされる状態を一例として示す。
このとき、まだセンスアンプ活性化信号SAENはLレベルであり、ビット線読出ゲートRGTは導通状態にある。したがって、ビット線BLおよび/BLの電位変化がセンスノードCSNおよび/CSNへ伝達される。ビット線BLおよび/BLの電位差が拡大されると、次いでセンスアンプ活性化信号SAENおよび/SAENが活性状態のHレベルおよびLレベルに駆動される。応じて、ビット線読出ゲートRGT0−RGT11が非導通状態となり、ビット線からの電圧が、センスアンプSA0−SA11のセンスノードCSN0,/CSN0−CSN11,/CSN11に閉じ込められる。この状態で、センスアンプSAがセンス動作を行い、その転送されたメモリセルの記憶データに応じてセンスノードCSNおよび/CSNが、HレベルおよびLレベルに駆動されてラッチされる。
センスアンプSA0−SA11のラッチデータが確定すると、次いで比較活性化信号CMENが活性化され、センスデータ転送ゲートTX0−TX11が導通し、センスアンプSA0−SA3およびSA8−SA11のラッチデータが、比較/論理処理ユニットCLU内のXOR回路XRL0−XRL7に転送されて,比較処理が実行される。また、このとき、マスクセルに対応して配置されるセンスアンプ(SA4−SA7)のラッチデータがデコーダDECに転送され、XOR回路XRL0−XRL7の比較処理に対して選択的にマスクがかけられる。
XOR回路XRL0−XRL7が転送データとサーチデータとの比較動作を行ない、比較/論理処理ユニットCLUにおいて各XOR回路の出力信号OUT0−OUT3(OUT0<0>−OUT3<0>−OUT0<7>−OUT3<7>)の論理状態が確定すると、比較活性化信号CMENが非活性化され、また、センスアンプ活性化信号SAENおよび/SAENもそれぞれ非活性化される。これにより、ビット線BLおよび/BLは、ビット線読出ゲートRGTを介して対応のセンスアンプSAのセンスノードCSNOYOBI/CSNに結合される。また、図示しないビット線負荷回路によりビット線およびセンスノードが電源電圧レベルにプリチャージされる。このプリチャージ状態においては、センスデータ転送ゲートTXが非導通状態であり、比較/論理処理ユニットCLUとセンスアンプユニットSAUとは分離される。
以上のように、検索データSDは、単に複数のエントリに共通に設けられる比較/論理処理ユニットのXOR回路XRL0−XRL7にサーチ線SL0,/SL0−SL7,/SL7を介して伝達されるだけであり、複数のエントリ共通にサーチ線は設けられていない。したがって、サーチ線を駆動する際の充放電の電流量を低減することができ、応じて消費電力を低減することができる。また、一致判定などの比較/論理処理は、複数のエントリに共通に設けられるXOR回路により実行されている。したがって、XOR回路を各メモリセルに配置する必要がなく、メモリセルのレイアウト面積が低減される。また一致判定を行なうたとえば一致線は、複数のエントリに共通に設けられており、一致線の充放電電流量は大幅に低減される。例えば、32エントリに対して1つの比較/論理処理回路15が配置される場合、この比較処理に要する電流量を1/32倍に低減することが出来る。
また、図3に示す構成において、ビット線読出ゲートRGT0−RGT11は、センス動作時に非導通状態となり、センスアンプと対応のビット線BLおよび/BLとを分離している。したがって、センスアンプの動作時の駆動負荷は小さく、高速でセンス動作を行なうことができる。ビット線BLおよび/BLにおける電位差は、ワード線WLが非選択状態へ駆動された後、メモリセルの内部の記憶ノードは、対応のビット線BLおよび/BLと分離されるため、ビット線BLおよび/BLが、図示しないビット線負荷回路により充電されその電圧レベルが上昇する。センスアンプSAとビット線BLおよび/BLの接続時、ビット線BLおよび/BLの電位が、センスアンプの記憶データに応じてまたはその負荷容量に応じて低下するものの、対応のビット線負荷回路により再び、電源電圧レベルのHレベルにプリチャージされる。
図5は、図3に示すXOR回路XRL0−XRL7の構成の一例を示す図である。XOR回路XRL0−XRL7は、与えられるマスクビットの値が異なるだけであり、図3においては、1つのXOR回路XRLの構成を代表的に示す。
図5において、XOR回路XRLは、出力信号OUT0−OUT3それぞれの出力ノードND0−ND3を比較活性化信号CMENの非活性化時電源電圧レベルにプリチャージするPチャネルMOSトランジスタPQ0−PQ3を含む。比較活性化信号CMENがLレベルの非活性化時、これのMOSトランジスタPQ0−PQ3がオン状態となり、出力信号OUT0−OUT3がHレベルにプリチャージされる。
出力信号OUT0に対してNチャネルMOSトランジスタNQ0−NQ2が設けられる。NチャネルMOSトランジスタNQ0およびNQ1は、出力ノードND0と接地ノードの間に直列に接続され、それぞれのゲートが補のビット線/BLおよび補のサーチ線/SLに結合される。NチャネルMOSトランジスタNQ2は、出力ノードND0と接地ノードの間に接続され、そのゲートにマスク指示信号/MASKを受ける。
出力信号OUT1に対しては、NチャネルMOSトランジスタNQ3−NQ5が設けられる。NチャネルMOSトランジスタNQ3およびNQ4は、出力ノードND1と接地ノードの間に互いに並列に接続され、それぞれのゲートがビット線BLおよび補のサーチ線/SLに結合される。NチャネルMOSトランジスタNQ5は、出力ノードND1と接地ノードの間に接続されかつそのゲートにマスク指示信号/MASKを受ける。
出力信号OUT2に対しては、NチャネルMOSトランジスタNQ6−NQ7が設けられる。NチャネルMOSトランジスタNQ6およびNQ7は、出力ノードND2と接地ノードの間に並列に接続され、それぞれのゲートが補のビット線/BLおよびサーチ線SLに結合される。NチャネルMOSトランジスタNQ8は、出力ノードND2と接地ノードの間に接続され、かつそのゲートに補のマスク指示信号/MASKを受ける。
出力信号OUT3に対しては、NチャネルMOSトランジスタNQ9−NQ11が設けられる。NチャネルMOSトランジスタNQ9およびNQ10は、出力ノードND3と接地ノードの間に直列に接続され、それぞれのゲートがビット線BLおよびサーチ線SLに結合される。NチャネルMOSトランジスタNQ11は、出力ノードND3と接地ノードの間に接続され、かつそのゲートに補のマスク指示信号/MASKを受ける。
マスク指示信号/MASKは、Hレベル(“1”)のときにマスクを指示する。すなわち、マスク指示信号/MASKが“1”(Hレベル)のときに、対応のデータビットが「ドントケア状態」に設定されるため、マスク指示信号MASKがHレベルのとき、出力信号OUT0−OUT3はすべて、Lレベル(“0”)に設定される。
図6は、図5に示すXOR回路XRLの入出力信号の論理を一覧にして示す図である。以下、図6を参照して、図5に示すXOR回路の動作について説明する。
データは、ビット線BLおよびサーチ線SLに現われ、補のデータビットが、補のビット線/BLおよび補のサーチ線/SLに現われるものとする。
ビット線BLおよび/BLの論理値として、センスアンプにより増幅されたデータが現われるものとする(電荷閉じ込め方式でのセンス動作時においては、センスノードCSN,/CSNの電圧レベルが伝達される)。しかしながら、図6においては、データ記憶セルの記憶データとサーチ線上の検索データとの対応関係を示すため、図6においてはビット線BL,/BLおよびサーチ線SL,/SLを示す。
マスク指示信号/MASKがLレベルのときには、MOSトランジスタNQ2,NQ5、NQ8およびNQ11はすべてオフ状態である。この場合には、ビット線BL,/BLおよびサーチ線SL,/SL上の信号の論理レベルに従って出力信号OUT0−OUT3の論理レベルが決定される。マスク指示信号/MASKが、Hレベルの時には、出力信号OUT0−OUT3は、全てLレベルである。
出力信号OUT0が“0”となるのは、補のビット線/BLおよび補のサーチ線/SLがともに“1”のときである。この場合、ビット線BLおよびサーチ線SL上には“0”のデータビットが転送される。したがって出力信号OUT0が“0”のときには、記憶セルの記憶データビットと検索データビットが等しいことを示す(図6においては、フラグEQで示す)。マスクがかけられているときにも、出力信号OUT0は、Lレベルとなり、一致を示す。
出力信号OUT1が“0”となるのは、ビット線BLが“1”であるかまたはサーチ線/SLが“1”のときである。すなわち、補のビット線/BLおよびサーチ線SLが、ともに“1”のときには、MOSトランジスタNQ3およびNQ4はともにオフ状態となり、出力信号OUT1はプリチャージ状態のHレベル(“1”)を維持する。この場合、データ記憶セルの記憶するデータビットが“0”であり、サーチデータビットが“1”であり、ビット線BL上に現われる記憶データビットよりもサーチデータビットが大きいことを示す(関係式BL<SLで示す)。マスクがかけられているとき、出力信号OUT1は、Lレベルとなり、サーチデータビットが記憶データビットよりも大きくないことが示される。
出力信号OUT2が“1”となるのは、補のビット線/BLが“0”かつサーチ線SLが“0”のときである。この場合、ビット線BL上のデータビットは“1”であり、サーチ線SL上のサーチデータビットは“0”であり、したがって、データ記憶セルの記憶データビットがサーチデータビットよりも大きいことが示される(関係式BL>SLで示す)。マスクがかけられている場合には、出力信号OUT2は、Lレベルとなり、サーチデータビットが記憶データよりも小さくないことが示される。
出力信号OUT3が“0”となるのは、ビット線BLおよびサーチ線SL上のビットがともに“1”の場合である。すなわち、データ記憶セルの記憶するデータビットおよびサーチデータビットがともに“1”のときに、出力信号OUT3がLレベル(“0”)となる。マスクがかけられている場合には、出力信号OUT3がLレベルとなり、サーチデータビットと記憶データビットとが等しいことが示される。
すなわち、出力信号OUT0またはOUT3が“0”の場合には、データ記憶セルが記憶するデータビットとサーチ線を介して伝達されるサーチデータビットとが等しいことが示される。出力信号OUT1が“1”のときには、データ記憶セルの記憶データビットよりもサーチデータビットの方が大きいことが示される。出力信号OUT2が“1”のときには、データ記憶セルが記憶するデータビットがサーチデータビットよりも大きいことが示される。
したがって、XOR回路の出力信号OUT0−OUT3を、8ビットに展開することにより、各オクテット単位で、記憶データとサーチデータの一致/不一致、および大小を検出することができる。このオクテット単位の論理処理結果を、さらにエントリレベルにまで拡張することにより、エントリに格納される検索対象のデータ列とサーチ線を介して伝達されるサーチデータの一致/不一致および大小関係を判定することができる。
図7は、比較/論理処理ユニットCLUの一致判定部の構成を概略的に示す図である。図7において、比較/論理処理ユニットCLUにおいては、データビットそれぞれに対応してXOR回路XRL0−XRL7が設けられる。一致判定時においては、これらのXOR回路XRL0−XRL7の出力信号OUT0<0>−OUT0<7>およびOUT3<0>−OUT3<7>を用いる。出力信号OUT0<0>−OUT0<3>が4入力NORゲート20へ与えられ、出力信号OUT0<4>−OUT0<7>が4入力NORゲート21へ与えられる。出力信号OUT<0>−OUT3<3>が4入力NORゲート22へ与えられ、出力信号OUT3<4>−OUT3<7>が4入力NORゲート23へ与えられる。
この4入力NORゲート20および21の出力信号が2入力ANDゲート24へ与えられ、4入力NORゲート22および23の出力信号が2入力ANDゲート25へ与えられる。これらの2入力ANDゲート24および25の出力信号が、2入力ORゲート26へ与えられる。
図6に示すように、記憶データとサーチデータとが一致している場合には(ドントケア状態を含めて)、出力信号OUT0<0>−OUT0<7>の組または出力信号OUT3<0>−OUT3<7>の組がすべて“0”となる。したがって、一致時においては、NORゲート20および21の出力信号がともにHレベルとなるか、またはNORゲート22および23の出力信号がともにHレベル(“1”)となる。したがって、ANDゲート24の出力信号がHレベル(“1”)のときまたはANDゲート25の出力信号が“1”(Hレベル)のときに、記憶データと検索データが一致していると判別される。したがって、これらのANDゲート24および25の出力信号を受けるORゲート26からの信号BLeqSLが“1”(Hレベル)のときに、記憶データと検索データとが一致していると判別される。このORゲート26の出力信号をインバータ27により反転することにより、インバータ27の出力信号BLneSLが“1”のときに、記憶データと検索データとが不一致であることが示される。
比較/論理処理ユニットCLUにおいては、4つのXOR回路XRL0−XRL3とXOR回路XRL4−XRL7の間にデコード回路が配置される。したがって、面積的に余裕を持って、これらのゲート20−27を配置することができる。
図8は、1つのエントリENT♯Aにおける一致/不一致判定結果を示す部分の構成の一例を示す図である。図8において、エントリENT♯AのサブエントリSERYに共通に、グローバルマッチ線GMLが配置される。エントリENT♯Aは、複数のサブエントリSERY0−SERYmに分割される。サブエントリSERY0−SERYmに対応して、比較/論理処理ユニット(CLU)内において一致判定部EXR0−EXRmが設けられる。一致判定部EXR0−EXRm各々の構成は、図7に示す構成に相当する。
これらの一致判定部EXR0−EXRmそれぞれに対応して、グローバルマッチ線GMLに並列に、NチャネルMOSトランジスタNGX0−NGXmが設けられる。これらのMOSトランジスタNGX0−NGXmは、それぞれ、ゲートに不一致検出信号BLneSL0−BLneSLmを受け、導通時、グローバルマッチ線GMLを接地ノードに結合する。このグローバルマッチ線GMLに対しては、比較活性化信号CMENの非活性化時グローバルマッチ線GMLを電源電圧レベルにプリチャージするPチャネルMOSトランジスタPQ10が設けられる。
この図8に示す構成において、一致判定部EXR0−EXRmにおいて、サーチ線SLからのサーチデータと対応のサブエントリからビット線BLを介して伝達される記憶データが不一致の場合、対応の不一致検出信号BLneSLがHレベル(“1”)となる。したがって、一致判定部EXR0−EXRmのいずれかにおいて不一致が判定された場合、MOSトランジスタNGX0−NGXmのいずれかが導通し、このグローバルマッチ線GMLが放電され、一致指示フラグEQFは、“0”となる。
一方、一致判定部EXR0−EXRm全てにおいて一致判定が行なわれた場合、不一致指示信号BLneSL0−BLneSLmはすべて“0”(Lレベル)である。したがって、この状態においては、MOSトランジスタNGX0−NGXmはすべてオフ状態であり、グローバルマッチ線GML上の一致指示フラグEQFは、Hレベルを維持する。このフラグEQFの“0”および“1”に従がって、記憶データとサーチデータとの一致/不一致を識別することができる。
なお、この一致指示フラグEQFをインバータにより反転して、不一致指示フラグ(NEQF)を、不一致検出時アサートするように構成してもよい。
図9は、比較/論理処理ユニットに含まれる大小判定回路の構成の一例を示す図である。図9において、大小判定回路は、複数の直列に接続されるNチャネルMOSトランジスタNQ20−NQ27と、これらのMOSトランジスタNQ20−NQ27と並列に接続されるPチャネルMOSトランジスタPQ20−PQ27を含む。MOSトランジスタNQ20−NQ27のゲートへは、それぞれ一致指示ビットEQ<0>−EQ<7>が与えられ、MOSトランジスタPQ20−PQ27のゲートへは、プリチャージ指示信号/PREが与えられる。MOSトランジスタNQ20−NQ27により、ローカルマッチ線28が、セグメントMNA0−MNA7に分割される。
この一致指示ビットEQ<0>−EQ<7>は、XOR回路XRL0−XRL7各々の出力信号OUT0およびOUT3の否定論理積演算(NAND)結果を示す信号である。すなわち、出力信号OUT0およびOUT3は、一致を示すとき、その信号レベルは“0”であり、一致指示ビットEQ<0>−EQ<7>は、そのサーチデータビットと記憶データビットとが一致しているときに“1”(Hレベル)に設定される。
最上位ビット位置のノードMND7に対して、充電用のPチャネルMOSトランジスタPR0および放電用のNチャネルMOSトランジスタNR0が設けられる。MOSトランジスタPR0は、プリチャージ指示信号/PREの活性化時に導通し、ノードMND7を電源ノードに結合する。NチャネルMOSトランジスタNR0は、大小判定活性化信号DETRの活性化時導通し、ノードMND7を接地ノードに結合する。したがって、プリチャージ指示信号/PREの活性化時、MOSトランジスタPQ24−PQ27がオン状態となり、MOSトランジスタPR0により、ローカルマッチ線28のノードMND0−MND7はすべて電源電圧レベルにプリチャージされる。
ノードMND0−MND7それぞれと大小検出線29の間に、NチャネルMOSトランジスタNQ30−NQ37が設けられる。これらのMOSトランジスタNQ30−NQ37は、そのゲートに、対応のXOR回路の出力信号OUT1<0>−OUT1<7>を受ける。これらの信号OUTOUT1<0>−OUT1<7>は、各々、対応のサーチデータビットが対応のデータ記憶セルの記憶データよりも大きいときに“1”に設定される。
大小検出線29に対してまた、プリチャージ指示信号/PREに応答して導通するPチャネルMOSトランジスタPR1が設けられる。大小検出線29は、プリチャージ時、電源電圧レベルにプリチャージされる。
図10は、図9に示す大小判定部の動作を示す信号波形図である。以下、図10を参照して、図9に示す大小判定部の動作について説明する。
比較/論理処理動作前、すなわち、比較活性化信号CMENの活性化前、プリチャージ指示信号/PREはLレベルであり、ローカルマッチ線28は、電源電圧レベルにプリチャージされ、また、大小検出線29も、電源電圧レベルにプリチャージされる。
比較活性化信号CMENが活性化されると、応じてプリチャージ指示信号/PREも非活性化され、このローカルマッチ線28および大小検出線29の電源電圧レベルへのプリチャージが停止する。この後、XOR回路XRL0−XRL7において一致検出および大小判定が行なわれる。
XOR回路XRL0−XRL7の出力信号OUT1<0>−OUT<7>の状態が確定し、また、一致指示信号EQ<0>−EQ<7>の状態を確定すると、大小判定活性化信号DETRが活性化される。応じて、MOSトランジスタNR0が導通し、ノードNND7の接地電圧レベルへの放電が行なわれる。対応のサブエントリに含まれるデータ記憶セルの記憶データとサーチ線上に現われるサーチデータとが一致している場合、一致指示信号EQ<0>−EQ<7>はすべて活性状態であり、MOSトランジスタNQ20−NQ27が全て導通状態となる。この状態においては、ローカルマッチ線28は、全体にわたって、MOSトランジスタNR0により、接地電圧レベルに放電される。
サーチデータと記憶データとが一致している場合には(ドントケア状態を含めて)、出力信号OUT1<0>−OUT1<7>はすべてLレベル(“0”)であり、MOSトランジスタNQ30−NQ37はオフ状態となり、大小検出線29は、プリチャージ電圧レベルのHレベルを維持する。
すなわち、サーチデータと記憶データ(検索対象データ)とが一致している場合には、ローカルマッチ線28からの一致指示フラグMTは、Lレベル(“0”)となりかつ大小検出線29上の大小判定フラグGTが、Hレベル(“1”)となる。
データ記憶セルの記憶データよりもサーチデータが小さい場合を考える。この場合、不一致の最上位ビット位置において、ビット線BL上のデータビットが“1”であり、サーチ線SL上のデータビットが“0”となる。この条件においては,NチャネルMOSトランジスタNQ20−NQ27のうち、不一致の最上位ビット位置に対応するMOSトランジスタがオフ状態である。したがって、ローカルマッチ線28の一致指示フラグMTは、その不一致検出ビットに対応するMOSトランジスタによりMOSトランジスタNR0から分離されて放電されないため、一致指示フラグMTは、プリチャージレベルのHレベルに維持される。
また、不一致のビットのうちの最上位ビットに対応するXOR回路の出力信号OUT1は、“0”(Lレベル)であり、対応のMOSトランジスタはオフ状態となる。不一致のビット位置よりも上位ビットにおいては、サーチデータビットとセルの記憶データビットが一致している。したがって、この場合も、出力信号OUT1は、“0”であり、MOSトランジスタNQ30−37において、不一致のビット位置よりも上位のMOSトランジスタもオフ状態となる。したがって、大小検出線29において、不一致の最上位ビット位置およびそれより上位のビット位置においてローカルマッチ線28と分離され、不一致の最上位ビット以下のビット位置においては、ローカルマッチ線28の放電は行なわれない。したがって、この不一致の最上位ビットよりも下位のビットにおいて出力信号OUT1がHレベル(“1”)となっても、大小検出線29の接地電圧レベルへの放電経路は存在しない。したがって、大小検出線29からの大小判定フラグGTは、Hレベル(“1”)を維持する。
すなわち、サーチデータが、検索対象データ(セルの記憶データ)よりも小さい場合には、一致指示フラグMTが、Hレベル、かつ大小判定フラグGTがHレベルとなる。
次に、サーチデータが、記憶データよりも大きい場合を考える。この場合、サーチ線SL上のデータビットが“1”でありかつ対応のビット線BLの記憶データビットが“0”となり、対応のXOR回路の出力信号OUT1は”1”となる。したがって、MOSトランジスタNQ30−NQ37のうち、最上位の不一致ビット位置のMOSトランジスタがオン状態となる。
この場合、ローカルマッチ線28のMOSトランジスタNQ20−NQ27においても、最上位の不一致ビット位置に対応するMOSトランジスタがオフ状態となる。したがって、一致ビット後の最上位ビットにおいてサーチデータビットが記憶データビットよりも大きいと判定された場合、大小検出線29は、MOSトランジスタNR0およびMOSトランジスタNQ30−NQ37のうちの対応のMOSトランジスタにより放電される。したがって、検索データが記憶データよりも大きい場合には、この大小検出線29上の大小判定フラグGTはLレベルとなる。ローカルマッチ線28においては、不一致ビット位置において、対応のMOSトランジスタがオフ状態となり、ローカルマッチ線28が分断され、全体の放電は行なわれない。したがって、一致指示フラグMTは、プリチャージ状態のHレベル(“1”)を維持する。
なお、ドントケア状態が、不一致の最上位ビットよりも上位に存在しても、この状態は一致状態として識別されるため、ローカルマッチ線上の対応のMOSトランジスタがオン状態となる。したがって、大小検出線29とローカルマッチ線との間の対応のMOSトランジスタがオフ状態となっても、次段以降の最上位の不一致ビットに従って、大小判定が正確に行なわれる。
すなわち、サーチデータが記憶データ(検索対象データ)よりも、大きい場合には、一致指示フラグMTがHレベル、大小判定フラグGTがLレベルとなる。
以上のようにして、不一致の最上位ビット位置の記憶およびサーチデータビットの大小に応じた電圧レベルに、大小検出線29からの大小判定フラグGTの電圧レベル(論理レベル)を設定することができる。このサブエントリ単位で判定される一致および大小を全エントリに展開することにより、サーチデータと検索対象データの一致および大小を、一致検出結果を利用して判定することが出来る。また、一致判定結果を利用して大小判定を行なっており、大小判定のための回路構成を簡略化することが出来、大小判定回路の占有面積を低減することが出来る。
図11は、エントリのデータ列とサーチデータとの大小を判定する回路部分の構成の一例を示す図である。図11において、サブエントリに対応する比較/論理処理ユニット各々に対応して、ANDゲートAG0−AGmが設けられる。ANDゲートAG0−AGmは、各々第1の入力に対応の論理処理ユニットからの大小判定フラグGT0−GTmを受ける。第2の入力に、前段のANDゲートの出力信号を受ける。初段のANDゲートAG0の第2の入力は、電源ノードに結合される。初段のANDゲートAG0が、最上位ビット位置に対応する。
この図11に示す構成の場合、大小判定フラグGT0−GTmにおいて上位の大小判定フラグGTがLレベルとされると、次段以降のの大小判定フラグGTの論理レベルにかかわらず、最終段のANDゲートAGmからのメイン大小判定フラグGTMは、Lレベルに固定され、サーチデータが、記憶データよりも大きいことが示される。
エントリデータとサーチデータの一致は、各サブエントリからの一致指示フラグMTが、全て一致を示すLレベルのときに、最終の一致フラグをHレベル(“1”)に設定する。NORゲートを利用することにより、全一致指示フラグGT0−GTmに従って、最終一致フラグを生成することが出来る。
また、サーチデータが記憶データよりも小さいことを識別する場合には、この最終のメイン大小判定フラグGTMおよび最終の一致指示フラグ(一致指示フラグの否定論理和)MTがともにHレベルのときに、このサーチデータが記憶データよりも小さいと判別される。または、図11に示す構成において、ANDゲートに代えてORゲートを用い、初段のORゲートの第1の入力に電源電圧に代えて接地電圧を供給する。
以上のように、各XOR回路において各ビット単位での大小判定を行なう回路構成を設けることにより、この各サブアレイ単位でデータビットの記憶データとの大小判定を行なうことができ、応じてエントリデータ列とサーチデータ列との大小を判定することができる。この場合、複数のエントリに対応して大小判定回路が配置されるだけであり、各セルに対して大小判定部を設ける構成に比べて、占有面積を低減することが出来る。また、一致線および大小検出線も複数のエントリに共通に設けられており、充放電電流を低減することが出来る。また、サブエントリ単位で一致および大小判定を行ない、その後、各サブエントリの判定結果を論理ゲートを用いて合成して最終の判定結果(一致、大小判定結果)を生成している。従って、マッチ線または大小検出線をエントリ全体にわたって配置して充放電を行なう構成に比べて、高速で判定結果を生成することが出来る。
[デコーダの構成]
各オクテット単位において、マスクビットは、本発明においては4ビットであり、従って、16通りのマスク情報の書込に制限される。通常、CAMにおいては、各ユニットセルにマスクビットが格納されるため、オクテットに対し、256通りのマスク情報を書込むことができる。このため、デコーダの構成として、マスクビットパターンの低減が可能かを考える。TCAMの代表的な用途として、アドレス検索、たとえばIPアドレスのフォワーディングがある。このIPアドレスのフォワーディングにおいては、最長一致検索ルールに従ってアドレス経路検索が行なわれる。
図12に示すように、1つのIPアドレスは、例1に示すように、32ビットで表わされ(IPv4(インターネットバージョン4)の場合)、有効ビットに対しては、マスクビットが“1”に設定される。この場合、オクテットごとに、ピリオドで区切り、各IPアドレスを十進数で示し、/以降に、有効ビット数を示す。図12においては、一例として、IPアドレスが10.1.3.7/27の場合が示される。
このIPアドレスを、2進数表示をした場合、図12のIPアドレスで示すように、第1オクテット部、第2オクテット部、第3オクテット部、および第4オクテット部に分類され、それぞれ十進数で10、1、3、および7が格納される。この第4オクテット部において、5ビットのマスクビットが“0”に設定される。このマスクビットの配置については、必ず下位ビットから順番に“0”に設定されるというIPアドレスのアプリケーション特有のルールが設けられる。したがって、オクテット単位でのマスクを行なう場合、「11111111」から「00000000」までの9通りのビットパターンに対するマスクビットが準備されればよい。ここで、図12においては、内部マスク<7:0>が、オクテットデータに対するマスクビットを示し、マスクビット<3:0>が、マスクセルに格納されるビットである。
また、TCAMの別の代表的なアプリケーションとして、アクセスコントロールリスト(ACL)がある。このACLにおいては、基本的には、送信元のIPアドレスおよびTCPポート番号などの組合せにより、パケットの廃棄処理が実行される。このため、これらの組合せ数に相当するエリアをマスクする機能が設けられていれば十分である。本実施の形態においては、オクテット単位で、エントリがサブエントリに分割される。したがって、8ビット単位でのエリアマスクはすでに可能である。図12に示すように、さらに、2ビットのエリアマスクを行なう3種類のパターン、および4ビットのエリアマスクを行なう4種類のビットパターンを追加すれば、ACL用途には十分対応可能と考えられる。
一方、図13に示すようなアドレスに対するマスクは、本発明のアプリケーション上において発生することはほとんどないと考え、このようなマスクビット“0”および“1”が混在するマスクビットパターンは考える必要がないとする。したがって、4ビットマスクを用いてオクテット記憶データをマスクすることにより、エントリのメモリセル数を3/4(=12/16)に低減することができる。
図14は、比較/論理処理ユニットCLUの配置を概略的に示す図である。図14においては、この比較/論理処理ユニットCLUに対応して設けられるセンスアンプユニットSAUの配置も併せて示す。
図14において、データ記憶セルCEL0<7:4>、マスクセルCEL1<3:0>およびデータ記憶セルCEL0<3:0>に対応して、センスアンプSA11−SA0が配置され、それぞれビット線対を介して与えられる記憶データビットを増幅する。センスアンプSA7−SA4に対応してデコーダDECが配置され、デコーダDECの両側に、XOR回路群XRL<7:4>およびXRL<3:0>が配置される。ここで、XOR回路群XRL<7:0>は、図3に示すXOR回路XRL7−XRL0を示す。
デコーダDECからの上位マスク指示信号MASK<7:4>がXOR回路群XRL<7:4>へ与えられ、この下位の4ビットマスク指示信号MASK<3:0>が、XOR回路群XRL<3:0>へ与えられる。
このXOR回路群XRL<7:4>には、サーチ線SL<7:4>を介してサーチデータビットが与えられ、XOR回路群XRL<3:0>へは、サーチ線SL<3:0>を介してサーチデータビットが与えられる。
図15は、図14に示すデコーダDECの構成の一例を概略的に示す図である。図15においては、デコーダDECは、8ビットのマスクデータMASK<7:0>をそれぞれ格納するレジスタREG15−REG0と、センスアンプSA7−SA4からの出力信号SA<7:4>を介して与えられるマスクセルCEL1<3:0>からのデータを受けてレジスタを選択するレジスタ選択回路RGSELを含む。
このレジスタ選択回路RGSELにより選択されたレジスタの記憶データの上位マスクデータMASK<7:4>が、マスク指示信号としてXOR回路群XRL<7:4>へ与えられる、この下位マスクデータMASK<3:0>が、マスク指示信号としてXOR回路群XRL<3:0>へ与えられる。
この図15に示すデコーダDECは、通常の、レジスタファイルと同様の構成を備える。レジスタREG15−REG0に、図12に示す内部マスクに対応するマスクデータMASK<7:0>を格納する。レジスタ選択回路RGSELにより、センスアンプSA7−SA4からのデータに従って1つのレジスタを選択する。これにより、4ビットのマスクセルからのマスクデータに従って、8ビットのマスク指示信号を生成することができる。
なお、このデコーダDECは、4つのセンスアンプSA7−SA4に対応する領域に配置される。したがって、レジスタREG15−REG0を、各列に4つのレジスタが配置され、このレジスタ列を4列設ける。レジスタ列を、上位のマスクセルCEL1<3:2>の記憶データに従って選択し、選択レジスタ列において下位のマスクセルCEL1<1:0>の記憶データに従って1列の4つのレジスタから1つのレジスタを選択する。これにより、4つのセンスアンプSA7−SA4の配置領域に対応して、16ワードを記憶するレジスタファイルで構成されるデコーダDECを、十分に余裕を持って配置することができる。
このデコーダDECからのマスク指示信号MASK<7:4>およびMASK<3:0>に従って、記憶回路群XRL<7:4>およびXRL<3:0>は、サーチ線SL<7:4>およびSL<3:0>上のサーチデータとセンスアンプからのデータ<7:4>および<3:0>の一致判定および/または大小判定を実行する。
[デコーダの変更例]
図16は、デコーダDECの変更例のデコード論理を一覧にして示す図である。4ビットマスクセルCEL1<3:0>において、下位2ビットのマスクセルCL<1:0>が“10”のときには、上位の4ビットマスク指示信号(マスクデータ)MASK<7:4>を“1111”に設定し、この上位2ビットマスクセルCL<3:2>の値が低減するにつれ、下位4ビットマスク指示信号MASK<3:0>の0の数を下位ビット側から順次増大させる。これは、最長一致検索の場合、マスクは、下位ビット側から順にかけられることを利用する。
下位2ビットマスクセルCEL1<1:0>の記憶データが“01”のときには、下位4ビットマスク指示信号MASK<3:0>を、“0000”に固定する。上位4ビットマスク指示信号MASK<7:4>の0の数を、上位2ビットマスクセルCEL1<3:2>の記憶する値に応じて変化させる。この場合、上位2ビットマスクセルCL<3:2>の記憶値が“10”、“01”、“00”、および“11”に変化するにつれて、上位4ビットマスク指示信号MASK<7:4>における0の数を下位ビット側から順に増大させる。
下位2ビットマスクセルCEL1<1:0>の記憶データが“11”の場合には、8ビットマスク指示信号MASK<7:4>および4ビットマスク指示信号MASK<3:0>を、それぞれ“1111”および“0000”に設定する。
図17は、図16に示すデコード論理を実現するデコーダDECの構成の一例を概略的に示す図である。図17においては、3段のマルチプレクサが設けられる。初段のマルチプレクサ30は、下位2ビットのマスクセルCEL1<1,0>の記憶値に従って、“1111”および“0000”のうちの1つを選択する。このマルチプレクサ30は、マスクセルCEL1<1,0>の記憶するビット値が“10”のときには、“1111”を選択し、このビット値が、“01”のときには、“0000”を選択する。このマルチプレクサ30は、下位2ビットマスクセルCEL1<1,0>の記憶値が“11”のときには、選択は行なわず、その出力は不定状態となる(以下に説明するように、この不定状態は何ら問題とならない)。
2段目のマルチプレクサ31は、上位2ビットマスクセルCEL1<3,2>の記憶値に従って、マルチプレクサ30の出力ビット、“1110”、“1100”、および“1000”のうちの1つを選択する。このマルチプレクサ31においては、上位2ビットのマスクセルCEL1<3,2>の記憶ビット値が、“11”以外の場合、図16に示すように、下位マスク指示信号MASK<3:0>と上位マスク指示信号MASK<7:4>のパターン配列が、同じとなることを利用する。
3段目においては、2つのマルチプレクサ32および33が並列に設けられる。マルチプレクサ32は、1ビットのマスクセルCEL1<1>の記憶ビット値に従って、“1111”およびマルチプレクサ31の出力ビットMTMP<3:0>の一方を選択して、上位4ビットマスク指示信号MASK<7:4>を生成する。マルチプレクサ33は、最下位マスクセルCEL1<0>のビット値に従って、“0000”およびマルチプレクサの出力ビットMTMP<3:0>の一方を選択し、下位4ビットマスク指示信号MASK<3:0>を生成する。
これらのマルチプレクサ32および33は、図16に示すように、マスクセルCEL1<1>と記憶ビット値が“1”のときには、上位4ビットマスク指示信号MASK<7:4>が“1111”となり、最下位マスクセルCEL1<0>の記憶ビット値が“1”のときには、下位4ビットマスク指示信号MASK<3:0>が、“0000”となることを利用する。
この図17に示すデコーダDECの構成の場合、マスクセルCEL1<1,0>の記憶ビット値が“11”の場合に、マルチプレクサ30の出力データは不定状態となる。しかしながら、この場合、最終段のマルチプレクサ32および33は、それぞれ“1111”および“0000”を選択するため、マルチプレクサ30の出力信号の不定状態は、何らマスク指示信号MASK<7:0>の論理値に対し悪影響を及ぼさない。
このデコーダDECにおいて、マルチプレクサ30−33各々へ与えられる選択対象のビットパターンは、たとえばレジスタに格納される。マルチプレクサが3段設けられていても、これらのマルチプレクサ30−33は、単に、トランスミッションゲートで構成されるだけであり、この伝搬遅延は十分に小さくすることができ、XOR回路群(一致検出回路群)XRL<7:0>における比較判定(一致判定および大小判定)の処理に対して確実にマスクをかけることができる。
この図16および図17に示すデコーダDECの構成の場合、ACL制御用途よりもIPアドレスのフォワーディング用途に利用する。この図17に示すデコーダの場合のXOR回路においては、以下に示すように、3値の一致判定が行なわれる。
図18は、この発明の実施の形態1の変更例に従うCAMの要部の構成を概略的に示す図である。この図18に示す構成においては、図16および図17に示すデコーダからのマスク指示信号MASK<7>−MASK<0>に従って、一致検出動作に対するマスクが選択的にかけられる。
図18においては、1つのサブエントリのデータ記憶セルCEL0<7:0>に対応するビット線対BL<7>,/BL<7>−BL<0>,/BL<0>を示す。これらのビット線対BL<7>,/BL<7>−BL<0>,/BL<0>各々に対応してセンスアンプSAA7−SAA0が設けられる。これらのセンスアンプSAA7−SAA0各々に対応して、一致検出を行なうXOR回路XRR7−XRR0が設けられる。
これらのXOR回路XRR7−XRR0の各々は、互いに直列に接続されるNチャネルMOSトランジスタTR0およびTR1と、互いに直列に接続されるMOSトランジスタTR2およびTR3を含む。MOSトランジスタTR0,TR2は、ゲートに対応のビット線BLi、/BLiからセンスアンプを介して与えられる相補な出力信号を受け、MOSトランジスタTR1,TR3は、それぞれのゲートがサーチ線/SL,SLに結合される。MOSトランジスタTR0およびTR2は、マッチMLに並列に結合される。
これらのXOR回路XRR7−XRR0に対し、それぞれマスク指示信号MASK<7>−MASK<0>をゲートに受けるマスクトランジスタTRM7−TRM0が設けられる。これらのマスクトランジスタTRM7−TRM0の各々は、NチャネルMOSトランジスタで構成される。マスクトランジスタTRM7−TR0の各々は、対応のXOR回路XRR7−XRR0のMOSトランジスタTR1およびTR3の共通ソースノードに結合される。
この図18に示す構成において、マスク指示信号MASK<i>(i=0−7)が“1”のときには、対応のマスクトランジスタTRMiがオン状態となり、対応のXOR回路XRRiは、一致判定動作を行ない、サーチデータビットとデータ記憶セルからの記憶データビットとが不一致のときには、2つのトランジスタの直列体において1つの直列体が導通状態となり、マッチ線MLを放電する。ここで、ビット線BLに結合されるMOSトランジスタと補のサーチ線/SLに結合されるMOSトランジスタとが、直列に接続され、ビット線/BLに結合されるMOSトランジスタとサーチ線SLに結合されるMOSトランジスタとが直列に接続されている。
一方、対応のマスク指示信号MASK<i>が“0”のときには、対応のマスクトランジスタTRMiはオフ状態であり、対応のXOR回路XRRiは、判定動作を行なわず、マッチ線MLのプリチャージ電位には何ら影響を及ぼさない。
上述のように、この図18に示す構成を利用することにより、この発明に従うCAMを、3値判定を行なうTCAMとして利用することができる。
[CAMの変更例]
図19は、この発明の実施の形態1に従うCAMの変更例の構成を概略的に示す図である。この図19に示すCAMの構成は、以下の点で、図18に示すTCAM(3値CAM)の構成と異なる。すなわち、XOR回路XRR7−XRR0に対し、マスクトランジスタTRM7−TRM0は、設けられない。これらのXOR回路XRR7−XRR0各々において、MOSトランジスタTR1およびTR3のソースノードは接地ノードに結合される。この図19に示すCAMの他の構成は、図18に示すTCAMの構成と同じであり、対応する部分には同一参照番号を付し、その詳細説明は省略する。
図19に示すCAMの構成の場合、XOR回路XRR7−XRR0は、対応のデータ記憶セルからのデータビットとサーチ線SLを介して伝達されるサーチデータビットとの一致/不一致を判定する。これらのXOR回路XRR7−XRR0は、2値判定を行なうだけであり、この図19に示すCAMにより、小占有面積かつ低消費電力の2値CAMを実現することができる。
図20は、この発明に従う内容参照メモリの構成要素と従来の内容参照メモリの構成要素の数の対比を一覧にして示す図である。図20において、エントリ数♯Nとデータビットの数(ビットb:)の積それぞれに対する構成要素の数、すなわちデータ記憶セルCEL0、マスクビットセルCEL1、および比較器(一致検出回路)XORの数および構成要素の合計数を示す。
従来例においては、各CAMセルにおいて、データビットとマスクビットとを記憶するセルCEL0およびCEL1が配置され、また各CAMセルに対し比較器(XOR回路)が配置される。したがって、各CAMの容量値に応じた数の構成要素が必要とされる。
一方、本発明に従えば、マスクセルの数は、データを記憶するセルの数の1/2倍であり、比較器(XOR回路)は、全エントリに対し共通に設けられる。したがって、このXOR回路(比較回路)の数は、1エントリのビット幅に等しい。したがって、合計の要素数は、従来例の構成に比べて大幅に低減することができ、構成要素の数を約半分にまで低減することができ、大幅に占有面積を低減することができる。
また、サーチ線は、各比較器(XOR回路)まで繋がるだけであり、複数のエントリに対してはサーチ線は配設されない。したがって、サーチ線の充放電電流を大幅に低減することができる。また、マッチ線を利用して、一致/不一致を判定する場合、このマッチ線も複数のエントリに1つ設けられるだけであり、マッチ線の充放電電流も大幅に低減される。これにより、低消費電流でかつ小占有面積のCAMを実現することができる。
図21は、この発明の実施の形態1に従う内容参照メモリの全体の構成を概略的に示す図である。図21において、CAMアレイ50は、複数のCAMブロックCB00−CB0n…CBk0−CBknに分割される。CAMブロックCB00−CB0n…CBk0−CBknの各々は、同一構成を有するため、図21においては、CAMブロックCB0nの構成要素に参照番号を付す。
CAMブロックCB0nは、SRAMセルが行列状に配列されるサブメモリアレイ55と、与えられたデータに従ってサーチ線を駆動するサーチ線駆動回路56と、与えられたアドレス信号に従ってサブメモリアレイ55のエントリを選択するアドレスデコーダ57とを含む。サブメモリアレイ55は、図1に示すメモリアレイ1に対応する。
サブメモリアレイ55においては、各エントリに対応してワード線が配置され、各エントリのビットに対応してビット線対が配置される。これは、先に図1を参照して説明したメモリアレイ1の構成と同じである。このサブメモリアレイ55に対してセンスアンプ回路11Bおよび比較/論理処理回路15Bが設けられる。センスアンプ回路11Bは、選択されたエントリのデータ記憶セルおよびマスクセルの記憶データを検知し増幅するとともに、対応のサブメモリアレイ55の選択メモリセルへのデータ書込を行なう(書込回路は示していない)。
このセンスアンプ回路11Bの構成も、先の図3において示した構成と同じである。比較/論理処理回路15Bは、比較回路(XOR回路)およびデコード回路を含み、この比較/論理処理回路15Bに含まれる論理処理ユニットCLUの構成も、先の図3から図15において示した構成と同じである。
これらのCAMブロック群に対し、ローカルアドレス/データ線ADL0−ADLkが設けられる。ローカルアドレス/データ線ADL0−ADLkは、共通にメインアドレス/データ線MADLに結合される。
ここで、このアドレス/データ線ADL0−ADLkには、アドレス信号およびデータ(書込データおよびサーチデータ)が転送される。
また、横方向に整列するCAMブロックCBi−CBin(i=0−k)に共通に、ローカルサーチ結果線SRiが配置される。これらのCAMブロック列それぞれに対応して配置されるローカルサーチ結果線SR0−SRkへは、それぞれ対応のCAMブロックからのサーチ結果を示す信号が並列に伝達される。これらのローカルサーチ結果線SR0−SRkは、共通にメインサーチ結果線MSRに結合される。
このCAMアレイ50に対し、データの書込および検索動作を行なうために、アドレス/データ入力回路63、命令入力回路64、およびクロック入力回路65が設けられる。クロック入力回路65は、クロック端子62からのクロック信号CLKに同期して内部クロック信号を生成し、このCAMにおける内部動作サイクルを規定する各種信号を生成する。アドレス/データ入力回路63は、アドレス/データ入力端子60からのアドレス信号およびデータを、クロック入力回路65からのクロック信号に同期して取込み、内部のアドレス信号およびデータを生成する。命令入力回路64は、クロック入力回路65からの内部クロック信号に従って命令入力端子61からの命令INSTを受けてデコードする。
図21に示すように、CAMアレイ50においては、複数のCAMブロックが設けられており、各CAMブロックにおいてサーチ動作が実行される。この場合、CAMブロックCB00−CB0nからCBk0−CBknにおいて、サブメモリアレイ55から1つのエントリを選択する必要がある。サブメモリアレイ内において1つのエントリを選択するために、プリサーチ回路67が設けられる。このプリサーチ回路67は、データ書込時においては、アドレス/データ入力回路63からのアドレス信号に従って、アドレス信号をプリデコードし、このプリデコードアドレス信号を、CAMブロックCB00−CBknへ与える。選択されたCAMブロックにおいてワード線が選択され(アドレスデコーダ57による)、対応のメモリセル(データ記憶セルおよびマスクセル)にデータの書込が実行される。
サーチ動作時においては、プリサーチ回路67は、このアドレス/データ入力回路63からのパケットデータに含まれる所定のデータ(これを特徴データと以下称す)をデコードし、各CAMブロックCB00−CB0n−CBk0−CBknに対しこのプリサーチにより検出された特徴データに対応するエントリを指定する信号を生成する。
このCAMの内部動作を制御するために、制御回路66が設けられ、この制御回路66は、クロック入力回路65からの内部クロック信号および命令入力回路64からの動作モード指示に従ってプリサーチ回路67およびCAMアレイ50の内部動作を制御する。この制御回路66により、先に示したセンスアンプ活性化信号SAEN等の各種制御信号が生成される。
CAMは、さらに、プライオリティエンコーダ70と、プライオリティエンコーダ70の出力信号を受けるサーチ結果出力回路72を含む。このプライオリティエンコーダ70は、CAMブロックCB00−CB0nからCBk0−CBknにおいて複数のCAMブロックから同一の判定処理信号(一致または大小判定結果指示信号)が出力された場合、最も優先順位の高いCAMブロックのエントリ(たとえばアドレスの小さなCAMブロックのエントリ)のサーチ結果を選択し、この選択されたCAMブロックのエントリのアドレスを示すエントリアドレスインデックスを生成する。サーチ結果出力回路72は、このプライオリティエンコーダ70の出力するアドレスインデックスを受けて、サーチ結果出力端子74から出力する。
このサーチ結果出力端子74からのアドレスインデックス等に従って、次ホップ先アドレスの読出または対応のパケットの転送の許可/拒否の処理が実行される。
この場合、サーチ結果出力回路72は、プライオリティエンコーダ70からの最も優先順位の高いエントリを示すCAMブロックアドレスを特徴データとともに受け、そのアドレスおよび特徴データの組合せに対応するインデックスを出力するように構成されてもよい。たとえば、サーチ結果出力回路72をメモリで構成し、プライオリティエンコーダ70からのエントリ指示アドレス(CAMアドレスおよび特徴データの組合せ)に従って対応の記憶内容を出力する。
このプリサーチ回路67を利用して、サーチ動作時において、CAMブロックCB(CB00−CB0nからCBk0−CBknを総称的に示す)において1つのエントリを予め選択する。これにより、各CAMブロックCBにおいて、複数のエントリが並行に選択される状態を回避することが出来、確実に、サーチ動作を行なうことができる。以下、サーチ動作におけるプリサーチ回路67のプリサーチについて説明する。
ルータおよびファブリックスイッチなどのインターネット用途においては、サーチデータは、IPアドレスである。LAN(ローカル・エリア・ネットワーク)において、このネットワーク内の処理端末に対しては、プライベートIPアドレスが割当てられる。このプライベートIPアドレスは、通常、クラスと呼ばれる特徴により分類される。
図22は、このサーチデータにより検索される検索対象のIPアドレス、すなわち各CAMブロックに配置されるエントリの記憶データのリストを示す図である。図22において、エントリアドレス♯0から順に、検索対象データの32ビットIPアドレスを格納する。IPアドレスは、各オクテット単位で、十進数をピリオドで区切り、有効ビット長を/の後に記述する。このクラスは、第1オクテットの値により規定され、このクラスにより、ネットワークアドレスの長さおよびホストアドレスの長さが規定される。
図22に示すように、エントリアドレス♯0から♯9においては、この第1オクテットの値が“10”であり、エントリアドレス♯50から♯52および…においては、第1オクテットの値は“127”である。さらに、エントリアドレス♯100以降においては、第1オクテットの値は、“191”である。従って、これらの第1オクテットの値によりクラスが、たとえばクラスA−C等に分類される。
この図22に示すリストにおいては、エントリアドレス♯0から♯6においては、同じプレフィックスデータ“10.1.1.1”が記述される。これらのエントリアドレス♯0から♯6においては、有効ビット長が異なる。有効長の長いもの(/の次の数字により示される)は、小さなアドレス位置に記述し、有効長の短いものをアドレスの大きい位置に記述する。このエントリに対するIPアドレスの記述法則は、最長一致検索を考慮したプレフィックスデータの配置である。たとえば、検索データとしてデータ“10.1.1.1”が入力される場合、TCAMエントリアドレス♯0から♯6においてすべて一致比較により一致が検出され、多重ヒット状態となる。この場合、最も有効長の長いプレフィックスデータを出力するのが最長一致検索ルールである。このため、プライオリティエンコーダ70(図21参照)により、一致したエントリのアドレスのうち最も小さな値のエントリアドレスを選択する。これにより、有効長の最も長い一致データを検索することができ、エントリアドレス♯0を、所望の最終サーチ結果として得ることができる。
サーチデータが、“10.1.1.2”の場合、エントリアドレス♯1から♯6において一致が検出されるため、この場合、エントリアドレス♯1が、最終サーチ結果として出力される。
この図22に示すように、IPアドレスにおいては、第1オクテットにおいて、アドレス分類を示す特徴データが配置される。この図22に示す例においては、エントリアドレス♯0から♯9までは、第1オクテットがすべて“10(十進数)”である。同様、エントリアドレス♯50から♯52は、第1オクテットがすべて“127(十進数)”であり、またエントリアドレス♯100から♯105は、第1オクテットがすべて“191(十進数)”である。プレフィックスデータの特徴データ(たとえば図22においては第1オクテットのデータ)による検索対象データのグループ化を、プリサーチと称す。このプレフィックスデータ全体を検索する前に、特徴データ(たとえば第1オクテットデータ)により、実際の検索対象となるエントリの数のふるい落とし(例えば1/32のふるい落とし)を実行し、CAMアレイ50内において部分的な領域での検索を実行する。
なお、このIPアドレスの第1オクテットをサーチデータとしてプリサーチする場合に限定されず、この検索対象データを、ある特徴データによりグループ化可能な場合、その特徴データに従って分離すればよい。たとえば、図22においては、エントリアドレス♯0から♯9は第2オクテットが“1(十進数)”であり、エントリアドレス♯50から♯52は、第2オクテットが“251(十進数)”であり、エントリアドレス♯100から♯105の第2オクテットは“100(十進数)”である。したがって、この第2オクテットを基に検索対象データのグループ化を行ない、この第2オクテットの値によりプリサーチを行なってもよい。以下においては、この第1オクテットによるグルーピングの場合について説明する。
図23は、このCAMアレイ50におけるCAMブロックにおける各検索対象データのCAMブロック内の配置を概略的に示す図である。図23においては、CAMブロックとして、CAMブロックCBaおよびCBbを代表的に示す。このCAMブロックCBaおよびCBbのサブアレイ55には、同一特徴データ(第1オクテットデータ)を有し、有効プレフィックス長が異なるデータ(IPアドレス)を格納する。したがって、たとえば第1オクテットが“10(十進数)”のデータについては、CAMブロックCBaのワード線アドレスWL♯0に、データ“10.1.1.1/32”を格納し、またCAMブロックCBbのワードアドレスWL♯256においては、データ“10.1.1.1/30”を格納する。ワード線WL♯0およびWL♯256に対し、同一ワード線アドレスを割当てる。プリサーチ回路67に、特徴データの第1オクテットデータが“10(十進数)”であるサーチデータが与えられた場合、対応のワード線アドレスを生成する。プリサーチにより生成されたワード線アドレスに従って、CAMブロックCBaおよびCBbにおいて、ワード線WL♯0およびWL♯256を選択状態へ駆動して、比較および論理処理を実行する。このCAMブロックCBaおよびCBbに対して、有効プレフィックス長の順位を付ける。CAMブロックを指定するブロックアドレスの最も小さな値のCAMブロックからの一致検出信号に従って、プライオリティエンコーダ70により、一致検索結果に対応するアドレスインデックスを生成することができる(プリサーチされた特徴データを組合わせることにより、一致検索エントリを識別することが出来る)。
特徴データの種類が、CAMブロックCBaおよびCBbのワード線の数より多い場合には、別のCAMブロックに拡張する。図21に示すCAMブロックCB00−CB0nからCBk0−CBknにおいて、特徴データ(第1オクテットデータ)が“10(十進数)”のサーチデータが与えられた場合、生成されたワード線アドレスに従って,CAMブロックCBにおいて1つのエントリが選択され、内部の局所的な部分において、CAMブロックにおいて一致/不一致などの検索操作が実行される。この場合、この特徴データを含まない検索対象データのみを記憶するCAMブロックにおいては、検索動作は実行されない。この場合、消費電力がさらに低減される。
たとえば、図23において、サーチデータが“10.1.1.1”が、アドレス/データ入力回路63からプリサーチ回路67へ与えられると、プリサーチ回路67において、この特徴データの第1オクテットデータ“10”を抽出して、デコードする。この場合、プリサーチ回路67において、予め、特徴データとワード線アドレスの対応テーブル等が準備され、このテーブルを参照してワード線アドレスが生成される(CAMブロック指定信号が含まれても良い)。デコードにより、ワード線WL♯0およびワード線WL♯256を指定する共通のワード線アドレスを生成し(たとえばCAMブロック内のローカルワード線アドレスが“0”)、CAMブロックCBaおよびCBbのアドレスデコーダ57へ与える。この場合、特徴データが複数のCAMブロックのうちの少数のCAMブロック内において格納されている場合には、プリサーチ回路67において、この特徴データ(第1オクテットデータ)に従ってCAMブロックを特定するブロックアドレス(またはCAMブロックをイネーブルするブロック選択信号)もワード線アドレスとともに生成する。
このプリサーチ回路67としては、単に、クロック信号に同期して入力されるパケットデータのヘッダ部に含まれるIPアドレスの第1オクテットデータを抽出してデコードするデコード回路が用いられればよい。または、特徴データとワード線アドレス/CAMブロック指定アドレスとの対応がレジスタファイルに格納され、このレジスタファイルの内容が特徴データに従って読出されても良い。
したがって、上述のように、例えばワード線WL♯0およびWL♯256が選択された場合、このサーチ要求データに対し、CAMブロックCBaおよびCBbは、一致判定を行ない、一致指示信号を生成する。両者が一致を示す場合、CAMブロックCBaのブロックアドレスが、CAMブロックCBbのブロックアドレスよりも小さいため、CAMブロックCBaの一致検出が優先され、この特徴データとCAMブロックを特定するブロックアドレスとに従って選択エントリの全エントリ内の位置が指定され、次のフォワーディング先を示すために用いられるアドレスインデックスが、プライオリティエンコーダにより生成される。
以上のように、このプリサーチ回路67で抽出される特徴データ(第1オクテットデータ)を利用することにより、多重ヒット時においても、一致したエントリアドレスを識別して、次のホップ先アドレスを検出するためのアドレスインデックを生成することができる。
このTCAMにおいては、特徴データに従って、検索対象データを各CAMブロックに分散して配置することが要求される。すなわち、従来のCAMと異なり、本発明のCAMにおいては、複数のエントリに共通にセンスアンプ回路が設けられており、2以上のエントリを並行して選択した場合、メモリセルの読出データの消失が生じ、正確な検索を行なえない。次に、このCAMアレイに格納する検索対象データの書込のメンテナンスについて説明する。
図24は、この発明に従うTCAMを利用するネットワーク機器内のパケット・プロセシング・ユニットの全体の構成を概略的に示す図である。図24において、パケット・プロセシング・ユニット90は、インターネット(たとえばイーサネット)の伝送路に結合されるメディア・アクセス・ユニットMAUと、各々プロトコル層に応じて配置される物理層ユニットPHY、メディア・アクセス・コントロール・ユニットMACおよびリンク層ユニットLINKを含む。
メディア・アクセス・ユニットMAUは、このインターネットの伝送路に対するインターフェイスの機能を有する。物理層ユニットPHYは、インターネットに対する物理的接続部であり、メディア・アクセス・ユニットMAUからの光信号を電気信号に変換する。メディア・アクセス・コントロール・ユニットMACは、第2層に規定される処理を行ない、予め定められたプロトコル(たとえばTCP/UDP)に従ってデータのフォーマット化および転送を実行する。リンク層ユニットLINKは、このメディア・アクセス・コントロール・ユニットとパケット・プロセッサPPUとの間のデータ転送のインターフェイスを形成する。パケット・プロセッサPPUが、インターネットを介して転送されたパケットのヘッダ部分の解析、データの抽出および次の転送先アドレスの検出を行なう。
パケット・プロセシング・ユニット90は、さらに、中央制御装置CPUと、インターネットにおけるデータ転送の輻輳を制御するトラフィック・マネージャTFMを含む。中央制御装置CPUは、パケット・プロセッサPPUと協働して動作し、必要な制御および外部制御を実行する。
パケット・プロセシング・ユニット90の外部に、サーチ・ユニット100、汎用メモリ105およびバッファ110が設けられる。バッファ110は、トラフィック・マネージャTFMにより、データ転送の輻輳を避けるため、一時的なパケット格納領域として利用される。サーチ・ユニット100は、本発明のCAMで構成されるTCAM120、および次ホップ先アドレスなどを格納するアドレスSRAM122を内蔵し、パケット・プロセッサPPUからのIPアドレスをサーチデータとして受け、一致/不一致、大小判定などの処理を実行し、その実行処理結果をパケット・プロセッサPPUに転送する。パケット・プロセッサPPUは、一例として、アドレス経路検索処理の場合には、この転送された検索結果に従ってアドレスSRAM122をアクセスして、対応のアドレスのデータ、例えば次ホップ先アドレスを読出す。パケット・プロセッサPPUは、この読出した次ホップ先アドレスに従ってヘッダの書換え等の処理を実行してファブリックスイッチの対応のポートに転送する。
この場合。サーチ・ユニット100において、TCAM120からのアドレスインデックスが直接アドレスSRAM122へアドレスとして与えられ、このアドレスSRAM122から対応の転送先アドレス(次ホップアドレス)が読出されてパケット・プロセッサPPUへ与えられても良い。
中央制御装置CPUは、サーチ・ユニット100に含まれるTCAM120に対する検索対象データの書込時、パケット・プロセッサPPUと協働して、一旦汎用メモリ105内に検索対象データを格納した後、サーチ・ユニット100に含まれるTCAM120のサブアレイへの検索対象データの書込/更新を実行する。
図25は、サーチ・ユニット100に含まれるTCAM120上への検索対象データの書込動作を示すフロー図である。以下、図25を参照して、図24に示すサーチ・ユニット100のTCAM120への検索対象データの書込動作について説明する。
パケット・プロセッサPPUは、たとえば不一致検出信号をサーチ・ユニット100から受けると、対応の検索対象データがサーチ・ユニット100内に格納されていないと判断し、新たな二検索対象データを書込む必要があるとして、中央制御装置CPUにデータ書込指示を発行する(ステップS1)。
パケット・プロセッサPPUは、リンク層ユニットLINKを介して与えられたデータパケットの対象データ(たとえばIPアドレス)、すなわちサーチデータを、中央制御装置CPUを介して汎用メモリ105に格納する。次いで、この中央制御装置CPUは、汎用メモリ105に格納されたデータのたとえば第1オクテットデータを抽出する(ステップS2)。
この抽出した特徴データ(例えば第1オクテットデータ)を有する検索対象データが、サーチ・ユニット100に含まれるTCAM120内のCAMブロックに格納されているかを識別する(ステップS3)。この場合、中央制御装置CPU内においてTCAM120の各CAMブロックに対応して、この判定時においては、検索対象データの特徴データの格納/未格納を示すフラグを格納するフラグレジスタが中央制御装置CPU内に設けられており、このフラグレジスタを参照することにより、中央制御装置CPUは、TCAM120内のCAMブロックに対し、対象のデータの書込が行なわれるか否かを判定することができる。
多重選択が生じないCAMブロックが存在する場合、すなわち対応の特徴データを有する検索対象データが未格納のCAMブロックが存在する場合、中央制御装置CPUは、このCAMブロックへ、汎用メモリ105に格納されている検索対象データを書込む。この書込時、検索対象データにIPアドレスのように有効長が存在する場合には、有効長に従ってマスクデータを生成して書込む。先の論理処理ユニットのデコーダと逆のエンコードを実行してマスクデータを生成する。(ステップS4)。このとき、また、アドレスSRAM122に対しても、新たな検索対象データに応じて、対応の次ホップ先アドレスの書込が実行される(中央制御装置CPUにより)。
一方、この検索対象データの書込が行なわれ、空きCAMブロックが存在しない場合、別の準備された通常のCAMに、検索対象データをエントリデータとして格納する(ステップS5)。
これらの一連の処理により、1CAMブロックにおいて1エントリの選択を行なう後世において、検索ミスが発生しても、次の検索時には対応のデータがTCAM120に格納されており、高速で検索処理を実行することができる。
[サーチユニットの変更例]
図26は、図24に示すサーチ・ユニット100の変更例の構成を概略的に示す図である。図26においては、本発明に従うTCAM120と従来TCAM124とがTCAM126として設けられる。このTCAM126の外部には、図24に示す構成と同様、アドレスSRAM122が設けられる。
この本発明のTCAM120において、たとえばACL用途において、IPアドレスの範囲の検出を行なうことができず、1つのCAMブロックにおいて複数のエントリが並行して選択される状態が存在する可能性も考えられる。この場合、競合するIPアドレスを、従来構成の従来のTCAM124に格納する。この従来のTCAM124は、データを記憶するデータ記憶セルとマスクビットを記憶するマスクセルが1対1に配置され、このマスクセルとデータ記憶セル対に対し1つのXOR回路が配置される。この従来のTCAM124は、図25に示すフローチャートのステップS5の別のCAMに対応する。
これにより、本発明のTCAM120において、複数のエントリに共通に比較/論理処理回路が設けられる構成において、2以上のエントリが並行して選択される可能性がある場合の状態を、従来のTCAM124を利用することにより回避することができる。この場合、従来のTCAM124の容量は、検索対象アドレスの数は少なく、小容量のTCAMで十分に対応することができる。
なお、サーチデータがある範囲に存在するかを検出する場合、検索対象データに対するマスクビットの設定により1エントリにおいてある範囲を指定することが出来る。また、「より大きい」判定および「より小さい」判定を並行して実行することにより、それぞれ別のプライオリティエンコーダで識別することにより、サーチデータの範囲を検出することが出来る。
このTCAM126において、本発明のTCAM120において検索動作を行ない、また従来のTCAM124においても検索動作を実行する。ACL制御用途においては、基本的に、送信元のIPアドレスおよびTCPポート番号などの組合せによりパケットの廃棄処理が実行される。したがって、この場合、メディア・アクセス・コントロール・ユニットMACが転送するデータは、48ビット、IPアドレスは32ビット、ポート番号が16ビットである。IPアドレス(ソース側のIPアドレス)の特徴データに従ってエントリの分類を行ない、このACLによるアクセス制御の場合、IPアドレス(レイヤ3の情報)が一致するか否かでアクセス許可/拒否を実行するまたはポート番号(レイヤ4の情報)およびIPアドレスの一致/不一致に従ってアクセスの拒否/許可を制限する場合がある。アクセス制御リストのいわゆるファイアウォール機能から、アクセス拒否が示された場合には、その対応のパケットを拒否する。これにより、複数のエントリがこの発明のTCAM120および従来のTCAM124において並行して選択された場合においても、確実に、不必要なアクセスを制御することができる。
以上のように、この発明の実施の形態1に従えば、複数のエントリに共通に比較/論理処理回路を設け、プリサーチにより1つのエントリを選択している。したがって、複数のエントリ各々にXOR回路などの論理/処理回路装置を配置する必要がなく、CAMセルの占有面積を低減することが出来、CAMアレイの占有面積を低減することができる。また、マスクビットをデコードして、各メモリセルに対するマスク指示信号を生成しており、マスクビットを記憶するマスクセルの数が低減され、さらにメモリアレイの面積が低減される。
また、一致/不一致、大小等の判定は複数のエントリに共通に設けられる比較/論理処理回路において局所的に行なわれている。したがって、各エントリにおいて一致する不一致、大小を判定する必要はなく、消費電流は低減される。また、サーチ線を各エントリに共通に配設してサーチデータを各エントリに共通にかつ並行して伝達する必要はなく、サーチ線の充放電電流が低減される。
[実施の形態2]
図27は、この発明の実施の形態2に従うCAMの要部の構成を概略的に示す図である。図27において、メモリアレイ1は、2つの領域150aおよび150bに分割される。この領域150aには、実施の形態1において示したのと同様、エントリENT♯0−ENT♯N−1各々が、複数のサブエントリSERYaに分割される。サブアレイSERYaにおいては、データ記憶セルCEL0およびマスクセルCEL1が配置され、このマスクセルCEL1の数は、データ記憶セルCEL0の数よりも小さい。この領域150aにおいてサブエントリに対応してセンスアンプユニットSAUが配置される。このセンスアンプユニットSAUにおいては、実施の携帯1の構成と同様、ビット線読出選択ゲートおよびセンスアンプが各データ記憶セルに対応して配置される。領域150aにおいては、さらに、センスアンプユニットSAUに対応して比較/論理処理ユニットCLUが配置される。この比較/論理処理ユニットCLUは、先の実施の形態1と同様、データ記憶セルに対応して配置される比較器CMPとマスクセルに対応して配置されるデコーダDECとを含む。比較器CMPは、XOR回路および大小比較ユニットを含む。
この領域150aの比較/論理処理ユニットCLUから、一致指示信号(フラグ)EQ、大指示信号(フラグ)GT、および小指示信号(フラグ)LTが、対応のワード線アドレス(プリサーチにより求められたアドレス)WLADとともにプライオリティエンコーダへ与えられる。この場合、CAMブロックアドレスが並行して与えられても良い。
プライオリティエンコーダにおいては、演算処理操作内容に従って、検索演算対象が肯定される場合、このワード線アドレスWLAD(およびCAMブロックアドレス)に従って、次処理により利用されるアドレスインデックスを生成する。このアドレスンデックススが、図24に示すアドレスSRAMなどへ与えられ、このアドレスインデックスに対応する内容が読出されて以後の処理が実行される。たとえば、インターネット機器においては、次のホップ先アドレスが(アドレスSRAMから)読出され、ヘッダの書換などが実行される(パケット・プロセッシング・ユニットにおいて)。
一方、領域150bにおいては、エントリENT♯0−EBT♯N−1に対応して、サブエントリSERYaとビット幅の異なるサブエントリSERYbがそれぞれ配置される。このサブエントリSERYbのビット幅は、たとえば16ビットである。サブエントリSERYbに対応してセンスアンプユニットSAUが配置され、領域150bにおけるセンスアンプユニットSAUbに対応して、一致検出ユニットXRUが設けられる。
このサブエントリSERYbにおいても、サブエントリSERYaと同様、データ記憶セルおよびマスクセルが配置されて、マスクセルのマスクビットの数は、データ記憶セルよりも少なくされる。センスアンプユニットSAUbの構成は、センスアンプユニットSAUaと同じである。XORユニットXRUは、対応の選択されたサブエントリSERYbからのデータ記憶セルの記憶データと図示しないサーチ線からのサーチデータとの一致/不一致を検出する一致検出回路が設けられる。また、サブエントリSERYbに含まれるマスクセルからのマスクビットをデコードするデコーダが配置され、このデコーダからのマスク指示信号に従ってXORユニットXRUは、3値判定を実行する。このXORユニットXRUからの3値判定結果は、単に一致/不一致を示す信号として利用され、この外部からのアドレスのアクセスの許可/拒否を示すフラグとして利用される。
この図27に示すように、メモリアレイ1を、アドレスインデックスを出力して、以後に複雑な操作が必要とされるデータを記憶する領域150aと、単にアクセスの拒否/許可を示すフラグを立てるためのデータを記憶する領域150bに分割する。CAMにおいて、アドレスインデックスを形成するための領域および単に許可/拒否フラグを立てるための領域150bを設けることにより、単にアクセスの許可/拒否を検出する用途に対して、プライオリティエンコーダを設ける必要がなく、アドレスインデックスに応じた次の操作内容を格納するSRAMを配置する必要がなく、レイアウト面積が低減される。
なお、CAMアレイにおいて、図21に示すように複数のCAMブロックを構成するように、このメモリアレイ1が複数個並列に配置されても良い。この複数のCAMブロックが設けられる場合、プライオリティエンコーダ70に対して、領域150aからは、ワード線アドレスとともにCAMブロックを特定するブロックアドレスを、フラグEQ、GTおよびLTとともに与えられる。プライオリティエンコーダにおいて、このブロックアドレスの最も小さいCAMブロックからのワード線アドレスをアドレスインデックスとして選択する。
図28は、この発明の実施の形態2に従うCAMの全体の構成を概略的に示す図である。図28において、この発明の実施の形態2に従うCAM200は、2つのCAMアレイ50Aおよび50Bを含む。CAMアレイ50Aは、CAMアレイ領域50Aaおよび50Abに分割される。CAMアレイ50Bは、CAMアレイ領域50Baおよび50Bbに分割される。これらのCAMアレイ50Aおよび50Bの構成は、図27に示すCAMアレイの構成と同じである。
CAMアレイ領域50Aaおよび50Abに対応してサーチ線駆動回路56Aaおよび56Abが設けられ、それぞれ並列に、サーチデータaおよびbを受ける。また、CAMアレイ領域50Aaおよび50Abに対応して比較/論理処理回路15Aaおよび15Abが設けられる。したがって、CAMアレイ領域50Aaおよび50Abにおいては、検索対象のデータに対するサーチ結果EQ、GTおよびLTとともに、処理対象のエントリのアドレス、すなわちワード線アドレスWLAD(およびブロックアドレス)がサーチ結果バス210上に伝達される。これらの比較/論理処理回路15Aaおよび15Abの構成は、先の実施の形態1において示した比較/論理処理回路と同じであり、それぞれサブエントリに対応して配置される比較/論理処理ユニット(CLU)を含む。
CAMアレイ50Bにおいても、同様、2つのCAMアレイ領域50Baおよび50Bbに対してサーチ線駆動回路56Baおよび56Bbがそれぞれ設けられる。サーチ線駆動回路56Baに対しては大小(“>”)を検出するためのサーチデータaが与えられ、サーチ線駆動回路56Bbに対しては、拒否(deny)するか否かを検出するサーチデータbが与えられる。
CAMアレイ領域50Baに対しては比較/論理処理回路15Bが設けられ、一方、CAMアレイ領域50Bbに対しては、XORユニットXRUが配置される。
したがって、CAMアレイ領域50Baに格納される検索対象データについては、CAMアレイ50Aと同様、一致および大小比較の演算処理が実行され、一方、CAMアレイ50Bbにおいては、一致/不一致に応じた許可/拒否を示すフラグが出力される。したがって、比較/論理処理回路15Bの出力信号EQ、GTおよびLTが、対応のワード線アドレスWLAD(ブロックアドレスを含む)とともにサーチ結果データバス212上に伝達され、一方、XORユニットXRUからの不一致/一致結果を示すフラグNEQ/EQが、サーチ結果線214上に伝達される。データバス210および212は、メインサーチ結果バス216に結合される。このメインサーチ結果バス216へは、このCAMアレイ50Aにおけるサーチ結果を示すフラグEQ、GTおよびLTととものワード線アドレスWLAD(ブロックアドレスを含む)が与えられ、また、CAMアレイ50Bから、比較/論理処理回路15BからのフラグEQ、GTおよびLTが対応のワード線アドレスWLAD(ブロックアドレスを含む)とともに並列に与えられる。
プライオリティエンコーダ70は、このサーチ結果バス210および212からのフラグに従って、所定の優先順位に従って対応のワード線アドレス(ブロックアドレスを含む)を、アドレスインデックスとして選択する。CAMアレイ領域50Aa、50Abおよび50Baが、複数のCAMブロックに分割される場合、各CAMブロックを特定するブロックアドレスが、プライオリティエンコーダ70に与えられて、このブロックアドレスによる優先順位が識別されて、対応のワード線アドレスがアドレスインデックスとして選択される。
このプライオリティエンコーダ70の出力信号とCAMアレイ50BのXORユニットXRUからのフラグNEQ/EQが、サーチ結果出力回路72へ与えられる。このサーチ結果出力回路72は、マルチプレクサを含み、プライオリティエンコーダ70の出力信号とXORユニットXRUからのフラグNEQ/EQの一方を、モード選択信号MODSELに従って選択してサーチ結果出力端子74に伝達する。
このモード選択信号MODSELは、外部からの命令により制御回路(図21に示す制御回路66)により生成される。ACL制御用途のように許可/拒否の判定を行なう動作モードの時には、サーチ結果出力回路72は、マルチプレクサによりXORユニットXRUからの指示フラグNEQ/EQを選択して、サーチ結果出力端子74に出力する。IPアドレスのフォワーディング処理のように、一致判定または大小判定がモード選択信号MDSELにより指定されたときには、サーチ結果出力回路70は、マルチプレクサによりプライオリティ・エンコーダ70の出力データを選択して出力端子74に転送する。
プライオリティエンコーダ70へは、CAMアレイ領域50Aa、50Abおよび50Baを特定するアドレスおよびサーチ結果が、処理内容を示す判定モード選択信号とともに与えられ、CAMアレイ領域からのサーチ結果を判定モードに応じて選択して、対応の判定モードにおけるワード線アドレスを、所定のプライオリティに従って選択するように構成されてもよい。これらの一致、および大小について並行して優先順位に従って各処理(一致および大小判定)に対する最終判定結果を生成しても良い。
この一致/不一致を判定するためのCAMアレイ領域50Abおよび50Bbのビット幅は、例えば16ビットであり、例えば32ビット幅のCAMアレイ領域50Aaおよび50Baのビット幅(エントリのビット幅)よりも小さい。したがって、CAMアレイの面積増大を伴うことなく、複数種類の演算処理を実行することができる。
以上のように、この発明の実施の形態2に従えば、演算処理内容に応じてメモリアレイ領域を分割している。したがって、単純にアドレスインデックスを出力する必要がなくフラグのみを出力することが要求される単純な操作が必要なたとえばACL制御などの用途と、IPアドレスのフォワーディング処理を行なう用途に対し1つのCAMアレイで柔軟に対応することができる。また、実施の形態1と同様の効果をも奏する。
1 メモリアレイ、CEL0 データ記憶セル、CEL1 マスクセル、11 センスアンプ回路、15 比較/論理処理回路、SAU センスアンプユニット、CLU 比較/論理処理ユニット、SERY サブエントリ、SA0−SA7 センスアンプ、XRL0−XRL XOR回路、20−23 4入力NOR回路、24,25 2入力ANDゲート、26 OR回路、27 インバータ、GML グローバルマッチ線、EXR0−EXRm 一致判定部、SERY0−SERYm サブエントリ、28 ローカルマッチ線、29 大小検出線、DEC デコーダ、30−33 マルチプレクサ、XRR0−XRR7 XOR回路、50 CAMアレイ、CB00−CB0n,CBk0−CBkn CAMブロック、55 サブメモリアレイ、56 サーチ線駆動回路、57 アドレスデコーダ、67 プリサーチ回路、70 プライオリティエンコーダ、72 サーチ結果出力回路、11B センスアンプ回路、15B 比較/論理処理回路、100 サーチ・ユニット、120 TCAM、122 アドレスSRAM、124 従来TCAM、126 TCAM、SERYa,SERYb サブエントリ、XRU XORユニット、50A,50B CAMセルアレイ、50Aa,50Ab,50Ba,50Bb CAMアレイ領域、56Aa,56Ab,56Ba,56Bb サーチ線駆動回路、15Aa,15Ab,15B 比較/論理処理回路。