[发明专利]一种实现高速缓存表的方法有效
申请号: | 201710965568.0 | 申请日: | 2017-10-17 |
公开(公告)号: | CN107729053B | 公开(公告)日: | 2020-11-27 |
发明(设计)人: | 沈晓峰 | 申请(专利权)人: | 安徽皖通邮电股份有限公司 |
主分类号: | G06F9/30 | 分类号: | G06F9/30;G06F9/38;G06F12/0877 |
代理公司: | 北京科亿知识产权代理事务所(普通合伙) 11350 | 代理人: | 汤东凤 |
地址: | 230000 *** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 高速缓存 方法 | ||
一种实现高速缓存表的方法,提供一种低成本实现高速缓存表的方法。选取支持SIMD指令的通用处理器,包括以下步骤:步骤一:缓存表的存储,使用一个或多个SIMD寄存器用于关键字的匹配,位长根据处理器自带能力选择;使用SIMD寄存器保存结果或者使用内存数组保存结果;步骤二:缓存的查找,使用SIMD的指令来进行一对多的匹配,查出的索引提取结果返回;步骤三:缓存的添加,选取第一个无效的表项号,键值SIMD寄存器对应表项如果为无效值则认为该表项无效,修改键值SIMD寄存器对应表项保存缓存键值,并且修改结果数据中对应表项保存缓存结果。本发明的高速缓存表查找速度较快,命中时会比查直接表命中甚至还会更快,因为不访存。
技术领域
本发明涉及多核通用处理器查表转发技术领域,具体涉及一种实现高速缓存表的方法。
背景技术
一台网络通讯设备,其处理器在处理报文时,会经历多次查表过程,每次查表会从前一查表过程取得,或从报文中取得,或其他途径取得查表关键字,也可以从多种渠道组合得到查表关键字,查表关键字和被查表的每个表项的关键字部分进行匹配,匹配有相等匹配,掩码后相等匹配,以及最长匹配等,最简单的就是相等匹配,相等匹配是如果表项的关键字和查表关键字相等,则认为匹配成功,匹配成功后,该表项中保存的结果被提取出来用于处理报文。这种表其实就是SDN中的流表(FLOW TABLE)。表的添加,删除,查找的速度以及表的容量都是设备性能比较重要的指标。为了提高查表速度等,通常会牺牲内存,使用直接索引表,是申请一大块内存,等于最大关键字的值乘以表项大小,以关键字作为索引去访问每个表项。关键字直接就是索引,一次找到结果,查找速度快,缺点耗内存大。
比直接索引表速度慢一点的耗内存相对较少的是哈希索引表。从关键字计算出一个索引,这个索引不能唯一确定到查表结果,需要遍历冲突链表,逐个匹配查找,查表速度慢,耗内存小。
直接索引表和哈希索引表是两种最重要的表组织方法,还有trie表,二叉树等等其他的表组织方法,特点就是比较复杂,速度慢。
对于任何表的查找速度需要提高,可以为这个原始表配套建立一个高速缓存表,查表算法改进为先根据关键字查高速缓存表,查找如果命中,过程结束。如果查找不到结果,根据关键字查原始表获得结果,如果原始表查找结果是查找命中,结果和关键字根据某种原则过滤后放入高速缓存。
表项需要变动时,导致缓存失效,需要清除缓存相关表项或清除整个表项。
上述是构建高速缓存表的通用方法。
高速缓存表的操作包括查找,添加,指定删除或全删除。
高速缓存表常需要在通用cpu外增加额外硬件例如TCAM来实现,成本较高,但效果比较好。
发明内容
本发明提出的一种实现高速缓存表的方法,提供一种低成本实现高速缓存表的方法。
为实现上述目的,本发明采用了以下技术方案:
一种实现高速缓存表的方法,硬件需要选取支持SIMD指令的通用处理器,包括以下步骤:
1)使用一个或多个SIMD寄存器用于关键字的匹配, 使用一个或多个SIMD寄存器或内存保存缓存条目的结果;
使用SIMD指令操作SIMD寄存器,以及配合使用内存来实现缓存查找,缓存添加,缓存指定删除,缓存全删除。
支持关键字大小包括,1字节,2字节,4字节,8字节等,即通用CPU携带的SIMD寄存器支持的单元大小,如果是128位SIMD寄存器这样对应每个寄存器支持的单元数量为16,8,4,2。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于安徽皖通邮电股份有限公司,未经安徽皖通邮电股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710965568.0/2.html,转载请声明来源钻瓜专利网。