三态内容寻址存储器(tcam)查询方法和装置制造方法

文档序号:7979665阅读:217来源:国知局
三态内容寻址存储器(tcam)查询方法和装置制造方法
【专利摘要】本发明涉及一种三态内容寻址存储器(TCAM)查询方法和装置,该方法包括:配置TCAM表项,TCAM表项包括表项关键字和N位的索引,其中索引包括高n1位和低n2位;生成组合关键字,组合关键字包括根据需查找信息生成的第一关键字和n1位的第二关键字;根据组合关键字匹配TCAM表项,得到匹配的索引的低n2位,其中组合关键字中的第一关键字与TCAM表项中的表项关键字匹配,第二关键字与TCAM表项中的索引的高n1位匹配;将匹配的索引低n2位以及与匹配的索引低n2位对应的索引高n1位一起作为查表结果输出。本发明方法和装置可以减少资源消耗。
【专利说明】三态内容寻址存储器(TCAM)查询方法和装置
【技术领域】
[0001]本发明涉及数据查表【技术领域】,具体涉及一种三态内容寻址存储器(TCAM)查询方法和装置。
【背景技术】
[0002]在现代通信设备中,正迅速朝数据业务发展,而查表是其实现的一项重要技术,其中 TCAM (Ternary Content Addressable Memory,三态内容寻址存储器)/CAM (ContentAddressable Memory,内容寻址存储器)查表是大多设计者一种通用的选择。
[0003]当前,通用设计通常采用专用的集成芯片作为TCAM/CAM表,然而其昂贵的价格以及欠缺的灵活性大大影响了它的应用,尤其在需要多个低容量TCAM/CAM的场景下,充分暴露了它的缺点。
[0004]现有的技术采用需查找关键字进行直接匹配的方式实现,虽然查表的时间只需要很短的几个时钟周期内,但消耗太多ram资源。

【发明内容】

[0005]本发明要解决的技术问题是提供一种三态内容寻址存储器(TCAM)查询方法和装置,以解决消耗资源较多的问题。
[0006]为解决上述技术问题,本发明提供了一种三态内容寻址存储器(TCAM)查询方法,该方法包括:
[0007]配置步骤,配置TCAM表项,所述TCAM表项包括表项关键字和N位的索引,其中所述索引包括高nl位和低n2位,其中N = nl+n2 ;
[0008]组合关键字生成步骤,生成组合关键字,所述组合关键字包括根据需查找信息生成的第一关键字和nl位的第二关键字;
[0009]表项匹配步骤,根据所述组合关键字匹配TCAM表项,得到匹配的索引的低n2位,其中所述组合关键字中的第一关键字与所述TCAM表项中的表项关键字匹配,所述第二关键字与所述TCAM表项中的索引的高nl位匹配;
[0010]结果输出步骤,将所述匹配的索引低n2位以及与所述匹配的索引低n2位对应的索引高nl位一起作为查表结果输出。
[0011]进一步地,所述组合关键字生成步骤中生成M个组合关键字,所述表项匹配步骤依次根据该M个组合关键字进行匹配;或,所述组合关键字生成步骤中生成一个组合关键字,所述表项匹配步骤根据该组合关键字进行匹配,若匹配不成功则返回所述组合关键字生成步骤生成下一组合关键字,直至匹配成功后执行所述结果输出步骤。
[0012]所述nl位第二关键字是采用遍历方式生成,包括但不限于按序递加或递减生成。
[0013]优选地,所述TCAM表项中的索引低n2位采用独热(one-hot)码表示,所述表项匹配步骤中,匹配成功后,将所述独热码表示的索引低位转换为索引低n2位。
[0014]为解决上述技术问题,本发明还提供了一种三态内容寻址存储器(TCAM)查询装置,该装置包括:
[0015]管理模块,用于配置TCAM表项,所述TCAM表项包括表项关键字和N位的索引,其中所述索引包括高nl位和低n2位,其中N = nl+n2 ;
[0016]组合关键字生成模块,用于生成组合关键字,所述组合关键字包括根据报文中需查找信息生成的第一关键字和nl位第二关键字;
[0017]表项匹配模块,用于根据所述组合关键字匹配TCAM表项,得到匹配的索引的低n2位,其中所述组合关键字中的第一关键字与所述TCAM表项中的表项关键字匹配,所述第二关键字与所述TCAM表项中的索引的高nl位匹配;
[0018]结果输出模块,用于将所述匹配的索引低n2位以及与所述匹配的索引低n2位对应的索引高nl位一起作为查表结果输出。
[0019]本发明查询方法和装置通过生成用于匹配索引高位的第二关键字,并进一步生成组合关键字,针对组合关键字进行查表处理的方式,节省ram资源,特别在查表时间要求不高的场景下,该装置的优点得到了充分的体现。
【专利附图】

【附图说明】
[0020]图1为本发明三态内容寻址存储器(TCAM)查询方法的示意图;
[0021]图2为本发明三态内容寻址存储器(TCAM)查询装置的模块结构示意图;
[0022]图3为本发明装置的应用实例的电路图。
【具体实施方式】
[0023]如图1所示,本发明三态内容寻址存储器(TCAM)查询方法包括:
[0024]步骤101:配置步骤,配置TCAM表项,所述TCAM表项包括表项关键字和N位的索弓I,其中所述索引包括高nl位和低n2位,其中N = nl+n2 ;
[0025]所述TCAM表项中的表项关键字是配置关键字经配置掩码处理后得到的。
[0026]步骤102:组合关键字生成步骤,生成组合关键字,所述组合关键字包括根据报文中需查找信息生成的第一关键字和nl位第二关键字(也称为索引高位关键字);
[0027]步骤103:表项匹配步骤,根据生成的组合关键字匹配TCAM表项,得到匹配的索引低n2位;
[0028]具体匹配时,组合关键字中的第一关键字与所述TCAM表项中的表项关键字匹配,组合关键字中的第二关键字与所述TCAM表项中的索引的高nl位匹配。
[0029]步骤104:结果输出步骤,将所述匹配的索引低n2位以及与所述匹配的索引低n2位对应的索引高nl位一起作为查表结果输出。
[0030]所述TCAM表项中的索引低n2位采用独热(one-hot)码表示,所述表项匹配步骤中,匹配成功后,将所述独热码表示的索引低位转换为索引低n2位。
[0031]若步骤103中,匹配不成功,则不输出上述查表结果,可根据系统设置输出“查表失败”的提示或反馈。
[0032]具体实现流程可以采用以下两种:
[0033]流程一:
[0034]所述组合关键字生成步骤中生成M个组合关键字,所述表项匹配步骤依次根据该M个组合关键字进行匹配。
[0035]优选地,所述nl位第二关键字采用遍历方式生成,包括但不限于按序递加或递减生成。
[0036]具体地,当索引采用二进制表示时,M = 2nl ;当索引采用十进制,则M = IOnl0
[0037]采用以上流程一实现本发明方法,则在配置出现错误时,可能同一个第一关键字可匹配到两个或多个查表结果,则可利用该流程发现配置是否有误。
[0038]流程二:
[0039]所述组合关键字生成步骤中生成一个组合关键字,所述表项匹配步骤根据该组合关键字进行匹配,若匹配不成功则返回所述组合关键字生成步骤生成下一组合关键字,直至匹配成功后执行所述结果输出步骤。
[0040]若采用以上流程二,则针对某一报文关键词的匹配次数的最大值为上文涉及的M值,可一定程度上减少查找匹配次数,提高查找效率。本发明方法以牺牲查表时间为代价,在查表时间符合设计要求的情况下,可以最大程度地节约FPGA资源,保证TCAM的实现。
[0041]本发明方法可采用FPGA(Field Programmable Gate Array,现场可编程门阵列)实现TCAM (CAM为TCAM的子集),充分利用了 FPGA的特点来实现TCAM查表技术,特别在需要最大节约资源实现TCAM情况下,本发明方案充分体现其节约资源的特点且能够同时满足TCAM的设计要求。
[0042]为了实现上述方法,本发明还提供了一种三态内容寻址存储器(TCAM)查询装置,如图2所示,该装置包括管理模块、组合关键字生成模块、表项匹配模块、结果输出模块。其中:
[0043]TCAM管理模块,用于管理TCAM表项,包括配置、修改、删除TCAM表项等,所述TCAM表项包括表项关键字和N位的索引,其中所述索引包括高nl位和低n2位,其中N = nl+n2 ;
[0044]具体地,可以对整个TCAM清零,配置关键字、掩码以及相应的索引,根据关键字和掩码查询相应的索引,动态删除关键字对应的索引,通常采用CPU (Central ProcessingUnit,中央处理器)接口实现,可以灵活配置、查询、删除、修改。
[0045]以二进制实现方式、端口 O实现TCAM表项管理为例,初始化时,通过清零操作把表项进行清零:端口 O数据为全0,端口 O地址从全O到全I至少轮询一遍,往端口 O —直写入。信息配置时,根据应用环境需要进行关键字、掩码、索引等信息的配置,经掩码处理后的配置关键字(即表项关键字)组合配置索引高位作为端口 O地址,依此地址从端口 O读取出one-hot码,结合配置索引低位转换的one-hot码,作为端口 O数据,往端口 O写入。
[0046]应用过程中,难免需要实时动态地删除和修改配置信息,其删除过程类同于配置过程,只是端口 O数据处理不同。而修改过程相当于先删除过程后配置过程。注意的是在配置过程和删除过程中,得先通过端口 O进行配置信息读取,以免重复。
[0047]可理解地,前述所述的配置关键字经掩码处理后,即可配置得到TCAM表项中的表项关键字。
[0048]组合关键字生成模块,用于生成组合关键字,所述组合关键字包括根据需查找信息生成的第一关键字和nl位第二关键字。
[0049]具体地,第一关键字是根据需查找信息确定的查表关键字和查表掩码生成的,即是由查表掩码处理后的查表关键字。[0050]依上所述,采用遍历方法产生索引高位关键字,如简单的查询方法:查表启动时亥|J,索引高位关键字置零,并伴随着查表时钟,索引高位关键字累加,直到索引高位关键字的值为全I,则停止累加。
[0051]表项匹配模块,用于根据所述组合关键字匹配TCAM表项,得到匹配的索引的低n2位,其中所述组合关键字中的第一关键字与所述TCAM表项中的表项关键字匹配,所述第二关键字与所述TCAM表项中的索引的高nl位匹配。
[0052]具体地,所述TCAM表项中的索引低n2位采用独热(one-hot)码表示,所述表项匹配模块匹配成功后,将所述独热码表示的索引低位转换为索引低n2位输出。
[0053]采用one-hot码的另一个作用是,每个one-hot码对应不同的端口地址,相当于具有标识索引表项的作用,可使得系统不会重复对某索引表项进行匹配。可理解地,可采用其他方式实现索引表项的标识作用,本发明对此不做限定。
[0054]优选地,这里采用了 one-hot码这种特定的编码方式,此编码方式具有只有一位为1,其他为O的特点;若例化后各个输出的32位one-hot码进行按位与操作,结果还是one-hot码,表示匹配成功。
[0055]具体实现时,需要结合设计要求的最大查表时间,查表关键字位宽和索引深度综合考虑来例化表项匹配模块个数,这可以通过配置参数化来实现。
[0056]结果输出模块,用于将所述匹配的索引低n2位以及与所述匹配的索引低n2位对应的索引高nl位一起作为查表结果输出。
[0057]具体的,查表结果输出过程则只需把组合关键字(即经查表掩码处理后的查表关键字组合第二关键字)作为端口 I地址,固定的时钟拍数后,查表结果从端口 I数据输出。
[0058]把例化后各个表项匹配模块查表结果输出的one-hot码进行按位与操作,并把它转化成二进制码,作为查表输出索引低位;而对应的索引高位用查表时钟延迟后,作为查表输出索引高位。
[0059]应用实例:
[0060]下面结合图3,对该发明在CAM查表的实施作进一步详细描述。案例设计0AM(Operation Administration And Maintenance,操作、管理、维护)的性能管理,米用了CAM查表技术用于各层次关键字查表。
[0061]依据各层次OAM提取的关键字进行CAM查表,查得索引从配置表读取配置,对各层次OAM类型进行性能统计。下面依据通路层44位OAM关键字(包括2层12位VLAN (VirtualLocal Area Network,虚拟局域网)值+20位标签值),索引8位的查表过程对发明进行详细说明,该查表过程要求在20个时钟周期以内完成。
[0062]以采用上文中的流程一的方式为例,该实例TCAM表相应索引设计为8位,需查表耗费11个时钟周期,其中生成3位索引高位关键字的遍历过程需要8个时钟周期,索引输出的处理需要3个时钟周期,查表耗费的时钟周期数小于要求的20个时钟周期,符合该实例设计要求,所以除去查表得出的5位索引低位(FPGA内部双端口 RAM具有32位数据端口的结构,结合one-hot码的特性,可以使用5位的二进制码),剩下的3位第二关键字采用轮询方法产生:启动查表时,与索引高3位对应的3位第二关键字置零,伴随着查表时钟,索引高位关键字(即第二关键字)累加,直到其值为7 (此时,二进制标识为111),则停止累加。
[0063]该实例要采用44位关键字,8位索引的CAM,由Altera公司芯片9K位的Ram来实现,每个Ram可以做到5位查表关键字查询,则8 < 44/5 < 9,故需要例化9个Ram来实现TCAM表项管理和表项匹配功能。
[0064]配置表项中的索引包含了 3位索引高位和5位索引低位;配置掩码根据实际需求对配置关键字进行相应的掩码;配置关键字是需配置关键信息或其中的一部分;清除使能有效时表示对整个双端口 ram进行清零,也就是往端口每个地址写入数据零;信号I分别使得双端口 ram的端口 O和端口 I有效,整个双端口 ram能够正常工作;端口 O时钟就是双端口 ram中端口 O的工作时钟;端口 I时钟就是双端口 ram中端口 I的工作时钟;信号O禁止双端口 ram中端口 I进行写入;查表关键字是需查找信息或其中的一部分;查表掩码根据实际情况对需查表信息进行相应的掩码;第二关键字为查表时遍历产生的用于匹配索引高位的关键字部分。
[0065]首先通过CPU接口对整个TCAM表清零初始化,端口 O数据为全0,端口 O地址从O到255至少轮询一遍,并往端口 O —直写入。结束后依据现场应用需要对TCAM表的TCAM表项进行配置,由于该实例使用的是CAM表,属于TCAM表的一种特殊情况,掩码配置为全O,配置关键字以及相应的索引,还可以依据实际情况对TCAM表的TCAM表项灵活查询、删除和修改。
[0066]配置时,配置关键字同配置掩码生成配置的表项关键字,结合配置索引高位作为双端口 ram的端口 O地址;依此地址从端口 O读取出32位one-hot码,把配置索引的低5位转换成32位one-hot码,二者异或后作为端口 O数据,往端口 O写入。此时配置写使能有效作为双端口 ram的端口 O写入使能。
[0067]以上配置操作可使得保留之前双端口 ram配置的信息的基础上增加新的配置。
[0068]删除时,配置的关键字组合索引高位作为端口 O地址,并从端口 O读取出32位one-hot码,把配置索引的低5位转换成32位one-hot码取反,二者同或后作为端口 O数据,往端口 O写入。
[0069]以上删除操作可删除某条之前双端口 ram配置的信息。
[0070]查表时,查表关键字同查表掩码生成查表的第一关键字,结合遍历生成的3位第二关键字形成组合关键字作为双端口 ram的端口 I地址,使得第一关键字与TCAM表项的表项关键字匹配,第二关键字与TCAM表项的索引高位匹配。固定的时钟拍数(这个是双端口ram的特性,可以I或2个时钟拍数,这里应该确定为2个时钟拍数)后,相应索引低位从端口 I数据输出。
[0071]该实例中9个Ram表输出的32位one-hot码进行按位与操作,并把它转化成二进制码,作为查表输出索引低5位;而第二部分中TCAM索引产生的高位用查表时钟延迟后,结合查表成功,作为查表输出索引高位。
[0072]本发明查询方法和装置通过生成用于匹配索引高位的第二关键字,并进一步生成组合关键字,针对组合关键字进行查表处理的方式,节省ram资源,特别在查表时间要求不高的场景下,该装置的优点得到了充分的体现。
【权利要求】
1.一种三态内容寻址存储器(TCAM)查询方法,其特征在于,该方法包括: 配置步骤,配置TCAM表项,所述TCAM表项包括表项关键字和N位的索引,其中所述索引包括高nl位和低n2位,其中N = nl+n2 ; 组合关键字生成步骤,生成组合关键字,所述组合关键字包括根据需查找信息生成的第一关键字和nl位的第二关键字; 表项匹配步骤,根据所述组合关键字匹配TCAM表项,得到匹配的索引的低n2位,其中所述组合关键字中的第一关键字与所述TCAM表项中的表项关键字匹配,所述第二关键字与所述TCAM表项中的索引的高nl位匹配; 结果输出步骤,将所述匹配的索引低n2位以及与所述匹配的索引低n2位对应的索引高nl位一起作为查表结果输出。
2.如权利要求1所述的方法,其特征在于:所述组合关键字生成步骤中生成M个组合关键字,所述表项匹配步骤依次根据该M个组合关键字进行匹配。
3.如权利要求1所述的方法,其特征在于:所述组合关键字生成步骤中生成一个组合关键字,所述表项匹配步骤根据该组合关键字进行匹配,若匹配不成功则返回所述组合关键字生成步骤生成下一组合关键字,直至匹配成功后执行所述结果输出步骤。
4.如权利要求1至3中任一项所述的方法,其特征在于:所述nl位第二关键字采用遍历方式生成。
5.如权利要求1至3中任一项所述的方法,其特征在于:所述TCAM表项中的索引低n2位采用独热(one-hot)码表示,所述表项匹配步骤中,匹配成功后,将所述独热码表示的索引低位转换为索引低n2位。
6.一种三态内容寻址存储器(TCAM)查询装置,其特征在于,该装置包括: 管理模块,用于配置TCAM表项,所述TCAM表项包括表项关键字和N位的索引,其中所述索引包括高nl位和低n2位,其中N = nl+n2 ; 组合关键字生成模块,用于生成组合关键字,所述组合关键字包括根据报文中需查找信息生成的第一关键字和nl位第二关键字; 表项匹配模块,用于根据所述组合关键字匹配TCAM表项,得到匹配的索引的低n2位,其中所述组合关键字中的第一关键字与所述TCAM表项中的表项关键字匹配,所述第二关键字与所述TCAM表项中的索引的高nl位匹配; 结果输出模块,用于将所述匹配的索引低n2位以及与所述匹配的索引低n2位对应的索引高nl位一起作为查表结果输出。
7.如权利要求6所述的装置,其特征在于:所述组合关键字生成模块中生成M个组合关键字,所述表项匹配模块依次根据该M个组合关键字进行匹配。
8.如权利要求6所述的装置,其特征在于:所述组合关键字生成模块生成组合关键字后,所述表项匹配模块根据该组合关键字进行匹配,若匹配不成功,所述组合关键字生成模块生成下一组合关键字,直至匹配成功后,所述结果输出模块输出所述查表结果。
9.如权利要求6所述的装置,其特征在于:所述nl位第二关键字是采用遍历方式生成。
10.如权利要求6至9中任一项所述的装置,其特征在于:所述TCAM表项中的索引低π2位采用独热(one-hot)码表示,所述表项匹配模块匹配成功后,将所述独热码表示的索引低位转换为索引低n2位 输出。
【文档编号】H04L12/741GK103475584SQ201210186655
【公开日】2013年12月25日 申请日期:2012年6月7日 优先权日:2012年6月7日
【发明者】彭海远 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1