CN107729053B - 一种实现高速缓存表的方法 - Google Patents

一种实现高速缓存表的方法 Download PDF

Info

Publication number
CN107729053B
CN107729053B CN201710965568.0A CN201710965568A CN107729053B CN 107729053 B CN107729053 B CN 107729053B CN 201710965568 A CN201710965568 A CN 201710965568A CN 107729053 B CN107729053 B CN 107729053B
Authority
CN
China
Prior art keywords
cache
simd register
simd
result
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710965568.0A
Other languages
English (en)
Other versions
CN107729053A (zh
Inventor
沈晓峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Anhui Wantong Post And Telecommunications Co ltd
Original Assignee
Anhui Wantong Post And Telecommunications Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Anhui Wantong Post And Telecommunications Co ltd filed Critical Anhui Wantong Post And Telecommunications Co ltd
Priority to CN201710965568.0A priority Critical patent/CN107729053B/zh
Publication of CN107729053A publication Critical patent/CN107729053A/zh
Application granted granted Critical
Publication of CN107729053B publication Critical patent/CN107729053B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

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

Description

一种实现高速缓存表的方法
技术领域
本发明涉及多核通用处理器查表转发技术领域,具体涉及一种实现高速缓存表的方法。
背景技术
一台网络通讯设备,其处理器在处理报文时,会经历多次查表过程,每次查表会从前一查表过程取得,或从报文中取得,或其他途径取得查表关键字,也可以从多种渠道组合得到查表关键字,查表关键字和被查表的每个表项的关键字部分进行匹配,匹配有相等匹配,掩码后相等匹配,以及最长匹配等,最简单的就是相等匹配,相等匹配是如果表项的关键字和查表关键字相等,则认为匹配成功,匹配成功后,该表项中保存的结果被提取出来用于处理报文。这种表其实就是SDN中的流表(FLOW TABLE)。表的添加,删除,查找的速度以及表的容量都是设备性能比较重要的指标。为了提高查表速度等,通常会牺牲内存,使用直接索引表,是申请一大块内存,等于最大关键字的值乘以表项大小,以关键字作为索引去访问每个表项。关键字直接就是索引,一次找到结果,查找速度快,缺点耗内存大。
比直接索引表速度慢一点的耗内存相对较少的是哈希索引表。从关键字计算出一个索引,这个索引不能唯一确定到查表结果,需要遍历冲突链表,逐个匹配查找,查表速度慢,耗内存小。
直接索引表和哈希索引表是两种最重要的表组织方法,还有trie表,二叉树等等其他的表组织方法,特点就是比较复杂,速度慢。
对于任何表的查找速度需要提高,可以为这个原始表配套建立一个高速缓存表,查表算法改进为先根据关键字查高速缓存表,查找如果命中,过程结束。如果查找不到结果,根据关键字查原始表获得结果,如果原始表查找结果是查找命中,结果和关键字根据某种原则过滤后放入高速缓存。
表项需要变动时,导致缓存失效,需要清除缓存相关表项或清除整个表项。
上述是构建高速缓存表的通用方法。
高速缓存表的操作包括查找,添加,指定删除或全删除。
高速缓存表常需要在通用cpu外增加额外硬件例如TCAM来实现,成本较高,但效果比较好。
发明内容
本发明提出的一种实现高速缓存表的方法,提供一种低成本实现高速缓存表的方法。
为实现上述目的,本发明采用了以下技术方案:
一种实现高速缓存表的方法,硬件需要选取支持SIMD指令的通用处理器,包括以下步骤:
1)使用一个或多个SIMD寄存器用于关键字的匹配, 使用一个或多个SIMD寄存器或内存保存缓存条目的结果;
使用SIMD指令操作SIMD寄存器,以及配合使用内存来实现缓存查找,缓存添加,缓存指定删除,缓存全删除。
支持关键字大小包括,1字节,2字节,4字节,8字节等,即通用CPU携带的SIMD寄存器支持的单元大小,如果是128位SIMD寄存器这样对应每个寄存器支持的单元数量为16,8,4,2。
2)高速缓存的查找,将查表关键字放入SIMD寄存器B,通过SIMD指令,将关键字复制到SIMD寄存器B的各个单元。通过SIMD寄存器B去和保存在SIMD寄存器A中的表关键字信息匹配结果放到SIMD寄存器B,SIMD寄存器B某个单元的值如果是1表示匹配,是0表示不匹配,获取SIMD寄存器B 最高位连续为0 的个数(这是可使用方式之一,也可其他方式),经过换算,得到匹配单元的单元号n。再用n去内存或另一个SIMD寄存器D中提取结果。
3)高速缓存添加,使用上述高速缓存查找方法查找SIMD寄存器A中无效单元n,将待添加关键字替换该单元中无效值,结果写入n相应于内存或另一个SIMD寄存器D相应单元。
4)高速缓存指定删除,对于需要删除的单元n,修改SIMD寄存器A中对应单元值为无效值。
5)高速缓存全删除,SIMD寄存器A所有单元设置为无效值。
由上可知,本发明的一种实现高速缓存表的方法,有益效果如下:
本发明的高速缓存表查找速度较快,命中时会比查直接表命中甚至还会更快,因为不访存;各个核的缓存相独立,在流分发时,缓存容量相当于各个核的缓存容量叠加;不命中时代价低,查找的时间就是代价,查找速度快,不命中代价低;添加时速度快,关键字匹配的SIMD寄存器某个表项如果为无效值那么,添加到该表项,查找无效值表项使用SIMD一对多的匹配非常快,存缓存关键字也就非常快,因为不访存,如果SIMD寄存器保存结果,速度非常快,保存到内存会稍慢一点;最好的情况下查表均能命中高速缓存表,性能大幅度提升。
附图说明
图1是本发明的高速缓存的查找示意图;
图2是一个ipv4路由表的高速缓存表;
图3是一个ipv4路由表支持地址+掩码的高速缓存表的实现高速缓存表;
图4是一个ipv4路由表支持地址+vpnid的高速缓存表的实现高速缓存表。
具体实施方式
下面结合附图对本发明做进一步说明:
如图2所示:是一个ipv4路由表的高速缓存表实现,ipv4路由表(后通称为原始表)的关键字是目的IP地址,原始表的查表结果是一个索引值,该表查找方式为目的地址的相等匹配。该表中有10.1.1.1,11.1.1.1,192.8.1.1等多个条目,高速缓存表占用两个NEONSIMD寄存器,一个寄存器A,用于保存关键字,另一个寄存器D保存查表结果,该缓存表已经添加了一条有效的条目11.1.1.1,查表结果是123,其他3个条目为无效。查找时如图1所示,先复制查找关键字目的地址11.1.1.1到SIMD register B各个单元,如图1所示register B中得到复制后结果,接下来匹配操作,用SIMD指令进行匹配B = (B == A),如图1所示register B中得到匹配后结果 ,register B中有效项是第一个条目,然后从D提取结果123到寄存器B中。
如图3所示:是一个ipv4路由表支持地址+掩码的高速缓存表的实现,由于匹配使用了掩码,高速缓存可以支持更多的流,但因为路由表是最长匹配,只有叶子路由才能放入该缓存。原始表的关键字是目的IP地址和掩码,原始表的查表结果是一个索引值,该表查找方式为目的地址和掩码算术与操作后的的相等匹配。该表中有10.1.1.0/24,11.0.0.0/8,192.8.1.1/32等多个条目,高速缓存表占用三个NEON SIMD寄存器,其中寄存器A,用于保存目的地址关键字,寄存器C保存掩码关键字寄存器,寄存器D保存查表结果,该缓存表已经添加了三条有效的条目,有1个条目为无效。查找也是经过复制 ,匹配,取结果的过程,所不同的是,SIMD指令进行匹配算法换为B =((B & C) == 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。
如图4所示:是一个ipv4路由表支持地址+vpnid的高速缓存表的实现。原始表的关键字是目的IP地址和vpnid,原始表的查表结果是一个索引值,该表查找方式为目的地址和vpn id 同表项中条目同时相等的匹配。该表中有10.1.1.1(1),10.1.1.1(2)11.1.1.1(1),192.8.1.1(1)4个条目,高速缓存表占用2个NEON SIMD寄存器,其中寄存器A,用于保存目的地址关键字,寄存器D同时保存查表结果和vpnid关键字,(各占16bits),该缓存表已经添加了4条有效的条目。查找时,复制 ,匹配,取结果的过程都有,查表的输入数据这里使用了AC两个寄存器进行,复制过程如图4右下表所示。匹配过程中,SIMD指令进行匹配算法为B=((B==A)&&((D&0xff)==C),如果是10.1.1.2(1)的目的地址来查找这张表,匹配后结果会是B{1,0,0,0},然后从寄存器D中提取到单元2的数值:128、1(各占16bit),右移16bit得到结果128。如果是10.1.1.2(2)的目的地址来查找这张表,匹配后结果会是B{0,1,0,0},然后从寄存器D中提取到单元2的数值:1028、1(各占16bit),右移16bit得到结果1028。
以上所述的实施例仅仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案作出的各种变形和改进,均应落入本发明的保护范围内。

Claims (7)

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中提取结果。
2.如权利要求1所述的一种实现高速缓存表的方法,其特征在于:还包括步骤四:缓存的删除指定项,修改关键字匹配的SIMD寄存器对应表项为无效值,结果数据可不清除。
3.如权利要求2所述的一种实现高速缓存表的方法,其特征在于:还包括步骤五:缓存的清空,修改关键字匹配的SIMD寄存器为全无效。
4.如权利要求3所述的一种实现高速缓存表的方法,其特征在于:所述步骤一支持关键字大小包括,1字节,2字节,4字节,8字节等,即通用CPU携带的SIMD寄存器支持的单元大小,如果是128位SIMD寄存器这样对应每个寄存器支持的单元数量为16,8,4,2。
5.如权利要求4所述的一种实现高速缓存表的方法,其特征在于:所述步骤三中具体还包括步骤二中查找SIMD寄存器A中无效单元n,将待添加关键字替换该单元中无效值,结果写入n相应于内存或另一个SIMD寄存器D相应单元。
6.如权利要求2所述的一种实现高速缓存表的方法,其特征在于:所述步骤四具体为对于需要删除的单元n,修改SIMD寄存器A中对应单元值为无效值。
7.如权利要求3所述的一种实现高速缓存表的方法,其特征在于:所述步骤五具体为SIMD寄存器A所有单元设置为无效值。
CN201710965568.0A 2017-10-17 2017-10-17 一种实现高速缓存表的方法 Active CN107729053B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710965568.0A CN107729053B (zh) 2017-10-17 2017-10-17 一种实现高速缓存表的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710965568.0A CN107729053B (zh) 2017-10-17 2017-10-17 一种实现高速缓存表的方法

Publications (2)

Publication Number Publication Date
CN107729053A CN107729053A (zh) 2018-02-23
CN107729053B true CN107729053B (zh) 2020-11-27

Family

ID=61211852

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710965568.0A Active CN107729053B (zh) 2017-10-17 2017-10-17 一种实现高速缓存表的方法

Country Status (1)

Country Link
CN (1) CN107729053B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109918225B (zh) * 2019-02-18 2023-05-09 麒麟软件有限公司 基于飞腾平台的raid6数据恢复优化方法
CN110321161B (zh) * 2019-06-26 2021-03-02 中国人民解放军国防科技大学 使用simd指令的向量函数快速查表法、系统及介质
CN114124887B (zh) * 2021-11-29 2023-09-05 牙木科技股份有限公司 Dns服务器的视图查询方法、dns服务器及可读存储介质
CN114449046B (zh) * 2022-02-14 2023-04-11 江苏新质信息科技有限公司 一种网络数据处理方法及系统

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1863169A (zh) * 2006-03-03 2006-11-15 清华大学 基于网络处理器的路由查找结果缓存方法
CN1912870A (zh) * 2006-09-05 2007-02-14 四川南山之桥微电子有限公司 一种哈希表查表方法
CN101350771A (zh) * 2008-07-07 2009-01-21 中国人民解放军国防科学技术大学 三态内容可寻址存储器条目免排序存储方法及其系统
CN101692651A (zh) * 2009-09-27 2010-04-07 中兴通讯股份有限公司 一种哈希查找表的方法和装置
CN101692653A (zh) * 2009-09-25 2010-04-07 中兴通讯股份有限公司 路由表的管理方法和装置
CN102291296A (zh) * 2011-08-04 2011-12-21 中兴通讯股份有限公司 一种路由表的更新方法及系统
CN103248579A (zh) * 2013-04-19 2013-08-14 中山大学 基于FPGA的UDP/IPv6硬件协议栈及实现方法
CN104331497A (zh) * 2014-11-19 2015-02-04 中国科学院自动化研究所 一种利用向量指令并行处理文件索引的方法及装置
CN104424129A (zh) * 2013-08-19 2015-03-18 上海芯豪微电子有限公司 基于指令读缓冲的缓存系统和方法
CN104424158A (zh) * 2013-08-19 2015-03-18 上海芯豪微电子有限公司 基于通用单元的高性能处理器系统和方法
CN104731718A (zh) * 2013-12-24 2015-06-24 上海芯豪微电子有限公司 一种缓存系统和方法
CN104809179A (zh) * 2015-04-16 2015-07-29 华为技术有限公司 访问哈希表的装置和方法
US9218319B2 (en) * 2006-08-07 2015-12-22 International Characters, Inc. Method and apparatus for regular expression processing with parallel bit streams
CN105700859A (zh) * 2014-11-25 2016-06-22 中兴通讯股份有限公司 一种基于网络处理器实现硬件表遍历的方法及装置
CN107003840A (zh) * 2014-12-23 2017-08-01 英特尔公司 用于执行检查以优化指令流的装置和方法

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1863169A (zh) * 2006-03-03 2006-11-15 清华大学 基于网络处理器的路由查找结果缓存方法
US9218319B2 (en) * 2006-08-07 2015-12-22 International Characters, Inc. Method and apparatus for regular expression processing with parallel bit streams
CN1912870A (zh) * 2006-09-05 2007-02-14 四川南山之桥微电子有限公司 一种哈希表查表方法
CN101350771A (zh) * 2008-07-07 2009-01-21 中国人民解放军国防科学技术大学 三态内容可寻址存储器条目免排序存储方法及其系统
CN101692653A (zh) * 2009-09-25 2010-04-07 中兴通讯股份有限公司 路由表的管理方法和装置
CN101692651A (zh) * 2009-09-27 2010-04-07 中兴通讯股份有限公司 一种哈希查找表的方法和装置
CN102291296A (zh) * 2011-08-04 2011-12-21 中兴通讯股份有限公司 一种路由表的更新方法及系统
CN103248579A (zh) * 2013-04-19 2013-08-14 中山大学 基于FPGA的UDP/IPv6硬件协议栈及实现方法
CN104424129A (zh) * 2013-08-19 2015-03-18 上海芯豪微电子有限公司 基于指令读缓冲的缓存系统和方法
CN104424158A (zh) * 2013-08-19 2015-03-18 上海芯豪微电子有限公司 基于通用单元的高性能处理器系统和方法
CN104731718A (zh) * 2013-12-24 2015-06-24 上海芯豪微电子有限公司 一种缓存系统和方法
CN104331497A (zh) * 2014-11-19 2015-02-04 中国科学院自动化研究所 一种利用向量指令并行处理文件索引的方法及装置
CN105700859A (zh) * 2014-11-25 2016-06-22 中兴通讯股份有限公司 一种基于网络处理器实现硬件表遍历的方法及装置
CN107003840A (zh) * 2014-12-23 2017-08-01 英特尔公司 用于执行检查以优化指令流的装置和方法
CN104809179A (zh) * 2015-04-16 2015-07-29 华为技术有限公司 访问哈希表的装置和方法

Also Published As

Publication number Publication date
CN107729053A (zh) 2018-02-23

Similar Documents

Publication Publication Date Title
CN107729053B (zh) 一种实现高速缓存表的方法
US7019674B2 (en) Content-based information retrieval architecture
US6665297B1 (en) Network routing table
US9672234B2 (en) Database and database processing methods
JP5960863B1 (ja) 検索装置、検索方法、プログラム、及び記録媒体
US10515015B2 (en) Hash table-based mask length computation for longest prefix match caching
JPH03194632A (ja) 変換予見にもとづくキャッシュアクセス
US20080133494A1 (en) Method and apparatus for searching forwarding table
CN110908931B (zh) Tlb模块的更新方法
CN102045412B (zh) IPv6地址前缀压缩存储方法及设备
JP7436712B2 (ja) パケットマッチング方法、装置、ネットワークデバイスおよび媒体
WO2010076628A1 (en) Content assembly memory and method
Chen et al. Investigating route cache in named data networking
CN115086221B (zh) 一种报文处理方法、装置、转发设备和存储介质
CN113824814B (zh) 一种转发表的地址匹配方法、装置、网络设备及介质
KR101587756B1 (ko) 블룸 필터 선-검색을 이용한 스트링 정보 검색 장치 및 방법
US11354270B2 (en) Searching for a hash string stored in an indexed array
Liu et al. Longest prefix matching with pruning
CN107204926B (zh) 预处理cache的路由快速查找方法
JP2013037750A (ja) 内容参照メモリ
Li et al. Optimized hash lookup for bloom filter based packet routing
JP6205463B2 (ja) 検索装置、検索方法、プログラム、及び記録媒体
Zhian et al. Parallel processing priority trie-based IP lookup approach
Kim et al. Bitmap-based prefix caching for fast IP lookup
Kashansky et al. Application of TRIE data structure and corresponding associative algorithms for process optimization in GRID environment

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant