买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】一种实现高速缓存表的方法_安徽皖通邮电股份有限公司_201710965568.0 

申请/专利权人:安徽皖通邮电股份有限公司

申请日:2017-10-17

公开(公告)日:2020-11-27

公开(公告)号:CN107729053B

主分类号:G06F9/30(20060101)

分类号:G06F9/30(20060101);G06F9/38(20060101);G06F12/0877(20160101)

优先权:

专利状态码:有效-授权

法律状态:2020.11.27#授权;2018.03.20#实质审查的生效;2018.02.23#公开

摘要:一种实现高速缓存表的方法,提供一种低成本实现高速缓存表的方法。选取支持SIMD指令的通用处理器,包括以下步骤:步骤一:缓存表的存储,使用一个或多个SIMD寄存器用于关键字的匹配,位长根据处理器自带能力选择;使用SIMD寄存器保存结果或者使用内存数组保存结果;步骤二:缓存的查找,使用SIMD的指令来进行一对多的匹配,查出的索引提取结果返回;步骤三:缓存的添加,选取第一个无效的表项号,键值SIMD寄存器对应表项如果为无效值则认为该表项无效,修改键值SIMD寄存器对应表项保存缓存键值,并且修改结果数据中对应表项保存缓存结果。本发明的高速缓存表查找速度较快,命中时会比查直接表命中甚至还会更快,因为不访存。

主权项:1.一种实现高速缓存表的方法,其特征在于:选取支持SIMD指令的通用处理器,包括以下步骤:步骤一:缓存表的存储,使用一个或多个SIMD寄存器用于关键字的匹配,位长根据处理器自带能力选择;使用SIMD寄存器保存结果或者使用内存数组保存结果;步骤二:缓存的查找,使用SIMD的指令来进行一对多的匹配,查出的索引提取结果返回;步骤三:缓存的添加,选取第一个无效的表项号,关键字匹配的SIMD寄存器对应表项如果为无效值则认为该表项无效,修改关键字匹配的SIMD寄存器对应表项,保存缓存关键字,并且修改结果数据中对应表项保存缓存结果;所述步骤二具体为将查表关键字放入SIMD寄存器B,通过SIMD指令,将关键字复制到SIMD寄存器B的各个单元,通过SIMD寄存器B去和保存在SIMD寄存器A中的表关键字信息匹配,结果放到SIMD寄存器B,SIMD寄存器B某个单元的值如果是1表示匹配,是0表示不匹配,获取SIMD寄存器B最高位连续为0的个数,经过换算,得到匹配单元的单元号n,再用n去内存或另一个SIMD寄存器D中提取结果。

全文数据:一种实现高速缓存表的方法技术领域[0001]本发明涉及多核通用处理器查表转发技术领域,具体涉及一种实现高速缓存表的方法。背景技术[0002]一台网络通讯设备,其处理器在处理报文时,会经历多次查表过程,每次查表会从前一查表过程取得,或从报文中取得,或其他途径取得查表关键字,也可以从多种渠道组合得到查表关键字,查表关键字和被查表的每个表项的关键字部分进行匹配,匹配有相等匹配,掩码后相等匹配,以及最长匹配等,最简单的就是相等匹配,相等匹配是如果表项的关键字和查表关键字相等,则认为匹配成功,匹配成功后,该表项中保存的结果被提取出来用于处理报文。这种表其实就是SDN中的流表FLOWTABLE。表的添加,删除,查找的速度以及表的容量都是设备性能比较重要的指标。为了提高查表速度等,通常会牺牲内存,使用直接索引表,是申请一大块内存,等于最大关键字的值乘以表项大小,以关键字作为索引去访问每个表项。关键字直接就是索引,一次找到结果,查找速度快,缺点耗内存大。[0003]比直接索引表速度慢一点的耗内存相对较少的是哈希索引表。从关键字计算出一个索引,这个索引不能唯一确定到查表结果,需要遍历冲突链表,逐个匹配查找,查表速度慢,耗内存小。[0004]直接索引表和哈希索引表是两种最重要的表组织方法,还有trie表,二叉树等等其他的表组织方法,特点就是比较复杂,速度慢。[0005]对于任何表的查找速度需要提高,可以为这个原始表配套建立一个高速缓存表,查表算法改进为先根据关键字查高速缓存表,查找如果命中,过程结束。如果查找不到结果,根据关键字查原始表获得结果,如果原始表查找结果是查找命中,结果和关键字根据某种原则过滤后放入高速缓存。[0006]表项需要变动时,导致缓存失效,需要清除缓存相关表项或清除整个表项。[0007]上述是构建高速缓存表的通用方法。[0008]高速缓存表的操作包括查找,添加,指定删除或全删除。[0009]高速缓存表常需要在通用cpu外增加额外硬件例如TCAM来实现,成本较高,但效果比较好。发明内容[0010]本发明提出的一种实现高速缓存表的方法,提供一种低成本实现高速缓存表的方法。[0011]为实现上述目的,本发明采用了以下技术方案:[0012]一种实现高速缓存表的方法,硬件需要选取支持SIMD指令的通用处理器,包括以下步骤:[0013]1使用一个或多个SIMD寄存器用于关键字的匹配,使用一个或多个SIMD寄存器或内存保存缓存条目的结果;[0014]使用SIMD指令操作SIMD寄存器,以及配合使用内存来实现缓存查找,缓存添加,缓存指定删除,缓存全删除。[0015]支持关键字大小包括,1字节,2字节,4字节,S字节等,即通用CPU携带的SIMD寄存器支持的单元大小,如果是128位SIMD寄存器这样对应每个寄存器支持的单元数量为16,8,4,2。[0016]2高速缓存的查找,将查表关键字放入SIMD寄存器B,通过SIMD指令,将关键字复制到SIMD寄存器B的各个单元。通过SIMD寄存器B去和保存在SIMD寄存器A中的表关键字信息匹配结果放到SIMD寄存器B,SIMD寄存器B某个单元的值如果是1表示匹配,是0表示不匹配,获取SIMD寄存器B最高位连续为0的个数这是可使用方式之一,也可其他方式),经过换算,得到匹配单元的单元号n。再用n去内存或另一个SIMD寄存器D中提取结果。[0017]3高速缓存添加,使用上述高速缓存查找方法查找SIMD寄存器A中无效单元n,将待添加关键字替换该单元中无效值,结果写入n相应于内存或另一个SIMD寄存器D相应单yL〇[0018]4高速缓存指定删除,对于需要删除的单元n,修改SIMD寄存器A中对应单元值为无效值。[0019]5高速缓存全删除,SIMD寄存器A所有单元设置为无效值。[0020]由上可知,本发明的一种实现高速缓存表的方法,有益效果如下:[0021]本发明的高速缓存表查找速度较快,命中时会比查直接表命中甚至还会更快,因为不访存;各个核的缓存相独立,在流分发时,缓存容量相当于各个核的缓存容量叠加;不命中时代价低,查找的时间就是代价,查找速度快,不命中代价低;添加时速度快,键值SIMD寄存器某个表项如果为无效值那么,添加到该表项,查找无效值表项使用SIMD—对多的匹配非常快,存缓存键值也就非常快,因为不访存,如果S頂D寄存器保存结果,速度非常快,保存到内存会稍慢一点;最好的情况下查表均能命中高速缓存表,性能大幅度提升。附图说明[0022]图1是本发明的高速缓存的查找示意图;[0023]图2是一个ipv4路由表的高速缓存表;[0024]图3是一个ipv4路由表支持地址+掩码的高速缓存表的实现高速缓存表;[0025]图4是一个ipv4路由表支持地址+vpnid的高速缓存表的实现高速缓存表。具体实施方式[0026]下面结合附图对本发明做进一步说明:[0027]如图2所示:是一个ipv4路由表的高速缓存表实现,ipv4路由表后通称为原始表)的关键字是目的IP地址,原始表的查表结果是一个索引值,该表查找方式为目的地址的相等匹配。该表中有等多个条目,高速缓存表占用两个NEONSIMD寄存器,一个寄存器A,用于保存关键字,另一个寄存器D保存查表结果,该缓存表已经添加了一条有效的条目11.1•1•1,查表结果是123,其他3个条目为无效。查找时如图1所示,先复制查找关键字目的地址11到SIMDregisterB各个单元,如图1所示registerB中得到复制后结果,接下来匹配操作,用SIMD指令进行匹配B=B===A,如图1所示registerB中得到匹配后结果,registerB中有效项是第一个条目,然后从D提取结果123到寄存器B中。[0028]如图3所示:是一个ipV4路由表支持地址+掩码的高速缓存表的实现,由于匹配使用了掩码,高速缓存可以支持更多的流,但因为路由表是最长匹配,只有叶子路由才能放入该缓存。原始表的关键字是目的IP地址和掩码,原始表的查表结果是一个索引值,该表查找方式为目的地址和掩码算术与操作后的的相等匹配。该表中有10.1.1.024,11.0.0.08,192_8.1.132等多个条目,高速缓存表占用三个NEONSHTO寄存器,其中寄存器A,用于保存目的地址关键字,寄存器C保存掩码关键字寄存器,寄存器D保存查表结果,该缓存表已经添加了三条有效的条目,有1个条目为无效。查找也是经过复制,匹配,取结果的过程,所不同的是,snro指令进行匹配算法换为B=BC==A,如果是11•1•1•2的目的地址来查找这张表,匹配后结果会是B{0,1,0,0},然后从寄存器D中提取到单元2的数值:123。如果是192.8.1.1的目的地址来查找这张表,匹配后结果会是B{0,0,1,0},然后从寄存器D中提取到单元3的数值:1026。[0029]如图4所示:是一个ipV4路由表支持地址+vpnid的高速缓存表的实现。原始表的关键字是目的IP地址和vpnid,原始表的查表结果是一个索引值,该表查找方式为目的地址和vpnid同表项中条目同时相等的匹配。该表中有10.l.l.KD^0.1.^2u.lLi⑴,192•8•1•114个条目,高速缓存表占用2个NEONSMD寄存器,其中寄存器A,用于保存目的地址关键字,寄存器D同时保存查表结果和vpnid关键字,(各占16bits,该缓存表已经添加了4条有效的条目。查找时,复制,匹配,取结果的过程都有,查表的输入数据这里使用了aC两个寄存器进行,复制过程如图4右下表所示。匹配过程中,SIMD指令进行匹配算法为B=B==ADOxff==C,如果是10_1.1.2⑴的目的地址来查找这张表,匹配后结果会是B{1,0,0,0},然后从寄存器D中提取到单元2的数值:128、1各占16bit,右移16bit得到结果128。如果是10.1•1.22的目的地址来查找这张表,匹配后结果会是B{〇,1,〇,〇},然后从寄存器0中提取到单元2的数值:1028、1各占16^1:,右移161^1:得到结果1028。[0030]_以上所述的实施例仅仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案作出的各种变形和改进,均应落入本发明的保护范围内。

权利要求:i.一种实现高速缓存表的方法,其特征在于:选取支持SIMD指令的通用处理器,包括以下步骤:步骤一:缓存表的存储,使用一个或多个SIMD寄存器用于关键字的匹配,位长根据处理器自带能力选择;使用SIMD寄存器保存结果或者使用内存数组保存结果;步骤二:缓存的查找,使用SIMD的指令来进行一对多的匹配,查出的索引提取结果返回;步骤三:缓存的添加,选取第一个无效的表项号,键值SIMD寄存器对应表项如果为无效值则认为该表项无效,修改键值SIMD寄存器对应表项保存缓存键值,并且修改结果数据中对应表项保存缓存结果。2.如权利要求1所述的一种实现高速缓存表的方法,其特征在于:还包括步骤五:缓存的删除指定项,修改键值SIMD寄存器对应表项为无效值,结果数据可不清除。3.如权利要求1或2所述的一种实现高速缓存表的方法,其特征在于:还包括步骤六:缓存的清空,修改键值SIMD寄存器为全无效。4.如权利要求1-3任意一项所述的一种实现高速缓存表的方法,其特征在于:所述步骤一支持关键字大小包括,1字节,2字节,4字节,8字节等,即通用CPU携带的SMD寄存器支持的单元大小,如果是128位SIMD寄存器这样对应每个寄存器支持的单元数量为16,8,4,2。5.如权利要求4所述的一种实现高速缓存表的方法,其特征在于:所述步骤二具体为将查表关键字放入SIMD寄存器B,通过SIMD指令,将关键字复制到SIMD寄存器B的各个单元,通过SIMD寄存器B去和保存在SIMD寄存器A中的表关键字信息匹配结果放到SIMD寄存器B,SIMD寄存器B某个单元的值如果是1表示匹配,是0表示不匹配,获取SIMD寄存器B最高位连续为〇的个数,经过换算,得到匹配单元的单元号n,再用n去内存或另一个SIMD寄存器D中提取结果。6.如权利要求5所述的一种实现高速缓存表的方法,其特征在于:所述步骤三中具体还包括步骤二中查找SMD寄存器A中无效单元n,将待添加关键字替换该单元中无效值,结果写入n相应于内存或另一个S頂D寄存器D相应单元。7.如权利要求5或6所述的一种实现高速缓存表的方法,其特征在于:所述步骤五具体为对于需要删除的单元n,修改SMD寄存器A中对应单元值为无效值。8.如权利要求7所述的一种实现高速缓存表的方法,其特征在于:所述步骤六具体为S頂D寄存器A所有单元设置为无效值。

百度查询: 安徽皖通邮电股份有限公司 一种实现高速缓存表的方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。