CN111177198B - 一种用于芯片的内容查找方法 - Google Patents
一种用于芯片的内容查找方法 Download PDFInfo
- Publication number
- CN111177198B CN111177198B CN201911376940.XA CN201911376940A CN111177198B CN 111177198 B CN111177198 B CN 111177198B CN 201911376940 A CN201911376940 A CN 201911376940A CN 111177198 B CN111177198 B CN 111177198B
- Authority
- CN
- China
- Prior art keywords
- chip
- rule
- classification
- function
- sub
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种用于芯片的内容查找方法,将一个含有多达几万条规则的大规则根据选取的预分类函数分解成若干个规则子表,规则子表的深度可以实现到个位数,并且通过预分类函数保证每条规则只会出现在一个规则子表中。通过对规则进行预分类,使得真正的查找只需要在规则子表中进行即可,这样可以将比对次数从几万次降低到几次,大大降低了比对次数,从而不仅大大提高了芯片查找速度,而且大大降低了芯片进行内容查找时的功耗。
Description
技术领域
本发明属于集成电路领域,更具体地,涉及一种用于芯片的内容查找方法。
背景技术
随着信息技术的迅速发展,半导体芯片被广泛应用到社会的各个领域。近年来,芯片的功能越来越复杂,逻辑门数成指数级增长。同时,芯片的功耗越来越高,导致芯片的功耗在芯片设计中成为越来越重要的设计指标。因为低功耗可以显著降低芯片和板级散热系统的复杂性,提高移动设备的续航能力,还可以降低对系统的供电需求。
目前最常用的内容查找的ASIC芯片有TCAM(Ternary Content AddressableMemory)和CAM(Content Addressable Memory)。一般来说,对于TCAM或CAM中的规则表,一个规则表可以支持几条到几万条的规则,对于通用的网络应用比如MAC表或者路由表,一个单独的表通常会有几万条的规则。在这种情况下,如何在这个庞大的表中快速和低功耗的找到需要查找的内容成为设计的目标。传统的方法是:根据搜索内容的属性,从对应的表中依次进行比对,如果匹配,则输出对应的序号。这种方法极大的增加了内容比对的次数,不仅产生大量的搜索延时和低性能,而且还因为庞大的比较次数而产生大量的功耗。如果我们能提前减少比较的次数,就可以大规模的降低功耗。对于一个网络流表,通常在设备的初期会给流表分配一个大小,其中包括宽度和深度。但是规则的写入通常随着网络设备的运行而逐渐的写入,因此具备一定的随机性,因此诸如对规则按照大小排序显得不太现实,而且,流表中规则的宽度一般为80bit以上,最大可以支持到1280bit,这么宽的数据如果单纯用比较大小的方法显得低效。而且,在不同的应用场景中,不同表项中的规则本身就有一定的差异性,不同的规则的特征存在很大的差异,因此无法提前规定排列规则而达到高效搜索。
目前在工程领域,业界各大EDA厂商都提出了自己的降低芯片功耗的方法,这些方法包括:多电压技术(Multi-Voltage)、电源关断(Multi-Supply)、时钟关断(Clock-gating)等。但是这些方法均适用于芯片后端设计流程,没有涉及能显著降低功耗的前端流程。而目前的一个通用的认知是在设计早期(即系统架构阶段,包含整体解决方案系统)关注系统层面低功耗的策略和代价对于后面的实现非常重要。
发明内容
本发明的目的是提供一种用于芯片的内容查找方法,该方法在前端层次上规划查找算法,使得在芯片中查找内容时能够大大降低比较的次数,从而实现提高查找的速度以及降低芯片的功耗的目的。
为实现上述发明目的,本发明提出的技术方案如下:
一种用于芯片的内容查找方法,所述方法包括:
步骤一,在芯片中设置以较低频率运行的协处理器;
步骤二,主机在接收到规则时,根据所接收的规则选取预分类函数,将所接收的规则和所选取的预分类函数写入至芯片,其中选取预分类函数的原则是减少或避免冲突,使得每个规则子表中的规则数尽量少;
步骤三,芯片中的协处理器实现所述预分类函数,并根据预分类函数对所接收的规则进行分类,以配置预分类表和规则子表,配置预分类表和规则子表的具体过程为:
A.用所述预分类函数对所接收的规则进行计算,得到计算结果;
B.将步骤A所述计算结果作为索引建立预分类表,同时选择一个空的规则子表写入所接收的规则,将所述规则子表的表号写入到所述预分类表;
步骤四,当主机接收到需要查找的键值时,根据该键值获取所属的表号,将该键值和表号传输至芯片;
步骤五,芯片中的协处理器根据表号选取预分类函数,用该预分类函数对所接收的键值进行运算,得到二次查找的索引,用所得到的索引查找预分类表,得到键值所在的规则子表,最后在规则子表中查找对应的内容。
进一步地,步骤一中较低频率一般为25MHz以下的频率。
进一步地,主机通过编程指令将预分类函数写入芯片。
进一步地,可以在芯片中设置RAM表或者寄存器组,将预分类表用该RAM表或者寄存器组存储,使用RAM表或者寄存器组存储预分类表可以实现更快速的查找。
进一步地,协处理器可以为专用处理器或者可编程处理器,如果芯片的应用场景相对比较固定,可以采用不可编程的专用处理器来固定预分类函数以节省芯片资源,即每次根据场景只改变预分类函数的参数;如果芯片的应用场景比较随机,则协处理器应该选择可编程处理器,这样在不同的应用场景下主机需要将选取的预分类函数编程到协处理器。
进一步地,预分类函数可以为HASH函数,预分类表可以为HASH表。
进一步地,为了提高主机和芯片的交互效率,主机可以把预分类函数和所接收的规则进行压缩后再传输至芯片,由协处理器解压后用其配置预分类表和规则子表。
进一步地,预分类函数可以为预分类函数集。
进一步地,可以执行两次或多次预分类函数,两次或多次预分类函数可以相同也可以不同。
进一步地,为了降低协处理器的时钟频率,在协处理器输出端增加一组异步时钟处理的缓存寄存器来做芯片同步化。
本发明的用于芯片的内容查找方法,将一个含有多达几万条规则的大规则分解成若干个规则子表,并且规则子表的深度可以实现到个位数,并通过预分类函数保证每条规则只会出现在一个规则子表中。通过预分类,使得真正的查找只需要在规则子表中进行即可,这样可以将比对次数从几万次降低到几次,大大降低了比对次数,从而不仅大大提高了芯片查找速度,而且大大降低了芯片进行内容查找时的功耗。
附图说明
图1为根据本发明的主机与芯片交互的示意图;
图2为根据本发明的用于内容查找芯片的结构示意图;
图3为根据本发明的配置预分类表和规则子表的流程图;
图4为根据本发明的基于键值查找内容的流程图;
图5(a)、图5(b)、图5(c)和图5(d)为根据本发明的方法建立规则子表和查找键值的实施例,其中图5(a)为所选取的一组规则及每个规则根据预分类函数的计算结果,图5(b)为预分类表,图5(c)为规则子表,以及图5(d)为键值查找过程。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互结合。
图1为根据本发明的主机与芯片交互的示意图。其中,HOST主机一般为高性能的通用处理器(CPU),例如常用的IntelX86,ARM或MIPS等CPU,查找芯片一般为TCAM或CAM芯片。HOST主机根据业务相关来配置规则子表的宽度和深度,使用相应的预分类函数对规则进行运算,选择一个最优的预分类函数编程到查找芯片的协处理器中,主机一般通过编程指令将预分类函数写入芯片。
选择预分类函数的原则是减少和避免冲突,使得每个规则子表中的规则数尽量少,这样在规则子表中查找的次数就少。协处理器根据预分类函数来做相应的预分类表和规则子表的查找。然后在匹配查找键(key)时,HOST主机将查找键及表编号发送给查找芯片,在一个预定的时间周期内,查找芯片将返回主机结果信息。
图2为根据本发明的用于内容查找芯片的结构示意图。图中示出了两个接口,一个是主机编程算法和规则下发的接口,一个是键值和表号下发接口。为了进一步降低功耗,将协处理器的时钟频率降低,在协处理器的输出端增加一组异步时钟处理的缓存寄存器适配后面的模块。
图3为根据本发明的配置预分类表和规则子表的流程图。本文支持的实现内容查找的芯片可以是网络处理方面的,例如基于网络五元组,七元组,IPV4, IPV6等,也可以是其他任何领域涉及到内容查找的,例如基于特征点匹配的相关领域。针对网络应用的常用场景,虽然预分类可以极大的缩小搜索的范围,但选取一个预分类函数同样至关重要。一个常见的预分类函数就是HASH函数和CRC冗余校验函数,它们将成千上万个表中的规则分解成不同的组。
基于图3,在一个具体的实施例中,假定输入的规则为80bit的规则表,通过CPU对该规则表的所有规则进行计算、优化和验证,选定固定初始值和多项式的CRC8(8位循环冗余校验Cyclic Redundancy Check)作为预分类函数,这样预分类表的深度为256(2的8次方)。同时编程协处理器该表项的算法为该CRC8。当一个规则下发时,先计算CRC8, 将结果作为索引去访问预分类表,同时选择一个空的规则子表写入规则,将这个规则子表的序号值写入到预分类表中,然后重复以上操作,直到所有的规则都写入,这样就完成了规则子表和预分类表的写入。
在一个常用的IPV4的网络中,如果选取源IPV4和目的IPV4作为表项内容,则表项的宽度至少为2*32bits = 64bits。由于芯片中的数据位宽支持80bits的整数倍,因此可以将表项的位宽扩展为80bits(高位补0)。假定表项深度为8(一般来说实际的场景的表项深度在K级别上,这里列举一个数量较少的实施例说明,方法本质上无差别),即有8个对应的规则需要存储,如图5(a)的第二列所示。基于图3,在一个具体的实施例中,假定输入的规则为80bit的规则表,同时我们对表进行编号1,通过CPU对该规则表的所有规则进行计算、优化和验证,选定固定初始值和多项式的CRC8(8位循环冗余校验Cyclic Redundancy Check,多项式为X8+X5+X4+1)作为预分类函数。在本实施例中,由于规则中大部分的值是相同的,我们只选取变化的数值bit0~bit7, bit32~bit39(如图5(a)的第三列所示)来计算CRC8(如图5(a)的第四列所示)的值。基于图5(a)的计算结果,我们得出预分类表,如图5(b)所示。同时,根据图5(b)的内容,将规则子表(如5(c)所示)建立起来,我们这个实施例的每个规则子表只有一个规则,实际上,如果规则特别多,单个规则子表可以有一个或者多个规则。在建立预分类表和规则子表的同时,主机CPU需要把相应的CRC8算法,CRC8算法多项式,选取的变化的比特位宽(bit0~bit7, bit32~bit39)如图2的主机下发接口,下发到协处理器中去,这些信息将在键值(KEY)查找时使用。
图4为根据本发明的基于键值查找内容的流程图。当一个搜索键(KEY)开始搜索时,先调用HASH函数HASH(KEY)得到一个索引(INDEX),然后用这个索引(INDEX)去查找预先写入的预分类表来得到相应的规则子表,最后根据这个规则子表的值来进行精确匹配得到匹配或者未匹配。
基于图4,在一个具体的实施例中,根据图3确定好的规则表,每次到来一个搜索键(KEY)和表号时,根据表号在芯片中找到预分类函数(协处理器在写规则表的时候已经编程完毕),计算相应的值,把值作为序列去查找预分类表,得出规则子表的序列,然后去规则子表进行匹配。在这个过程中,我们根据规则写入过程中编程写入芯片中的预分类函数的信息对搜索键(KEY)进行处理,按照上段所示,根据预分类函数中选定的比特同样对搜索键(KEY)进行CRC8计算,然后根据结果索引预分类表,找到规则子表的编号,如果索引到的规则子表无效,则该搜索键(KEY)没有命中;如果有效,则用规则子表的编号去找到规则子表,然后将搜索键(KEY)在该规则子表去进行匹配,如果匹配成功,则表示搜索键命中。如图4所示,每次搜索键(KEY)重复以上查找过程。
在一个常用的IPV4的网络中,例如上文中介绍的预分类表(图5(b))和规则子表(图5(c))。当一个键值(KEY)到来时(图5(d)列出了7次搜索过程),根据上文预先给芯片写入的CRC8算法、多项式和需要计算的比特位(bit0~bit7, bit32~bit39),依次索引预分类表和规则子表。例如,图5(d)列出了7个键值,先选取相应的比特位(bit0~bit7, bit32~bit39),图5(d)中第三列所示;接着计算CRC8值,如图5(d)中的第四列所示,根据CRC8值去之前建立的预分类表(图5(b)),得到预分类表的搜索结果,如果能索引出的规则子表有效,则继续进一步精确匹配,如果成功,则返回匹配成功;如果无有效表号,则表示匹配失败,返回未匹配。
本领域的技术人员容易理解,以上所述仅为发明的较佳实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种用于芯片的内容查找方法,所述方法包括:
A.在所述芯片中设置以较低频率运行的协处理器;
B.主机在接收到规则时,根据所接收的规则选取预分类函数,将所接收的规则和所选取的预分类函数写入至所述芯片,其中选取所述预分类函数的原则是减少或避免冲突;
C.所述芯片中的所述协处理器实现所述预分类函数,并根据预分类函数对所接收的规则进行分类,以配置预分类表和规则子表,配置所述预分类表和所述规则子表的具体过程为:
a.用所述预分类函数对所接收的规则进行计算,得到计算结果;
b. 将步骤a中的所述计算结果作为索引建立所述预分类表,同时选择一个空的规则子表写入所接收的规则,将所述规则子表的表号写入到所述预分类表;
D.当所述主机接收到需要查找的键值时,根据所述键值获取所属的表号,将所述键值和所述表号传输至所述芯片;
E.所述芯片中的所述协处理器根据所述表号选取所述预分类函数,用所述预分类函数对所接收的键值进行运算,得到二次查找的索引,用所得到的索引查找所述预分类表,得到所述键值所在的规则子表,最后在所述规则子表中查找对应的内容,
其中所述较低频率为25MHz以下的频率,所述预分类函数为HASH函数,或CRC冗余校验函数,或它们的集合,所述预分类函数将成千上万个表中的规则分解成不同的组。
2.根据权利要求1所述的用于芯片的内容查找方法,其中所述主机通过编程指令将所述预分类函数写入所述芯片。
3.根据权利要求1所述的用于芯片的内容查找方法,其中在芯片中设置RAM表或者寄存器组,将所述预分类表用所述RAM表或者寄存器组存储。
4.根据权利要求1所述的用于芯片的内容查找方法,其中所述协处理器为专用处理器或者可编程处理器。
5.根据权利要求1所述的用于芯片的内容查找方法,其中所述预分类表为HASH表。
6.根据权利要求1所述的用于芯片的内容查找方法,其中所述主机把所述预分类函数和所接收的规则进行压缩后再传输至所述芯片,由所述协处理器解压后配置所述预分类表和所述规则子表。
7.根据权利要求1所述的用于芯片的内容查找方法,其中执行多次预分类函数,其中所述多次预分类函数可相同或不同。
8.根据权利要求1所述的用于芯片的内容查找方法,其中在所述协处理器的输出端增加一组异步时钟处理的缓存寄存器来做所述芯片的同步化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911376940.XA CN111177198B (zh) | 2019-12-27 | 2019-12-27 | 一种用于芯片的内容查找方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911376940.XA CN111177198B (zh) | 2019-12-27 | 2019-12-27 | 一种用于芯片的内容查找方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111177198A CN111177198A (zh) | 2020-05-19 |
CN111177198B true CN111177198B (zh) | 2023-06-16 |
Family
ID=70624241
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911376940.XA Active CN111177198B (zh) | 2019-12-27 | 2019-12-27 | 一种用于芯片的内容查找方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111177198B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101604337A (zh) * | 2009-07-13 | 2009-12-16 | 中兴通讯股份有限公司 | 一种哈希表项存储、查找装置及方法 |
CN102111331A (zh) * | 2010-12-17 | 2011-06-29 | 曙光信息产业(北京)有限公司 | 一种基于hash表实现的带掩码五元组规则的匹配方法 |
CN102364463A (zh) * | 2011-09-19 | 2012-02-29 | 浪潮电子信息产业股份有限公司 | 一种基于Hash查找CAM的方法 |
CN104008130A (zh) * | 2014-04-28 | 2014-08-27 | 开网科技(北京)有限公司 | 一种基于混合计算硬件的网络报文分类系统和方法 |
WO2015043254A1 (zh) * | 2013-09-24 | 2015-04-02 | 中兴通讯股份有限公司 | 一种包分类规则的查找方法及装置 |
CN104579941A (zh) * | 2015-01-05 | 2015-04-29 | 北京邮电大学 | 一种OpenFlow交换机中的报文分类方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102377664B (zh) * | 2010-08-27 | 2015-06-10 | 武汉烽火网络有限责任公司 | 一种基于tcam的区域匹配装置和方法 |
-
2019
- 2019-12-27 CN CN201911376940.XA patent/CN111177198B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101604337A (zh) * | 2009-07-13 | 2009-12-16 | 中兴通讯股份有限公司 | 一种哈希表项存储、查找装置及方法 |
CN102111331A (zh) * | 2010-12-17 | 2011-06-29 | 曙光信息产业(北京)有限公司 | 一种基于hash表实现的带掩码五元组规则的匹配方法 |
CN102364463A (zh) * | 2011-09-19 | 2012-02-29 | 浪潮电子信息产业股份有限公司 | 一种基于Hash查找CAM的方法 |
WO2015043254A1 (zh) * | 2013-09-24 | 2015-04-02 | 中兴通讯股份有限公司 | 一种包分类规则的查找方法及装置 |
CN104008130A (zh) * | 2014-04-28 | 2014-08-27 | 开网科技(北京)有限公司 | 一种基于混合计算硬件的网络报文分类系统和方法 |
CN104579941A (zh) * | 2015-01-05 | 2015-04-29 | 北京邮电大学 | 一种OpenFlow交换机中的报文分类方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111177198A (zh) | 2020-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8856203B1 (en) | System and method for algorithmic TCAM packet classification | |
US9244857B2 (en) | Systems and methods for implementing low-latency lookup circuits using multiple hash functions | |
JP2004229163A (ja) | 固定長データ検索装置、及び固定長データ検索方法、及びコンピュータプログラム、並びにコンピュータ読み取り可能な記録媒体 | |
US20140317134A1 (en) | Multi-stage parallel multi-character string matching device | |
US20030037209A1 (en) | Memory engine for the inspection and manipulation of data | |
JP6592310B2 (ja) | 半導体装置 | |
CN109981464B (zh) | 一种在fpga中实现的tcam电路结构及其匹配方法 | |
CN112667526B (zh) | 一种访问控制列表电路实现方法及其电路 | |
CN108664518B (zh) | 一种实现查表处理的方法及装置 | |
CN110324204B (zh) | 一种在fpga中实现的高速正则表达式匹配引擎及方法 | |
CN113037634A (zh) | 基于fpga的匹配动作表的处理方法、逻辑电路和设备 | |
US9899088B1 (en) | Content addressable memory decomposition | |
Trinh et al. | Algorithmic TCAM on FPGA with data collision approach | |
CN111177198B (zh) | 一种用于芯片的内容查找方法 | |
CN111459938B (zh) | 一种表项处理方法、查表方法及系统 | |
CN109039911B (zh) | 一种基于hash查找方式共享ram的方法及系统 | |
US9703484B2 (en) | Memory with compressed key | |
US10795580B2 (en) | Content addressable memory system | |
CN101211346A (zh) | 一种优化存储器性能的方法 | |
US20160105363A1 (en) | Memory system for multiple clients | |
KR100268221B1 (ko) | 순회 여분 검사를 이용한 랜 스위치의 맥 주소 해슁 방법 및장치 | |
CN112994886B (zh) | 一种用于生成tcam搜索关键字的硬件及实现方法 | |
WO2024016863A1 (zh) | 规则查找方法、装置、设备及计算机可读存储介质 | |
US20020053002A1 (en) | System for associative processing | |
CN114244772B (zh) | 一种更新复杂度为o(1)的tcam实现方法及系统 |
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 |