掌桥专利:专业的专利平台
掌桥专利
首页

双重比较三态内容可寻址存储器

文献发布时间:2023-06-19 11:26:00


双重比较三态内容可寻址存储器

背景技术

CAM将搜索输入与被存储在存储器中的每个单词进行比较。CAM特别适用于查找表、存取控制列表(ACL)、服务质量(QOS)等。与静态随机存取存储器(SRAM)相比,当地址被提供给SRAM存储设备时,该地址查找存储器的特定位置,并且数据可以在该位置处被存取。不是使数据的地址被定位,而是CAM使用搜索变量并且确定搜索关键字或数据被存储在CAM中的位置。

附图说明

当结合附图阅读时,根据以下详细描述可以最好地理解本公开。要强调的是,根据行业中的标准实践,各种特征未按比例绘制。实际上,为了清楚起见,可以任意地增加或减小各种特征的尺寸。

图1示出了并行配置的示例三态内容可寻址存储器位单元的电路图。

图2示出了堆叠配置的示例双重比较三态内容可寻址存储器位单元的电路图。

图3示出了三态内容可寻址存储器的示例双重比较过程的流程图。

图4示出了双重比较三态内容可寻址存储器的示例实现的框图。

具体实施方式

然而,CAM通常限于搜索数据的精确匹配项。这在某些应用中效率不高或无用。

三态内容可寻址存储器(TCAM)进一步扩展了CAM上的搜索灵活性。CAM位单元与TCAM位单元之间的显著区别是,不仅TCAM位单元可以利用给定条目中的1和0进行匹配,而且TCAM位单元可以被编程为通配符状态(即,“我不关心数据是什么”)。利用TCAM位单元,搜索可以利用要匹配的相关比特和对匹配项不重要的比特(即,通配符参数)而被执行。具有多个TCAM位单元的TCAM允许存储完整数据和任何/所有数据位的掩码,从而允许将很多数据条目组合为一个存储条目。每个TCAM位单元存储三种数据状态之一:逻辑“1”、逻辑“0”或“不关心”值,因为“不关心”值得到该比特的匹配项,而无论搜索数据的输入位的值如何。为了编码三个数据状态,每个TCAM位单元被配置为存储两个比特。

然而,TCAM位单元的当前配置导致被存储在TCAM位单元中的数据的搜索效率低下。数据搜索通常通过在每个时钟周期对TCAM位单元执行一次搜索而被执行。这限制了可以查找和/或存取数据的处理速度。

本文中公开的示例通过提供一种三态内容可寻址存储器位单元来解决这些技术挑战,该三位内容可寻址存储器位单元包括两个或更多个搜索电路,这些搜索电路搜索被存储在TCAM位单元的存储节点中的相同数据。

现在将公开以下要求保护的主题的示例。本文中公开的一些示例TCAM位单元能够使用两个比较端口或电路进行搜索。因此,与先前的单个搜索配置相比,本文中公开的示例TCAM位单元在搜索操作的数目上提供了更高的效率。例如,本文中公开的TCAM位单元可以允许在每个时钟周期针对被存储在TCAM位单元的存储节点中的相同数据进行两次或更多次独立搜索。虽然本公开涉及改进的TCAM位单元配置,但是基于本公开,CAM位单元也可以被配置为包括如本文中教导的两个比较电路。

为了清楚起见,在本说明书中并没有描述实际实现的所有特征。在任何这样的实际示例的开发中,可以做出很多特定于实现的决策,以实现开发人员的特定目标,诸如遵守与系统相关和与业务相关的约束,而这些约束因实现而异。而且,对于受益于本公开的本领域普通技术人员来说,即使是复杂且费时的这种开发工作也将是例行工作。

本公开的实施例涉及一种三态内容可寻址存储器(TCAM)半导体器件。

在并行存储器单元配置中,TCAM半导体位单元包括第一数据存储部分和第二数据存储部分,其中第一数据存储部分和第二数据存储部分每个包括被连接到相同字线的晶体管。第一数据存储部分包括被连接到第一位线并且被连接到第一位线条(line bar)的晶体管。第二数据存储部分每个包括被连接到第二位线并且被连接到第二位线条的晶体管。第一组串联晶体管和第二组串联晶体管各自被连接到相同的第一匹配线。第一组串联晶体管被连接到第一搜索线,并且第二组串联晶体管被连接到第一搜索线条。第三组串联晶体管和第四组串联晶体管各自被连接到相同的第二匹配线。第三组串联晶体管被连接到第二搜索线条,并且第四组串联晶体管被连接到第二搜索线。

在堆叠存储器单元配置中,TCAM半导体位单元包括第一数据存储部分和第二数据存储部分,其中第一数据存储部分和第二数据存储部分每个包括被连接到相同位线的晶体管。第一数据存储部分包括被连接到第一字线的晶体管,并且第二数据存储部分包括被连接到第二字线的晶体管。第一数据存储部分和第二数据存储部分每个包括被连接到相同位线条的晶体管。第一组串联晶体管和第二组串联晶体管各自被连接到相同的第一匹配线。第一组串联晶体管被连接到相同的第一搜索线条,并且第二组串联晶体管被连接到相同的第一搜索线。第三组串联晶体管和第四组串联晶体管各自被连接到相同的第二匹配线。第三组串联晶体管被连接到相同的第二搜索线,并且第四组串联晶体管被连接到相同的第二搜索线条。第一数据存储部分被连接到第一组串联晶体管和第三组串联晶体管。第二数据存储部分被连接到第二组串联晶体管和第四组串联晶体管。

在另一实施例中,一种操作三态内容可寻址存储器设备(TCAM位单元)的方法包括:由TCAM位单元接收第一搜索标准,TCAM位单元包括第一存储部分和第二存储部分、第一比较端口和第二比较端口、第一搜索线和第二搜索线、第一搜索线条和第二搜索线条、第一匹配线和第二匹配线、以及字线;由TCAM位单元接收第二搜索标准;利用第一搜索标准、使用第一比较端口执行对第一存储部分和第二存储部分的第一搜索;利用第二搜索标准、使用第二比较端口执行对第一存储部分和第二存储部分的第二搜索;确定针对第一搜索标准的第一搜索输出;以及确定针对第二搜索标准的第二搜索输出。

在其他实施例中,一种操作三态内容可寻址存储器设备(TCAM位单元)的方法包括:由TCAM位单元接收第一搜索标准,TCAM位单元包括第一存储部分和第二存储部分、第一比较端口和第二比较端口、第一搜索线和第二搜索线、第一搜索线条和第二搜索线条、第一匹配线和第二匹配线、以及第一字线和第二字线;由TCAM位单元接收第二搜索标准;利用第一搜索标准、使用第一比较端口执行对第一存储部分和第二存储部分的第一搜索;利用第二搜索标准、使用第二比较端口执行对第一存储部分和第二存储部分的第二搜索;确定针对第一搜索标准的第一搜索输出;以及确定针对第二搜索标准的第二搜索输出。

图1示出了描绘示例三态内容可寻址存储器(TCAM)位单元100的电路图。该图描绘了允许每个时钟周期进行两次比较的并行TCAM位单元100。TCAM位单元100包括利用第一组串联晶体管116、118和第二组串联晶体管130、132的第一比较端口。TCAM位单元100包括利用第三组串联晶体管110、112和第四组串联晶体管136、138的第二比较端口。

TCAM 100包括一个字线WL1、两个匹配线ML1、ML2、两个位线BL1、BL2、两个搜索线SL1、SL2、两个搜索线条SLB1、SLB2和两个位线条BLB1、BLB2。晶体管102被连接到字线WL1和位线BL1。晶体管108被连接到位线条BLB1和字线WL1。晶体管122被连接到位线BL2和字线WL1。晶体管128被连接到字线WL1和位线条BLB2。晶体管110被连接到匹配线ML2。晶体管112被连接到晶体管110、搜索线条SLB2和地114。晶体管116被连接到匹配线ML1。晶体管118被连接到晶体管116、搜索线SL1和地120。

晶体管130被连接到晶体管110、晶体管132、晶体管102、匹配线ML1、交叉耦合反相器104和106。晶体管132被连接到晶体管130、搜索线SLB1和地134。

晶体管136被连接到晶体管116、晶体管138、匹配线ML2、交叉耦合反相器124和126。晶体管138被连接到晶体管136、搜索线SL2和地140。

TCAM位单元100包括两个存储部分。第一存储部分包括晶体管102、108和第一存储节点SN1。第一存储节点SN1包括交叉耦合反相器104、106。晶体管102和108允许存取以在第一存储节点SN1上读取或写入位数据值,这转而控制由反相器104和106输出的状态。存储部分包括晶体管122、128和第二存储节点SN2。第二存储节点SN2包括交叉耦合反相器124、126。晶体管122和128允许存取以在第二存储节点SN2上读取或写入位数据值,这转而控制由反相器124和126输出的状态。反相器104交叉耦合到反相器106使得反相器104的输出端子被连接到反相器106的输入端子,并且反相器106的输出端子被连接到反相器104的输入端子。反相器124交叉耦合到反相器126使得反相器124的输出端子被连接到反相器126的输入端子,并且反相器126的输出端子被连接到反相器124的输入端子。反相器104、106、124、126的输出端子在图1中由从反相器示意图的圆形延伸的线表示。反相器104、106、124、126的输入端子由被连接到反相器示意图的三角形的底边的线表示。反相器104的输入端子被连接到晶体管102、晶体管110、晶体管130、和反相器106的输出端子。反相器104的输出被连接到晶体管108。反相器106的输出端子被连接到晶体管102、晶体管110、晶体管130、和反相器104的输入端子。反相器106的输入端子被连接到晶体管108。反相器124的输入端子被连接到晶体管122、晶体管116、晶体管136、和反相器126的输出端子。反相器126的输出端子被连接到晶体管122、晶体管116、晶体管136、和反相器124的输入端子。反相器126的输入端子被连接到晶体管128、和反相器124的输出端子。

每个存储节点SN1、SN2由TCAM位单元100用来保持为0或1的位值。第一存储节点SN1的存储位值可以由第一比较端口或第二比较端口独立地确定。第二存储节点SN2的存储位值可以由第一比较端口或第二比较端口独立地确定。

尽管图1的前述描述描述了双重比较TCAM位单元,但是TCAM位单元可以被配置为包括附加比较电路。例如,可以通过添加四个晶体管、第三匹配线、第三搜索线条和第三搜索线来配置三重比较端口TCAM位单元。

图2示出了描绘示例三态内容可寻址存储器(TCAM)位单元200的电路图。TCAM位单元200包括使用第一组串联晶体管210、212和第二组串联晶体管216、218的第一比较端口。位单元200包括使用第三组串联晶体管230、232和第四组串联晶体管240、242的第二比较端口。

TCAM位单元200包括两个字线WL1、WL2、两个匹配线ML1、ML2、位线BL1、两个搜索线SL1、SL2、两个搜索线条SLB1、SLB2和位线条BLB1。晶体管202被连接到字线WL1和位线BL1。晶体管208被连接到位线条BLB1和字线WL1。晶体管222被连接到位线BL1和字线WL2。晶体管228被连接到字线WL2和位线条BLB1。晶体管210被连接到匹配线ML1。晶体管212被连接到晶体管210、搜索线条SLB1和地214。晶体管216被连接到匹配线ML1。晶体管218被连接到晶体管216、搜索线SL1和地220。

晶体管230被连接到晶体管210、晶体管232、晶体管202、匹配ML2、交叉耦合反相器204和206。晶体管232被连接到晶体管230、搜索线条SLB2和地234。

晶体管240被连接到晶体管216、晶体管242、匹配线ML2以及交叉耦合反相器224和226。晶体管242被连接到晶体管240、搜索线SL2和地244。

TCAM位单元200包括两个存储部分。第一存储部分包括晶体管202、208和第一存储节点SN1。第一存储节点SN1包括交叉耦合反相器204、206。晶体管202和208允许存取以在第一存储节点SN1上读取或写入位数据值,这转而控制由反相器204和206输出的状态。存储部分包括晶体管222、228和第二存储节点SN2。第二存储节点SN2包括交叉耦合反相器224、226。晶体管222和228允许存取以在第二存储节点SN2上读取或写入位数据值,这转而控制由反相器224和226输出的状态。反相器206交叉耦合到反相器206使得反相器204的输出端子被连接到反相器206的输入端子,并且反相器206的输出端子被连接到反相器204的输入端子。反相器224交叉耦合到反相器226使得反相器224的输出端子被连接到反相器226的输入端子,并且反相器226的输出端子被连接到反相器224的输入端子。反相器204、206、224、226的输出端子在图1中由从反相器示意图的圆形延伸的线表示。反相器204、206、224、226的输入端子由被连接到反相器示意图的三角形的底边的线表示。反相器204的输入端子被连接到晶体管202、晶体管210、晶体管230、和反相器206的输出端子。反相器204的输出被连接到晶体管208。反相器206的输出端子被连接到晶体管202、晶体管210、晶体管230、和反相器204的输入端子。反相器206的输入端子被连接到晶体管208。反相器224的输入端子被连接到晶体管222、晶体管216、晶体管240、和反相器226的输出端子。反相器226的输出端子被连接到晶体管222、晶体管216、晶体管240、和反相器224的输入端子。反相器226的输入端子被连接到晶体管228、和反相器224的输出端子。

每个存储节点SN1、SN2由TCAM位单元200用来保持为0或1的位值。第一存储节点SN1的存储位值可以由第一比较端口或第二比较端口独立地确定。第二存储节点SN2的存储位值可以由第一比较端口或第二比较端口独立地确定。

尽管图2的前述描述描述了双重比较TCAM位单元,但是TCAM位单元可以被配置为包括其他比较电路。例如,可以通过添加四个晶体管、第三匹配线、第三搜索线和第三搜索线条来配置三重比较电路TCAM位单元。

TCAM操作

TCAM包括形成多个TCAM条目的阵列的多个TCAM位单元100、200,每个TCAM条目具有组成一个条目的多个位单元。每个TCAM位单元条目可以包含特定数目的位单元,从而允许特定数目的数据位值。例如,TCAM可以由包含144个TCAM位单元的512个堆叠的TCAM条目来形成,从而允许144位宽的搜索,该搜索将产生512个匹配行。TCAM的TCAM位单元的数目可以针对特定搜索和实现要求进行调节。

如本文中公开的示例(例如,TCAM位单元100、200)允许TCAM匹配多个搜索字符串。例如,TCAM可以包括多个TCAM位单元100、200。通常,TCAM搜索能力允许存储完整的数据/掩码,从而将很多数据条目折叠为一个条目。通常,这可以允许多个匹配项被确定。TCAM特别适用于需要大TCAM表和/或可能需要每秒分组高性能的路由器、交换机、核心路由器或数据中心路由器和交换机。此外,利用本文所述的TCAM位单元100、200,TCAM可以通过对被存储在TCAM位单元的存储节点中的相同数据执行并发双重搜索来提高其搜索效率。

TCAM可以被编程为通配符状态(“我不关心数据是什么”),并且搜索可以利用要匹配的相关比特和对匹配项不重要的比特来执行搜索。例如,32位宽的TCAM条目可以被配置为在从0到32的任何数目的比特上以任何组合进行匹配。如果有人希望某项仅在前24位上匹配,则后8位可以被配置为x(或无关)。换言之,在条目的最后部分不相关的情况中(即,“我不关心”值可以是什么),搜索x充当这些数据值的通配符。这些x允许折叠路由表内的很多条目,这减少了所需要的条目的总数,并且允许将在路由地址末尾具有多个x的很多不同路由折叠为单个条目。

例如,路由器可以具有路由表,该路由表具有形式为16点、128点、32点x的条目。这种类型的条目的行业标准符号为16.128.32.x或16.128.32.0/24。这表示,只有前24位具有“关心”位。相比之下,输入16.128.32.0/22表示,仅“关心”前22位。在点之前的每个数字表示8位值(0-255)。例如,为了存储IPV4路由表,TCAM将需要足够的位单元来为每个路由条目实例存储32位,而针对IPV6路由表,TCAM将需要足够的位单元来为每个路由条目实例存储64位。所需要的路由实例的数目将取决于特定应用所需要的总路由数。

TCAM位单元100、200包括用于存储数据的两个存储部分。图1所述的双重比较TCAM位单元100包括第一存储部分(晶体管102、108、和包括交叉耦合反相器104、106的第一存储节点SN1)和第二存储部分(晶体管122、128、和包括交叉耦合反相器124、126的第二存储节点SN2)。图2所述的双重比较TCAM位单元200包括第一存储部分(晶体管202、208、和包括交叉耦合反相器204、206的第一存储节点SN1)和第二存储部分(晶体管222、228和、包括交叉耦合反相器224、226的第二存储节点SN2)。

每个TCAM位单元100、200存储三个数据状态之一:逻辑“1”、逻辑“0”或“不关心”值,因为“不关心”值得到该比特的匹配项,而无论搜索数据的输入位的值如何。为了编码三个数据状态,每个TCAM位单元100、200被配置为存储两个比特。一个比特的值被存储在第一存储节点SN1中,并且第二比特的值被存储在第二存储节点SN2中。例如,针对逻辑值“0”,第一存储节点SN1的位值可以被设置为0,并且第二存储节点的位值可以被设置为1。针对逻辑值“1”,第一存储节点SN1的位值可以被设置为1,并且第二存储节点SN1的位值可以被设置为0。针对“不关心”值,第一存储节点SN1的位值可以被设置为0,并且第二存储节点SN2的位值可以被设置为0。当“不关心”值被存储在位单元中时,无论搜索数据如何,该比特都会发生匹配。通常未定义并且不使用为1的第一存储节点位值和为1的第二存储节点位值。

存储节点SN1、SN2保持可能正在搜索的位数据的值,即,为0的值或为1的值。TCAM位单元100、200允许向TCAM位单元100、200的存储节点SN1、SN2中写入数据或从其中读取数据。存储节点类似于SRAM被读写的方式。尽管本文中描述的存储部分是SRAM的形式,但是存储部分可以是诸如忆阻器或DRAM等其他配置。

TCAM位单元100、200使用位线和位线条来向存储节点SN1、SN2中读取和写入数据。如图1所述的双重比较TCAM位单元100包括第一位线BL1和第一位线条BLB1对、以及第二位线BL2和第二位线条BLB2对。如图2所述的双重比较TCAM位单元200包括位线BL1和位线条BLB1。图1的并行配置与图2的堆叠配置之间的差异在于电路系统如何向TCAM位单元100、200的存储节点SN1、SN2读取和写入数据。在并行配置中,TCAM位单元100可以在一个计算机处理单元(CPU)周期中在相同时间向TCAM位单元的两个存储节点SN1、SN2读取或写入。图1的并行配置将用于在相同的CPU周期中从两个存储节点中读取(或向其中写入)。在图2的堆叠配置中,TCAM位单元200花费一个CPU周期来执行对存储节点SN1、SN2之一的读取或写入,并且花费两个周期来向两个存储节点SN1、SN2读取或写入。TCAM位单元的典型实现将包括在给定的CPU周期内向两个存储节点写入或向两个存储节点读取。尽管可以向一个存储节点执行写入,而向另一存储节点执行读取,但这并不是TCAM位单元的典型实现。在一些示例中,图2的堆叠配置可以被选择使用来代替图1的并行配置,因为并行配置比堆叠配置使用更多功率进行比较操作。功率的增加归因于匹配线ML1、ML2的长度(电容)的增加。

位线和位线条用于向存储节点SN1、SN2中读取和写入。位线条是位线的反转。当向TCAM位单元100、200的数据存储节点SN1、SN2写入数据时,相应位线和位线条被驱动到相对的值,例如高电压和低电压,以将为1的位值写入到存储节点SN1、SN2。当从TCAM位单元200的存储节点SN1、SN2读取数据时,位线BL1和位线条BLB1都用高电压被预充电,并且然后位线BL1或位线条BLB1将经由晶体管202或晶体管208被放电,具体取决于被存储在交叉耦合反相器204、206中的值。

TCAM位单元100、200分别使用一个或两个字线。如图1所述的双重比较TCAM位单元100包括字线WL1。如图2所述的双重比较TCAM位单元200包括第一字线WL1和第二字线WL2。字线用于向TCAM位单元的数据存储节点SN1、SN2读取或写入。

关于图1的TCAM位单元100,为了读取第一存储节点SN1和第二存储节点SN2,生成电子信号以激活字线WL1。取决于第一存储节点SN1的存储位值,第一位线BL1或第一位线条BLB1将被拉至低电压,而另一者将保持在高电压。并且,取决于第二存储节点SN2的存储位值,第二位线BL2或第二位线条BLB2将被拉至低电压,而另一者将保持在高电压。

关于图2的TCAM位单元200,为了读取存储节点SN1,生成电子信号以激活字线WL1,并且第一位线BL1和第一位线条BLB1中的一者将被拉至低电压,而另一者将保持在高电压。类似地,为了读取存储节点SN2,生成电信号以激活第二字线WL2,并且第一位线BL1和第一位线条BLB1中的一者将被拉至低电压,而另一者将保持在高电压。

关于图1的TCAM位单元100,为了向存储节点SN1、SN2写入,第一位线BL1和位线条BLB1被驱动为相对的值,并且当生成电子信号以激活第一字线WL1时,第一位线BL1上的值将被写入存储节点SN1中;第二位线BL2和第二位线条BLB2也被驱动为相对的值,并且当生成电子信号以激活第一字线WL1时,第二位线BL2上的值将被写入存储部分SN2中。

关于图2的TCAM位单元200,为了向存储节点SN1、SN2写入,第一位线BL1和位线条BLB1被驱动为相对的值,并且当生成电子信号以激活第一字线WL1时,第一位线BL1上的值将被写入存储节点SN1。为了向存储节点SN2写入,第一位线BL1和第一位线条BLB1也被驱动为相对的值,并且当生成电子信号以激活第二字线WL2时,第一位线BL1上的值将被写入存储节点SN2。

TCAM位单元100、200可以执行两个独立的比较以确定关于被存储在第一存储节点SN1和第二存储节点SN2中的数据值的为0、1或x的值的匹配项(即,为“don_t_care”的通配符)。双重比较TCAM位单元100、200使用两个搜索线SL1、SL2和两个搜索线条SLB1、SLB2。如图1所述的双重比较TCAM位单元100包括第一搜索线SL1和第一搜索线条SLB1、以及第二搜索线SL2和第二搜索线条SLB2。如图2所述的双重比较TCAM位单元200包括第一搜索线SL1和第一搜索线条SLB1、以及第二搜索线SL2和第二搜索线条SLB2。

双重比较TCAM位单元100、200还包括两个匹配线ML1、ML2。如图1所述的双重比较TCAM位单元100包括第一匹配线ML1和第二匹配线ML2。如图2所述的双重比较TCAM位单元200包括第一匹配线ML1和第二匹配线ML2。

搜索周期可以分为预充电阶段和搜索阶段。在预充电阶段,TCAM位单元100、200的第一匹配线ML1和第二匹配线ML2都被预充电到高电压,并且搜索线SL1、SL2被驱动到地(即,到低电压)。针对搜索阶段,取决于关于被存储在第一存储节点SN1和第二存储节点SN2中的数据值来搜索0还是1,相应搜索线SL1、SLB1和搜索线条SL2、SLB2被驱动到相对的电压值(彼此相比,一个是较高电压,一个是较低电压)。例如,针对第一搜索,当搜索为0的值时的,第一搜索线SL1将被驱动到低电压,并且第一搜索线条SLB1将被驱动到高电压。并且,当搜索为1的值时,第一搜索线SL1将被驱动到高电压,并且第一搜索线条SLB1将被驱动到低电压。针对第二搜索,当搜索为0的值时,第二搜索线SL2将被驱动到低电压,并且第二搜索线条SLB2将被驱动到高电压。并且,当搜索为1的值时,第二搜索线SL2将被驱动到高电压,并且第二搜索线条SLB2将被驱动到低电压。

如果相应搜索“不关心”或不需要确定存储节点SN1、SN2的值,则搜索线和搜索线条都可以被设置为低电压。例如,如果第一搜索“不关心”被存储在第一存储节点SN1和第二存储节点SN2中的数据值,则第一搜索线SL1和第一搜索线条SLB1都可以被驱动到低电压。如果第二搜索“不关心”被存储在第一存储节点SN1和第二存储节点SN2中的数据值,则第二搜索线SL2和第二搜索线条SLB2都可以被驱动到低电压。将搜索线和对应搜索线条都被设置为低电压充当全局通配符掩码(即,“不关心”第一存储节点SN1或第二存储节点SN2中的数据值)以进行相应搜索。

为了进行双重搜索,将匹配线ML1、搜索线SL1和搜索线条SLB1一起使用,并且将匹配线ML2、搜索线SL2和搜索线条SLB2一起使用。ML1、SL1和SLB1中的每个独立于ML2、SL2和SLB2。换言之,ML1、SL1和SLB1以及ML2、SL2和SLB2中的每个可以用于针对被存储在TCAM位单元100、200的第一存储节点SN1和第二存储节点SN2中的相同数据针对两个不同搜索标准(即,搜索值0、1或x——“不关心”)执行独立搜索。为了添加其他搜索功能,可以向TCAM位单元100、200添加另外N个匹配线、搜索线和搜索线条。

搜索线SL1和SL2都可以被驱动到不同电压值,并且可以执行两个不同独立搜索。例如,第一搜索线SL1可以搜索为1的值,并且第二搜索线SL2可以搜索为2的值。两次独立搜索的结果可以基于匹配线ML1和匹配线ML2的电压值来确定。例如,两个独立搜索的每个的结果将分别在匹配线ML1和ML2上指示。如果匹配线未下拉至低电压,则针对搜索标准存在匹配项。换言之,当针对搜索标准存在匹配项时,匹配线将保留高电量。如果存在不匹配项,则相应串联晶体管将被导通并且将放电相应匹配线ML1、ML2,以指示针对所搜索的标准存在不匹配项。针对TCAM位单元100,串联晶体管130、132和串联晶体管116、118与第一匹配ML1被结合使用。串联晶体管110、112和串联晶体管136、138与第二匹配线ML2结合使用。针对TCAM位单元200,串联晶体管210、212和串联晶体管216、218与第一匹配ML1被结合使用。串联晶体管210、212和串联晶体管236、238与第二匹配线ML2被结合使用。

现在将讨论图1和图2所述的示例TCAM位单元100、200的双重搜索过程。图3示出了三态内容可寻址存储器的示例双重搜索过程300的流程图。

双重搜索过程开始310,并且TCAM位单元100、200接收第一搜索标准320和第二搜索标准330。第一搜索标准和第二搜索标准可以从另一电路、存储器寄存器或其他存储器(诸如SDRAM)提供给TCAM。搜索标准通常是为0或1的值。

TCAM位单元100、200使用第一搜索标准和第二搜索标准来执行对被存储在第一存储节点SN1、第二存储节点SN1、SN2中的数据的搜索340。该搜索通过将搜索标准与被存储在存储节点SN1、SN2中的数据值进行比较而被执行。双搜索端口TCAM允许并发搜索被存储在TCAM位单元中的数据。换言之,双端口TCAM位单元针对被存储在TCAM位单元100、200的第一存储节点SN1和第二存储节点SN2中的相同数据提供两个搜索端口(也被称为通道)。双重搜索可以在单个中央处理单元(CPU)时钟周期内执行。

TCAM位单元100、200确定第一搜索标准350的搜索输出并且确定第二搜索标准360的搜索输出。然后,该过程结束370。搜索输出可以被提供给另一电路,可以被存储在存储器寄存器中,也可以被存储在其他数据存储装置(诸如SDRAM)中。搜索输出可以是指示搜索标准的匹配项或不匹配项的数据的形式。例如,如果在TCAM中找到搜索标准,则搜索输出可以是针对“真”的为1的值,而如果未找到搜索标准,则搜索输出可以是针对“假”的为0的值。大多数TCAM将用于存在很多条目可以指示匹配项的情况。由于搜索标准,很多搜索将产生多个匹配项,其中搜索不关心TCAM位单元中的存储值,并且匹配指示符被发送到优先级编码器中以确定最高优先级匹配并且将其编码为地址。

例如,参考图2,在预充电阶段中的匹配线ML1和ML2在比较开始之前用高电压被充电。搜索线SL1和SL2被预充电到地。从某个数据寄存器接收第一搜索单词(即,第一搜索标准)和第二搜索单词(即,第二搜索标准)。搜索线驱动器将第一搜索单词和第二搜索单词编码到搜索线SL1、SL2和搜索线条SLB1、SLB2上,搜索线SL1、SL2和搜索线条SLB1、SLB2然后被充电为“1”或“0”(从预充电到接地)。双重搜索电路将第一搜索单词和第二搜索单词与被存储在TCAM位单元200中的相同数据进行比较。如果搜索单词与所存储的单词之间存在匹配项,则没有从对应匹配线到地的传导路径,并且匹配线电压仍然很高。但是,如果存在单个不匹配项,则匹配电压放电至0。单个位不匹配将拉低匹配线,并且结果是0伏输出(即,不匹配)。如果该单元中存在“不关心”条目,则该位单元将始终存在匹配项(即,匹配行不会被该位单元下拉)。

图4示出了专用集成电路(ASIC)400中的双重比较三态内容可寻址存储器的示例实现的框图。专用集成电路(ASIC)400可以包括中央处理单元410、外围电路系统420、存储器寄存器430和如本文所述的双重比较TCAM电路440。虽然示例ASIC被示出为集成电路,但是双重比较TCAM电路440可以被配置为具有或不具有附加电路系统的单独ASIC。例如,TCAM电路440可以被配置为用于在路由器表比较中使用以确定分组分发路径的交换机ASIC。

示例TCAM位单元以概念性或示意性方式在本文中描述并且在附图中示出以帮助理解。特别地,示例TCAM位单元中的物理结构在本文中被概念性地指代和/或示出为电路组件,并且根据本领域的通常实践,这些电路组件之间的关系在电路图中示出。电路组件是执行某些功能和/或具有某些属性的物理结构或器件类别的概念性表示。这样的电路组件的示例包括无源器件,诸如电阻器、电容器、忆阻器等;有源器件,诸如晶体管、二极管等;有源/无源器件的组成元素,诸如端子、电极、栅极、源极、漏极等;连接器件的元件,诸如电线、节点等;等等。

应当理解,示例TCAM位单元的实际物理化身中的单个物理结构(或一组物理结构)可以发挥多种功能和/或具有多种性质,并且因此,单个物理结构(或一组物理结构)在本文中可以被描述和/或示出为多个不同电路组件。例如,示例TCAM位单元的特定物理化身中的单片金属既可以用作晶体管的栅电极,也可以用作布线。因此,两个或更多个电路组件在本文中可以被称为或示出为不同组件的这一事实不应当被解释为表示在示例TCAM位单元的物理化身中的其对应物理结构是不同结构。

当在本文中或在所附权利要求书中提及第一组件“连接在第二组件和第三组件之间”或“被连接到第二组件和第三组件”时,这表示第一组件的两个相对端子分别被连接到第二组件并且第三组件。特别地,当在本文中或在所附权利要求书中提及晶体管“连接在”两个元件之间或“被连接到”两个元件时,这表示该晶体管的源极端子(也被称为源电极、源极区、源极等)被连接到这两个元件之一,并且晶体管的漏极端子(也被称为漏电极、漏极区域、漏极等)被连接到这两个元件中的另一元件。

为了说明的目的,前述描述使用特定术语来提供对本公开的透彻理解。然而,对于本领域的技术人员将很清楚的是,实践本文所述的系统和方法不需要具体细节。具体示例的前述描述出于说明和描述的目的而给出。它们并非旨在穷尽本公开或将本公开限制为所描述的精确形式。显然,鉴于以上教导,很多修改和变化是可能的。示例被示出和描述以最好地解释本公开的原理和实际应用,从而使得本领域其他技术人员能够最佳地利用本公开以及具有适于预期的特定用途的各种修改的各种示例。本公开的范围旨在由下面的权利要求及其等同物限定。

相关技术
  • 双重比较三态内容可寻址存储器
  • 三态内容可寻址存储器及其操作方法
技术分类

06120112919175