半导体器件的制作方法

文档序号:12179775阅读:351来源:国知局
半导体器件的制作方法与工艺

于2015年8月28日提交的日本专利申请公开号2015-168522的全部内容,包括说明书附图和摘要,通过引用合并于本文中。

技术领域

本发明涉及一种半导体器件,并且例如适用于设置有TCAM(三态内容可寻址存储器)器件的半导体器件。



背景技术:

被称作关联存储器或CAM(内容可寻址存储器)的存储器件在储存的数据词中搜索出与搜索词匹配的数据词,并且在发现匹配的数据词时,存储器器件输出匹配的数据词的地址。

在CAM中存在BCAM(二元CAM)和TCAM(三元CAM)。BCAM的每个存储单元储存“0”或“1”的信息。另一方面,TCAM的每个存储器单元除了“0”和“1”以外还储存“不关注”的信息。“不关注”可以是“0”和“1”中的任意值。

TCAM器件在例如因特网的网络中广泛用作路由器,以便用于地址搜索和访问控制。为了响应容量的增加,TCAM器件通常具有以下的配置:其中提供多个子阵列,并且同时执行针对每个子阵列的搜索操作。例如,根据非专利文件1,被称作构造块的子阵列在字线方向布置成八片且在位线方向布置成四片。

TCAM器件一次可以将所有的输入搜索数据(输入分组)与TCAM单元数据进行比较;因而,其在所有的搜索应用中比RAM(随机存取存储器)操作在更快的速度。但是,在搜索时产生搜索电流,带来了电功率消耗增加的问题。

日本未审专利申请公布No.2003-272386(专利文献1)公开了这种配置的TCAM器件:其中布置在匹配线方向上的多个子阵列在管线系统下链接,以便获得低的功率消耗。在这个文献公开的TCAM器件中,下一阶段中的搜索仅针对在之前阶段中匹配的条目进行。

[专利文献]

(专利文献1)日本未审专利申请公开No.2003-272386

[非专利文件]

(非专利文件1)H.Miyatake等在IEEE固态电路杂志第36卷第956-968页于2001年6月发表的“A design for high-speed low-power CMOS fully parallel content-addressable memory macros”。



技术实现要素:

在TCAM器件中,被设置为不关注的TCAM单元可以整体存在于一些范围中。例如,经常出现与子阵列匹配线的一部分耦合的TCAM单元被设置为不关注。作为一个更明显的示例,配置子阵列的所有TCAM单元可以被设置为不关注。在这种情况下,搜索结果是明显的(不论搜索数据如何搜索结果当然命中(匹配));因此,对于无用的搜索操作消耗电流。

通过本说明书的描述和附图,本发明的其他的方面和新的特征将变得清楚。

根据一个实施例的半导体器件包括多个子阵列,每个子阵列包括TCAM单元阵列。每个子阵列搜索输入搜索数据的相应部分。当相应的第一控制信号被激活时,每个子阵列在没有搜索的情况下输出指示针对每个条目的匹配的搜索结果。

根据以上描述的实施例,可以减少TCAM器件的消耗电流。

附图说明

图1是示出TCAM单元配置的示例的电路图;

图2是示出图1所示的X单元和Y单元的存储内容以及TCAM单元数据的对应关系的表;

图3是示出配置TCAM器件的子阵列的配置的框图;

图4是示出TCAM器件的配置的框图;

图5是示出每个匹配放大器的检测结果的与操作的示例性示图;

图6是示出数据搜索系统的整个配置的框图;

图7是示出ACL规则文件的示例的表;

图8是示出通过转换图7中图示的ACL而获得的TCAM数据的示例的图;

图9是示意性示出其中写入了基于ACL的转换数据的TCAM器件的存储器状态的图;

图10是示出根据第一实施例的TCAM器件中的子阵列的配置的框图;

图11是示出图10所示的控制逻辑电路中的搜索操作相关的部分的配置的电路图;

图12是示出图10所示的搜索线驱动器的配置的示例的电路图;

图13是示出图10所示的匹配放大器的配置的示例的电路图;

图14是示出当表示不关注的数据“0”储存在设置在图10所示的子阵列中的寄存器REG1中时的搜索操作的时序图;

图15是示出当表示不关注的数据“1”储存在设置在图10所示的子阵列中的寄存器REG1中时的搜索操作的时序图;

图16是示出图10所示的匹配放大器的修改的示例的电路图;

图17是示出根据第二实施例的TCAM器件中的子阵列SA的配置的框图;

图18是示出根据第三实施例的TCAM器件中的匹配放大器MA的配置的电路图;

图19是示出根据第三实施例的TCAM器件的配置的框图;

图20是示出图19所示的数据确定电路33的操作的流程图;

图21是示出根据第三实施例的TCAM器件中的图18所示的寄存器REG3的数据写入程序的时序图;

图22是示出图18所示的匹配放大器MA的修改的示例的框图;

图23是示意性示出根据第四实施例的TCAM器件中的子阵列的配置的框图;

图24是示出图23中所示的控制逻辑电路24中的与搜索操作有关的部分的配置的电路图;

图25是示出针对来自控制逻辑电路24的输出信号采用的缓冲放大器的布置的示意性视图;

图26是示出根据第五实施例的TCAM器件中的缓冲放大器单元的配置的示意性视图;

图27A、27B和27C是示出在开始供电后写入到寄存器REG1、REG2和REG3中的每个的数据的程序的示意性视图;

图28A和28B是示出输入数据的阵列转换的示意性示图;

图29是示出根据第七实施例的搜索系统的配置的框图;

图30是示意性示出TCAM器件的存储状态的图,其中写入了TCAM数据的示例作为数据阵列转换的目标;

图31是示出根据第八实施例的TCAM器件的配置的框图;

图32是示出图31所示的匹配放大器MA的配置的示例的电路图;以及

图33是示出图31所示的TCAM器件的操作的示意性视图。

具体实施方式

此后,将参考附图详细描述每个实施例。在下文中,相同附图标记用于相同或相应的元件且省略对其重复解释。

<每个实施例通用的配置>

[TCAM单元的配置]

图1是示出TCAM单元配置的示例的电路图。参见图1,TCAM单元(也称作存储单元MC)包括两个SRAM(静态随机存取存储器单元)单元11和12以及数据比较器13。SRAM单元11也被称作X单元且SRAM单元12也被称作Y单元。X单元11在内部存储节点对ND1和ND1_n储存互补的1比特数据(当一侧是1时,另一侧是0)。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(金属氧化物半导体)晶体管Q1和Q2。反相器INV1耦合在存储节点ND1和存储节点ND_n之间,使得从存储节点ND1_n到存储节点ND1的方向成为前向方向。反相器INV2以并联并以相反方向与反相器INV1耦合。MOS晶体管Q1耦合在存储节点ND1和位线BL之间。MOS晶体管Q2耦合在存储节点ND1_n和位线BL_n之间。MOS晶体管Q1和Q2的栅极耦合到字线WLX。

Y单元12包括反相器INV3和INV4以及MOS(金属氧化物半导体)晶体管Q3和Q4。反相器INV3耦合在存储节点ND2和存储节点ND2_n之间,使得从存储节点ND2_n到存储节点ND2的方向成前向方向。反相器INV4并联耦合到反相器INV3并且处于相反方向。MOS晶体管Q3耦合在存储节点ND2和位线BL之间。MOS晶体管Q4耦合在存储节点ND2_n和位线BL之间。MOS晶体管Q3和Q4的栅极耦合到字线WLX。

数据比较器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单元数据的对应关系的表。

参见图1和图2,TCAM单元可以使用2比特的SRAM单元来存储“0”、“1”和“x”(不关注)的三个值。具体来说,当在X单元11的存储节点ND1中存储“1”而在Y单元12的存储节点ND2中存储“0”时,假设“0”存储在TCAM单元中。当在X单元11的存储节点ND1中存储“0”而在Y单元12的存储节点ND2中存储“1”时,假设“1”存储在TCAM单元中。当在X单元11的存储节点ND1中存储“0”而在Y单元12的存储节点ND2中存储“0”时,假设“x”(不关注)存储在TCAM单元中。没有使用其中在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中,只要耦合到与一个条目(行)对应的匹配线的所有TCAM单元的数据不与输入搜索数据匹配,储存在匹配线ML中的电荷被拉出。因此,虽然通过TCAM的搜索以高速执行,但是消耗电流的问题较大。

[子阵列的配置]

图3是示出配置TCAM器件的子阵列的配置的框图。参见图3,子阵列SA包括TCAM单元阵列20(简称为单元阵列)、写入驱动器21、搜索线(SL)驱动器22、匹配放大器单元23和控制逻辑电路24。子阵列SA还包括用于驱动图1所示的字线WLX和WLY的字线驱动器(没有示出)。

单元阵列20包括布置在矩阵(m行k列)中的TCAM单元。图3所示的单元阵列20具有256行(条目数目)m和32列(比特数目)k。

与单元阵列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的每行对应,提供了用于X单元的m个字线(从WLX[0]到WLX[m-1])(没有示出)和m个匹配线(m=256)(从ML[0]到ML[m-1])以及用于Y单元(从WLY[0]到WLY[m-1])(没有示出)的m个字线。

写入驱动器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行)的比特长度是128比特,且条目的总数是4096。TCAM器件100被分成布置成16行和4列的子阵列SA[0,0]-SA[15,3]。每个子阵列SA的大小:作为条目总数总计至256条目,一个条目的比特长度为32比特。这些数目只是示例且TCAM器件的配置不限于这种情况。

针对每个子阵列公开了已经解释的搜索线对SL和SL_n、位线对BL和BL_n、匹配线ML以及字线。例如,从搜索线对SL[0]和SL_n[0]至搜索线对SL[31]和SL_n[31],提供了子阵列SA[0,0]。从搜索线对SL[32]和SL_n[32]至搜索线对SL[63]和SL_n[63],提供了子阵列SA[0,1]。从搜索线对SL[64]和SL_n[64]至搜索线对SL[95]和SL_n[95],提供了子阵列SA[0,2]。从搜索线对SL[96]和SL_n[96]至搜索线对SL[127]和SL_n[127],提供了子阵列SA[0,3]。

如图4所示,针对一个条目的整个搜索数据和一个条目的整个TCAM单元数据(写入数据),以32比特为单位将匹配线ML分成四个部分。因此,如图5所示,针对每行在匹配放大器单元32中提供了用于计算每个匹配放大器MA的监测结果的逻辑乘积的与门(图5中的附图标记26)。

在数据写入时,数据输入电路31从外部(例如图6所示的网络处理器单元)接收写入数据,并且输出接收的写入数据至子阵列SA的相应写入驱动器21。在数据搜索时,数据输入电路31从外部接收搜索数据,并且输出接收的搜索数据至相应的子阵列SA的搜索线驱动器22。

命令输入电路32从外部接收多种命令,例如写入命令和搜索命令,并且将接收的命令输出到相应子阵列SA的控制逻辑电路24。

优先级编码器30从相邻的子阵列SA[0,3],SA[1,3],···,SA[15,3]接收用于每个条目的搜索结果(输入搜索数据和TCAM数据是否匹配)。优先级编码器30输出命中的地址(储存与搜索数据匹配的TCAM数据的条目地址)。当多个条目命中(匹配)时,优先级编码器30输出具有更高优先级的命中条目的地址。

[用于相同条目的多个匹配放大器的检测结果的与操作]

图5是示出每个匹配放大器的检测结果的与操作的示例性示图。图5仅有代表性地示出子阵列SA[0,0]和SA[0,1]的一个条目。然而,同样也适用于其它条目和其它子阵列。

如图5所示,每个子阵列SA的匹配放大器单元23包括提供在用于每行的匹配放大器MA的后级中的与门26。然而,通过输入“H”电平(电源电势VDD)电势至一个输入节点中,在距离优先级编码器30最远的诸如SA[0,0]和[1,0]的子阵列中的与门36作用为缓冲器。此后,参考图4和5,采用子阵列SA[0,0]-SA[0,3]的一个条目作为示例来解释与门26的操作。

参考图4和图5,首先,在子阵列SA[0,0]-SA[0,3]的每个中,经由搜索线对SL和SL_n输入的搜索数据的相应部分与TCAM单元数据进行比较。每个子阵列SA的匹配放大器MA检测相应匹配线ML的电势(当输入搜索数据的相应部分和TCAM单元数据完全匹配时,电势处于“H”电平,并且当它们一点都不匹配时,电势处于“L”电平)。

接着,子阵列SA[0,0]的匹配放大器MA的检测结果通过提供在子阵列SA[0,0]的匹配放大器单元中用作缓冲器的与门26,并且作为匹配放大器输出信号mo_0传递给相邻的子阵列SA[0,1]。提供在子阵列SA[0,1]的匹配放大器单元23中的与门26获得上述的匹配放大器输出信号mo_0和子阵列SA[0,1]的匹配放大器MA的检测结果的逻辑乘积。运算结果作为匹配放大器输出信号mo_1传递给相邻的子阵列SA[0,2]。

类似地,在下文中,提供在子阵列SA[0,2]的匹配放大器单元23中的与门26获得上述的匹配放大器输出信号mo_1和子阵列SA[0,2]的匹配放大器MA的检测结果的逻辑乘积。运算结果作为匹配放大器输出信号mo_2传递给相邻的子阵列SA[0,3]。提供在子阵列SA[0,3]的匹配放大器单元23中的与门26获得上述的匹配放大器输出信号mo_2和子阵列SA[0,3]的匹配放大器MA的检测结果的逻辑乘积。运算结果被输入到优先级编码器30中作为匹配放大器输出信号mo_3。

[数据搜索系统的配置]

图6是示出数据搜索系统的整个配置的框图。图6所示的框图是提供在用于诸如因特网的网络的路由器中的数据搜索系统120的配置。

为了网络交通和网络安全管理的质量改进,ACL(访问控制列表)用于网络系统。ACL规则文件通过网络管理员创建并且储存在存储器件102中。

数据搜索系统120基于ACL中描述的规则来直接确定经由LAN(局域网)输入的网络分组是允许传递的分组还是拒绝传递的分组。即,数据搜索系统120需要具有高速搜索输入的分组所对应的ACL中的规则的能力,并且此处的处理一般通过使用TCAM器件100的数据搜索系统120来执行。

具体来说,数据搜索系统120包括TCAM器件100和NPU(网络处理器单元)101。NPU 101用于控制TCAM器件100的操作,并且输出多种命令(写入命令、读取命令、搜索命令等)以及多种数据(写入数据、搜索数据等)至TCAM器件100。TCAM器件100提供有控制寄存器,且TCAM器件100还输出用于控制寄存器的命令和数据。

在图6中,优选地仅仅将TCAM器件100配置为一个半导体器件,或者可以优选地将TCAM器件100和NPU101以组合方式配置为一个半导体器件。

由网络管理员创建的ACL规则文件通过NPU 101的数据转换器103被转换成用于TCAM的数据,且转换的数据储存在TCAM器件中。TCAM器件100具有将基于包括在网络分组中的IP地址等的搜索数据同时与储存在TCAM器件中的所有数据进行比较的能力。然而,不利之处在于TCAM的搜索操作产生了大电流。在具有TCAM器件的网络系统和数据搜索系统中,问题是如何实现低功率消耗。

[ACL规则文件和相应的TCAM数据的示例]

图7是示出ACL规则文件的示例的表。图7仅示出了ACL的三行,然而,ACL规则文件实际包括更多行。如图7所示,ACL用于检查从网络输入的分组的源IP地址、协议号、目标端口号、源端口号和目标IP地址。范围规格可以用于这些检查元件。

例如,图7中附图标记201表示的行具有关于源IP地址的范围规格。具体来说,“147.121.56.152/29”是固定地址的32比特中的较高级的29比特并且使用剩余的3比特作为掩码(通配符)的表示。即,指定了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,一个规则包括8比特的协议号、16比特的目的端口号、16比特的源端口号、32比特的目的IP地址和32比特的源IP地址,共计104比特的数据。附图中“x”表示不关注数据(通配数据)。不关注数据是与“0”和“1”都匹配的数据。

通过图8中的附图标记201、202和203表示的行的内容分别对应于通过图7中的附图标记201、202和203所表示的行的ACL规则。如附图标记203所示,在ACL规则中的一行内描述的范围规格规则(1024-65535)在转换为TCAM数据时可以变为以六行描述的数据。当通过使用范围规格规则来描述诸如目的端口号和源端口号的多个元素时,TCAM需要的行数进一步增加。例如,当通过使用1024-6535的区域规格规则来描述目的端口号和源端口号时,TCAM器件需要36行的数据区域。因而,当在ACL中包括许多区域规格规则时,应理解在TCAM数据中包括了许多不关注数据的项目。

图9是示意性示出其中写入了基于ACL的转换数据的TCAM器件的存储器状态的图。图9示出了在TCAM器件的储存区域写入具有许多范围规格规则的ACL规则文件的状态。

图9所示的TCAM器件具有4096个条目的储存区域,且可以每个条目可以储存128比特的数据。整个TCAM器件被分成16行4列的总共64个子阵列SA[0,0]-SA[15,3]。

TCAM器件的储存区域中通过图9的加重线框包围的区域是写入基于ACL的转换数据的区域。其中写入数据的区域210的比特宽度是104比特并且对应于图8所示的5个检查元素(8比特的协议号、16比特的目的端口号、16比特的源端口号、32比特的目的IP地址和32比特的源IP地址)。在加重线框区域210中,在较窄间隔处具有斜线的阴影区的区域211表示不关注数据的区域,其余区域表示数据“0”和数据“1”的区域。

对于104比特的ACL规则,TCAM器件的比特宽度是128比特;因而,在TCAM器件中产生了不具有写入数据的24比特宽度的区域212。不关注数据储存在所述区域212的TCAM单元中。

此外,当规则数目对于作为TCAM器件的条目总数的4096个条目不足够时,存在没有写入数据的128比特宽度的空间区域213。整个空间区域被设置作为无效条目(也称作非搜索目标条目)。无效条目区域在搜索时总是导致错失(不匹配)。

具体来说,在图9所示的TCAM中,关于子阵列SA[14,1]、SA[12,2]、SA[13,2]、SA[14,2]和SA[j,3](j=7-14),每个子阵列中的所有单元数据都是不关注;因而,这些子阵列的所有行的搜索结果是明显的(全变为命中)。关于图9中的子阵列SA[15,1]、SA[15,2]和SA[15,3],相关的每行子阵列只包括不关注的单元数据或者其对应于无效条目;因而,这些子阵列的每行的搜索结果是明显的。然而,当输入搜索命令时针对所有的这些子阵列执行搜索操作;因而,也向具有上述的明显搜索结果的子阵列执行搜索操作。为此,存在无效消耗电流的问题。

<实施例1>

在第一实施例中,提供了以下技术:其中,输出正常搜索结果,同时在TCAM器件中具有明显搜索结果的区域中,具体是不关注数据区域,停止搜索操作。因而,可以减少现有技术中的无效消耗的电流;因而,可以提供具有低功率消耗的TCAM器件以及采用这种TCAM器件的数据搜索系统。此后,将参考附图进行详细说明。

[子阵列的配置]

图10是示出根据第一实施例的TCAM器件中的子阵列的配置的框图。参见图10,图10所示的子阵列SA与图3所示的子阵列SA的区别在于进一步包括了寄存器REG1。在图10中,寄存器REG1被示出为提供在控制逻辑电路24的内部,但是也可以提供在控制逻辑电路24以外。图10的其它元件的配置与图3相同。因此,相同附图标记用于相同或相应的元件且省略了重复描述。图10主要示出了与数据搜索有关的部分,因而没有示出与数据写入有关的写入驱动器21。

当TCAM单元阵列20的所有数据是不关注时,寄存器REG1被设置为高电平“H”(在本说明书中被定义为“1”),且在至少一个不是不关注时(称作“非不关注”)被设置在低电平“L”(在本说明书中被定义为“0”)。具体来说,TCAM器件中的专用电路可以分析TCAM单元阵列20中的所有数据是否是不关注,并且相关的专用电路可以基于分析结果设定寄存器REG1的值。可替选地,上述的分析也可以在外部执行(例如通过图6所示的NPU 101的数据分析器104),并且可以从外部将分析结果写入到寄存器REG1中。

控制逻辑电路24根据在寄存器REG1中设置的逻辑电平产生用于控制搜索操作的控制信号(sle、force_hit、mae和mlpre_n)。此后将参考图11-15进行详细解释。

[搜索系统控制电路的配置]

图11是示出图10所示的控制逻辑电路中的搜索操作相关的部分的配置的电路图。参考图10和图11,控制逻辑电路24包括寄存器REG1、反相器42、47和48、与门43、46、49和51、D触发器44和45以及延迟级50。寄存器REG1包括D触发器40和与门41。

在寄存器写入命令被激活至“H”电平时,在时钟信号clk的上升沿(即,在与门41的输出变为“H”电平时)在D触发器40中写入寄存器设置数据。当子阵列中所有单元的数据是不关注时,在D触发器40中写入1(“H”电平),并且当是非不关注时,在D触发器40中写入0(“L”电平)。寄存器设置数据和寄存器写入数据从TCAM器件的外部提供(例如图6所示的NPU 101)。例如,在激活TCAM器件时,执行寄存器设置数据的写入。

D触发器40的输出信号被输入到匹配放大器单元23的每个匹配放大器MA中作为控制信号force_hit。D触发器的输出经由反相器42也被输入到与门43。

搜索命令经过与门43、触发器44和45、与门46和反相器47的顺序被输入到匹配放大器单元23作为匹配线预充电信号mlpre_n。由反相器42反相的控制信号force_hit被输入到上述与门43的其他输入节点。时钟信号clk被输入到上述触发器44和45的时钟端子。时钟信号clk被输入到上述与门46的其他输入节点。

上述触发器45的输出信号也经由与门49被输出到搜索线驱动器22作为搜索线使能信号sle。利用反相器48将时钟信号clk反相获得的信号被输入到与门49的其它输入节点。

上述与门49的输出信号还经由延迟级50被输入到与门51的第一输入节点,且同时,直接输入到与门51的第二输入节点,没有经过延迟级50。与门51的输出信号被输入到匹配放大器单元23的每个匹配放大器MA中作为匹配放大器使能信号mae。

根据上述的电路配置,依赖于寄存器REG1的设定值,当寄存器REG1的设定值是“1”时、控制信号force_hit变为“H”电平,并且当寄存器REG1的设定值是“0”时、控制信号force_hit变为“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,当搜索线使能信号sle被激活至“H”电平时,搜索线驱动器22将输入搜索数据sd[i](i=0,1,…,k)输出至搜索线SL[i],并且同时,将通过对输入搜索数据sd[i]的逻辑电平反相而获得的信号输出到互补的搜索线SL_n[i]。

具体来说,搜索线驱动器22包括分别与搜索线SL[0]-SL[k]对应的与门60[0]-60[k]、分别与搜索线SL_n[0]–SL_n[k]对应的与门61[0]-61[k]以及反相器62[0]-62[k]。搜索线使能信号sle公共输入到与门60[0]-60[k]和与门61[0]-61[k]。相应的搜索数据sd[i]和相应的掩码信号mask_n[i]被输入到与门60[i](i=0,1,…,k)。与门60[i](i=0,1,…,k)的输出信号传输到搜索线SL[i]。通过将相应的搜索数据sd[i]反相而获得信号以及相应的掩码信号mask_n[i]被输入到与门61[i](i=0,1,…,k)。

根据上述配置,例如,当搜索线使能信号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以及逻辑门(与非门)75。在图13中,作为预充电电路的MOS晶体管70被示出在匹配放大器MA的内部,但是MOS晶体管70也可以提供在匹配放大器MA以外。

此后,解释上述部件的连接。MOS晶体管70耦合在相应的匹配线ML和提供电源电势VDD的电源节点之间。匹配线预充电信号mlpre_n输入到MOS晶体管70的栅极。匹配线ML还耦合到反相器71的输入节点。反相器71的输出节点耦合到逻辑门75的第一输入节点。控制信号force_hit经由反相器74输入到逻辑门75的第二输入节点。逻辑门75的输出节点经由反相器72耦合到逻辑门75的第一输入节点。匹配放大器使能信号mae和由反相器73反相其逻辑电平而获得的信号耦合到反相器71和72的驱动电源节点。当匹配放大器使能信号mae处于不激活状态时(“L”电平),反相器71变为非操作状态,且反相器72变为操作状态。当匹配放大器使能信号mae处于非激活状态(“H”电平)时,反相器71变为操作状态而反相器72变为非操作状态。

接着,解释图13所示的匹配放大器MA的电路操作。首先,解释:(i)其中控制逻辑电路24的寄存器REG1被设置在“L”电平(表示非不关注)的情况。在这种种情况下,由于控制信号force_hit处在“L”电平,逻辑门75起反相器作用。

首先,匹配线预充电信号mlpre_n被激活(设置为低电平),B并且因此,MOS晶体管70被变得导通。因而,匹配线ML被充电至电源电势VDD(预充电)。

在匹配线预充电信号mlpre_n被去激活之后图10的搜索线使能信号sle被激活(设置到“H”电平),并且因此,搜索数据被输入到搜索线对SL和SL_n。因而,匹配线ML的电势根据搜索结果(输入搜索数据和TCAM单元数据的相应部分的比较结果)而改变。即,在匹配(命中)的情况下,匹配线Ml的电势保持在电源电势VDD(“H”电平),且在不匹配(失配)的情况下,匹配线ML的电荷被放电至接地节点;因而,匹配线ML的电势改变到接地电势(“L”电平)。

接着,匹配线使能信号mae被激活(设置到“H”电平)。因而,基于搜索结果的匹配线ML的电势经由反相器71和逻辑门75(等同于反相器)被输出作为匹配放大器输出信号mo。当匹配放大器使能信号mae被去激活时(设置为“L”电平),基于搜索结果的匹配线ML的电势保持在包括用作反相器的逻辑门75和反相器72的锁存电路69中。

另一面,在第(ii)种情况下:其中寄存器REG1设置在“H”电平(表示不关注),控制信号force_hit处在“H”电平;因而匹配放大器MA的输出信号mo(逻辑门75的输出信号)固定在“H”电平(表示匹配(命中))。此外,在这种情况下,匹配线预充电信号mlpre_n处在“H”电平(非激活状态);因而,没有执行匹配线ML的预充电。搜索线使能信号sle处在“L”电平(非激活状态);因而,搜索线对SL和SL_n被固定到“L”电平(搜索线驱动器24不工作)。匹配线使能信号mae处在“L”电平(非激活状态);因而,反相器71处在不工作状态。

[搜索操作的示例]

此后,参考图14和15所示的时序图来解释再一个特定的子阵列中搜索操作的示例。

(“0”储存在寄存器REG1中的情况)

图14是示出当表示不关注的数据“0”储存在设置在图10所示的子阵列中的寄存器REG1中时的搜索操作的时序图。在图14中,周期是从时钟信号clk的正沿到下一正沿的时段。从控制逻辑电路24输出的控制信号force_hit处在“L”电平。

参考图14,在改变到周期T1之后(从紧接在周期T1之前的第二个半周期至周期T1的第一个半周期),搜索命令和搜索数据被输入到TCAM器件。在周期T中时钟信号clk的第一个上升,搜索命令和搜索数据被获取到控制逻辑电路24中。响应于该搜索命令,控制逻辑电路24在随后的周期T2的第一个半周期内激活(设置为“L”电平)匹配线预充电信号mlpre_n。因此,匹配线ML被充电至电源电势VDD(预充电)。

响应于搜索命令,控制逻辑电路24激活在周期T2的第二个半周期内激活(设置为“H”电平)搜索线使能信号sle。在搜索线使能信号sle被激活之前,匹配线预充电信号mlpre_n被去激活(设置为“H”电平)。由于搜索线使能信号sle的激活,搜索线驱动器22被激活以传递搜索数据sd至搜索线对SL和SL_n。结果,当耦合到匹配线ML的所有TCAM单元的单元数据匹配(命中)经由搜索线对SL和SL_n传递的搜索数据sd时,匹配线ML的电势保持在电源电势VDD(“H”电平)。当耦合到匹配线ML的TCAM单元的储存值中的至少一个不与传送的搜索数据sd匹配(失配)时,在匹配线ML处预充电的电荷被放电,因而匹配线ML的电势变为接地电势(“L”电平)。

响应于搜索命令,在周期T2的第二个半周期,在激活搜索线使能信号sle之后且在去激活其之前,控制逻辑电路24激活(设置为“H”电平)匹配放大器使能信号mae。因而,在每行(条目)中,从匹配放大器MA输出基于匹配线ML(搜索结果)的信号。对应于同一条目的多个子阵列(匹配放大器MA)中的搜索结果进行与操作且然后被输入到优先级编码器30中。

在随后的周期T3中,当控制逻辑电路24去激活(设置为“L”电平)匹配放大器使能信号mae,在每个匹配线ML中检测到的搜索结果保持在相应匹配放大器MA中的锁存电路69中。此外,在周期T3中,优先级编码器30输出命中地址(搜索结果)。当存在多个命中地址时,输出具有最高优先级的命中地址。

(在寄存器REG1中储存“1”的情况)

图15是示出当表示不关注的数据“1”储存在设置在图10所示的子阵列中的寄存器REG1中时的搜索操作的时序图。

参见图15,在电源启动等时,首先(在图15中,从紧接在周期T1前的周期的第二个半周期至周期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中没有启动搜索操作。

这样,当一个确定的子阵列的所有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所示,无效条目在TCAM器件的全部条目中指定没有储存数据的空条目,并且其是非搜索目标条目。另一方面,有效条目是TCAM器件的所有条目中的储存数据的搜索目标条目。

图16是示出图10所示的匹配放大器的修改的示例的电路图。图16所示的匹配放大器MA与图10所示的匹配放大器的区别在于进一步包括了与门76和寄存器REG2。寄存器REG2在子阵列的相应行(条目)是无效条目时被设置在“L”电平(在本说明书中被定义为“0”),并且在相应行(条目)是有效条目时被设定在“H”电平(在本说明书中被定义为“1”)。寄存器REG2只需要与用于子阵列SA每行的匹配放大器MA对应地提供;因而,寄存器REG2不需要提供在匹配放大器MA以内,如图16所示。寄存器REG2的上述设定值可以通过提供在TCAM器件内的专用电路来执行,或者可以从TCAM器件的外部执行(例如,图6所示的NPU 101)。

与门76输出从寄存器REG2输出的控制信号val_ent和逻辑门75的输出信号的与运算结果,作为匹配放大器MA的输出信号mo。图16的其它元件的配置与图10的配置相同;因此,相同的附图标记应用于相同或相应的元件且省略对其重复描述。

根据上述配置,即使当图10和11所述的寄存器REG1被设置在表示不关注的“H”电平(“1”)时,通过将与无效条目对应的匹配放大器MA的寄存器REG2设置为“L”电平(“0”)值,可以将匹配放大器MA的输出信号mo设置在“L”电平(错失)。因此,当某个子阵列的每行完全包括不关注的单元数据或者对应于无效条目且不包括“1”或“0”的TCAM单元储存数据时,可以停止在相关的子阵列中的搜索操作,并且从每个匹配放大器MA中正常输出命中(在不关注的情况下)或者错失(在无效条目的情况下)。结果,可以减少相关子阵列的功耗。

[第一实施例的效果]

根据上述实施例,可以控制不对具有明显搜索结果的子阵列执行搜索操作并且从相关子阵列输出正常搜索结果。具体来说,当包括在子阵列中的所有TCAM单元的数据是不关注时,表示命中的“H”电平信号从每个匹配放大器MA输出。当相关子阵列的每行完全包括不关注的单元数据时或者对应于无效条目时,对应于不关注的情况从匹配放大器MA输出表示命中的“H”电平信号,并且对应于无效条目的情况从匹配放大器MA输出表示错失的“L”电平信号。结果,相关子阵列的每个匹配放大器MA没有产生匹配线的预充电电流和操作电流。因而,可以减少TCAM器件的功耗。

此外,通过不对具有明显搜索结果的子阵列执行搜索操作,可以减少搜索操作时的峰值电流并且抑制快速电流变化。此外,由于抑制了快速电流变化,可以减少提供到安装TCAM器件的半导体芯片的供给电压。结果,可以实现具有稳定搜索特性的高质量的TCAM器件。此外,由于减少了TCAM器件的电流消耗和在搜索操作时的峰值电流,可以减轻耦合到TCAM器件的外部电源器件的需要容量(例如电流的供给容量和响应性能)。因此,可以实现不昂贵和高质量的数据搜索系统。

<第二实施例>

[TCAM子阵列的配置]

图17是示出根据第二实施例的TCAM器件中的子阵列SA的配置的框图。图17所示的子阵列SA与图10所示的子阵列SA的不同之处在于:布置在列方向(Y方向)的两端的两个控制逻辑电路24A和24B以及布置在列方向(Y方向)的两端的两个搜索线驱动器22A和22B。虽然在图17中没有示出,写入驱动器还布置在列方向(Y方向)的两端。

从第0行至第(m-1)/2行的TCAM单元(被称作单元阵列20A)通过与这些TCAM单元(单元阵列20A)相邻的驱动器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所示的第一实施例的相同。因此,相同附图标记用于相同或相应的元件且省略了重复描述。

[第一实施例的效果]

根据以上配置的包括子阵列的TCAM器件,产生了与根据第一实施例的TCAM器件相同的效果,并且还产生了以下的效果。首先,与第一实施例的图10所示配置的子阵列相比,可以执行指示条目(行)总数的一半的区域是否是不关注区域的设置。因而,对于具有相对小的不关注区域的ACL规则文件,可以获得功率节省。

当布置了图10所示配置的多个子阵列SA时,需要在相邻子阵列SA之间提供一定量的间隔,使得诸如搜索线驱动器22的驱动器电路和单元阵列20A不会靠的太近,由于设计规则的限制。与此相比,当布置图17所示配置的多个子阵列SA时,可以在与相邻子阵列SA的搜索线驱动器22B和控制逻辑电路24B的附近,布置每个子阵列SA的搜索线驱动器22A和控制逻辑电路24A。因此,如图10的情况,优势在于不必扩大相邻子阵列之间的间隔。

<第三实施例>

例如,对于图9所示的子阵列SA[6,1]和SA[13,1],子阵列中的所有行的TCAM单元没有被设置为不关注。因此,不可能将图10和图11所示的寄存器REG1设置在“H”电平(“1”)。然而,一些行的所有TCAM单元被设置为不关注。因此,对于这些行,搜索结果明显变为命中。

因此,根据第三实施例的TCAM器件可以控制来针对子阵列的每行停止匹配线ML的预充电和停止匹配放大器MA的电路操作。因而,可以实现进一步的功率节省。此后,将参考附图进行详细描述。

[匹配放大器的配置和操作]

图18是示出根据第三实施例的TCAM器件中的匹配放大器MA的配置的电路图。图18中的匹配放大器MA与图13中的匹配放大器MA的区别在于进一步包括了寄存器REG3、或门77、与门78和反相器79。此外,图18所示的匹配放大器MA与图13所示的匹配放大器MA区别在于包括或非门80来代替反相器74。

当经由匹配线ML耦合到匹配放大器MA的所有TCAM单元的单元数据被设置为不关注时,寄存器REG3被设置为“H”电平(本说明书中定义为“1”)。当经由匹配线ML耦合到匹配放大器MA的TCAM单元中的至少一个单元数据不是不关注时,寄存器REG3被设置为“L”电平(本说明书中定义为“0”)。寄存器REG3只需要对应于用于子阵列SA的每行的匹配放大器MA来提供;因而,寄存器REG3不需要提供在图18所示的匹配放大器MA内。

或门77对从寄存器REG3输出的控制信号dnc_hit和匹配线预充电信号mlpre_n执行或运算,并且输出运算结果至P沟道MOS晶体管70的栅极。因而,当按照寄存器REG3的设定值的控制信号dnc_hit处于“H”电平时,MOS晶体管70被固定至关断状态。因此,匹配线ML的预充电没有进行。

与门78对匹配放大器使能信号mae和利用反相器79对从寄存器REG3输出的控制信号dnc_hit的逻辑电平进行反相而获得的值进行与运算。与门78的与运算结果和通过反相器73将与运算结果的逻辑电平反相而获得的信号被供给到反相器71和72的驱动电源节点。因此,当按照寄存器REG3的设定值的控制信号dnc_hit处于高电平时,反相器71处于不操作状态,且反相器72处于操作状态。因此,匹配线ML的电势没有被输出到下一级电路,且匹配线ML的电势没有被锁存。

或非门80对从寄存器REG3输出的控制信号dnc_hit和控制信号force_hit执行或非操作,且将运算结果输入到逻辑门75(与非门)的第二输入节点。因而,当寄存器REG3(控制信号dnc_hit)被设置在“H”电平时,匹配放大器MA的输出信号mo(逻辑门75的输出信号)被固定至“H”电平(表示匹配(命中))。

如上所述,当寄存器REG3(控制信号dnc_hit)被设置在“H”电平时,可以将匹配放大器MA的输出信号mo固定在“H”电平(命中)并且停止匹配线ML的预充电和匹配放大器MA的电路操作,即使是在寄存器REG1设置在“L”电平时。

图18的其他配置和操作与图13相同。因而,相同的附图标记应用于相同或相应的元件且省略其重复描述。例如,当提供在控制逻辑电路24中的寄存器REG1和提供在匹配放大器MA中的寄存器REG3都设置在“L”电平(表示不关注)时,经由匹配放大器MA对耦合到匹配线ML的TCAM单元执行普通搜索操作。当在控制逻辑电路24中的寄存器REG1设置在“H”电平(表示不关注)时,停止整个子阵列的搜索操作。

[寄存器REG3的数据设置方法]

此后,将参考图18至21来描述寄存器REG3的数据设置方法。

如图18所示,寄存器写入信号reg_w_sig和寄存器数据reg_data被输入到寄存器REG3中。寄存器REG3在寄存器写入信号reg_w_sig激活时储存寄存器数据reg_data。寄存器写入信号reg_w_sig和寄存器数据reg_data可以从TCAM器件内的专用电路提供,或者可以从TCAM器件外部的处理器提供(例如,图6所示的NPU 101)。

具体来说,当专用电路(图19所示的数据确定电路33)提供在TCAM器件内时,相关的专用电路可以方便地在数据写入到TCAM器件时确定至与公共匹配线ML耦合的所有TCAM单元的写入数据是否是不关注,并且能够基于确定结果立即执行对寄存器REG3的写入。当耦合到公共匹配线ML的所有TCAM单元被设置为不关注,相关的专用电路将寄存器REG3设置在“H”电平(“1”),否则,相关的专用电路将寄存器REG3设置在“L”电平(“0”)。

与此相反,当通过TCAM器件以外的处理器来设置寄存器REG3时,在数据写入到TCAM器件之后,外部处理器从用于每个条目的TCAM器件读取数据并且确定上述确定条件是否满足。因而,与在TCAM器件内提供专用电路相比,需要花更多时间。

此后,将参考附图来详细描述上述专用电路(图19所示的数据确定电路33)的操作。

图19是示出根据第三实施例的TCAM器件的配置的框图。图19所示的TCAM器件与图4所示的TCAM器件的不同在于进一步包括数据确定电路33[0]-33[3](当整体地称为时或表示不特定的一个时被描述为数据确定电路33)。

如图19所示,对应于子阵列SA[0,0]、SA[1,0]、SA[2,0]和……而提供了数据确定电路33[0]。当经由命令输入电路32输入的写入命令被检测到时,数据确定电路33[0]基于要写入到相应子阵列的写入数据d[0:31]来确定是否满足相同行(条目)的所有写入数据是不关注的条件。数据确定电路33[0]在上述确定条件满足时将于相关行对应的寄存器REG3设定为“H”电平(表示不关注)。

类似地,对应于子阵列SA[0,1]、SA[1,1]、SA[2,1]和……而提供了数据确定电路33[1],并且基于到相应子阵列的写入数据d[32:63]来设置相应子阵列的每个寄存器REG3。对应于子阵列SA[0,2]、SA[1,2]、SA[2,2]和……而提供了数据确定电路33[2],并且基于要写入到相应子阵列的写入数据d[64:95]来设置相应子阵列的每个寄存器REG3。对应于子阵列SA[0,3]、SA[1,3]、SA[2,3]和……而提供了数据确定电路33[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确定接收的写入数据是否满足条件:接收的X单元的32比特写入数据的所有比特和Y单元的32比特写入数据的所有比特是否为“0”(步骤110)。具体来说,数据确定电路33对X单元的写入数据的所有比特执行或运算,并且还对Y单元的写入数据的所有比特执行或运算。数据确定电路33对这些或运算的结果执行或非运算,并且确定最后获得值是“1”(不关注)还是“0”(非不关注)。

当满足了上述X单元数据和Y单元数据的所有比特是“0”的确定条件时,即当通过上述逻辑运算最终获得的值是“1”(不关注)(步骤S110处为是),数据确定电路33将与写入目标的条目对应的寄存器REG3设置为表示不关注的值“1”(“H”电平)(步骤S120)。值“1”被设置到寄存器REG3的时刻可以与数据被写入到TCAM单元中的时刻相同。

相反,当上述确定条件没有满足时,即当通过上述逻辑运算最终获得的值是“0”(非不关注)(步骤S110处为否),数据确定电路33将与写入目标的条目对应的寄存器REG3设置为表示非不关注的值“0”(“L”电平)(步骤S130)。

图21是示出根据第三实施例的TCAM器件中的图18所示的寄存器REG3的数据写入程序的时序图。在图21中,周期是从时钟信号clk的正边沿到下一正边沿的时段。

参见图19和图21,首先,在改变到周期T1附近(从紧接在周期T1之前的第二个半周期朝向周期T1的第一个半周期),X单元的写入数据(128比特)和用于指引X单元写入的命令被分别输入到数据输入电路31和命令输入电路32。数据输入电路31以32比特为单位来划分输入的X单元数据(128比特),并且在划分之后将X单元数据中的每个(32比特)输出至相应的子阵列SA和相应的数据确定电路33。命令输入电路32输出输入的命令(写入到X单元)至每个子阵列SA和每个数据确定电路33。在周期T1中,每个数据确定电路33获取32比特的相应X单元数据。

随后,在改变到周期T2附近(从周期T1的第二个半周期至周期T2的第一个半周期),Y单元的写入数据(128比特)和用于指引Y单元写入的命令被分别输入到数据输入电路31和命令输入电路32。数据输入电路31以32比特为单位来分割输入的Y单元数据(128比特),并且在分割之后输出Y单元数据中的每个(32比特)至相应的子阵列SA和相应的数据确定电路33。命令输入电路32输出输入的命令(写入到Y单元)至每个子阵列SA和每个数据确定电路33。

在周期T2中,每个数据确定电路33获取32比特的相应Y单元数据。每个数据确定电路33执行在周期T1中获取的X单元数据的所有比特的或操作,并且例如保持运算结果(“0”或“1”)在每个数据确定电路33提供的2比特移位寄存器的第一比特。

在随后的周期T3中,X单元数据的或运算结果被移位到移位寄存器的第二比特。每个数据确定电路33执行在周期T2中获取的Y单元数据的所有比特的或操作,并且保持运算结果(“0”或“1”)在上述移位寄存器的第一比特。随后,每个数据确定电路33执行相应移位寄存器的第一比特和第二比特的或非运算(即,进一步执行在周期T2获得的X单元数据的或运算结果与在周期T3获得的Y单元数据的或运算结果的或非运算)。当上述逻辑运算的最终结果是“1”时,说明32比特的X单元数据和32比特的Y单元数据的全部比特是“0”,即,32比特的写入数据的所有比特是不关注。

在随后的周期T4中,数据确定电路33输出或非运算结果至相应子阵列SA的每个寄存器REG3作为寄存器数据reg_data。在周期T4中时钟信号clk的负边沿,数据确定电路33将寄存器写入信号reg_w_sig激活(设置为“H”电平),该寄存器写入信号reg_w_sig激活将被供给到与写入目标条目对应的匹配放大器MA中提供的寄存器REG3。结果,当写入目标条目的TCAM单元的所有值是不关注时,“1”(“H”电平)被设置到寄存器REG3,否则(在不关注的情况下),“0”(“L”电平)被设置到寄存器REG3。在时钟信号clk的负边沿产生寄存器写入信号reg_w_sig的理由是为了完全确保设置时间和保持时间。

[匹配放大器的修改的示例]

图22是示出图18所示的匹配放大器MA的修改的示例的框图。图22所示的匹配放大器MA也可以在相应的行是没有储存数据的无效条目时应用。

具体来说,图22所示的匹配放大器MA与图18所示的匹配放大器MA的区别在于进一步包括了寄存器REG2、与门76、反相器81和或门82。

当子阵列中相应的行是无效条目时,寄存器REG2被设置在“L”电平(在本说明书中被定义为“0”),并且当相应的行是有效条目时,被设置在“H”电平(在本说明书中被定义为“1”)。只需要与子阵列的每行的匹配放大器MA对应地提供寄存器REG2,因此,寄存器REG2不需要提供在图22所示的匹配放大器MA内。上述寄存器REG2的值设定可以通过TCAM器件内的专用电路来执行,或者可以通过TCAM器件外部来执行(例如图6所示的NPU 101)。

与门76输出从寄存器REG2输出的控制信号val_ent和逻辑门75的输出信号的与运算结果,作为匹配放大器MA的输出信号mo。因此,当寄存器REG1的设定值是“1”时(不关注),或者当寄存器REG2的设定值是“0”时(无效)即使寄存器REG3的设定值是“1”(不关注),向寄存器REG2的无效设定给出优先级;因此可以将匹配放大器MA的输出信号mo设置在“L”电平(错失)。

或门82对从寄存器REG3输出的控制信号dnc_hi和利用反相器81对从寄存器REG2输出的控制信号val_ent的逻辑电平进行反相而获得的值进行或操作。

或门77对或门82的输出值和匹配线预充电信号mlpre_n执行或操作,并且输出运算结果至P沟道MOS晶体管70的栅极。因而,当根据寄存器REG3的设定值的控制信号dnc_hit处于“H”电平(不关注)时,和/或当根据寄存器REG2的设定值的控制信号dnc_hit处于“L”电平(无效)时,MOS晶体管70被固定至关断状态;因此,匹配线ML的预充电没有进行。

与门78对匹配放大器使能信号mae和利用反相器79对或门82的输出值的逻辑电平进行反相而获得的值进行与操作。与门78的与运算结果和通过反相器73将与运算结果的逻辑电平反相而获得的信号被供给到反相器71和72的驱动电源节点。因此,当根据寄存器REG3的设定值的控制信号dnc_hit处于“H”电平(不关注)时和/或当根据寄存器REG2的设定值的控制信号val_ent处于“L”电平(无效)时,反相器71处于不操作状态,且反相器72处于操作状态;因此,匹配线ML的电势没有被输出到下一级电路,且匹配线ML的电势没有被锁存。

图22的其他元件的配置与图18相同。因而,相同的附图标记应用于相同或相应的元件且省略其重复描述。

这样,当与匹配放大器MA对应的行时无效条目时,搜索结果是明显的(如错失)。因而,匹配线ML的预充电操作停止,且匹配放大器MA的电路操作停止。这样,匹配放大器MA的输出信号被固定到“L”电平(错失)且输出正常搜索结果。

也可以采用没有提供图22中的反相器81和或门82的修改的示例。即,从寄存器REG2输出的控制信号val_ent只被输入到与门76。在这种情况下,通过仅仅将寄存器REG2设置为“0”(无效),可以不停止对应匹配线ML的预充电或者匹配放大器MA的电路操作。因此,当寄存器REG2被设置为“0”(无效)时,也需要将寄存器REG3设置为“1”(不关注)。

[第三实施例的效果]

如上所述,即使当子阵列中所有单元的数据并非是不关注,当所有单元的数据包括不关注的行(此后称作“不关注条目”)或没有设置数据的无效条目时,相关行的搜索结果是明显的。在这样的情况下,相关行(不关注条目或无效条目)的匹配线ML的预充电操作停止且匹配放大器MA的电路操作停止。因此,可以减少TCAM器件的功耗。另外,通过将与不关注条目对应的匹配放大器MA的输出信号固定在“H”电平(命中)并且将与无效条目对应的匹配放大器MA的输出信号固定在“L”电平(错失),可以执行正常搜索操作。

按照根据第三实施例的TCAM器件,可以提供低功耗装置,其在不关注条目或无效条目分散在子阵列中时是有效的。

<第四实施例>

对于根据第四实施例的TCAM器件,将针对没有提供图10和图11所示的用于停止整个子阵列的搜索操作的寄存器REG1的情况进行描述。在这种情况下,基于图18和图22中所示的用于每个匹配放大器MA的寄存器REG3的设定值来确定整个子阵列的搜索操作是否停止。此后,将参考附图来进行详细解释。

[子阵列的配置]

图23是示意性示出根据第四实施例的TCAM器件中的子阵列的配置的框图。图23所示的子阵列SA与图10所示的子阵列SA的不同之处在于没有提供控制逻辑电路24但是提供了逻辑乘积电路27来代替寄存器REG1。图23的其它元件的配置与图10相同,因此,相同的附图标记用于相同或相应的元件并且省略对其重复描述。

逻辑乘积电路27获得提供用于TCAM单元阵列20的每行(每个匹配线ML)的寄存器REG3[0]-REG3[m]的设定值dnc_hit[0]-dnc_hit[m]中每个的逻辑乘积,并且输出运算结果作为控制信号force_hit。控制信号force_hit被输入到控制逻辑电路24。如已经解释的那样,当子阵列中相应行的所有单元的数据是不关注时,寄存器REG3被设置为“1”(“H”电平),否则寄存器REG3被设置为“0”(“L”电平)。因此,当子阵列中所有单元的数据是不关注时,控制信号force_hit被设置在“H”电平(“1”),否则控制信号force_hit被设置在“L”电平(“0”)。

[控制逻辑电路的配置]

图24是示出图23中所示的控制逻辑电路24中的与搜索操作有关的部分的配置的电路图。图24中所示的控制逻辑电路24与图11中所示的控制逻辑电路24的不同之处在于没有包括寄存器REG1。在图24中,要输入到反相器42中的控制信号force_hit从图23所示的逻辑乘积电路27提供。

此外,在图24中,控制信号force_hit没有从控制逻辑电路24输出到每个匹配放大器MA。因此,在图18和图22所示的匹配放大器MA中,提供了用于将从寄存器REG3输出的控制信号dnc_hit的逻辑电平反相的反相器来代替或非门80。该反相器的输出信号被输入到逻辑门75。图24的其他元件的配置与图11相同;因此,相同的附图标记用于相同或相应的元件并且省略对其重复描述。

[第四实施例的效果]

根据上述配置,子阵列中所有单元的数据被设置为不关注,因而,当提供用于子阵列中每行的所有寄存器REG3被设置为不关注时,可以自动停止子阵列的搜索操作。如图19和图21所示,利用数据确定电路33可以自动执行寄存器REG3的值设定。因此有一个优点,不必在数据写入到TCAM器件之后来分析TCAM单元数据的内容以设置寄存器REG1的值。

作为修改的示例,可以采用以下的配置:其中,没有提供图10和图11所示的寄存器REG1以及图23所示的逻辑乘积电路27。然而,在这个改型的示例中,当子阵列中所有单元的数据被设置为不关注时,可以停止所有匹配线ML的预充电操作以及所有匹配放大器MA的电路操作;但是,不可以停止搜索线驱动器22的操作。在本实施例中,提供逻辑乘积电路27以便确定是否可以停止所有的搜索操作。

<第五实施例>

[缓冲放大器单元的配置]

图25是示出用于来自控制逻辑电路24的输出信号的缓冲放大器的布置的示意性视图。

从图11所示的控制逻辑电路24输出的控制信号force_hit、匹配线预充电信号mlpre_n和匹配放大器使能信号mae被输出到子阵列中的所有匹配放大器MA。因此,当存在用于每个子阵列的一些条目时,需要提供缓冲放大器。因此在图25的情况下,为每四个匹配放大器MA提供缓冲放大器单元84。

参见图25,缓冲放大器单元85对应于4个匹配放大器MA[0]、MA[1]、MA[2]和MA[3]来提供,并且包括缓冲器85、86和87。匹配线预充电信号mlpre_n通过缓冲器85来成形并且并且被输入到4个匹配放大器MA[0]、MA[1]、MA[2]和MA[3]中的每个的或门77。匹配放大器使能信号mae通过缓冲器86来成形,并且被输入到4个匹配放大器MA[0]、MA[1]、MA[2]和MA[3]中的每个的与门78。控制信号force_hit通过缓冲器87来成形,并且被输入到4个匹配放大器MA[0]、MA[1]、MA[2]和MA[3]中的每个的或非门80。

在图25中,分别排除了寄存器REG3[0]、REG3[1]和REG3[2]的匹配放大器MA[0]、MA[1]、MA[2]的电路部分83具有与匹配放大器MA[3]的电路部分83相同的配置;因此,不再示出其电路图。

[缓冲放大器单元的修改的示例]

图26是示出根据第五实施例的TCAM器件中的缓冲放大器单元的配置的示意性视图。图26中所示的缓冲放大器单元84等效于图25所示的缓冲放大器单元84,并且具有修改的配置以便实现低功耗。

具体来说,在图26所述的缓冲放大单元中,通过提供逻辑门来代替图25中的缓冲器,除了输入波形的成形功能以外,逻辑运算也是可以的。即,在图26所示的缓冲放大器单元84中,提供或门89来代替缓冲器85,提供与门90和反相器91来代替缓冲器86,并且提供或门92来代替缓冲器87。

图26所示的缓冲放大器单元84还包括与门88,其执行从提供在相应匹配放大器MA[0]-MA[3]中的寄存器REG3[0]-REG3[3]输出的控制信号dnc_hit[0]-dnc_hit[3]的与运算。当从寄存器REG3[0]-REG3[3]输出的控制信号dnc_hit[0]-dnc_hit[3]都处在指示不关注的“H”电平(对应于设置值“1”)时,与门88输出高电平的信号。

或门89将匹配线预充电信号mlpre_n和与门88的输出信号的或运算结果输出到相应的匹配放大器MA[0]-MA[3],作为本地匹配线预充电信号mlpre_local_n。与门90将匹配放大器使能信号mae和利用反相器91对与门88的输出信号的逻辑电平进行反相而获得的值的与运算的结果输出至相应的匹配放大器MA[0]-MA[3],作为本地匹配放大器使能信号mae_local。或门92将控制信号force_hit和与门88的输出信号的或运算结果输出到相应的匹配放大器MA[0]-MA[3],作为本地控制信号force_hit_local。

因此,当从相应的寄存器REG3[0]-REG3[3]输出的控制信号dnc_hit[0]-dnc_hit[3]处在表示不关注的“H”电平(对应“1”)时,本地匹配线预充电信号mlpre_local_n被固定在“H”电平,并且本地匹配放大器使能信号mae_local被固定在“L”电平。此外,本地控制信号force_hit_local在这种情况下被固定在“H”电平。因此可以减少需要对用于传递这些本地控制信号的布线进行充电和放电的电流消耗。此外,上述的缓冲放大器单元是第一实施例至第四实施例中需要的电路的修改的电路,因此基本上不会造成面积的增加。

<第六实施例>

图27A、27B和27C是示出在供电开始后写入到寄存器REG1、REG2和REG3中的每个的数据的程序的示意性视图。在图27A、27B和27C中代表性地示出了三个子阵列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所示的NPU 101)。

参见图27A,紧接在开始供电之后,所有的寄存器REG1、REG2和REG3处于非固定状态。在图27A中,使用阴影来表示处于非固定状态的寄存器。

参见图27B,在TCAM器件中写入数据之前的初始状态中,向每个寄存器REG1设置“1”(不关注),向每个寄存器REG2设置“0”(无效),并且向每个寄存器REG3设置“1”(不关注)。

图27C概括性示出在TCAM器件中写入ACL规则文件之后的状态(可搜索状态)。如图27C所示,数据已经写入在子阵列SA[0,0]的所有行的TCAM单元中。数据没有写入在子阵列SA[1,0]的一些行的TCAM单元中。数据没有写入在子阵列SA[2,0]的任何行的TCAM单元中。

当写入数据在某一行的TCAM单元中时,与相关行对应的寄存器REG2的值从“0”(无效)改变到“1”(有效),并且在很多情况下,寄存器REG3的值从“1”(不关注)改变到“0”(非不关注)。然而,当相关行的所有单元数据是不关注时,寄存器REG3的值保持在“1”。当“1”或“0”的值(即,除了不关注以外)写入到子阵列的TCAM单元中的一个时,寄存器REG1的值从“1”(不关注)改变到“0”(非不关注)。

由于根据上述过程对每个寄存器执行数据写入,如图27C所示,在已经在所有行的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的预充电、搜索线驱动器22和匹配放大器MA的电路操作)。因而,可以减少电流消耗。

这样,通过对寄存器REG1、REG2和REG3中每个的值进行初始设置并且通过根据在向TCAM单元写入数据时写入数据的值来改变存储器REG1、REG2和REG3中每个的值,可以有效且容易地设置每个寄存器的值。

当包括了图22所示的匹配放大器MA时,即使寄存器REG3的值被设置为“0”(非不关注),只要寄存器REG2的值被设置为“0”(无效),也可以停止匹配线ML的预充电和匹配放大器MA的电路操作。因而,在这种情况下,寄存器REG3的值可以在图27B的初始设置中被设置为“0”(非不关注)。

<第七实施例>

只有当耦合到每个子阵列的匹配线ML的所有TCAM单元被设置为不关注时,才可以应用上述第一实施例至第六实施例中描述的TCAM器件的低功耗技术。因而,即使在其中相对较大数目的被设置为不关注的TCAM单元连续定位的情况下,如果这些TCAM单元延伸通过两个匹配线,并且如果被设置为“1”或“0”的TCAM单元被包括在每个匹配线中,也不可以应用上述的低功耗技术。

在第七实施例中,通过改变TCAM单元数据的布置,上述的低功耗技术可以应用在上述的情况中。此后,参考附图进行详细描述。以下解释采用的输入数据的比特宽度和输入数据的划分数目是示例且不限于这个示例。

图28A和28B是示出输入数据的阵列转换的示意性示图。图28A示出以下示例:在输入数据的比特宽度是32比特时,数据按照这个顺序输入到两个子阵列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)。

此处,在没有执行阵列转换时,如图28A所示,假设“1”或“0”的数据从比特号0至比特号9以及从比特号29至比特号31被写入在每个TCAM单元中(附图中的黑色方形)。还假设表示不关注的数据被写入在从比特号10至比特号28的19个连续TCAM单元(附图中的阴影方形)中的每个中。在这种情况下,有16个或更多个表示不关注的数据位,并且它们是连续的;然而,储存表示不关注的数据的TCAM单元涉及子阵列SA_0和子阵列SA_1。因而,除了被设置为不关注的TCAM单元以外,被设置为“0”或“1”的TCAM单元也耦合到匹配线ML_0和ML_1中的每个。因此,可以利用上述的低功耗技术。

图28B的示例改变了图28A的示例中的数据阵列,使得耦合到子阵列SA_1的匹配线ML_1的所有TCAM单元被设置为不关注。因而,可以应用上述的低功耗技术。具体来说,数据阵列被改变,并且输入数据(写入数据和搜索数据)中比特号29-31的部分的布置顺序被向前移动使得所述部分的数据被分别输入到比特号10-12的TCAM单元中。此外,数据阵列被改变,并且输入数据中比特号10-28的部分的布置顺序被向下移动使得所述部分的数据被分别输入到比特号13-31的TCAM单元中。结果,如图28B所示,可以将耦合至子阵列SA_1的匹配线ML_1的所有TCAM单元(比特号16-31)设置为不关注(附图中的阴影方形)。因此,可以应用上述的低功耗技术(停止匹配线ML_1的预充电以及停止匹配放大器MA_1的操作)。

图29是示出根据第七实施例的搜索系统的配置的框图。图29所示的搜索系统120与图6所示的搜索系统120区别在于进一步包括了用于转换数据阵列的开关电路110(此后称为数据阵列转换开关)。图29示出了128比特的示例作为输入数据din的比特数目。

参见图29,存储在存储器件102中的ACL规则文件通过包括在NPU(网络处理器单元)101中数据转换器103被转换成TCAM数据。TCAM数据包括三个值:“0”、“1”和“不关注”(“1”或“0”)。TCAM数据从NPU 101的数据输出电路105输入到数据阵列转换开关110作为输入数据din[0:127]。

数据阵列转换开关110根据提前确定的规则来改变输入数据din[0:127](写入数据和搜索数据)的布置顺序。数据阵列转换开关110在改变完布置顺序之后将输入数据输入到TCAM器件100的数据输入电路31[0]-31[3]。在图29的情况下,数据输入电路31[0]-31[3]被划分为对应于每个子阵列的4个(例如,数据输入电路31[0]对应于比特号0-31)。数据阵列转换开关110中的转换规则基于TCAM数据的分析结果通过包括在NPU 101中的数据分析器104来确定。

图30是示意性示出TCAM器件的存储状态的图,其中写入了TCAM数据的示例作为数据阵列转换的目标。图30所示的示出存储状态的附图对应于图9,并且与图9的不同之处在于存储不关注数据的区域211的布置(附图中密的阴影区域)。图30中所示的其他点与图9所示的相同。因此,相同的附图标记用于相同或相应的元件并且省略对其重复描述。

在图30所示的TCAM数据布置的情况下,存在其中表示不关注的区域的比特宽度超过子阵列SA的比特宽度32比特的区域,然而,不存在其中不关注被设置在一个子阵列SA的全部比特宽度中的区域。因此,不能应用上述第一实施例至第六实施例的低功耗技术。

因此,例如利用图29所述的数据阵列转换开关来改变比特号26-31的部分的所有数据以及比特号58-63的部分的所有数据。根据这种数据阵列转换,在比特号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”电平(错失)。

如上所述,第七实施例公开了在以下情况下能够实现低功耗的技术:在该情况中关于TCAM器件除了无效条目以外的所有条目,具有数据宽度大于子阵列的比特宽度的区域被设置为不关注。在这种情况下,即使当耦合到子阵列的匹配线的所有TCAM单元没有被设置为不关注,通过根据与每个匹配线对应的比特号来改变数据阵列,也可以利用在这个实施例中描述的低功耗技术。因此,为了建立低功耗的搜索系统,例如,在说明书中可以为用户开放每个匹配线所对应的比特号。

在上述实施例中,针对TCAM器件的全部条目来改变数据阵列。然而,通过提供用于改变每个子阵列SA中数据阵列的开关电路,可以按照属于子阵列的条目为单位来改变数据阵列。

<第八实施例>

在第一实施例至第七实施例中,所有子阵列在几乎相同的时序执行搜索操作,并且优先级编码器基于每个子阵列的输出信号来输出搜索结果。第八实施例公开了以下示例:其中布置在行方向的多个子阵列(相应对应于公共条目)在管线系统中顺序执行搜索。在这种情况下,每个子阵列在相应的前一级子阵列的搜索操作结束后启动搜索操作。

图31是示出根据第八实施例的TCAM器件的配置的框图。在图31所示的TCAM器件中,有代表性地示出了四个子阵列SA_0-SA_3,且没有示出优先级编码器。按照子阵列SA_0、子阵列SA_1、子阵列SA_2和子阵列SA_3的顺序来执行搜索操作。每个子阵列SA设有m+1个匹配线ML。

如图31所示,在子阵列SA_0中,搜索后的匹配线ML_0,j(j=0,1,2,…,m)的电势和电源电势VDD被输入到相应的匹配放大器MA,输出信号mo_0,j从匹配放大器MA输出。类似地,在子阵列SA_i(i=1,2,3)中,搜索后的匹配线ML_i,j(j=0,1,2,…,m)的电势和子阵列SA_i-1,j的输出信号mo_i-1,j(j是同一条目的前一级)被输入到相应的匹配放大器MA,且输出信号mo_i,j从匹配放大器MA输出。

图32是示出图31所示的匹配放大器MA的配置的示例的电路图。图32的匹配放大器MA示出了耦合到图31中所示的子阵列SA_i(i=0,1,2,3)的匹配线ML_i,j(j=0,1,2,…,m)的匹配放大器配置的示例。图32示出了改变图13所示的匹配放大器MA的配置之后的配置。然而,也可以类似地改变图16、图18和图22所示的匹配放大器MA中的每个。

具体来说,图32所示的匹配放大器MA还向图13(或图16、图18和图22)所示的匹配放大器MA增加了D触发器83、与非门84、反相器85和与门26。D触发器83和与门26在图32中被示出为提供在匹配放大器MA内。但是,D触发器83和与门26只需要分别对应于用于每个条目的匹配放大器MA来提供;因而,D触发器83和与门26可以提供在匹配放大器MA以外。

D触发器83保持在前一级(前一循环中的搜索结果)中的子阵列的相应行的匹配放大器MA的输出信号mo_pre。然而,对于在搜索周期的开始执行搜索操作的子阵列SA_0(即,i=0),电源电势VDD被输入来代替前一级的相应行的匹配放大器MA的输出信号。

在图13所示的改变之前输入到电路中的P沟道MOS晶体管70的栅极的信号通过反相器85反相逻辑电平且在改变后被输入到与非门84的第二输入节点。上述D触发器83的输出信号mo_pre(前一周期的搜索结果)被输入到与非门84的第一输入节点。与非门84的运算结果被输入到MOS晶体管70的栅极。

因而,当上述D触发器83的输出信号mo_pre(前一周期的搜索结果)处于“L”电平时(错失),“H”电平的信号被输入到MOS晶体管70的栅极。结果,MOS晶体管70一直变为关断来停止匹配线ML的预充电。

与门26将上述D触发器83的输出信号mo_pre(前一周期的搜索结果)与图13(或图16、图18和图22)所示的改变之前的配置的匹配放大器MA情况下的输出信号mo_now执行与运算,并输出运算结果作为匹配放大器MA的输出信号mo。与门26对应于图5所示的与门,且可以被视作是图5所示的与门26布置在匹配放大器MA内。

因而,当上述D触发器83的输出信号mo_pre(前一周期相应行的搜索结果)是“L”电平(错失)时,与门26的输出信号(即匹配放大器MA的输出信号mo)变为“L”电平(错失)。图32所示的其它元件与图13(或图16、图18和图22)所示的匹配放大器MA相同。因此,相同的附图标记用于相同或相应的元件并且省略对其重复描述。

图33是示出图31所示的TCAM器件的操作的示意性视图。每个匹配放大器MA的阴影区域表示TCAM数据是不关注。

在第一周期中,子阵列SA_0执行搜索操作。每个条目的搜索结果(在命中情况下是“1”而在错失情况下是“0”)存储在下一级的子阵列SA_1的匹配放大器单元23的相应行的D触发器83中。在如图32所示在D触发器83中存储“0”时,在下一第二周期中停止对应行的匹配线ML的预充电。

在第二周期中,在子阵列SA_1的行中,通常仅针对前一级中子阵列SA_0的搜索操作中命中的行执行搜索操作。然而,在图33的情况下,子阵列SA_1的所有TCAM单元的数据被设置为不关注。因此,通过将寄存器REG1设置为“1”(不关注),整个子阵列SA_1的搜索操作停止。在第一周期中成为命中的条目的输出信号自动变为命中,并且在下一级中在子阵列SA_2的匹配放大器单元23的相应D触发器中写入“0”。

在第三周期中,在子阵列SA_2的行中,仅针对从子阵列SA_1输入表示命中的信号的行执行搜索操作。针对在D触发器83中存储“0”的行停止匹配线预充电。对于子阵列SA_2中搜索结果已经命中的行,在下一级中在子阵列SA_3的匹配放大器单元23的相应D触发器中存储“1”。在子阵列SA_3的其它行的D触发器83中存储“0”。

在第四周期中,对子阵列SA_3的TCAM单元阵列执行搜索操作。在这种情况下,除了与匹配线220和221对应的行以外,针对在前一级中从子阵列SA_2输入表示命中的信号的行执行搜索操作。由于耦合到匹配线220和221的所有TCAM单元被设置为不关注,通过将寄存器REG3设置为“1”(不关注),可以停止这些匹配线220和221的预充电以及相应匹配放大器MA的电路操作。从耦合到匹配线220和221的匹配放大器MA,可以自动输出表示命中的信号至优先级编码器30。搜索结果也从执行了搜索操作的其它行的匹配放大器MA被输出到优先级编码器30。

这样,在第八实施例中,结合参考第一实施例至第七实施例描述的低功耗技术,在管线系统中顺序搜索布置在行方向上的多个子阵列,并且仅仅针对在前一周期中变为命中的条目执行搜索操作。因此,可以减少功耗。

如以上所述,基于一些实施例已经具体描述了本发明人完成的发明。然而,不必过分强调,本发明不限于上述实施例,而是可以在不离开本发明精神的范围内进行各种改变。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1