JP6533129B2 - 半導体装置 - Google Patents

半導体装置 Download PDF

Info

Publication number
JP6533129B2
JP6533129B2 JP2015168522A JP2015168522A JP6533129B2 JP 6533129 B2 JP6533129 B2 JP 6533129B2 JP 2015168522 A JP2015168522 A JP 2015168522A JP 2015168522 A JP2015168522 A JP 2015168522A JP 6533129 B2 JP6533129 B2 JP 6533129B2
Authority
JP
Japan
Prior art keywords
data
search
match
tcam
control signal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015168522A
Other languages
English (en)
Other versions
JP2017045495A (ja
JP2017045495A5 (ja
Inventor
直也 渡邊
直也 渡邊
太 伊賀上
太 伊賀上
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2015168522A priority Critical patent/JP6533129B2/ja
Priority to US15/227,161 priority patent/US9824757B2/en
Priority to CN201610743715.5A priority patent/CN106486159B/zh
Publication of JP2017045495A publication Critical patent/JP2017045495A/ja
Priority to US15/787,406 priority patent/US10068646B2/en
Publication of JP2017045495A5 publication Critical patent/JP2017045495A5/ja
Priority to US16/056,321 priority patent/US10366755B2/en
Application granted granted Critical
Publication of JP6533129B2 publication Critical patent/JP6533129B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • G11C15/04Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • G11C15/04Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
    • G11C15/043Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements using capacitive charge storage elements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • G11C15/04Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
    • G11C15/046Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements using non-volatile storage elements

Description

この発明は、半導体装置に関し、たとえば、TCAM(Ternary Content Addressable Memory)装置を備えた半導体装置に好適に用いられるものである。
連想メモリまたはCAM(内容参照メモリ:Content Addressable Memory)と呼ばれる記憶装置は、記憶しているデータワードの中から検索ワードに一致しているものを検索し、一致しているデータワードが見つかった場合は、そのアドレスを出力するものである。
CAMにはBCAM(Binary CAM)とTCAM(Ternary CAM)とがある。BCAMの各メモリセルは“0”か“1”かのいずれかの情報を記憶する。一方、TCAMの場合には、各メモリセルは、“0”および“1”の他に“ドントケア(Don't Care)”の情報を記憶可能である。“ドントケア”は“0”および“1”のどちらでも良いことを示す。
TCAM装置は、インターネットなどのネットワーク用のルータにおいてアドレス検索およびアクセス制御のために幅広く利用されている。大容量化に対応するために、TCAM装置は、通常、複数のサブアレイを有し、各サブアレイに対して同時にサーチ動作が実行される構成となっている。たとえば、非特許文献1は、ビルディングブロック(Building Block)と呼ばれるサブアレイがワード線方向に8個、ビット線方向に4個配列されている。
TCAM装置は、入力サーチデータ(入力パケット)とTCAMセルデータとを一斉に比較することができるので、全ての検索用途においてRAM(Random Access Memory)よりも高速である。しかしながら、検索時にサーチ電流が発生するために消費電力の増大が問題となっている。
特開2003−272386号公報(特許文献1)は、低消費電力化のためにマッチ線方向に並ぶ複数のサブアレイがパイプライン方式で連結された構成のTCAM装置を開示する。この文献のTCAM装置では、後続するステージでは、前ステージで一致したエントリのみ検索が実行される。
特開2003−272386号公報
H. Miyatake 他2名、"A design for high-speed low-power CMOS fully parallel content-addressable memory macros"、IEEE J. Solid-State Circuits, Vol.36, pp. 956-968, June 2001
TCAM装置では、ドントケアに設定されたTCAMセルがある範囲に固まって存在する場合がある。たとえば、サブアレイの一部のマッチ線に接続されたTCAMセルが全てドントケアに設定されていることがしばしば生じる。より顕著な場合には、サブアレイを構成する全TCAMセルがドントケアに設定されている場合もある。このような場合には、サーチ結果が自明(サーチデータによらず必ずヒット(一致)になる)であるので、サーチ動作のために電流を無駄に消費してしまう。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
一実施形態による半導体装置は、各々がTCAMセルアレイを含む複数のサブアレイを備える。各サブアレイは、入力サーチデータのうちの対応部分の検索を行う。各サブアレイは、対応する第1の制御信号が活性化されている場合には、検索を行わずに、一致という検索結果をエントリごとに出力する。
上記の実施形態によれば、TCAM装置の消費電流を低減することができる。
TCAMセルの構成の一例を示す回路図である。 図1のXセルおよびYセルの記憶内容とTCAMセルデータとの対応関係を表形式で示す図である。 TCAM装置を構成する1つのサブアレイの構成を示すブロック図である。 TCAM装置の構成を示すブロック図である。 各マッチアンプの検出結果のAND演算について説明するための図である。 データ検索システムの全体構成を示すブロック図である。 ACLルールファイルの一例を表形式で示す図である。 図7のACLを変換することによって得られたTCAM用データの一例を示す図である。 ACLに基づく変換データが書込まれたTCAM装置の記憶状態を模式的に示す図である。 第1の実施形態によるTCAM装置において、サブアレイの構成を示すブロック図である。 図10の制御論理回路のうち、サーチ動作に関係する部分の構成を示す回路図である。 図10のサーチ線ドライバの構成の一例を示す回路図である。 図10のマッチアンプの構成の一例を示す回路図である。 図10のサブアレイに設けられたレジスタREG1に非ドントケアを表す“0”が格納されているときのサーチ動作を示すタイミング図である。 図10のサブアレイに設けられたレジスタREG1にドントケアを表すデータ“1”が格納されているときのサーチ動作を示すタイミング図である。 図10のマッチアンプの変形例を示す回路図である。 第2の実施形態によるTCAM装置において、サブアレイSAの構成を示すブロック図である。 第3の実施形態によるTCAM装置において、マッチアンプMAの構成を示す回路図である。 第3の実施形態によるTCAM装置の構成を示すブロック図である。 図19のデータ判定回路33の動作を示すフローチャートである。 第3の実施形態のTCAM装置において、図18のレジスタREG3へのデータ書込み手順を示すタイミング図である。 図18のマッチアンプMAの変形例を示すブロック図である。 第4の実施形態によるTCAM装置において、サブアレイの構成を模式的に示すブロック図である。 図23の制御論理回路24において、検索動作に関係する部分の構成を示す回路図である。 制御論理回路24からの出力信号のために用いられるバッファアンプの配置について説明するための図である。 第5の実施形態のTCAM装置において、バッファアンプ部の構成を説明するための図である。 電源立ち上げ後において、各レジスタREG1,REG2,REG3へのデータ書込みの手順について説明するための図である。 入力データの配列変換について説明するための図である。 第7の実施形態の検索システムの構成を示すブロック図である。 データ配列変換の対象となるTCAM用データの一例が書き込まれたTCAM装置の記憶状態を模式的に示す図である。 第8の実施形態によるTCAM装置の構成を示すブロック図である。 図31のマッチアンプMAの構成例を示す回路図である。 図31のTCAM装置の動作を説明するための図である。
以下、各実施形態について図面を参照して詳しく説明する。なお、同一または相当する部分には同一の参照符号を付して、その説明を繰返さない。
<各実施形態に共通する構成>
[TCAMセルの構成]
図1は、TCAMセルの構成の一例を示す回路図である。図1を参照して、TCAMセル(メモリセルMCとも称する)は、2個のSRAMセル(Static Random Access Memory Cell)11,12と、データ比較部13とを含む。SRAMセル11をXセルとも称し、SRAMセル12をYセルとも称する。Xセル11は、内部の記憶ノード対ND1,ND1_nに互いに相補となる(一方が“1”のとき他方が“0”となる)1ビット(bit)のデータを記憶する。Yセル12は、内部の記憶ノード対ND2,ND2_nに互いに相補となる1ビットのデータを記憶する。
TCAMセルは、ビット線対BL,BL_n、サーチ線対SL,SL_n、マッチ線ML、およびワード線WLX,WLYと接続される。ビット線対BL,BL_nは、図3のTCAMセルアレイ20の列方向(Y方向)に延在し、列方向に配列された複数のTCAMセルによって共有される。サーチ線対SL,SL_nは、TCAMセルアレイ20の列方向(Y方向)に延在し、列方向に配列された複数のTCAMセルによって共有される。マッチ線MLは、TCAMセルアレイ20の行方向(X方向)に延在し、行方向に配列された複数のTCAMセルによって共有される。ワード線WLX,WLYは、TCAMセルアレイ20の行方向(X方向)に延在し、行方向に配列された複数のTCAMセルによって共有される。
Xセル11は、インバータINV1,INV2と、NチャネルMOS(Metal Oxide Semiconductor)トランジスタQ1,Q2とを含む。インバータINV1は、記憶ノードND1_nから記憶ノードND1へ向かう方向が順方向となるように、記憶ノードND1と記憶ノードND1_nの間に接続される。インバータINV2は、INV1と並列かつ逆方向に接続される。MOSトランジスタQ1は、記憶ノードND1とビット線BLとの間に接続される。MOSトランジスタQ2は、記憶ノードND1_nとビット線BL_nとの間に接続される。MOSトランジスタQ1,Q2のゲートは、ワード線WLXと接続される。
Yセル12は、インバータINV3,INV4と、MOS(Metal Oxide Semiconductor)トランジスタQ3,Q4とを含む。インバータINV3は、記憶ノードND2_nから記憶ノードND2に向かう方向が順方向となるように、記憶ノードND2と記憶ノードND2_nの間に接続される。インバータINV4は、INV3と並列かつ逆方向に接続される。MOSトランジスタQ3は、記憶ノードND2とビット線BLとの間に接続される。MOSトランジスタQ4は、記憶ノードND2_nとビット線BL_nとの間に接続される。MOSトランジスタQ3,Q4のゲートは、ワード線WLYと接続される。
データ比較部13は、NチャネルMOSトランジスタQ6〜Q9を含む。MOSトランジスタQ6,Q7はマッチ線MLとの接続点であるノードND3と接地ノードGNDとの間に直列に接続される。MOSトランジスタQ8,Q9は、ノードND3と接地ノードGNDとの間に直列に、かつ、直列接続されたMOSトランジスタQ6,Q7の全体と並列に接続される。MOSトランジスタQ6,Q8のゲートは、記憶ノードND1,ND2とそれぞれ接続される。MOSトランジスタQ7,Q9のゲートは、サーチ線SL,SL_nとそれぞれ接続される。
図2は、図1のXセルおよびYセルの記憶内容とTCAMセルデータとの対応関係を表形式で示す図である。
図2および図3を参照して、TCAMセルは、2ビットのSRAMセルを用いて、“0”、“1”、“x”(ドントケア:don't care)の3値を格納することができる。具体的に、Xセル11の記憶ノードND1に“1”が格納され、Yセル12の記憶ノードND2に“0”が格納されているとき、TCAMセルには“0”が格納されているとする。Xセル11の記憶ノードND1に“0”が格納され、Yセル12の記憶ノードND2に“1”が格納されているとき、TCAMセルには“1”が格納されているとする。Xセル11の記憶ノードND1に“0”が格納され、Yセル12の記憶ノードND2に“0”が格納されているとき、TCAMセルには“x”(ドントケア)が格納されているとする。Xセル11の記憶ノードND1に“1”が格納され、Yセル12の記憶ノードND2に“1”が格納されている場合は使用しない。
上記のTCAMセルの構成によれば、サーチデータが“1”(すなわち、サーチ線SLが“1”、かつ、サーチ線SL_nが“0”)であり、TCAMデータが“0”(記憶ノードND1が“1”、かつ、記憶ノードND2が“0”)である場合には、MOSトランジスタQ6,Q7がオン状態となるために、プリチャージされたマッチ線MLの電位が接地電位まで引き抜かれる。サーチデータが“0”(すなわち、サーチ線SLが“0”、かつ、サーチ線SL_nが“1”)であり、TCAMデータが“1”(記憶ノードND1が“0”、かつ、記憶ノードND2が“1”)である場合には、MOSトランジスタQ8,Q9がオン状態となるために、プリチャージされたマッチ線MLの電位が接地電位まで引き抜かれる。すなわち、サーチデータとTCAMデータとが不一致の場合には、マッチ線MLの電位は接地電位まで引き抜かれる。
逆に、入力されたサーチデータが“1”であり、かつ、TCAMデータが“1”または“x”の場合、もしくは、サーチデータが“0”であり、かつ、TCAMデータが“0”または“X”の場合(すなわち、両者が一致する場合)、プリチャージされたマッチ線MLの電位(電源電位VDDレベル)は維持される。
上記のように、TCAMでは、1つのエントリ(行)に対応するマッチ線MLに接続された全てのTCAMセルのデータが入力サーチデータと一致しない限り、マッチ線MLに蓄えられた電荷が引き抜かれる。このため、TCAMでの検索は高速であるが、消費電流が大きいという問題がある。
[サブアレイの構成]
図3は、TCAM装置を構成する1つのサブアレイの構成を示すブロック図である。図3を参照して、サブアレイSAは、TCAMセルアレイ20(単にセルアレイとも称する)と、書込みドライバ21と、サーチ線(SL)ドライバ22と、マッチアンプ部23と、制御論理回路24とを含む。サブアレイSAは、さらに、図1のワード線WLX,WLYを駆動するためのワード線ドライバ(不図示)を含む。
セルアレイ20は、行列状(m行;k列)に配列されたTCAMセルを含む。図3のセルアレイ20は、行数(エントリ数)mが256であり、列数(ビット数)kが32の場合が示されている。
セルアレイ20の各列に対応して、k個(k=32)のビット線対(BL[0],BL_n[0]からBL[k−1],BL_n[k−1]まで)と、k個(k=32)のサーチ線対(SL[0],SL_n[0]からSL[k−1],SL_n[k−1]まで)とが設けられる。セルアレイ20の各行に対応して、m本(m=256)のマッチ線(ML[0]からML[m−1]まで)と、図示しないm本のXセル用のワード線(WLX[0]からWLX[m−1]まで)と、図示しないm本のYセル用のワード線(WLY[0]からWLY[m−1]まで)とが設けられている。
書込みドライバ21は、書込み時に、ビット線対BL,BL_nを介して各TCAMセルに書込みデータを供給する。サーチ線ドライバ22は、検索時に、サーチ線対SL,SL_nを介して各TCAMセルにサーチデータを供給する。制御論理回路24は、サブアレイSA全体の動作を制御する。たとえば、制御論理回路24は、検索時には、サーチコマンドを受け取り、サーチ線ドライバ22と、マッチアンプ部23に制御信号を出力することによって、サーチ線ドライバ22、マッチアンプ部23、およびプリチャージ回路の動作を制御する。
マッチアンプ部23は、セルアレイの行にそれぞれ対応する複数のマッチアンプMAを含む。マッチアンプMAは、検索時に、対応するマッチ線MLの電位に基づいて、対応するTCAMセルデータと入力サーチデータの対応部分とが一致するか否かを検出する。この実施形態では、マッチアンプMAは、検索時に対応するマッチ線MLをプリチャージするためのプリチャージ回路を含む。
[TCAMの構成]
図4は、TCAM装置の構成を示すブロック図である。図4を参照して、TCAM装置100は、行列状に配列された複数のサブアレイSAと、プライオリティ・エンコーダ30と、データ入力回路31と、コマンド入力回路32とを含む。
図4のTCAM装置が実現している検索テーブルサイズは、1エントリ(1行)のビット長が128ビット(bit)であり、総エントリ数が4096エントリ(entry)である。TCAM装置100は、16行4列のサブアレイSA[0,0]〜SA[15,3]に分割されている。各サブアレイSAのサイズは、総エントリ数は256エントリ、1エントリのビット長は32ビットになる。これらの数字は一例であって、TCAM装置の構成はこれに限られるものでない。
すでに説明したサーチ線対SL,SL_n、ビット線対BL,BL_n、マッチ線ML、およびワード線は、各サブアレイごとに配設されている。たとえば、サブアレイSA[0,0]には、サーチ線対SL[0],SL_n[0]からサーチ線対SL[31],SL_n[31]までが設けられる。サブアレイSA[0,1]には、サーチ線対SL[32],SL_n[32]からサーチ線対SL[63],SL_n[63]までが設けられる。サブアレイSA[0,2]には、サーチ線対SL[64],SL_n[64]からサーチ線対SL[95],SL_n[95]までが設けられる。サブアレイSA[0,3]には、サーチ線対SL[96],SL_n[96]からサーチ線対SL[127],SL_n[127]までが設けられる。
図4において、1エントリのサーチデータ全体および1エントリのTCAMセルデータ(書込みデータ)全体に対して、マッチ線MLは32ビット単位で4分割された構成になっている。このため、マッチアンプ部23には、図5で説明するように、各マッチアンプMAの検出結果の論理積をとるためのANDゲート(図5の参照符号26)が行ごとに設けられている。
データ入力回路31は、データ書込み時には、書込みデータを外部(たとえば、図6のネットワーク・プロセッサ・ユニット)から受信し、受信した書込みデータを対応するサブアレイのSAの書込みドライバ21に出力する。データサーチ時には、サーチデータを外部から受信し、受信したサーチデータを対応するサブアレイSAのサーチ線ドライバ22に出力する。
コマンド入力回路32は、書込みコマンド、サーチコマンドなどの各種コマンドを外部から受信し、受信したコマンドを対応するサブアレイSAの制御論理回路24に出力する。
プライオリティ・エンコーダ30は、各エントリごとのサーチ結果(入力サーチデータとTCAMデータとが一致したか否か)を隣接するサブアレイSA[0,3],SA[1,3],…,SA[15,3]から受け取る。プライオリティ・エンコーダ30は、ヒットアドレス(サーチデータと一致したTCAMデータが格納されているエントリアドレス)を出力する、複数のエントリがヒット(一致)した場合には、プライオリティ・エンコーダ30は、優先度の高いヒットエントリのアドレスを出力する。
[同一エントリの複数のマッチアンプの検出結果のAND演算について]
図5は、各マッチアンプの検出結果のAND演算について説明するための図である。図5では代表的にサブアレイSA[0,0],SA[0,1]の1つのエントリのみ示されているが、他のエントリおよび他のサブアレイについても同様である。
図5に示すように、各サブアレイSAのマッチアンプ部23は、行ごとに、マッチアンプMAの後段に設けられたANDゲート26を含む。ただし、プライオリティ・エンコーダ30から最も離れたサブアレイSA[0,0],[1,0],…に設けられたANDゲート26は、一方の入力ノードに“H”レベルの電位(電源電位VDD)が入力されることによって、バッファとして機能している。以下、図4および図5を参照して、サブアレイSA[0,0]〜SA[0,3]の1つのエントリを例に挙げて、ANDゲート26の動作について説明する。
図4および図5を参照して、まず、サブアレイSA[0,0]〜SA[0,3]の各々において、サーチ線対SL,SL_nを介して入力されたサーチデータの対応部分と、TCAMセルデータとの比較が行われる。各サブアレイSAのマッチアンプMAは、対応するマッチ線MLの電位(入力サーチデータの対応部分とTCAMセルデータとが全て一致する場合:“H”レベル、少なくとも1つも不一致がある場合:“L”レベル)を検出する。
次に、サブアレイSA[0,0]のマッチアンプMAの検出結果は、サブアレイ[0,0]のマッチアンプ部に設けられたバッファとして用いられるANDゲート26を通過した後に、マッチアンプ出力信号mo_0として、隣接するサブアレイSA[0,1]に転送される。サブアレイSA[0,1]のマッチアンプ部23に設けられたANDゲート26は、上記のマッチアンプ出力信号mo_0と、サブアレイSA[0,1]のマッチアンプMAの検出結果との論理積を演算する。この演算結果は、マッチアンプ出力信号mo_1として、隣接するサブアレイSA[0,2]に転送される。
以下同様に、サブアレイSA[0,2]のマッチアンプ部23に設けられたANDゲート26は、上記のマッチアンプ出力信号mo_1と、サブアレイSA[0,2]のマッチアンプMAの検出結果との論理積を演算する。この演算結果は、マッチアンプ出力信号mo_2として、隣接するサブアレイSA[0,3]に転送される。サブアレイSA[0,3]のマッチアンプ部23に設けられたANDゲート26は、上記のマッチアンプ出力信号mo_2と、サブアレイSA[0,3]のマッチアンプMAの検出結果との論理積を演算する。この演算結果は、マッチアンプ出力信号mo_3として、プライオリティ・エンコーダ30に入力される。
[データ検索システムの構成]
図6は、データ検索システムの全体構成を示すブロック図である。図6のブロック図は、インターネットなどのネットワーク用のルータに設けられたデータ検索システム120の構成を示す。
ネットワークトラフィックの品質向上やネットワークセキュリティ管理を目的として、ネットワークシステムにはACL(Access Control List)が使われている。ACLルールファイルはネットワーク管理者によって作成され、記憶装置102に格納される。
データ検索システム120は、ACLに記載されたルールのもとに、LAN(Local Area Network)を介して入力されたネットワークパケットが、通過を許可すべきパケットか通過を拒否するパケットなのかを即座に判断する。すなわち、データ検索システム120には、入力してきたパケットがACL内のどのルールに対応しているかを高速に検索する能力が必要となり、その処理には一般的にTCAM装置100を利用したデータ検索システム120が利用されている。
具体的に、データ検索システム120は、TCAM装置100とNPU(Network Processor Unit)101とを含む。NPU101は、TCAM装置100の動作を制御するためのものであり、TCAM装置100に対して、各種コマンド(書込みコマンド、読出しコマンド、サーチコマンドなど)および各種データ(書込みデータ、サーチデータなど)を出力する。さらに、TCAM装置100には制御レジスタが設けられており、TCAM装置100は、この制御レジスタ用のコマンドおよびデータも出力する。
図6において、TCAM装置100のみが1つの半導体装置として構成されていてもよいし、TCAM装置100とNPU(Network Processor Unit)101とを併せて1つの半導体装置として構成されていてもよい。
ネットワーク管理者が作成したACLルールファイルは、NPU101のデータ変換部103においてTCAM用のデータに変換され、変換後のデータがTCAM装置内部に格納される。TCAM装置100は、ネットワークパケットに含まれるIPアドレスなどに基づくサーチデータと、TCAM装置内部に格納されている全てのデータとを同時に比較できる能力を有している。ただし、TCAMの検索動作には大電流を発生してしまうデメリットがある。TCAM装置を搭載するネットワークシステムおよびデータ検索システムでは、低消費電力化が課題となっている。
[ACLルールファイルおよび対応するTCAM用データの例について]
図7は、ACLルールファイルの一例を表形式で示す図である。図7では、ACLが3行のみ示されているが、実際にはより多数の行によってACLルールファイルが構成される。図7に示すように、ACLは、ネットワークから入力されたパケットのプロトコル番号、宛先ポート番号、送信元ポート番号、宛先IPアドレス、および送信元IPアドレスをチェックするためのものである。これらのチェック要素は、範囲指定が可能となっている。
たとえば、図7の参照符号201で示された行は、送信元IPアドレスについて範囲指定されている。具体的に、“147.121.56.152/29”は、アドレス32ビットのうち上位29ビットを固定し、残り3ビットをマスク(wild card)とした表現である。すなわち、147.121.56.152〜147.121.56.255の範囲が指定されている。宛先IPアドレスについても、同様の範囲指定記載が可能である。
図7の参照符号202で示された行は、送信元ポート番号について範囲指定されている。すなわち、“0:65535”の表現によって、0〜65535の範囲が指定されている。
図7の参照符号203で示された行は、宛先ポート番号が範囲指定されている。すなわち、“1024:65535”の表現によって、1024〜65535の範囲が指定されている。
図8は、図7のACLを変換することによって得られたTCAM用データの一例を示す図である。
図8を参照して、1つのルールは、プロトコル番号が8ビット、宛先ポート番号が16ビット、送信元ポート番号が16ビット、宛先IPアドレスが32ビット、送信元IPアドレスが32ビットの合計104ビットのデータで構成される。図中の“x”は、ドントケア(don't care)データ(wild cardデータ)を示す。ドントケアデータは、“1”または“0”のどちらにでも一致するデータのことである。
図8の参照符号201,202,203で示された行の表記は、図7の参照符号201,202,203で示された行のACLルールにそれぞれ対応している。参照符号203で示すように、ACLルールでは1行の範囲指定ルール(1024〜65535)であったものが、TCAM用データに変換すると6行のデータになる場合がある。さらに、宛先ポート番号と送信元ポート番号などの複数の要素が範囲指定ルールとなった場合には、TCAMに必要な行数がより一層増加してしまう。たとえば、宛先ポート番号と送信元ポート番号ともに1024〜65535の領域指定ルールであるとすると、TCAM装置には36行のデータ領域が必要となる。したがって、ACLに領域指定ルールが多く含まれている場合には、TCAM用データにはドントケア(don't care)データが多く含まれることが分かる。
図9は、ACLに基づく変換データが書込まれたTCAM装置の記憶状態を模式的に示す図である。図9では、範囲指定ルールの多いACLルールファイルがTCAM装置の記憶領域に書込まれた状態が示されている。
図9のTCAM装置は4096エントリの記憶領域を有し、1エントリあたり128ビットのデータを記憶可能である。TCAM装置全体は、16行4列の合計64個のサブアレイSA[0,0]〜SA[15,3]に区分される。
TCAM装置の記憶領域のうち図9の太枠で囲まれた領域210が、ACLに基づく変換データが書き込まれた領域である。データが書き込まれた領域210のビット幅は、104ビットであり、図8で説明した5つのチェック要素(プロトコル番号:8ビット、宛先ポート番号:16ビット、送信元ポート番号:16ビット、宛先IPアドレス:32ビット、送信元IPアドレス:32ビット)に対応している。太枠の領域210のうち、狭い間隔の斜線のハッチングが付された領域211は、ドントケアデータの領域を示しており、残りの領域は“0”および“1”のデータ領域を示す。
104ビットのACLルールに対して、TCAM装置のビット幅は128ビットなので、TCAM装置にはデータの埋まらない24ビット幅の領域212ができてしまう。この領域212のTCAMセルには、ドントケアデータが格納される。
さらに、TCAM装置の総エントリ数が4096エントリであるのに対して、ルール数が不足している場合には、データが埋まらない128ビット幅の空き領域213が存在する。この空き領域は、インバリッドエントリ(Invalid Entry)(検索非対象エントリとも称する)として設定される。インバリッドエントリの領域は、サーチ時に必ずミス(miss:不一致)になる。
具体的に、図9のTCAMでは、サブアレイSA[14,1],SA[12,2],SA[13,2],SA[14,2],SA[j,3](j=7〜14)については、各サブアレイ内の全てのセルデータがドントケアであるため、これらのサブアレイの全ての行のサーチ結果は自明である(全てヒット(hit)となる)。図9のサブアレイSA[15,1],SA[15,2],SA[15,3]については、当該サブアレイの各行は、ドントケアのセルデータのみによって構成されているか、インバリッドエントリに該当するかのいずれかであるので、これらのサブアレイの各行のサーチ結果は自明である。ところが、従来のTCAMでは、サーチコマンドが入力されると全てのサブアレイに対してサーチ動作が実行されるので、上記のようにサーチ結果が自明のサブアレイに対してもサーチ動作が実行されてしまう。このために、無駄に電流を消費してしまうという問題があった。
<第1の実施形態>
第1の実施形態では、TCAM装置内のサーチ結果が自明な領域、具体的にはドントケア(don't care)データ領域のサーチ動作を停止させながらも、正常なサーチ結果を出力する技術が提供される。これによって、従来技術において無駄に消費してしまう電流を削減することができるので、より低消費電力なTCAM装置ならびにTCAM装置を用いたデータ検索システムを提供することができる。以下、図面を参照して具体的に説明する。
[サブアレイの構成]
図10は、第1の実施形態によるTCAM装置において、サブアレイの構成を示すブロック図である。図10を参照して、図10のサブアレイSAは、レジスタREG1をさらに含む点で、図3のサブアレイSAと異なる。図10では、レジスタREG1は、制御論理回路24の内部に設けられているように図示しているが、制御論理回路24の外部に設けられていても構わない。図10のその他の構成は図3の場合と同様であるので、同一または相当する部分には同一の参照符号を付して説明を繰返さない。図10ではデータ検索に関する部分を主として記載しているので、データ書込みに関する書込みドライバ21は図示していない。
レジスタREG1は、TCAMセルアレイ20の全てのデータがドントケアである場合にハイレベル“H”(この明細書では“1”とする)に設定され、少なくとも1つがドントケアでない場合(「非ドントケア」と称する)にローレベル“L”(この明細書では“0”とする)に設定される。具体的には、TCAMセルアレイ20内の全てのデータがドントケアであるか否かの解析をTCAM装置内の専用回路が行い、当該専用回路が、解析結果に基づいてレジスタREG1の値を設定するようにしてもよい。もしくは、上記の解析を外部(たとえば、図6のNPU101のデータ解析部104)で行い、解析結果を外部からレジスタREG1に書込むようにしてもよい。
制御論理回路24は、レジスタREG1に設定された論理レベルに応じて、サーチ動作を制御するための制御信号(sle,force_hit,mae,mlpre_n)を生成する。以下、図11〜図15を参照して、具体的に説明する。
[サーチ系制御回路の構成]
図11は、図10の制御論理回路のうち、サーチ動作に関係する部分の構成を示す回路図である。図10および図11を参照して、制御論理回路24は、レジスタREG1と、インバータ42,47,48と、ANDゲート43,49,51と、Dフリップフロップ44,45と、遅延段50とを含む。レジスタREG1は、Dフリップフロップ40と、ANDゲート41とを含む。
レジスタ設定データは、レジスタ書込みコマンドが“H”レベルに活性化されると、クロック信号clkの立ち上がり時に(すなわち、ANDゲート41の出力が“H”になると)、Dフリップフロップ40に書込まれる。サブアレイ内の全セルのデータがドントケアの場合に、Dフリップフロップ40には“1”(“H”レベル)が書き込まれ、非ドントケアの場合に、Dフリップフロップ40には“0”(“L”レベル))が書き込まれる。レジスタ設定データおよびレジスタ書込みデータは、TCAM装置の外部(たとえば、図6のNPU101など)から与えられる。レジスタ設定データの書込みは、たとえば、TCAM装置の起動時に行われる。
Dフリップフロップ40の出力信号は、制御信号force_hitとしてマッチアンプ部23の各マッチアンプMAに入力される。Dフリップフロップの出力は、さらに、インバータ42を介してANDゲート43に入力される。
サーチコマンドは、ANDゲート43、フリップフロップ44,45、ANDゲート46、およびインバータ47を順に介して、マッチ線プリチャージ信号mlpre_nとしてマッチアンプ部23に出力される。上記のANDゲート43の他方の入力ノードにはインバータ42によって反転された制御信号force_hitが入力される。上記のフリップフロップ44,45のクロック端子にはクロック信号clkが入力される。上記のANDゲート46の他方の入力ノードには、クロック信号clkが入力される。
上記のフリップフロップ45の出力信号は、さらに、ANDゲート49を介して、サーチ線イネーブル信号sleとしてサーチ線ドライバ22に出力される。ANDゲート49の他方の入力ノードには、クロック信号clkをインバータ48によって反転した信号が入力される。
上記のANDゲート49の出力信号は、さらに、遅延段50を介してANDゲート51の第1の入力ノードに入力されるとともに、遅延段50を介さずに直接ANDゲート51の第2の入力ノードに入力される。ANDゲート51の出力信号は、マッチアンプイネーブル信号maeとしてマッチアンプ部23の各マッチアンプMAに入力される。
上記の回路構成によれば、制御信号force_hitは、レジスタREG1の設定値に従って、レジスタREG1の設定値が“1”の場合は“H”レベルとなり、レジスタREG1の設定値が“0”の場合は“L”レベルとなる。サーチ動作制御用の制御信号(sle,mae,mlpre_n)は、レジスタREG1の設定値およびサーチコマンドに従って変化する。
具体的に、レジスタREG1の格納データが“L”(非ドントケア)であり、かつ、サーチコマンドが“H”レベルに活性化された場合には、最初に、マッチ線プリチャージ信号mlpre_nが“L”レベルに活性化される。次に、サーチ線イネーブル信号sleが“H”レベルに活性化される。最後に、マッチアンプイネーブル信号maeが“H”レベルに活性化される。
逆に、レジスタREG1の設定データが“H”(ドントケア)の場合には、サーチコマンドが“H”レベルに活性化されたとしても、マッチ線プリチャージ信号mlpre_nは“H”レベル(非活性状態)を維持し、サーチ線イネーブル信号sleは“L”レベル(非活性状態)を維持し、マッチアンプイネーブル信号maeは“L”レベル(非活性状態)を維持する。
[サーチ線ドライバの構成および動作]
図12は、図10のサーチ線ドライバの構成の一例を示す回路図である。図10および図12を参照して、サーチ線ドライバ22は、サーチ線イネーブル信号sleが“H”レベルに活性化されたときに、入力サーチデータsd[i](i=0,1,…,k)をサーチ線SL[i]に出力するとともに、入力サーチデータsd[i]の論理レベルを反転した信号を相補のサーチ線SL_n[i]に出力する。
具体的に、サーチ線ドライバ22は、サーチ線SL[0]〜SL[k]にそれぞれ対応するANDゲート60[0]〜60[k]と、サーチ線SL_n[0]〜SL_n[k]にそれぞれ対応するANDゲート61[0]〜61[k]と、インバータ62[0]〜62[k]とを含む。サーチ線イネーブル信号sleは、ANDゲート60[0]〜60[k]およびANDゲート61[0]〜61[k]に共通に入力される。さらに、ANDゲート60[i](i=0,1,…,k)には、対応するサーチデータsd[i]、および対応するマスク信号mask_n[i]が入力される。ANDゲート60[i](i=0,1,…,k)の出力信号はサーチ線SL[i]に送信される。ANDゲート61[i](i=0,1,…,k)には、対応するサーチデータsd[i]を反転した信号、および対応するマスク信号mask_n[i]が入力される。
上記構成によれば、たとえば、サーチ線イネーブル信号sleが“H”レベルに活性化され、かつ、入力データsd[i]が“H”レベル(“1”)である場合には、サーチ線SL[i]の電圧が“H”レベルとなり、サーチ線SL_n[i]の電圧が“L”レベルとなる。サーチ線イネーブル信号sleが“H”レベルに活性化され、かつ、入力データsd[i]が“L”レベル(“0”)である場合には、サーチ線SL[i]の電圧が“L”レベルとなり、サーチ線SL_n[i]の電圧が“H”レベルとなる。マスクサーチ(サーチ動作をマスクする動作モード)の場合、マスク信号mask_n[i](i=0,1,…,k)が“L”レベルに活性化されると、サーチ線SL[i]の電圧が“L”レベルとなり、サーチ線SL_n[i]の電圧が“L”レベルとなる。
[マッチアンプの構成および動作]
図13は、図10のマッチアンプの構成の一例を示す回路図である。図10および図13を参照して、マッチアンプMAは、プリチャージ回路としてのPチャネルMOSトランジスタ70と、インバータ71〜74と、論理ゲート(NANDゲート)75とを含む。図13では、プリチャージ回路としてのMOSトランジスタ70がマッチアンプMAの内部にあるように図示しているが、MOSトランジスタ70はマッチアンプMAの外部に設けられていても構わない。
以下、上記の構成要素の接続について説明する。MOSトランジスタ70は、対応するマッチ線MLと電源電位VDDを与える電源ノードとの間に接続される。MOSトランジスタ70のゲートには、マッチ線プリチャージ信号mlpre_nが入力される。マッチ線MLは、さらに、インバータ71の入力ノードに接続される。インバータ71の出力ノードは、論理ゲート75の第1の入力ノードに接続される。論理ゲート75の第2の入力ノードには、インバータ74を介して制御信号force_hitが入力される。論理ゲート75の出力ノードは、インバータ72を介して論理ゲート75の第1の入力ノードに接続される。マッチアンプイネーブル信号maeおよびその論理レベルをインバータ73によって反転させた信号は、インバータ71,72の駆動電源ノードに接続される。マッチアンプイネーブル信号maeが非活性状態(“L”レベル)のとき、インバータ71は非動作状態となり、インバータ72は動作状態となる。マッチアンプイネーブル信号maeが活性状態(“H”レベル)のとき、インバータ71は動作状態となり、インバータ72は非動作状態となる。
次に、図13のマッチアンプMAの回路動作について説明する。最初に、(i)制御論理回路24のレジスタREG1が“L”レベル(非ドントケアを表す)に設定されている場合について説明する。この場合、制御信号force_hitは“L”レベルであるので、論理ゲート75はインバータとして機能する。
まず、マッチ線プリチャージ信号mlpre_nが活性化される(“L”レベルになる)ことによって、MOSトランジスタ70が導通する。これによって、マッチ線MLが電源電位VDDまで充電される(プリチャージされる)。
マッチ線プリチャージ信号mlpre_nが非活性化された後に、図10のサーチ線イネーブル信号sleが活性化される(“H”レベルになる)ことによって、サーチ線対SL,SL_nにサーチデータが入力される。これによって、マッチ線MLの電位がサーチ結果(入力サーチデータの対応部分とTCAMセルデータとの比較結果)に依存して変化する。すなわち、一致(ヒット:hit)の場合、マッチ線MLの電位は電源電位VDD(“H”レベル)のまま維持され、不一致(ミス:miss)の場合、マッチ線MLの電荷が接地ノードに放電されるのでマッチ線のML電位は接地電位(“L”レベル)に変化する。
次に、マッチアンプイネーブル信号maeが活性化される(“H”レベルになる)。これによって、サーチ結果に基づくマッチ線MLの電位が、インバータ71および論理ゲート75(インバータと同等)を介してマッチアンプ出力信号moとして出力される。マッチアンプイネーブル信号maeが非活性化される(“L”レベルになる)と、インバータとして機能する論理ゲート75とインバータ72とによって構成されるラッチ回路69に、サーチ結果に基づくマッチ線MLの電位が保持される。
一方、(ii)レジスタREG1が“H”レベル(ドントケアを表す)に設定されている場合には、制御信号force_hitは“H”レベルであるので、マッチアンプMAの出力信号mo(論理ゲート75の出力信号)は、 “H”レベル(一致(hit)を表す)に固定される。さらに、この場合、マッチ線プリチャージ信号mlpre_nは“H”レベル(非活性状態)であるので、マッチ線MLのプリチャージは行われない。サーチ線イネーブル信号sleは“L”レベル(非活性状態)であるので、サーチ線対SL,SL_nはいずれも“L”レベルに固定されたままである(サーチ線ドライバ22は動作しない)。マッチアンプイネーブル信号maeは“L”レベル(非活性状態)であるので、インバータ71は非動作状態である。
[サーチ動作の一例]
以下、ある1つのサブアレイにおけるサーチ動作の例について、図14および図15のタイミング図を参照して説明する。
(レジスタREG1に“0”が格納されている場合)
図14は、図10のサブアレイに設けられたレジスタREG1に非ドントケアを表す“0”が格納されているときのサーチ動作を示すタイミング図である。図14において、各サイクルはクロック信号clkのポジティブエッジから次のポジティブエッジまでの期間である。制御論理回路24から出力される制御信号force_hitは、“L”レベルである。
図14を参照して、T1サイクルへ切替わる付近で(T1サイクルの1つ前のサイクルの後半からT1サイクルの前半にかけて)、サーチコマンドとサーチデータとがTCAM装置に入力される。T1サイクルの最初のクロック信号clkの立上がりにおいて、サーチコマンドとサーチデータとが制御論理回路24に取り込まれる。このサーチコマンドに応答して、次のT2サイクルの前半で制御論理回路24は、マッチ線プリチャージ信号mlpre_nを活性化する(“L”レベルにする)。これによって、マッチ線MLが電源電位VDDまで充電される(プリチャージされる)。
サーチコマンドに応答して、T2サイクルの後半で、制御論理回路24はサーチ線イネーブル信号sleを活性化する(“H”レベルにする)。サーチ線イネーブル信号sleが活性化する前に、マッチ線プリチャージ信号mlpre_nは非活性化される(“H”レベルになる)。サーチ線イネーブル信号sleの活性化によってサーチ線ドライバ22が活性化され、サーチ線ドライバ22はサーチデータsdをサーチ線対SL,SL_nに転送する。この結果、マッチ線MLに接続された全てのTCAMセルのセルデータと、サーチ線対SL,SL_nを介して転送されたサーチデータsdとが一致した場合には(ヒット)、マッチ線MLの電位は電源電位VDD(“H”レベル)に維持される。マッチ線MLに接続されたTCAMセルの格納値のうち1つでも、転送されたサーチデータsdと一致しない場合には(ミス)、マッチ線MLにプリチャージされた電荷が放電されるために、マッチ線MLの電位は接地電位(“L”レベル)に変化する。
サーチコマンドに応答して、T2サイクルの後半において、さらに、制御論理回路24は、サーチ線イネーブル信号sleを活性化した後でかつ非活性化する前に、マッチアンプイネーブル信号maeを活性化する(“H”レベルにする)。これによって、行(エントリ)ごとに、マッチアンプMAからマッチ線MLの電位に基づく信号(サーチ結果)が出力される。同一のエントリに対応する複数のサブアレイ(マッチアンプMA)でのサーチ結果は、AND演算された後にプライオリティ・エンコーダ30に入力される。
次のT3サイクルにおいて、制御論理回路24がマッチアンプイネーブル信号maeを非活性化する(“L”レベルにする)ことによって、各マッチ線MLで検出されたサーチ結果は、対応するマッチアンプMA内のラッチ回路69に保持される。さらに、T3サイクルにおいて、プライオリティ・エンコーダ30は、ヒットアドレス(サーチ結果)を出力する。ヒットアドレスが複数存在する場合には、最も優先度の高いものが出力される。
(レジスタREG1に“1”が格納されている場合)
図15は、図10のサブアレイに設けられたレジスタREG1にドントケアを表すデータ“1”が格納されているときのサーチ動作を示すタイミング図である。
図15を参照して、電源立ち上げ時などにおいて、最初に(図15では、T1サイクルの1つ前のサイクルの後半からT1サイクルの前半にかけて)、レジスタ書込みコマンドとドントケアを表すレジスタ設定データ(“H”レベル)とがTCAM装置に入力される。T1サイクルの最初のクロック信号clkの立上がりにおいて、レジスタ設定データ(“H”レベル)は、対応するサブアレイSAのレジスタREG1に書込まれる。これによって、制御信号force_hitが“H”レベルになり、各マッチアンプMAの出力信号moが“H”レベル(ヒットを表す)に固定される。
サーチ動作時において、最初に(図15では、T2サイクルの後半からT3サイクルの前半にかけて)、サーチコマンドとサーチデータとがTCAM装置に入力される。レジスタREG1に“L”レベルが設定されている場合には、T3サイクルの最初のクロック信号clkの立上がりにおいて、サーチコマンドが制御論理回路24に取り込まれ、次のT4サイクルにおいてサーチ動作が実行される(図14参照)。しかしながら、レジスタREG1に“H”レベルが設定されている場合には、サーチコマンドが制御論理回路24に取り込まれることはない。このため、次のT4サイクルにおいて、サーチ動作が開始されない。
このように、ある1つのサブアレイの全てのTCAMセルのセルデータがドントケアを表すデータの場合には、レジスタREG1が“H”レベル(“1”)に設定される。この結果、当該サブアレイの各マッチアンプMAの出力が“H”レベル(ヒット)に固定されるとともに、当該サブアレイではサーチ動作(マッチ線のプリチャージおよびサーチ線ドライバの動作)が実行されないようになるので、省電力化を図ることができる。
[マッチアンプの構成の変形例]
たとえば、図9のTCAM装置のサブアレイSA[15,1],SA[15,2],SA[15,3]については、データが格納されていないインバリッドエントリを含んでいる。すなわち、これらのサブアレイの各行は、全てのセルデータがドントケアに設定されているか、インバリッドエントリに該当するかのいずれかである。したがって、各行(エントリ)のサーチ結果は自明である。このような場合においても、図10の制御論理回路24内のレジスタREG1を“H”レベル(“1”)に設定することによって、当該サブアレイではサーチ動作を行わないようにすることによって、低消費電力化を図ることができる。ただし、これらのサブアレイのうちインバリッドエントリに該当する行に関しては、マッチアンプMAがサーチ結果として“L”レベル(ミス)を出力するように変更する必要がある。
以下、上記のように、インバリッドエントリではサーチ結果としてミスを出力するように変更されたマッチアンプMAの構成について説明する。なお、図9で説明したように、インバリッドエントリ(Invalid Entry)とは、TCAM装置の総エントリのうちデータが格納されていない空きエントリを意味し、検索非対象エントリとなっている。一方、バリッドエントリ(Valid Entry)とは、TCAM装置の総エントリのうちデータが格納されている検索対象エントリである。
図16は、図10のマッチアンプの変形例を示す回路図である。図16のマッチアンプMAは、ANDゲート76とレジスタREG2をさらに含む点で、図10のマッチアンプと異なる。レジスタREG2は、サブアレイの対応する行(エントリ)がインバリッドエントリの場合に“L”レベル(この明細書では“0”とする)に設定され、バリッドエントリの場合に“H”レベル(この明細書では“1”とする)に設定される。レジスタREG2は、サブアレイSAの行ごとにマッチアンプMAに対応して設けられていればよいので、必ずしも図16のようにマッチアンプMAの内部に設けられている必要はない。上記のレジスタREG2の値の設定は、TCAM装置内部の専用回路が行ってもよいし、TCAM装置の外部(たとえば、図6のNPU101)から行うようにしてもよい。
ANDゲート76は、レジスタREG2から出力された制御信号val_entと論理ゲート75の出力信号とのAND演算結果を、マッチアンプMAの出力信号moとして出力する。図16のその他の構成は図10の場合と同じであるので、同一または相当する部分には同一の参照符号を付して説明を繰返さない。
上記構成によれば、図10および図11で説明したレジスタREG1が、ドントケアを表す“H”レベルの値(“1”)に設定されていた場合であっても、インバリッドエントリに対応するマッチアンプMAのレジスタREG2を“L”レベルの値(“0”)に設定することによって、マッチアンプMAの出力信号moを“L”レベル(ミス)にすることができる。したがって、あるサブアレイの各行が、全てドントケアのセルデータによって構成されているか、インバリッドエントリに該当し、“1”または“0”のデータを格納するTCAMセルが含まれていない場合には、当該サブアレイでのサーチ動作を停止させた上で、各マッチアンプMAからヒット(ドントケアの場合)またはミス(インバリッドエントリの場合)を正常に出力させることができる。この結果、当該サブアレイの消費電力を低減させることができる。
[第1の実施形態の効果]
上記の実施形態によれば、サーチ結果が自明なサブアレイは、サーチ動作を行わないようにしたうえで、当該サブアレイから正常なサーチ結果を出力するように制御できる。具体的に、サブアレイに含まれるすべてのTCAMセルのデータがドントケアである場合には、各マッチアンプMAからヒットを表わす“H”レベルの信号が出力される。サブアレイの各行が、全てドントケアのセルデータによって構成されているか、インバリッドエントリに該当するかのいずれかである場合には、ドントケアの場合に対応するマッチアンプMAからヒットを表す“H”レベルの信号が出力され、インバリッドエントリの場合に対応するマッチアンプからミスを表す“L”レベルの信号が出力される。この結果、当該サブアレイの各マッチアンプMAは、マッチ線のプリチャージ電流および動作電流を発生しないので、TCAM装置の消費電力を低減させることができる。
さらに、サーチ結果が自明なサブアレイに対してサーチ動作を行わないことによって、サーチ動作時のピーク電流を低減させ、急激な電流変化を抑制することができる。さらに、急激な電流変化を抑制することによって、TCAM装置を搭載した半導体チップに供給する電源電圧の揺らぎを低減することができ、この結果、サーチ特性が安定した高品質なTCAM装置を実現することができる。さらに、TCAM装置の消費電流およびサーチ動作時のピーク電流の削減によって、TCAM装置に接続する外部電源装置の必要能力(すなわち、電流の供給能力および応答性能など)を軽減することができるので、安価で高品質なデータ検索システムを実現することができる。
<第2の実施形態>
[TCAMサブアレイの構成]
図17は、第2の実施形態によるTCAM装置において、サブアレイSAの構成を示すブロック図である。図17に示すサブアレイSAは、列方向(Y方向)の両端に配置された2個の制御論理回路24A,24Bと、列方向(Y方向)の両端に配置された2個のサーチ線ドライバ22A,22Bとを含む点で、図10のサブアレイSAと異なる。図17では図示していないが、書込みドライバについても列方向(Y方向)の両端に配置されている。
第0行から第(m−1)/2行までのTCAMセル(セルアレイ20Aと称する)は、これらのTCAMセル(セルアレイ20A)に隣接するSLドライバ22A、マッチアンプ部23A、および制御論理回路24Aによって制御される。
セルアレイ20Aがドントケアのデータのみを格納している場合には、制御論理回路24Aに設けられたレジスタREG1Aに“H”レベルの値(“1”)が設定される。この場合、制御論理回路24Aから出力される制御信号force_hitは“H”レベル(“1”)となるので、マッチアンプ部23Aに設けられたマッチアンプ(不図示)からの出力信号mo[0]〜mo[(m−1)/2]は“H”レベル(ヒット)に固定される。
第(m−1)/2+1行から第m行までのTCAMセル(セルアレイ20Bと称する)は、これらのTCAMセル(セルアレイ20B)に隣接するSLドライバ22B、マッチアンプ部23B、および制御論理回路24Bによって制御される。
セルアレイ20Bがドントケアのデータのみを格納している場合には、制御論理回路24Bに設けられたレジスタREG1Bに“H”レベルの値(“1”)が設定される。この場合、制御論理回路24Bから出力される制御信号force_hitは“H”レベル(“1”)となるので、マッチアンプ部23Bに設けられたマッチアンプ(不図示)からの出力信号mo[(m−1)/2+1]〜mo[m]は“H”レベル(ヒット)に固定される。
図17のサブアレイSAのマッチアンプ部23A,23Bに設けられた各マッチアンプ(不図示)は、図16で説明したレジスタREG2を有するマッチアンプMAの構成としてもよい。この場合、サブアレイSAのセルアレイ20A,20Bのうちインバリッドエントリに該当する行のマッチアンプからの出力信号moは“L”レベル(ミス)となる。
図17のその他の点は、図10などで説明した第1の実施形態の場合と同様であるので、同一または相当する部分については同一の参照符号を付して説明を繰返さない。
[第2の実施形態の効果]
上記の構成のサブアレイを備えたTCAM装置によれば、第1の実施形態のTCAM装置と同様の効果を奏するとともに、さらに次のような効果を奏する。まず、第1の実施形態の図10の構成のサブアレイに比べて、総エントリ(行)数が半分の領域に対してドントケア領域か否かの設定が可能になる。したがって、ドントケア領域が比較的小さなACLルールファイルに対しても省電力化を図ることができる。
さらに、図10の構成のサブアレイSAを複数配置する場合には、デザインルールの制約のために、サーチ線ドライバ22などのドライバ回路とセルアレイ20Aとが近接しないように、隣合うサブアレイSAの間にある程度の間隔を設ける必要がある。これに対して、図17の構成のサブアレイSAを複数配置する場合には、各サブアレイSAのサーチ線ドライバ22Aおよび制御論理回路24Aを、隣接するサブアレイSAのサーチ線ドライバ22Bおよび制御論理回路24Bに近接して配置することができるので、隣合うサブアレイの間隔を図10の場合ほどあけなくてもよいというメリットがある。
<第3の実施形態>
たとえば、図9のサブアレイSA[6,1],SA[13,1]については、サブアレイ内の全ての行のTCAMセルがドントケアに設定されているわけではないので、図10および図11で説明したレジスタREG1を“H”レベル(“1”)に設定することはできない。しかしながら、一部の行のTCAMセルについては全てドントケアに設定されているので、これらの一部の行についてはサーチ結果がヒットになることは自明である。
そこで、第3の実施形態のTCAM装置は、サブアレイの行ごとに、マッチ線MLのプリチャージを停止し、マッチアンプMAの回路動作を行わないよう制御可能にしたものである。これによって一層の低消費電力化を図ることができる。以下、図面を参照して具体的に説明する。
[マッチアンプの構成および動作]
図18は、第3の実施形態によるTCAM装置において、マッチアンプMAの構成を示す回路図である。図18のマッチアンプMAは、レジスタREG3、ORゲート77、ANDゲート78、およびインバータ79をさらに含む点で、図13のマッチアンプMAと異なる。さらに、図18のマッチアンプMAは、インバータ74に代えてNORゲート80を含む点で図13のマッチアンプMAと異なる。
マッチ線MLを介してマッチアンプMAに接続された全てのTCAMセルのセルデータがドントケアに設定されている場合には、レジスタREG3は“H”レベル(この明細書では“1”に対応する)に設定される。マッチ線MLを介してマッチアンプMAに接続されているTCAMセルのうち少なくとも1つのセルデータがドントケアでない場合には、レジスタREG3は“L”レベル(この明細書では“0”に対応する)に設定される。レジスタREG3は、サブアレイSAの行ごとにマッチアンプMAに対応して設けられていればよいので、必ずしも図18のようにマッチアンプMAの内部に設けられている必要はない。
ORゲート77は、レジスタREG3から出力された制御信号dnc_hitとマッチ線プリチャージ信号mlpre_nとのOR演算を実行し、演算結果をPチャネルMOSトランジスタ70のゲートに出力する。したがって、レジスタREG3の設定値に従う制御信号dnc_hitが“H”レベルのときは、MOSトランジスタ70はオフ状態に固定されるので、マッチ線MLのプリチャージは生じない。
ANDゲート78は、レジスタREG3から出力された制御信号dnc_hitの論理レベルをインバータ79によって反転させた値とマッチアンプイネーブル信号maeとのAND演算を行う。ANDゲート78のAND演算結果と、このAND演算結果の論理レベルをインバータ73によって反転させた信号とが、インバータ71,72の駆動電源ノードに供給される。したがって、レジスタREG3の設定値に従う制御信号dnc_hitが“H”レベルの場合には、インバータ71は非動作状態となり、インバータ72は動作状態となるので、マッチ線MLの電位は後段の回路に出力されず、マッチ線MLの電位のラッチも行われない。
NORゲート80は、レジスタREG3から出力された制御信号dnc_hitと制御信号force_hitとのNOR演算を行い、演算結果を論理ゲート75(NANDゲート)の第2の入力ノードに入力する。したがって、レジスタREG3(制御信号dnc_hit)が“H”レベルに設定されているときは、マッチアンプMAの出力信号mo(論理ゲート75の出力信号)は、 “H”レベル(一致(hit)を表す)に固定される。
以上のように、レジスタREG3(制御信号dnc_hit)が“H”レベルに設定されているときは、レジスタREG1が“L”レベルに設定されていたとしても、マッチアンプMAの出力信号moを“H”レベル(ヒット)に固定するとともに、マッチ線MLのプリチャージおよびマッチアンプMAの回路動作を停止させることができる。
図18のその他の構成および動作は図13と同様であるので、同一または相当する部分に同一の参照符号を付して説明を繰返さない。たとえば、制御論理回路24に設けられたレジスタREG1とマッチアンプMAに設けられたレジスタREG3とが共に“L”レベル(非ドントケアを表す)に設定されている場合には、マッチアンプMAとマッチ線MLを介して接続されたTCAMセルについては通常のサーチ動作が行われる。制御論理回路24に設けられたレジスタREG1が“H”レベル(ドントケアを表す)に設定されている場合には、サブアレイ全体のサーチ動作が停止される。
[レジスタREG3へのデータ設定方法]
以下、図18〜図21を参照して、レジスタREG3へのデータ設定方法について説明する。
図18に示すように、レジスタREG3には、レジスタ書込み信号reg_w_sigとレジスタデータreg_dataとが入力される。レジスタREG3は、レジスタ書込み信号reg_w_sigが活性化されたときに、レジスタデータreg_dataを格納する。レジスタ書込み信号reg_w_sigおよびレジスタデータreg_dataは、TCAM装置内部の専用回路から与えてもよいし、TCAM装置外部のプロセッサ(たとえば、図6のNPU101)から与えてもよい。
特に、TCAM装置内部に専用回路(図19のデータ判定回路33)を設けた場合には、当該専用回路は、TCAM装置へのデータ書込み時に、共通のマッチ線MLに接続された全てのTCAMセルへの書込みデータがドントケアであるか否かを判定し、判定結果に基づいて即座にレジスタREG3に書込みを行うことができるので、都合がよい。当該専用回路は、共通のマッチ線MLに接続された全てのTCAMセルがドントケアに設定される場合に、レジスタREG3を“H”レベル(“1”)に設定し、そうでない場合に、レジスタREG3を“L”レベル(“0”)に設定する。
これに対して、TCAM装置の外部のプロセッサによってレジスタREG3の設定を行う場合には、TCAM装置へのデータ書込み後に、外部のプロセッサがTCAM装置からエントリごとにデータを読出して、上記の判定条件が満たされているか否かを判定することになる。したがって、TCAM装置内部に専用回路を設けるよりも、余計に手間がかかってしまう。
以下、上記の専用回路(図19のデータ判定回路33)の動作について、図面を参照して詳しく説明する。
図19は、第3の実施形態によるTCAM装置の構成を示すブロック図である。図19のTCAM装置は、データ判定回路33[0]〜33[3](総称する場合または不特定のものを示す場合にデータ判定回路33と記載する)をさらに含む点で、図4のTCAM装置と異なる。
図19に示すように、データ判定回路33[0]は、サブアレイSA[0,0],SA[1,0],SA[2,0],…に対応して設けられる。データ判定回路33[0]は、コマンド入力回路32を介して入力された書込みコマンドを検出したとき、対応するサブアレイへの書込みデータd[0:31]に基づいて、同一行(エントリ)の全ての書込みデータがドントケアであるという条件が満たされているか否かを判定する。データ判定回路33[0]は、上記の判定条件が満たされている場合に、当該行に対応するレジスタREG3を“H”レベル(ドントケアを表す)に設定する。
同様に、データ判定回路33[1]は、サブアレイSA[0,1],SA[1,1],SA[2,1],…に対応して設けられ、対応するサブアレイへの書込みデータd[32:63]に基づいて、対応するサブアレイの各レジスタREG3の設定を行う。データ判定回路33[2]は、サブアレイSA[0,2],SA[1,2],SA[2,2],…に対応して設けられ、対応するサブアレイへの書込みデータd[64:95]に基づいて、対応するサブアレイの各レジスタREG3の設定を行う。データ判定回路33[3]は、サブアレイSA[0,3],SA[1,3],SA[2,3],…に対応して設けられ、対応するサブアレイへの書込みデータd[96:127]に基づいて、対応するサブアレイの各レジスタREG3の設定を行う。
図20は、図19のデータ判定回路33の動作を示すフローチャートである。図19および図20を参照して、TCAMセルへのデータ書込み時に、データ入力回路31は、エントリごとに、各TCAMセルのXセル(図1参照)用の書込みデータを出力し、次にYセル用の書込みデータを出力する。データ入力回路31から順次出力されたXセル用およびYセル用の書込みデータd[0:31],d[32:63],d[64:95],d[96:127]は、32ビットごとに対応するサブアレイSAの書込みドライバ21に入力され、書込みドライバ21から各ビット線対BL,BL_nに出力される。Xセル用およびYセル用の書込みデータd[0:31],d[32:63],d[64:95],d[96:127]は、32ビットごとに対応するデータ判定回路33に入力される。言い替えると、データ判定回路33は、同一マッチラインに接続された書込み対象であるTCAMセルのXセルおよびYセル用の書込みデータを順次受信する(ステップS100)。
次に、データ判定回路33は、受信した32ビットのXセル用の書込みデータの全ビットと32ビットのYセル用の書込みデータの全ビットとが全て“0”であるという条件が満たされているか否かを判定する(ステップS110)。具体的には、データ判定回路33は、Xセル用の書込みデータの全ビットのOR演算を行い、さらに、Yセル用の書込みデータの全ビットのOR演算を行う。データ判定回路33は、これらのOR演算の演算結果のNOR演算を実行し、最終的に得られた値が“1”(ドントケア)であるか“0”(非ドントケア)であるかを判定する。
上記のXセル用データおよびYセル用データの全ビットが“0”であるという判定条件が満たされている場合、すなわち、上記の論理演算によって最終的に得られた値が“1”(ドントケア)である場合(ステップS110でYES)、データ判定回路33は、書込み対象のエントリに対応するレジスタREG3を、ドントケアを表す値“1”(“H”レベル)に設定する(ステップS120)。レジスタREG3に値“1”を設定するタイミングは、TCAMセルにデータを書込むタイミングと同じでよい。
逆に、上記の判定条件が満たされていない場合、すなわち、上記の論理演算によって最終的に得られた値が“0”(非ドントケア)である場合(ステップS110でNO)、データ判定回路33は、書込み対象のエントリに対応するレジスタREG3を、非ドントケアを表す値“0”(“L”レベル)に設定する(ステップS130)。
図21は、第3の実施形態のTCAM装置において、図18のレジスタREG3へのデータ書込み手順を示すタイミング図である。図21において、各サイクルはクロック信号clkのポジティブエッジから次のポジティブエッジまでの期間である。
図19および図21を参照して、最初に、T1サイクルへ切替わる付近で(T1サイクルの1つ前のサイクルの後半からT1サイクルの前半にかけて)、Xセル用の書込みデータ(128ビット)とXセルへの書込みを指令するためのコマンドとが、それぞれ、データ入力回路31とコマンド入力回路32とに入力される。データ入力回路31は、入力されたXセル用データ(128ビット)を、32ビットごとに分割し、分割後のXセル用データ(32ビット)の各々を対応するサブアレイSAおよび対応するデータ判定回路33に出力する。コマンド入力回路32は、入力されたコマンド(Xセルへの書込み)を各サブアレイSAおよび各データ判定回路33に出力する。T1サイクルにおいて、各データ判定回路33は、対応する32ビット分のXセル用データを取り込む。
次に、T2サイクルへ切替わる付近で(T1サイクルの後半からT2サイクルの前半にかけて)、Yセル用の書込みデータ(128ビット)とYセルへの書込みを指令するためのコマンドとが、それぞれ、データ入力回路31とコマンド入力回路32とに入力される。データ入力回路31は、入力されたYセル用データ(128ビット)を、32ビットごとに分割し、分割後のYセル用データ(32ビット)の各々を対応するサブアレイSAおよび対応するデータ判定回路33に出力する。コマンド入力回路32は、入力されたコマンド(Yセルへの書込み)を各サブアレイSAおよび各データ判定回路33に出力する。
T2サイクルにおいて、各データ判定回路33は、対応する32ビット分のYセル用の書込みデータを取り込む。さらに、各データ判定回路33は、T1サイクルで取り込んだXセル用データの全ビットのOR演算を行い、演算結果(“0”または“1”)を、たとえば、データ判定回路33ごとに設けられた2ビットのシフトレジスタの第1ビット目に保持する。
次のT3サイクルにおいて、Xセル用データのOR演算結果は、シフトレジスタの第2ビット目にシフトされる。各データ判定回路33は、T2サイクルで取り込んだYセル用データの全ビットのOR演算を行い、演算結果(“0”または“1”)を、上記のシフトレジスタの第1ビット目に保持する。その後、各データ判定回路33は、対応するシフトレジスタの第1ビット目と第2ビット目とのNOR演算を行う(すなわち、T2サイクルで得られたXセル用データのOR演算結果とT3サイクルで得られたYセル用データのOR演算結果とのNOR演算がさらに実行される)。以上の論理演算の最終的な結果が“1”の場合は、32ビットのXセル用データおよび32ビットのYセル用データの各ビットは全て“0”であること、すなわち、32ビットの書込みデータの全ビットがドントケアであることがわかる。
次のT4サイクルにおいて、データ判定回路33は、NOR演算結果をレジスタデータreg_dataとして、対応するサブアレイSAの各レジスタREG3に出力する。データ判定回路33は、T4サイクルのクロック信号clkのネガティブエッジで、書込み対象エントリに対応するマッチアンプMAに設けられたレジスタREG3に供給されるレジスタ書込み信号reg_w_sigを活性化する(“H”レベルにする)。この結果、書込み対象エントリのTCAMセルの値が全てドントケアの場合には、レジスタREG3に“1”(“H”レベル)が設定され、そうでない場合(非ドントケアの場合)には、レジスタREG3に“0”(“L”レベル)が設定される。レジスタ書込み信号reg_w_sigをクロック信号clkのネガティブエッジで発生させる理由は、セットアップ時間およびホールド時間を十分に確保するためである。
[マッチアンプの変形例]
図22は、図18のマッチアンプMAの変形例を示すブロック図である。図22のマッチアンプMAは、対応する行がデータの格納されていないインバリッドエントリの場合にも適用可能なものである。
具体的に、図22のマッチアンプMAは、レジスタREG2、ANDゲート76、インバータ81、およびORゲート82をさらに含む点で図18のマッチアンプMAと異なる。
レジスタREG2は、サブアレイの対応する行がインバリッドエントリの場合に“L”レベル(この明細書では“0”とする)に設定され、バリッドエントリの場合に“H”レベル(この明細書では“1”とする)に設定される。レジスタREG2は、サブアレイSAの行ごとにマッチアンプMAに対応して設けられていればよいので、必ずしも図22のようにマッチアンプMAの内部に設けられている必要はない。上記のレジスタREG2の値の設定は、TCAM装置内部の専用回路が行ってもよいし、TCAM装置の外部(たとえば、図6のNPU101)から行うようにしてもよい。
ANDゲート76は、レジスタREG2から出力された制御信号val_entと論理ゲート75の出力信号とのAND演算結果を、マッチアンプMAの出力信号moとして出力する。したがって、レジスタREG1の設定値が“1”(ドントケア)であるか、または、レジスタREG3の設定値が“1”(ドントケア)であったとしても、レジスタREG2の設定値が“0”(インバリッド)であれば、レジスタREG2のインバリッド設定が優先されるため、マッチアンプMAの出力信号moを“L”レベル(ミス)にすることができる。
ORゲート82は、レジスタREG3から出力された制御信号dnc_hitと、レジスタREG2から出力された制御信号val_entの論理レベルをインバータ81によって反転させた値とのOR演算を行う。
ORゲート77は、ORゲート82の出力値とマッチ線プリチャージ信号mlpre_nとのOR演算を実行し、演算結果をPチャネルMOSトランジスタ70のゲートに出力する。したがって、レジスタREG3の設定値に従う制御信号dnc_hitが“H”レベル(ドントケア)の場合、および/または、レジスタREG2の設定値に従う制御信号val_entが“L”レベル(インバリッド)の場合に、MOSトランジスタ70はオフ状態に固定されるので、マッチ線MLのプリチャージは生じない。
ANDゲート78は、ORゲート82の出力値の論理レベルをインバータ79によって反転させた値とマッチアンプイネーブル信号maeとのAND演算を行う。ANDゲート78のAND演算結果と、このAND演算結果の論理レベルをインバータ73によって反転させた信号とが、インバータ71,72の駆動電源ノードに供給される。したがって、レジスタREG3の設定値に従う制御信号dnc_hitが“H”レベル(ドントケア)の場合、および/または、レジスタREG2の設定値に従う制御信号val_entが“L”レベル(インバリッド)の場合には、インバータ71は非動作状態となり、インバータ72は動作状態となるので、マッチ線MLの電位は後段の回路に出力されず、マッチ線MLの電位のラッチも行われない。
図22のその他の構成は図18の場合と同じであるので、同一または相当する部分には同一の参照符号を付して説明を繰返さない。
このように、マッチアンプMAに対応する行がインバリッドエントリの場合にもサーチ結果が自明(ミスになる)であるため、マッチ線MLのプリチャージ動作が停止され、マッチアンプMAの回路動作が停止される。この場合には、マッチアンプMAの出力信号が“L”レベル(ミス)に固定されることによって、正常なサーチ結果が出力される。
図22において、インバータ81およびORゲート82を設けないような変形例も可能である。すなわち、レジスタREG2から出力された制御信号val_entは、ANDゲート76にのみ入力される。この場合、レジスタREG2を“0”(インバリッド)に設定しただけでは、対応するマッチ線MLのプリチャージを停止したり、マッチアンプMAの回路動作を停止したりすることができない。したがって、レジスタREG2を“0”(インバリッド)に設定した場合には、必ず、レジスタREG3を“1”(ドントケア)に設定する必要がある。
[第3の実施形態の効果]
上記のとおり、サブアレイ内の全てのセルデータがドントケアでない場合であっても、全セルデータがドントケアである行(以下、「ドントケアエントリ」と称する)を含んでいる場合、もしくは、データが設定されていないインバリッドエントリを含んでいる場合には、当該行のサーチ結果は自明である。このような場合には、当該行(ドントケアエントリまたはインバリッドエントリ)のマッチ線MLのプリチャージ動作が停止され、マッチアンプMAの回路動作が停止される。これによって、TCAM装置の消費電力を低減させることができる。そして、ドントケアエントリに対応するマッチアンプMAからの出力信号を“H”レベル(ヒット)に固定し、インバリッドエントリに対応するマッチアンプMAからの出力信号を“L”レベル(ミス)に固定することによって、正常なサーチ動作を行うことができる。
第3の実施形態のTCAM装置によれば、サブアレイ内にドントケアエントリまたはインバリッドエントリが散在している場合に有効な低消費電力化手段を与えることができる。
<第4の実施形態>
第4の実施形態のTCAM装置では、図10および図11で説明した、サブアレイ全体のサーチ動作を停止可能するためのレジスタREG1が設けられていない場合について説明する。この場合、図18および図22で説明したマッチアンプMAごとに設けられているレジスタREG3の設定値に基づいて、サブアレイ全体のサーチ動作を停止するか否かが判定される。以下、図面を参照して詳しく説明する。
[サブアレイの構成]
図23は、第4の実施形態によるTCAM装置において、サブアレイの構成を模式的に示すブロック図である。図23のサブアレイSAは、制御論理回路24内のレジスタREG1が設けられておらず、このレジスタREG1に代えて論理積回路27が設けられている点で、図10のサブアレイSAと異なる。図23のその他の構成は図10と同様であるので、同一または相当する部分には同一の参照符号を付して説明を繰返さない。
論理積回路27は、TCAMセルアレイ20の行ごとに(マッチ線MLごとに)設けられたレジスタREG3[0]〜REG3[m]のそれぞれの設定値dnc_hit[0]〜dnc_hit[m]の論理積を演算し、演算結果を制御信号force_hitとして出力する。制御信号force_hitは、制御論理回路24に入力される。既に説明したように、レジスタREG3は、サブアレイ内の対応する行のセルデータが全てドントケアであるときに“1”(“H”レベル)に設定され、そうでない場合に“0”(“L”レベル)に設定される。したがって、サブアレイ内の全てのセルデータがドントケアの場合に制御信号force_hitは“H”レベル(“1”)になり、そうでない場合に制御信号force_hitは“L”レベル(“0”)になる。
[制御論理回路の構成]
図24は、図23の制御論理回路24において、検索動作に関係する部分の構成を示す回路図である。図24の制御論理回路24は、レジスタREG1を含まない点で図11の制御論理回路24と異なる。図24の場合、インバータ42への入力される制御信号force_hitは、図23の論理積回路27から与えられる。
さらに、図24の場合、制御信号force_hitは制御論理回路24から各マッチアンプMAに出力されない。したがって、図18および図22のマッチアンプMAでは、NORゲート80に代えて、レジスタREG3から出力された制御信号dnc_hitの論理レベルを反転するためのインバータが設けられる。このインバータの出力信号が論理ゲート75に入力される。図24のその他の構成は図11と同様であるので、同一または相当する部分には同一の参照符号を付して説明を繰返さない。
[第4の実施形態の効果]
上記の構成によれば、サブアレイ内の全てのセルデータがドントケアに設定されており、これによって、サブアレイ内の行ごとに設けられたレジスタREG3が全てドントケアに設定されている場合には、自動的にサブアレイのサーチ動作を停止することができる。図19〜図21で説明したように、レジスタREG3の値の設定については、データ判定回路33を用いて自動的に行うことができるので、レジスタREG1の値を設定するために、TCAM装置へのデータ書込み後にTCAMセルデータの内容を解析する必要がないというメリットがある。
変形例として、図10および図11で説明したレジスタREG1と、図23の論理積回路27とのいずれも設けないという構成が考えられる。しかし、この変位例の構成において、サブアレイ内の全てのセルデータがドントケアに設定されていた場合には、全てのマッチ線MLのプリチャージ動作を停止し、全てのマッチアンプMAの回路動作を停止することはできるけれども、サーチ線ドライバ22の動作を停止することができない。上記の実施形態では、全てのサーチ動作が停止可能か否かを判定するために、論理積回路27が設けられている。
<第5の実施形態>
[バッファアンプ部の構成について]
図25は、制御論理回路24からの出力信号のために用いられるバッファアンプの配置について説明するための図である。
図11の制御論理回路24から出力された制御信号force_hit、マッチ線プリチャージ信号mlpre_n、およびマッチアンプイネーブル信号maeは、サブアレイ内の全てのマッチアンプMAに出力される。したがって、サブアレイごとのエントリ数が多い場合には、バッファアンプを設ける必要がある。このため、図25の場合には、4個のマッチアンプMAごとにバッファアンプ部84が設けられている。
図25を参照して、バッファアンプ部84は、4個のマッチアンプMA[0],MA[1],MA[2],MA[3]に対応して設けられ、バッファ85,86,87を含む。マッチ線プリチャージ信号mlpre_nは、バッファ85によって整形された後に、対応する4個のマッチアンプMA[0],MA[1],MA[2],MA[3]の各々のORゲート77に入力される。マッチアンプイネーブル信号maeは、バッファ86によって整形された後に、対応する4個のマッチアンプMA[0],MA[1],MA[2],MA[3]の各々のANDゲート78に入力される。制御信号force_hitは、バッファ87によって整形された後に、対応する4個のマッチアンプMA[0],MA[1],MA[2],MA[3]の各々のNORゲート80に入力される。
なお、図25では、マッチアンプMA[0],MA[1],MA[2]について、それぞれレジスタREG3[0],REG3[1],REG3[2]を除く部分の回路部分83は、マッチアンプMA[3]の回路部分83と同一構成であるので、図示を省略している。
[バッファアンプ部の変形例]
図26は、第5の実施形態のTCAM装置において、バッファアンプ部の構成を説明するための図である。図26のバッファアンプ部84は、低消費電力化のために、図25のバッファアンプ部84の構成を変更したものである。
具体的に、図26のバッファアンプ部では、図25のバッファに代えて論理ゲートを設けることによって、入力波形の整形機能に加えて論理演算が可能になっている。すなわち、図26のバッファアンプ部84では、バッファ85に代えてORゲート89が設けられ、バッファ86に代えてANDゲート90およびインバータ91が設けられ、バッファ87に代えてORゲート92が設けられている。
さらに、図26のバッファアンプ部84は、対応するマッチアンプMA[0]〜MA[3]に設けられたレジスタREG3[0]〜REG3[3]から出力された制御信号dnc_hit[0]〜dnc_hit[3]のAND演算を行うANDゲート88を含む。ANDゲート88は、レジスタREG3[0]〜REG3[3]から出力された制御信号dnc_hit[0]〜dnc_hit[3]が全てドントケアを表す“H”レベル(設定値“1”に対応)の場合、“H”レベルの信号を出力する。
ORゲート89は、マッチ線プリチャージ信号mlpre_nとANDゲート88の出力信号とのOR演算結果を、局所的なマッチ線プリチャージ信号mlpre_local_nとして、対応するマッチアンプMA[0]〜MA[3]に出力する。ANDゲート90は、マッチアンプイネーブル信号maeと、ANDゲート88の出力信号の論理レベルをインバータ91によって反転させた信号とのAND演算結果を、局所的なマッチアンプイネーブル信号mae_localとして、対応するマッチアンプMA[0]〜MA[3]に出力する。ORゲート92は、制御信号force_hitとANDゲート88の出力信号とのOR演算結果を、局所的な制御信号force_hit_localとして、対応するマッチアンプMA[0]〜MA[3]に出力する。
したがって、対応するレジスタREG3[0]〜REG3[3]から出力された制御信号dnc_hit[0]〜dnc_hit[3]が全てドントケアを表す“H”レベル(“1”に対応する)の場合、局所的なマッチ線プリチャージ信号mlpre_local_nは“H”レベルに固定され、局所的なマッチアンプイネーブル信号mae_localは“L”レベルに固定される。さらに、この場合、局所的な制御信号force_hit_localは“H”レベルに固定される。このため、これらの局所的な制御信号を伝達するための配線の充放電に要する電流消費を低減することができる。さらに、上記のバッファアンプ部は、第1〜第4の実施形態においても必要な回路を変形したものであるので、実質的な面積の増加はほとんど生じない。
<第6の実施形態>
図27は、電源立ち上げ後において、各レジスタREG1,REG2,REG3へのデータ書込みの手順について説明するための図である。図27では、3つのサブアレイSA[0,0],SA[1,0],SA[2,0]が代表的に示されている。各サブアレイには、図10および図11で説明したレジスタREG1が制御論理回路24に設けられ、図18および図22で説明したレジスタREG2,REG3が行ごとに設けられる。
レジスタREG1は、サブアレイ全体のセルデータがドントケア(“1”)であるか、そうでない非ドントケア(“0”)であるかを設定するためのものである。レジスタREG2は、対応する行が各TCAMセルにデータが書込まれたバリッドエントリ(“1”)であるか、データ書き込まれていないインバリッドエントリ(“0”)であるかを示すものである。レジスタREG3は、対応する行のセルデータが全てドントケア(“1”)であるか、そうでない非ドントケア(“0”)であるかを設定するためのものである。
各レジスタへのデータの書込みは、TCAM装置内部の専用回路(たとえば、図19のデータ判定回路33)から行ってもよいし、TCAM装置外部のプロセッサ(たとえば、図6のNPU101)から行ってもよい。
図27(A)を参照して、電源立ち上げ直後には、全てのレジスタREG1,REG2,REG3が不定状態となっている。図27(A)において、レジスタが不定状態であることを、ハッチングを付して示している。
図27(B)を参照して、TCAM装置にデータを書込む前の初期状態において、各レジスタREG1に“1”(ドントケア)が設定され、各レジスタREG2に“0”(インバリッド)が設定され、各レジスタREG3に“1”(ドントケア)が設定される。
図27(C)は、TCAM装置にACLルールファイルを書き込んだ後の状態(サーチ可能状態)を模式的に表すものである。図27(C)に示すように、サブアレイSA[0,0]の全ての行のTCAMセルには、データが書き込み済みである。サブアレイSA[1,0]の一部の行のTCAMセルにはデータが書き込まれていない。サブアレイSA[2,0]のいずれの行のTCAMセルにもデータは書き込まれていない。
ある行のTCAMセルにデータを書込む際には、当該行に対応するレジスタREG2の値は“0”(インバリッド)から“1”(バリッド)に変更され、レジスタREG3の値は、多くの場合、“1”(ドントケア)から“0”(非ドントケア)に変更される。ただし、当該行の全てのセルデータがドントケアの場合には、レジスタREG3の値は“1”のまま維持される。さらに、サブアレイ内のいずれかのTCAMセルに“1”または“0”の値(すなわち、ドントケア以外)を書き込んだ時点で、レジスタREG1の値は“1”(ドントケア)から“0”(非ドントケア)に変更される。
以上の手順に従って、各レジスタへのデータ書込みが行われた結果、図27(C)に示すように、全行のTCAMセルにデータが書き込まれたサブアレイSA[0,0]については、レジスタREG1は“0”(非ドントケア)に設定され、各レジスタREG2は“1”(バリッド)に設定され、各レジスタREG3は“0”(非ドントケア)に設定される。各行に対応するマッチアンプMAは、各TCAMセルに書込まれたデータとサーチデータの対応部分との比較結果に基づいて、“H”レベル(マッチ)または“L”レベル(ミス)の信号を出力する。
一部の行のTCAMセルのデータ書込みが行われたサブアレイSA[1,0]については、レジスタREG1は“0”(非ドントケア)に設定される。データ書込みが行われたバリッドエントリに対応するレジスタREG2およびREG3はそれぞれ“1”(バリッド)および“0”(非ドントケア)に設定される。これらの行に対応するマッチアンプMAはサーチ結果に基づく信号(“H”レベル(マッチ)または“L”レベル(ミス))を出力する。
一方、サブアレイSA[1,0]において、データ書込みが行われていないインバリッドエントリに対応するレジスタREG2およびREG3の値は、それぞれ初期設定された“0”(インバリッド)および“1”(ドントケア)のまま変更がない。これらの行に対応するマッチアンプMAは、レジスタREG2の値“0”(インバリッド)に従って“L”レベル(ミス)の信号を出力する。さらに、これらの未使用の領域については、レジスタREG2およびREG3の値が“0”(インバリッド)および“1”(ドントケア)にそれぞれ設定されていることによって、マッチ線MLのプリチャージ動作が停止され、マッチアンプMAの回路動作が停止される。これによって、TCAM装置の消費電力を低減させることができる。
サブアレイ内の全TCAMセルについてデータ書込みが行われていないサブアレイSA[2,0]については、レジスタREG1,REG2,REG3の値は、それぞれ初期設定された“1”(ドントケア)、“0”(インバリッド)、および“1”(ドントケア)のまま変更がない。各行に対応するマッチアンプMAはレジスタREG2の値“0”(インバリッド)に従って“L”レベル(ミス)の信号を出力する。レジスタREG1の値が“1”(ドントケア)に設定されていることによって、サブアレイSA[2,0]のサーチ動作を停止することができるので(すなわち、マッチ線MLのプリチャージ、マッチアンプMAの回路動作、およびサーチ線ドライバ22のいずれも停止することができる)、消費電流を低減することができる。
このように、各レジスタREG1,REG2,REG3の値を初期設定し、TCAMセルへのデータ書込み時に、書込みデータの値に応じて各レジスタREG1,REG2,REG3の値を変更することによって、効率良く容易に各レジスタの値が設定可能になる。
なお、マッチアンプMAが図22のように構成されていれば、レジスタREG3の値が“0”(非ドントケア)に設定されていても、レジスタREG2の値が“0”(インバリッド)に設定されておれば、マッチ線MLのプリチャージおよびマッチアンプMAの回路動作を停止することができる。したがって、この場合には、図27(B)の初期設定において、各レジスタREG3の値を“0”(非ドントケア)に設定してもよい。
<第7の実施形態>
上述した第1〜第6の実施形態で説明したTCAM装置の低消費電力化技術は、各サブアレイのマッチ線MLに接続されたTCAMセルが全てドントケア(don't care)に設定されている場合にのみ適用することができる。したがって、ドントケアに設定された比較的多数のTCAMセルが連続して並んでいたとしても、これらのTCAMセルが2つのマッチ線に跨っており、各マッチ線には“1”または“0”に設定されたTCAMセルも含まれている場合には、前述した低消費電力化技術を適用することはできない。
第7の実施形態では、上記のような場合に、TCAMセルデータの配列を変更することによって、前述の低消費電力化技術を適用可能にするものである。以下、図面を参照して詳しく説明する。なお、以下の説明で用いる入力データのビット幅、入力データの分割数などは一例であって、この例に限られるものではない。
図28は、入力データの配列変換について説明するための図である。図28(A)では、入力データのビット幅が32ビットの場合に、配列変換を行わずにそのままの順序で2個のサブアレイSA_0,SA_1に入力される例が示されている。すなわち、データ書込み時に、32ビットの書込みデータのうち前半の16ビットの書込みデータ(ビット番号0〜15)がサブアレイSA_0の16個のTCAMセル(ビット番号0〜15)にそれぞれ書込まれ、後半の16ビットの書込みデータ(ビット番号16〜31)がサブアレイSA_1の16個のTCAMセル(ビット番号16〜31)にそれぞれ書込まれる。サーチ時についても同様に、32ビットの入力サーチデータのうち前半の16ビットのサーチデータ(ビット番号0〜15)がサブアレイSA_0の16個のTCAMセル(ビット番号0〜15)にそれぞれ入力され、後半の16ビットのサーチデータ(ビット番号16〜31)がサブアレイSA_1の16個のTCAMセル(ビット番号16〜31)にそれぞれ入力される。
ここで、データの配列変換を行わない場合には、図28(A)に示すように、ビット番号0からビット番号9までと、ビット番号29からビット番号31までの各TCAMセル(図中の黒四角)には、“1”または“0”のデータが書き込まれているものとする。ビット番号10からビット番号28までの連続する19個のTCAMセル(図中のハッチングされた四角)の各々にはドントケアを表すデータが書き込まれているものとする。この場合、ドントケアを表すデータビット数は16以上あって連続しているが、これらのドントケアを表すデータが格納されたTCAMセルは、サブアレイSA_0とサブアレイSA_1とに跨っている。このために、各マッチ線ML_0,ML_1には、ドントケアに設定されたTCAMセル以外に“0”または“1”に設定されたTCAMセルも接続されているので、前述の低消費電力化技術を適用することができない。
図28(B)の例は、図28(A)の例でデータ配列を変更することによって、サブアレイSA_0のマッチ線ML_1に接続された全てのTCAMセルがドントケアに設定されているようにしたものである。これによって、前述の低消費電力化技術が適用可能になる。具体的に、入力データ(書込みデータおよびサーチデータ)のうちビット番号29〜31の部分の配列順を繰り上げて、これらのデータがビット番号10〜12のTCAMセルにそれぞれ入力されるようにデータ配列が変更される。さらに、入力データのうちビット番号10〜28の部分の配列順を繰り下げて、これらのデータがビット番号13〜31のTCAMセルにそれぞれ入力されるようにデータ配列が変更される。この結果、図28(B)に示すように、サブアレイSA_1のマッチ線ML_1に接続された全てのTCAMセル(ビット番号16〜31)をドントケア(図中のハッチングされた四角)に設定することができるので、前述の低消費電力化技術(マッチ線ML_1のプリチャージの停止およびマッチアンプMA_1の動作停止)を実現することができる。
図29は、第7の実施形態の検索システムの構成を示すブロック図である。図29の検索システム120は、データ配列を変換するためのスイッチ回路110(以下、データ配列変換スイッチと称する)をさらに含む点で図6の検索システム120と異なる。図29には、入力データdinのビット数が128ビットの場合の例が示されている。
図29を参照して、NPU(Network Processor Unit)101のデータ変換部103において、記憶装置102に格納されていたACLルールファイルはTCAM用データに変換される。TCAM用データは、“0”、“1”、および“ドントケア”(“1”でも“0”でもよい)の3値で構成される。TCAM用データは、入力データdin[0:127]として、NPU101のデータ出力回路105からデータ配列変換スイッチ110に入力される。
データ配列変換スイッチ110は、予め定められた規則に従って、入力データdin[0:127](書込みデータおよびサーチデータ)の配列順を入れ替える。データ配列変換スイッチ110は、配列順の変更後の入力データをTCAM装置100のデータ入力回路31[0]〜31[3]に入力する。図29の場合、データ入力回路31[0]〜31[3]は、各サブアレイに対応して4つに分割されている(たとえば、データ入力回路31[0]はビット(bit)番号0〜31に対応している)。データ配列変換スイッチ110における変換規則は、NPU101のデータ解析部104によって、TCAM用データの解析結果に基づいて定められる。
図30は、データ配列変換の対象となるTCAM用データの一例が書き込まれたTCAM装置の記憶状態を模式的に示す図である。図30の記憶状態を表す図面は、図9に対応するものであり、図9と異なる点は、ドントケアデータが格納される領域211(図中で間隔の狭いハッチングが付された領域)の配置である。図30のその他の点は図9と同様であるので、同一または相当する部分には同一の参照符号を付して説明を繰返さない。
図30のTCAM用データの配列の場合、ドントケアを表す領域のビット幅はサブアレイSAのビット幅である32ビットを超えている部分があるが、1つのサブアレイSAのビット幅全体に亘ってドントケアに設定された部分がないので、これまで説明した第1〜第6の実施形態の低消費電力化技術を適用できない。
そこで、たとえば、ビット番号26〜31の部分の全データとビット番号58〜63の部分の全データとを図29のデータ変換配列スイッチを用いて入れ替える。これによって、ビット番号32〜63の部分の16個のサブアレイSA[0,1],SA[1,1]〜SA[15,1]について、インバリッドエントリを除くTCAMセルデータを全てドントケアにすることができる。この結果、サブアレイSA[0,1],SA[1,1]〜SA[15,1]の各々について、レジスタREG1を“1”(ドントケア)に設定することによってサーチ動作を停止することができる。サブアレイSA[15,1]についてはインバリッドエントリのレジスタREG2を“0”(インバリッド)に設定することによって、マッチアンプMAの出力信号を“L”レベル(ミス)にすることができる。
以上のとおり第7の実施形態では、サブアレイのビット幅以上のデータ幅でドントケアに設定された領域が、インバリッドエントリを除くTCAM装置の全エントリについて存在する場合において、低消費電力化を可能にする技術を開示した。この場合、サブアレイのマッチ線に接続されたTCAMセルが全てドントケアに設定されていなくても、各マッチ線に対応するビット番号に応じてデータ配列を入れ替えることによって、これまでの実施形態で説明した低消費電力化技術が適用可能になる。よって、低消費電力の検索システムを構築するためには、各マッチ線がどのビット番号に対応しているかを仕様書などでユーザに公開するのが望ましい。
上記の実施形態では、TCAM装置の全エントリについてデータ配列の変更を行ったが、データ配列変更するためのスイッチ回路をサブアレイSAごとに設ければ、サブアレイに属するエントリ単位でデータ配列の変更を行うことも可能である。
<第8の実施形態>
第1〜第7の実施形態では、全サブアレイがほぼ同じタイミングでサーチ動作を行い、各サブアレイの出力信号に基づいてプライオリティ・エンコーダがサーチ結果を出力していた。第8の実施形態では、行方向に並ぶ(よって、共通のエントリに対応する)複数のサブアレイがパイプライン方式で順番に検索を行うように構成された例を開示する。この場合、各サブアレイは、前段のサブアレイのサーチ動作の終了後にサーチ動作を開始する。
図31は、第8の実施形態によるTCAM装置の構成を示すブロック図である。図31のTCAM装置では、4個のサブアレイSA_0〜SA_3が代表的に示され、プライオリティ・エンコーダは図示していない。サーチ動作は、サブアレイSA_0、サブアレイSA_1、サブアレイSA_2、サブアレイSA_3の順に実行される。各サブアレイSAはm+1本のマッチ線MLを有する。
図31に示すように、サブアレイSA_0においてマッチ線ML_0,j(j=1,2,…,m)のサーチ後の電位と電源電位VDDとが、対応するマッチアンプMAに入力され、このマッチアンプMAから出力信号mo_0,jが出力される。同様に、サブアレイSA_i(i=1,2,3)において、マッチ線ML_i,j(j=1,2,…,m)のサーチ後の電位と、前段のサブアレイSA_i−1の同一エントリの出力信号mo_i−1,jとが、対応するマッチアンプMAに入力され、このマッチアンプMAから出力信号mo_i,jが出力される。
図32は、図31のマッチアンプMAの構成例を示す回路図である。図32のマッチアンプMAは、図31のサブアレイSA_i(i=0,1,2,3)において、マッチ線ML_i,j(j=1,2,…,m)に接続されたマッチアンプの構成例を示している。図32では、図13のマッチアンプMAの構成を変更したものを示しているが、図16、図18、図22のいずれのマッチアンプMAについても同様に変更することができる。
具体的に、図32のマッチアンプMAは、図13(もしくは、図16、図18、または、図22)のマッチアンプMAに、Dフリップフロップ83、NANDゲート84、インバータ85、ANDゲート26をさらに追加したものである。Dフリップフロップ83およびANDゲート26は、図32ではマッチアンプMAの内部に設けられているように図示されているが、エントリごとにマッチアンプMAにそれぞれ対応して設けられていればよいので、マッチアンプMAの外部に設けられていても構わない。
Dフリップフロップ83は、前ステージのサブアレイの対応する行のマッチアンプMAの出力信号mo_pre(前サイクルのサーチ結果)を保持する。ただし、サーチ期間の最初にサーチ動作を行うサブアレイSA_0(すなわち、i=0)については、前段の対応する行のマッチアンプMAの出力信号に代えて、電源電位VDDが入力される。
図13などの変更前の回路においてPチャネルMOSトランジスタ70のゲートに入力されていた信号は、インバータ85によって論理レベルを反転させた後に、NANDゲート84の第1の入力ノードに入力されるように変更される。NANDゲート84の第1の入力ノードには、上記のDフリップフロップ83の出力信号mo_pre(前サイクルのサーチ結果)が入力される。NANDゲート84の演算結果は、MOSトランジスタ70のゲートに入力される。
したがって、上記のDフリップフロップ83の出力信号mo_pre(前サイクルのサーチ結果)が“L”レベル(ミス)の場合は、MOSトランジスタ70のゲートには、“H”レベルの信号が入力される。この結果、MOSトランジスタ70は常にオフとなってマッチ線MLのプリチャージが停止する。
ANDゲート26は、上記のDフリップフロップ83の出力信号mo_pre(前サイクルのサーチ結果)と、図13(もしくは、図16、図18、または、図22)に示す変更前の構成のマッチアンプMAの場合の出力信号mo_nowとのAND演算を行い、演算結果をマッチアンプMAの出力信号moとして出力する。ANDゲート26は、図5のANDゲートに対応するものであり、図5のANDゲート26をマッチアンプMA内に取り込んだものと考えることができる。
したがって、上記のDフリップフロップ83の出力信号mo_pre(前サイクルの対応する行のサーチ結果)が“L”レベル(ミス)の場合には、ANDゲート26の出力信号(すなわち、マッチアンプMAの出力信号mo)は“L”レベル(ミス)となる。図32にその他の点は、図13(もしくは、図16、図18、または、図22)のマッチアンプMAと同様であるであるので、同一または相当する部分には同一の参照符号を付して説明を繰返さない。
図33は、図31のTCAM装置の動作を説明するための図である。各マッチアンプMAにおいてハッチングを付した領域は、TCAMセルデータがドントケアになっていることを示す。
第1サイクルにおいて、サブアレイSA_0がサーチ動作を行う。各エントリのサーチ結果(ヒット(hit)の場合“1”、ミス(miss)の場合“0”)は、次段のサブアレイSA_1のマッチアンプ部23の対応する行のDフリップフロップ83に格納される。図32で説明したようにDフリップフロップ83に“0”が格納されている場合には、次の第2サイクルにおいて対応する行のマッチ線MLプリチャージが停止される。
第2サイクルにおいて、通常は、サブアレイSA_1の各行のうち前段のサブアレイSA_0のサーチ動作でヒットになった行のみサーチ動作が行われる。しかしながら、図33の場合、サブアレイSA_1の全TCAMセルデータがドントケアに設定されているので、レジスタREG1を“1”(ドントケア)に設定することによって、サブアレイSA_1全体のサーチ動作が停止される。第1サイクルでヒットとなったエントリの出力信号は、自動的にヒットとなり、次段のサブアレイSA_2のマッチアンプ部23の対応するDフリップフロップには“1”が書き込まれる。その他のDフリップフロップには“0”が書込まれる。
第3サイクルにおいて、サブアレイSA_2の各行のうち、サブアレイSA_1からヒットを表す信号が入力された行についてのみサーチ動作が行われる。Dフリップフロップ83に“0”が格納されている行については、マッチ線プリチャージが停止される。サブアレイSA_2においてサーチ結果がヒットとなった行については、次段のサブアレイSA_3のマッチアンプ部23の対応するDフリップフロップ83に“1”が格納される。サブアレイSA_3のその他の行のDフリップフロップ83には“0”が格納される。
第4サイクルにおいて、サブアレイSA_3のTCAMセルアレイについて検索動作が行われる。この場合、前段のサブアレイSA_2からヒットを表す信号が入力された行のうちで、マッチ線220,221に対応する行を除いたものについてサーチ動作が行われる。マッチ線220,221に接続されたTCAMセルは全てドントケアに設定されているので、レジスタREG3に“1”(ドントケア)を設定することによって、これらのマッチ線220,221のプリチャージおよび対応するマッチアンプMAの回路動作が停止される。マッチ線220,221に接続されたマッチアンプMAからはプライオリティ・エンコーダ30にヒットを表す信号が自動的に出力される。その他のサーチ動作が行われた行のマッチアンプMAからもサーチ結果がプライオリティ・エンコーダ30に出力される。
このように、第8の実施形態では、第1〜第7の実施形態で説明した低消費電力化技術に組合わせて、行方向に並ぶ複数のサブアレイをパイプライ方式で順番に検索することによって、前サイクルでヒットとなったエントリのみサーチ動作を行うようにする。これによって、さらに消費電力を低減することができる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は上記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
11 SRAMセル(Xセル)、12 SRAMセル(Yセル)、13 データ比較部、20 セルアレイ、21 書込みドライバ、22 サーチ線ドライバ、23 マッチアンプ部、24 制御論理回路、27 論理積回路、30 プライオリティ・エンコーダ、31 データ入力回路、32 コマンド入力回路、33 データ判定回路、40,44,45,83 フリップフロップ、69 ラッチ回路、84 バッファアンプ部、85,86,87 バッファ、100 TCAM装置、102 記憶装置、103 データ変換部、104 データ解析部、105 データ出力回路、110 スイッチ回路(データ配列変換スイッチ)、120 データ検索システム、220,221,ML マッチ線、BL ビット線対、MA マッチアンプ、MC TCAMセル、ND1,ND2 記憶ノード、REG1,REG2,REG3 レジスタ、SA サブアレイ、SL サーチ線対、VDD 電源電位、WLX,WLY ワード線、clk クロック信号、d 書込みデータ、force_hit 制御信号、mae マッチアンプイネーブル信号、mlpre マッチ線プリチャージ信号、mo 出力信号、sd 入力サーチデータ、sle サーチ線イネーブル信号。

Claims (16)

  1. 各々がTCAM(Ternary Content Addressable Memory)セルアレイを含む複数のサブアレイを備え、
    各前記サブアレイは、前記TCAMセルアレイの行ごとに格納された複数のデータのうち、入力されたサーチデータの対応部分に一致するものを検索し、前記行ごとに一致または不一致という検索結果を出力し、
    各前記サブアレイは、前記TCAMセルアレイの全てのデータがドントケアであることに基づいて検索動作前にあらかじめ設定された、対応する第1の制御信号が活性化されている場合には、前記TCAMセルアレイについて検索を行わずに、一致という検索結果を前記行ごとに出力する、半導体装置。
  2. 各前記サブアレイは、
    前記TCAMセルアレイの行にそれぞれ設けられ、対応する行の各TCAMセルが接続された複数のマッチ線と、
    前記TCAMセルアレイの列にそれぞれ設けられた複数のサーチ線と、
    検索時に、前記複数のサーチ線に前記サーチデータの対応部分を供給するサーチ線ドライバと、
    前記複数のマッチ線にそれぞれ対応し、各々が検索時に、対応するマッチ線の電位に従って検索結果を出力する複数のマッチアンプと、
    前記複数のマッチ線にそれぞれ対応し、各々が検索時に、対応するマッチ線をプリチャージする複数のプリチャージ回路と、
    制御論理回路とを含み、
    前記制御論理回路は、前記第1の制御信号が活性化されている場合には、前記サーチ線ドライバおよび前記複数のプリチャージ回路が動作しないように制御し、
    各前記マッチアンプは、前記第1の制御信号が活性化されている場合には、対応する前記マッチ線の電位によらず一致という検索結果を出力するように構成される、請求項1に記載の半導体装置。
  3. 各前記サブアレイは、前記第1の制御信号を出力する第1のレジスタを含む、請求項2に記載の半導体装置。
  4. 各前記サブアレイは、前記TCAMセルアレイの行ごとに設けられ、各々が、第2の制御信号を出力する複数の第2のレジスタを含み、
    前記マッチアンプは、対応する前記第2の制御信号が活性化されている場合には、前記第1の制御信号が活性化されていても、不一致という検索結果を出力するように構成される、請求項3に記載の半導体装置。
  5. 各前記サブアレイは、前記TCAMセルアレイの行ごとに設けられ、各々が第3の制御信号を出力する複数の第3のレジスタを含み、
    各前記プリチャージ回路は、対応する前記第3の制御信号が活性化されている場合には、前記第1の制御信号が活性化されていなくても、対応する前記マッチ線をプリチャージせず、
    各前記マッチアンプは、対応する前記第3の制御信号が活性化されている場合には、前記第1の制御信号が活性化されていなくても、対応する前記マッチ線の電位によらず一致という検索結果を出力する、請求項3に記載の半導体装置。
  6. 各前記サブアレイは、
    前記TCAMセルアレイの行ごとに設けられ、各々が、第2の制御信号を出力する複数の第2のレジスタと、
    前記TCAMセルアレイの行ごとに設けられ、各々が、第3の制御信号を出力する複数の第3のレジスタとを含み、
    各前記プリチャージ回路は、対応する前記第2および第3の制御信号の少なくとも一方が活性化されている場合には、前記第1の制御信号が活性化されていなくても、対応する前記マッチ線をプリチャージせず、
    各前記マッチアンプは、対応する前記第2の制御信号が活性化されておらず、対応する前記第3の制御信号が活性化されている場合には、前記第1の制御信号が活性化されていなくても、対応する前記マッチ線の電位によらず一致という検出結果を出力し、
    各前記マッチアンプは、対応する前記第2の制御信号が活性化されている場合には、前記第1の制御信号および対応する前記第3の制御信号のいずれかが活性化されていても、対応する前記マッチ線の電位によらず不一致という検出結果を出力する、請求項3に記載の半導体装置。
  7. 前記TCAMセルアレイは、列方向に並ぶ第1のセルアレイと第2のセルアレイとに区分され、
    前記サーチ線ドライバは、
    前記第1のセルアレイに隣接して設けられ、前記第1のセルアレイに前記サーチデータの対応部分を供給する第1のドライバと、
    前記第2のセルアレイに隣接して設けられ、前記第2のセルアレイに前記サーチデータの対応部分を供給する第2のドライバとを含む、請求項2に記載の半導体装置。
  8. 前記半導体装置は、
    各前記サブアレイを構成する前記TCAMセルアレイの行ごとにデータを書込む際に、共通のマッチ線に接続された全てのTCAMセルにドントケアが書込まれた特定行があるか否かを判定するデータ判定回路をさらに備え、
    前記データ判定回路は、前記特定行に対応する前記第3の制御信号が活性化されるように、前記特定行に対応する前記第3のレジスタの値を設定する、請求項5に記載の半導体装置。
  9. 各前記サブアレイは、さらに、
    前記TCAMセルアレイの行ごとに設けられ、各々が、第3の制御信号を出力する複数の第3のレジスタと、
    前記複数の第3のレジスタからそれぞれ出力された複数の前記第3の制御信号が全て活性化されている場合に、活性化された前記第1の制御信号を生成して出力する論理回路とを含む、請求項2に記載の半導体装置。
  10. 前記制御論理回路は、各前記プリチャージ回路の動作を制御するためのプリチャージイネーブル信号を生成し、
    各前記サブアレイは、前記TCAMセルアレイの複数行ごとに設けられ、各々が、前記プリチャージイネーブル信号および前記第1の制御信号を整形し、整形後の前記プリチャージイネーブル信号および前記第1の制御信号を前記複数行に対応する前記プリチャージ回路および前記マッチアンプにそれぞれ供給する複数のバッファアンプ部をさらに含み、
    各前記バッファアンプ部は、対応する前記複数行に設けられた前記第3のレジスタが出力する前記第3の制御信号が全て活性化されている場合には、出力する整形後の前記第1の制御信号を活性化するともに、出力する整形後の前記プリチャージイネーブル信号を非活性化することによって対応する各前記プリチャージ回路が動作しないように制御する、請求項5に記載の半導体装置。
  11. 前記半導体装置への電源供給後、いずれの前記サブアレイの前記TCAMセルにもデータが書き込まれていない状態において、各前記サブアレイの前記第1の制御信号および複数の前記第2の制御信号がいずれも活性状態となるように、各前記第1のレジスタおよび各前記第2のレジスタの値が初期設定される、請求項4に記載の半導体装置。
  12. 前記半導体装置への電源供給後、いずれの前記サブアレイの前記TCAMセルにもデータが書き込まれていない状態において、各前記サブアレイの前記第1の制御信号および複数の前記第3の制御信号がいずれも活性状態となるように、各前記第1のレジスタおよび各前記第3のレジスタの値が初期設定される、請求項5に記載の半導体装置。
  13. 前記半導体装置への電源供給後、いずれの前記サブアレイの前記TCAMセルにもデータが書き込まれていない状態において、各前記サブアレイの前記第1の制御信号および各前記サブアレイの前記第2の制御信号および複数の前記第3の制御信号がいずれも活性状態となるように、各前記第1のレジスタおよび各前記第2のレジスタおよび各前記第3のレジスタの値が初期設定される、請求項6に記載の半導体装置。
  14. 各前記サブアレイの前記TCAMセルアレイへの書込みデータの配列順および前記サーチデータの配列順を定められた規則に従って変更するデータ配列変更回路をさらに備える、請求項1に記載の半導体装置。
  15. 互いに行方向に並び、共通のエントリに対応する複数の前記サブアレイは、パイプライン方式で順番に検索を行うように構成され、
    各前記サブアレイは、最初のステージで検索を行うサブアレイを除いて、前記TCAMセルアレイの行ごとに設けられ、各々が、前ステージのサブアレイの対応する行の検索結果を格納する複数のDフリップフロップを含み、
    前記複数のDフリップフロップが設けられた各前記サブアレイにおいて、各前記プリチャージ回路は、対応する前記Dフリップフロップに不一致の検索結果が格納されている場合には、対応する前記マッチ線をプリチャージせず、
    前記複数のDフリップフロップが設けられた各前記サブアレイにおいて、各前記マッチアンプは、対応する前記Dフリップフロップに不一致の検索結果が格納されている場合には、前記第1の制御信号が活性化されていても、不一致の検索結果を出力するように構成される、請求項2に記載の半導体装置。
  16. 前記サブアレイから出力された検索結果に基づいて、前記サーチデータの検索結果を出力するプライオリティ・エンコーダをさらに備える、請求項1に記載の半導体装置。
JP2015168522A 2015-08-28 2015-08-28 半導体装置 Active JP6533129B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2015168522A JP6533129B2 (ja) 2015-08-28 2015-08-28 半導体装置
US15/227,161 US9824757B2 (en) 2015-08-28 2016-08-03 Semiconductor device including TCAM cell arrays capable of skipping TCAM-cell search in response to control signal
CN201610743715.5A CN106486159B (zh) 2015-08-28 2016-08-26 半导体器件
US15/787,406 US10068646B2 (en) 2015-08-28 2017-10-18 Semiconductor device including TCAM cell arrays capable of skipping TCAM-cell search in response to control signal
US16/056,321 US10366755B2 (en) 2015-08-28 2018-08-06 Semiconductor device including TCAM cell arrays capable of skipping TCAM-cell search in response to control signal

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015168522A JP6533129B2 (ja) 2015-08-28 2015-08-28 半導体装置

Publications (3)

Publication Number Publication Date
JP2017045495A JP2017045495A (ja) 2017-03-02
JP2017045495A5 JP2017045495A5 (ja) 2018-06-21
JP6533129B2 true JP6533129B2 (ja) 2019-06-19

Family

ID=58095691

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015168522A Active JP6533129B2 (ja) 2015-08-28 2015-08-28 半導体装置

Country Status (3)

Country Link
US (3) US9824757B2 (ja)
JP (1) JP6533129B2 (ja)
CN (1) CN106486159B (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6533129B2 (ja) 2015-08-28 2019-06-19 ルネサスエレクトロニクス株式会社 半導体装置
JP2018206452A (ja) 2017-05-30 2018-12-27 ルネサスエレクトロニクス株式会社 内容参照メモリ及び半導体装置
JP2019117678A (ja) * 2017-12-27 2019-07-18 ルネサスエレクトロニクス株式会社 半導体装置
US10910056B2 (en) 2018-02-22 2021-02-02 Renesas Electronics Corporation Semiconductor device
JP2020047351A (ja) * 2018-09-20 2020-03-26 株式会社東芝 Camマクロ回路および半導体集積回路
CN109637571B (zh) * 2018-12-21 2020-11-20 成都海光集成电路设计有限公司 三态内容可寻址存储器搜索线分割控制装置、系统和方法
TWI794510B (zh) * 2019-06-12 2023-03-01 聯華電子股份有限公司 三元內容可定址記憶體單元
US10930348B1 (en) * 2019-08-13 2021-02-23 Hewlett Packard Enterprise Development Lp Content addressable memory-encoded crossbar array in dot product engines
US11404121B2 (en) * 2019-10-22 2022-08-02 Mediatek Singapore Pte. Ltd. Methods for writing ternary content addressable memory devices
US11894054B2 (en) 2019-10-22 2024-02-06 Mediatek Singapore Pte. Ltd. Methods for writing ternary content addressable memory devices
CN110993005B (zh) * 2019-12-11 2021-03-26 海光信息技术股份有限公司 电路结构、芯片、训练方法及训练装置
US11133065B1 (en) 2020-03-06 2021-09-28 Micron Technology, Inc. Architecture for ternary content-addressable memory search
US11599090B2 (en) * 2020-09-30 2023-03-07 Rockwell Automation Technologies, Inc. System and method of network synchronized time in safety applications
US11967377B2 (en) * 2021-01-08 2024-04-23 Mediatek Singapore Pte. Ltd. Dynamically gated search lines for low-power multi-stage content addressable memory
TWI744204B (zh) * 2021-03-15 2021-10-21 瑞昱半導體股份有限公司 適用於內容可定址記憶體的遮蔽電路與預充電電路

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR950008676B1 (ko) * 1986-04-23 1995-08-04 가부시기가이샤 히다찌세이사꾸쇼 반도체 메모리 장치 및 그의 결함 구제 방법
JP2585227B2 (ja) * 1986-07-25 1997-02-26 株式会社日立製作所 半導体メモリ装置
JPH10275479A (ja) * 1997-03-31 1998-10-13 Kawasaki Steel Corp 連想メモリおよびネットワークフレーム中継器
JP3478749B2 (ja) * 1999-02-05 2003-12-15 インターナショナル・ビジネス・マシーンズ・コーポレーション 連想メモリ(cam)のワードマッチラインのプリチャージ回路および方法
JP2002197873A (ja) * 2000-12-27 2002-07-12 Kawasaki Microelectronics Kk 連想メモリ
JP2003272386A (ja) * 2002-03-20 2003-09-26 Mitsubishi Electric Corp Tcamセル、tcamセルアレイ、アドレス検索メモリおよびネットワークアドレス検索装置
JP4541077B2 (ja) * 2004-01-13 2010-09-08 株式会社日立超エル・エス・アイ・システムズ 半導体記憶装置
US20080006280A1 (en) * 2004-07-20 2008-01-10 Anthony Aliberto Magnetic navigation maneuvering sheath
BRPI0607430B8 (pt) * 2005-02-14 2021-06-22 Johnson & Johnson Vision Care dispositivo oftálmico confortável e métodos de sua produção
JP4343859B2 (ja) * 2005-02-17 2009-10-14 株式会社日立製作所 半導体装置
US7274581B1 (en) * 2006-05-04 2007-09-25 Texas Instruments Incorporated Array fault testing approach for TCAMs
US7414872B2 (en) * 2006-09-12 2008-08-19 Jinn-Shyan Wang Segmented search line circuit device for content addressable memory
US7760135B2 (en) * 2007-11-27 2010-07-20 Lockheed Martin Corporation Robust pulse deinterleaving
US7940541B2 (en) * 2008-05-21 2011-05-10 Texas Instruments Incorporated Bit cell designs for ternary content addressable memory
US7881090B2 (en) * 2009-03-16 2011-02-01 Netlogic Microsystems, Inc. Content addressable memory (CAM) array capable of implementing read or write operations during search operations
US8320148B1 (en) * 2009-06-25 2012-11-27 Adesto Technologies Corporation PMC-based non-volatile CAM
JP5477621B2 (ja) * 2009-08-03 2014-04-23 ルネサスエレクトロニクス株式会社 連想メモリ
JP2011181147A (ja) * 2010-03-02 2011-09-15 Renesas Electronics Corp 連想記憶装置
CN101859596A (zh) * 2010-06-02 2010-10-13 中国科学院声学研究所 一种内容可寻址存储器
JP5893465B2 (ja) * 2012-03-27 2016-03-23 ルネサスエレクトロニクス株式会社 連想記憶装置
US8891273B2 (en) * 2012-12-26 2014-11-18 Qualcomm Incorporated Pseudo-NOR cell for ternary content addressable memory
US9275735B2 (en) * 2014-01-06 2016-03-01 International Business Machines Corporation Array organization and architecture to perform range-match operations with content addressable memory (CAM) circuits
JP6533129B2 (ja) * 2015-08-28 2019-06-19 ルネサスエレクトロニクス株式会社 半導体装置
JP6592310B2 (ja) * 2015-09-01 2019-10-16 ルネサスエレクトロニクス株式会社 半導体装置

Also Published As

Publication number Publication date
US10068646B2 (en) 2018-09-04
JP2017045495A (ja) 2017-03-02
US20170062051A1 (en) 2017-03-02
US20180040373A1 (en) 2018-02-08
CN106486159B (zh) 2021-10-26
US20180350439A1 (en) 2018-12-06
US9824757B2 (en) 2017-11-21
CN106486159A (zh) 2017-03-08
US10366755B2 (en) 2019-07-30

Similar Documents

Publication Publication Date Title
JP6533129B2 (ja) 半導体装置
US7848129B1 (en) Dynamically partitioned CAM array
US7894227B2 (en) Content addressable memory
US6961810B2 (en) Synchronous content addressable memory
EP3675127B1 (en) Content addressable memory
US20080144345A1 (en) Semiconductor memory device
CN114175160A (zh) 具有突发模式地址比较器的sram
US6385070B1 (en) Content Addressable Memory array, cell, and method using 5-transistor compare circuit and avoiding crowbar current
US7035968B1 (en) Content addressable memory with range compare function
US10297291B2 (en) Semiconductor device
US10373684B2 (en) Semiconductor device
WO1999023663A1 (en) Synchronous content addressable memory with single cycle operation
US20160358654A1 (en) Low-power ternary content addressable memory
US8023300B1 (en) Content addressable memory device capable of parallel state information transfers
US11017858B1 (en) Low power content addressable memory
Raju et al. A low power content addressable memory with self-control mechanism and segmented matchlines
Sulthana et al. DIFFERENTIAL 10T TCAM WITH PARALLEL PAI-SIGMA MATCHLINE
Ijjada et al. Ultra low power Tri-CAM designs for high speed processors
CN117941000A (en) Pseudo-dual port SRAM with burst mode address comparator
BABU et al. An Efficient Novel Precharge-Free, Low-Power Content-Addressable Memory

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180510

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180510

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180912

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180918

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190226

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190415

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190514

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190523

R150 Certificate of patent or registration of utility model

Ref document number: 6533129

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150