CN109039911B - 一种基于hash查找方式共享ram的方法及*** - Google Patents
一种基于hash查找方式共享ram的方法及*** Download PDFInfo
- Publication number
- CN109039911B CN109039911B CN201810842538.5A CN201810842538A CN109039911B CN 109039911 B CN109039911 B CN 109039911B CN 201810842538 A CN201810842538 A CN 201810842538A CN 109039911 B CN109039911 B CN 109039911B
- Authority
- CN
- China
- Prior art keywords
- ram
- search
- items
- type
- item
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于HASH查找方式共享RAM的方法及***,涉及计算机通信技术,本发明通过对每个查表类型配置基地址和所取HASH结果位数,并且根据各查表类型的条目宽度合理确定共享RAM的宽度和深度,使多个数据库可以共存于一块或一组RAM中。本发明最经济的利用了RAM资源,在支持最长查条目的同时,为非最长查条目提供了克HASH冲突的能力。
Description
技术领域
本发明涉及计算机通信技术领域,具体涉及一种基于HASH查找方式共享RAM的方法及***。
背景技术
目前在通信领域,基于以太网包或IP包的通信占主流地位。其中的以太网交换机、路由器等数据通信设备,都需要采用包处理芯片或FPGA对以太网包或IP包进行处理,需要根据数据帧头中携带的协议字段信息,数据包输入端口、输出端口,和配置信息进行处理,涉及到大量的查表处理。例如:入口VLAN(Virtual Local Access Network)处理需要根据输入端口和数据帧的VLAN_ID(VLAN Identification)进行查表得到VLAN处理的行为,以太网网桥需要根据数据帧的DMAC_Addr(Destination MediaAccess ControlAddress)和VLAN_ID进行查表确定转发行为,需要根据SMAC_Addr(Source Media Access ControlAddress)和VLAN_ID进行地址学习,在IP(Internet Protocol)交换中需要根据IPv4(InternetProtocol version 4)或IPv6(Internet Protocol version 6)地址进行查表确定转发行为。
在上述提到的查表处理中,基于HASH的方法是一种常用的方法,它是将查表的关键字值进行散列运算,将运算结果作为查表索引,在查表前需要先根据查表索引将查表的关键字值写入到查表数据库中,查表时根据查表索引读出写入值,并和查表KEY进行比较,匹配的认为查找到。为克服冲突,HASH查找常采用多个并行条目进行查找,即一个HASH索引对应多个条目,任何一个匹配即认为匹配。
在包处理领域,不同的应用场景对各条目的大小要求是不同的,侧重于IP交换的设备可能对VLAN处理的条目要求较低,而以太网网桥设备又不需要IP功能。一个设计中如果能根据应用场景灵活的进行各条目规模的调整,那么无疑会扩大芯片或FPGA的使用范围。
目前的交换芯片,有的不具有条目规模调整功能;有的根据配置,通过RAM块的调配来实现条目共享,设计中会包含大量的小块RAM,使设计和使用都较复杂。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种基于HASH查找方式共享RAM的方法及***,实现多个查表类型的数据库可以共存于一块或一组RAM中。
为达到以上目的,本发明采取的技术方案是:一种基于HASH查找方式共享RAM的方法,包括以下步骤:
S1,获取各查表类型的条目数和条目位宽,根据各查表类型的条目位宽,确定所需共享RAM位宽,共享RAM位宽不小于条目位宽最大值;
S2,根据S1中确定的共享RAM位宽以及各查表类型的条目数,计算出各查表类型对应的RAM深度,确定所需共享RAM深度;
S3,配置各查表类型在共享RAM中的基地址,所配置的基地址为共享RAM的任一地址;配置各查表类型所取HASH结果位数,所取HASH结果位数对应的二进制数值最大值不小于各查表类型对应的RAM深度;根据所取HASH结果位数确定各查表类型对应的共享RAM中的数据库的大小。
在上述技术方案的基础上,步骤S2具体包括以下步骤:
将共享RAM位宽分别除以各查表类型的条目位宽,并向下取整,得到各查表类型对应的并行查表次数;
将各查表类型的条目数,除以对应的并行查表次数,并按照二进制向上取整,得到各查表类型对应的RAM深度;
确定所需共享RAM深度,共享RAM深度不小于各次查表对应RAM深度的累加值。
在上述技术方案的基础上,步骤S3之后还包括步骤S4:
进行共享RAM中的查找条目配置时,根据待配置的查找条目的关键字值进行HASH计算,根据该查找条目所属的查表类型的所取HASH结果位数对计算结果进行取值,加上查找条目所属查表类型的基地址,作为共享RAM中待写入条目的RAM地址;将待配置的查找条目的关键字值和对应的查表结果,配置到共享RAM中待写入条目的RAM地址,并配置该查找条目的条目有效标识为有效。
在上述技术方案的基础上,所述将待配置的查找条目的关键字值和查表结果配置到共享RAM中待写入条目的RAM地址,并配置条目有效标识为有效,具体包括以下过程:
读出待写入条目的RAM地址对应的RAM数据,对读出的RAM数据中的查找条目从左到右依次分析,判断RAM数据中查找条目是否有效,若有效,检查关键字值是否和查找条目中的一致,如果一致,更新查找条目对应的查表结果;若不一致,跳过该查找条目,继续检查读出的RAM数据中的下一条查找条目;若无效,则将待配置的查找条目的关键字值和查表结果配置到共享RAM中的查找条目,并配置共享RAM中的查找条目的条目有效标识为有效。
在上述技术方案的基础上,步骤S4之后还包括步骤S5:
接收查找请求时,根据查找请求的关键字值进行HASH计算,对计算结果再根据配置的查找条目所属查表类型的所取HASH结果位数进行取值,加上配置的查找条目所属查表类型的基地址作为共享RAM中待读出条目的RAM地址,并读出对应的RAM数据;对读出的RAM数据中所有查找条目从左到右依次分析,当查找条目的条目有效标识为有效时,将查找请求的关键字值和读出的查找条目中的关键字值进行比对,关键字值匹配时输出关键字值对应的查表结果;否则进行读出的RAM数据中下一查找条目的判断。
本发明还公开了一种基于HASH查找方式共享RAM的***,包括:
RAM位宽计算模块,其用于获取各查表类型的条目数和条目位宽,根据各查表类型的条目位宽,确定所需共享RAM位宽,共享RAM位宽不小于条目位宽最大值;
RAM深度计算模块,根据共享RAM位宽以及各查表类型的条目数,计算出各查表类型对应的RAM深度,确定所需共享RAM深度;
RAM配置模块,其用于配置各查表类型在共享RAM中的基地址,所配置的基地址为共享RAM的任一地址;配置各查表类型所取HASH结果位数,所取HASH结果位数对应的二进制数值最大值不小于各查表类型对应的RAM深度;根据所取HASH结果位数确定各查表类型对应的共享RAM中的数据库的大小。
在上述技术方案的基础上,所述RAM深度计算模块具体用于:
将共享RAM位宽分别除以各查表类型的条目位宽,并向下取整,得到各查表类型对应的并行查表次数;
将各查表类型的条目数,除以对应的并行查表次数,并按照二进制向上取整,得到各查表类型对应的RAM深度;
确定所需共享RAM深度,共享RAM深度不小于各次查表对应RAM深度的累加值。
在上述技术方案的基础上,该***还包括查找条目配置模块,其用于:
进行共享RAM中的查找条目配置时,根据待配置的查找条目的关键字值进行HASH计算,根据该查找条目所属的查表类型的所取HASH结果位数对计算结果进行取值,加上查找条目所属查表类型的基地址,作为共享RAM中待写入条目的RAM地址;将待配置的查找条目的关键字值和对应的查表结果,配置到共享RAM中待写入条目的RAM地址,并配置该查找条目的条目有效标识为有效。
在上述技术方案的基础上,所述条目配置模块将待配置的查找条目的关键字值和查表结果配置到共享RAM中待写入条目的RAM地址,并配置条目有效标识为有效,具体包括以下过程:
读出待写入条目的RAM地址对应的RAM数据,对读出的RAM数据中的查找条目从左到右依次分析,判断RAM数据中查找条目是否有效,若有效,检查关键字值是否和查找条目中的一致,如果一致,更新查找条目对应的查表结果;若不一致,跳过该查找条目,继续检查读出的RAM数据中的下一条查找条目;若无效,则将待配置的查找条目的关键字值和查表结果配置到共享RAM中的查找条目,并配置共享RAM中的查找条目的条目有效标识为有效。
在上述技术方案的基础上,该***还包括查表功能模块和计算读写模块;
所述查表功能模块用于:接收到查找请求时,提取出查找请求的关键字值输出至计算读写模块;
所述计算读写模块用于:根据查找请求的关键字值进行HASH计算,对计算结果再根据配置的查找条目所属查表类型的所取HASH结果位数进行取值,加上配置的查找条目的基地址作为共享RAM中待读出条目的RAM地址,并读出对应的RAM数据输出至查表功能模块;
所述查表功能模块还用于:对读出的RAM数据中所有查找条目从左到右依次分析,当读出对应的查找条目的条目有效标识为有效时,将查找请求的关键字值和读出的查找条目中的关键字值进行比对,关键字值匹配时输出关键字值对应的查表结果;否则进行读出的RAM数据中下一查找条目的判断。
与现有技术相比,本发明的优点在于:
本文提出了一种基于HASH查找方式共享RAM的方法及***,通过对每个查表类型配置基地址和所取HASH结果位数,并且根据各查表类型的条目位宽合理确定RAM的宽度,使多个查表类型的数据库可以共存于一块或一组RAM中。本发明最经济的利用了RAM资源,在支持最长条目的同时,为非最长条目提供了克HASH冲突的能力。
本发明可通过改变查表类型所配置的基地址和所取HASH结果位数灵活的调整数据库的大小,使设计可适合多个应用场景。
附图说明
图1为本发明实施例中基于HASH查找方式共享RAM的方法的流程示意图;
图2为本发明实施例中基于HASH查找方式共享RAM的方法的查找条目的数据结构示意图;
图3为本发明实施例中基于HASH查找方式共享RAM的方法的RAM中数据库的结构示意图;
图4为本发明实施例中基于HASH查找方式共享RAM的***的结构示意图;
图5为本发明实施例中基于HASH查找方式共享RAM的***的条目配置模块、查表功能模块、计算读写模块的工作原理示意图。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
实施例1:
参见图1所示,本发明实施例提供一种基于HASH查找方式共享RAM的方法,包括以下步骤:
S1,获取各查表类型包含的查找条目的条目数和条目位宽,根据各查表类型的条目位宽,确定所需共享RAM位宽,共享RAM位宽不小于条目位宽最大值;每个查表类型包括多个查找条目,每个查找条目包括条目有效标识,关键字值和查表结果。
S2,根据S1中确定的共享RAM位宽以及各查表类型的条目数,计算出各查表类型对应的RAM深度,确定所需共享RAM深度;
S3,配置各查表类型在共享RAM中的基地址,所配置的基地址为共享RAM的任一地址;配置各查表类型所取HASH结果位数,所取HASH结果位数对应的二进制数值最大值不小于各查表类型对应的RAM深度;根据所取HASH结果位数确定各查表类型对应的共享RAM中的数据库的大小。
步骤S2具体包括以下步骤:
将共享RAM位宽分别除以各查表类型的条目位宽,并向下取整,得到各查表类型对应的并行查表次数;例如,共享RAM位宽为10,条目位宽为3,则10÷3,向下取整后为3。
将各查表类型的条目数,除以对应的并行查表次数,并按照二进制向上取整,得到各查表类型对应的RAM深度;例如,计算出条目数为128,并行查表次数3,则128÷3,按照二进制向上取整得64。
确定所需共享RAM深度,共享RAM深度不小于各次查表对应RAM深度的累加值。
本发明通过对每个查表配置基地址和所取HASH结果位数,并且根据各查表类型的条目位宽合理确定RAM的宽度,使多个数据库可以共存于一块或一组RAM中。本发明最经济的利用了RAM资源,在支持最长条目的同时,为非最长条目提供了克HASH冲突的能力。
实施例2:
在实施例1的基础上,假设某设计要求中需要4种查表类型:第一个查表类型的条目位宽为50,条目数256;第二个查表类型的条目位宽为65,条目数2048,第三个查表类型的条目位宽为80,条目数4096,第四个查表类型的条目位宽为180;条目数512。
步骤S1具体包括以下过程:
1、根据确定RAM位宽和每个查找需比较的次数的方法计算:
设置所需共享RAM位宽为200比特,根据共享RAM位宽继续进行计算得出下表:
各查表类型 | 并行查表次数m | 计算出所需的RAM深度 |
1 | 4 | 64(256/4=64) |
2 | 3 | 1024(2048/3=683,取256的倍数得出1024) |
3 | 2 | 2048(4096/2=2048) |
4 | 1 | 512(512/1=512) |
累加各查表类型对应的RAM深度,得出共享RAM最小深度为4096,为了减少HASH冲突,设置所需共享RAM为8192。
2、配置各查表的基地址和所取HASH结果位数,如下表
为避免不同查表类型的冲突,配置不同查表类型的基地址需设置不同查表类型对应的共享RAM地址相互不覆盖。
作为优选的方案,从0开始配置第一种查表类型的基地址,第二种查表类型的基地址从第一种查表类型的数据库对应的共享RAM地址的末尾开始,第三种查表类型的基地址从第二种查表类型的数据库对应的共享RAM地址的末尾开始,依次类推,避免共享RAM的空间浪费。
3、配置后的数据库见图3
4、假设在某个应用场景下需要改变条目,第3次、4次查找不需要,第一次查找条目改成16k,第2次查找改成8k,那么各基地址和所取HASH结果位数配置如下:
各查表类型 | 基地址 | 所取HASH结果位数 | 实际可容纳的条目容量 |
1 | 0 | 12 | 16k(2<sup>12</sup>*4=16384) |
2 | 4096 | 12 | 12k(2<sup>12</sup>*3=12288) |
3 | 8192 | 0 | 0 |
4 | 8192 | 0 | 0 |
实施例3:
在实施例1的基础上,步骤S3之后还包括步骤S4:
进行共享RAM中的查找条目配置时,根据待配置的查找条目的关键字值进行HASH计算,根据该查找条目所属的查表类型的所取HASH结果位数对计算结果进行取值,加上查找条目所属查表类型的基地址,作为共享RAM中待写入条目的RAM地址;将待配置的查找条目的关键字值和对应的查表结果,配置到共享RAM中待写入条目的RAM地址,并配置该查找条目的条目有效标识为有效。
所述将待配置的查找条目的关键字值和查表结果配置到共享RAM中待写入条目的RAM地址,并配置条目有效标识为有效,具体包括以下过程:
读出待写入条目的RAM地址对应的RAM数据,对读出的RAM数据中的查找条目从左到右依次分析,判断RAM数据中查找条目是否有效,若有效,检查关键字值是否和查找条目中的一致,如果一致,更新查找条目对应的查表结果;若不一致,跳过该查找条目,继续检查读出的RAM数据中的下一条查找条目;若无效,则将待配置的查找条目的关键字值和查表结果配置到共享RAM中的查找条目,并配置共享RAM中的查找条目的条目有效标识为有效。
本发明可通过改变查表所配置的基地址和所取HASH结果位数灵活的调整数据库的大小,使设计可适合多个应用场景。
步骤S4之后还包括步骤S5:
接收查找请求时,根据查找请求的关键字值进行HASH计算,对计算结果再根据配置的查找条目所属查表类型的所取HASH结果位数进行取值,加上配置的查找条目所属查表类型的基地址作为共享RAM中待读出条目的RAM地址,并读出对应的RAM数据;对读出的RAM数据中所有查找条目从左到右依次分析,当查找条目的条目有效标识为有效时,将查找请求的关键字值和读出的查找条目中的关键字值进行比对,关键字值匹配时输出关键字值对应的查表结果;否则进行读出的RAM数据中下一查找条目的判断。
实施例4:
本实施例公开了一种基于HASH查找方式共享RAM的***,参见图4所示,包括:
RAM位宽计算模块,其用于获取各查表类型包含的查找条目的条目数和条目位宽,根据各查表类型的条目位宽,确定所需共享RAM位宽,共享RAM位宽不小于条目位宽最大值;
RAM深度计算模块,根据共享RAM位宽以及各查表类型的条目数,计算出各查表类型对应的RAM深度,确定所需共享RAM深度;
RAM配置模块,其用于配置各查表类型在共享RAM中的基地址,所配置的基地址为共享RAM的任一地址;配置各查表类型所取HASH结果位数,所取HASH结果位数对应的二进制数值最大值不小于各查表类型对应的RAM深度;根据所取HASH结果位数确定各查表类型对应的共享RAM中的数据库的大小。
RAM深度计算模块具体用于:
将共享RAM位宽分别除以各查表类型的条目位宽,并向下取整,得到各查表类型对应的并行查表次数;例如,共享RAM位宽为10,条目位宽为3,则10÷3,向下取整后为3。
将各查表类型的条目数,除以对应的并行查表次数,并按照二进制向上取整,得到各查表类型对应的RAM深度;例如,计算出条目数为128,并行查表次数3,则128÷3,按照二进制向上取整得64。
确定所需共享RAM深度,共享RAM深度不小于各次查表对应RAM深度的累加值。
实施例5:
在实施例4的基础上,该***还包括查找条目配置模块,其用于:
进行共享RAM中的查找条目配置时,根据待配置的查找条目的关键字值进行HASH计算,根据该查找条目所属的查表类型的所取HASH结果位数对计算结果进行取值,加上查找条目所属查表类型的基地址,作为共享RAM中待写入条目的RAM地址;将待配置的查找条目的关键字值和对应的查表结果,配置到共享RAM中待写入条目的RAM地址,并配置该查找条目的条目有效标识为有效。
所述条目配置模块将待配置的查找条目的关键字值和查表结果配置到共享RAM中待写入条目的RAM地址,并配置条目有效标识为有效,具体包括以下过程:
读出待写入条目的RAM地址对应的RAM数据,对读出的RAM数据中的查找条目从左到右依次分析,判断RAM数据中查找条目是否有效,若有效,检查关键字值是否和查找条目中的一致,如果一致,更新查找条目对应的查表结果;若不一致,跳过该查找条目,继续检查读出的RAM数据中的下一条查找条目;若无效,则将待配置的查找条目的关键字值和查表结果配置到共享RAM中的查找条目,并配置共享RAM中的查找条目的条目有效标识为有效。
该***还包括查表功能模块和计算读写模块;
查表功能模块用于:接收到查找请求时,提取出查找请求的关键字值输出至计算读写模块;
计算读写模块用于:根据查找请求的关键字值进行HASH计算,对计算结果再根据配置的查找条目所属查表类型的所取HASH结果位数进行取值,加上配置的查找条目的基地址作为共享RAM中待读出条目的RAM地址,并读出对应的RAM数据输出至查表功能模块;
查表功能模块还用于:对读出的RAM数据中所有查找条目从左到右依次分析,当读出对应的查找条目的条目有效标识为有效时,将查找请求的关键字值和读出的查找条目中的关键字值进行比对,关键字值匹配时输出关键字值对应的查表结果;否则进行读出的RAM数据中下一查找条目的判断。
实施例6:
在实施例4的基础上,参见图5所示,本实施例公开了一种基于HASH查找方式共享RAM的装置,该装置由4部分组成:若干查表功能模块,计算读写模块,条目配置模块和RAM。本装置的输入是数据包信息,输出是查表结果信息。
查表功能模块的功能是:采用输入的数据包信息组成查找关键字值,并和查找请求一起输出到计算读写模块,并根据送入查表功能模块的查找关键字和条目有效标识进行比对,当输入的条目有效标识有效时,对RAM中的查找条目依次进行比对;当查找条目有效且查找关键字匹配时,输出查表结果。RAM中的查找条目的数据结构参见图2所示,每个查表类型对应的数据库中包含m个查找条目或者还有若干空余比特,每个查找条目包括条目有效标识,关键字值和查表结果,不同查表类型对应的数据库包含的条目数不同,因为每次查找的关键字值和查表结果的位宽不同。
计算读写模块包含各次查找的基地址的配置和各次查找所取HASH结果位数的配置,各查表类型所取HASH结果位数对应的二进制数值最大值乘以各查表类型对应的并行查找次数就是该次查表的数据库大小。
计算读写模块有两个功能,一个功能是依次响应各查表功能模块的查找请求,根据各查找的关键字值进行HASH计算,然后按照各查找配置的所取HASH结果位数,取HASH计算结果的相应位数,然后加上该查找对应的基地址配置值,将最后的结果当做RAM地址进行RAM读取,并将读出的RAM数据送到各查找功能块,并输出条目有效标识到所有查表功能模块。另一个功能是响应条目配置模块对RAM的读写访问,用于对RAM中各数据库进行管理、配置。
条目配置模块的功能是对RAM进行读写配置和对配置各次查找的基地址和所取HASH结果位数。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (6)
1.一种基于HASH查找方式共享RAM的方法,其特征在于,包括以下步骤:
S1,获取各查表类型包含的查找条目的条目数和条目位宽,根据各查表类型的条目位宽,确定所需共享RAM位宽,共享RAM位宽不小于条目位宽最大值;
S2,根据S1中确定的共享RAM位宽以及各查表类型的条目数,计算出各查表类型对应的RAM深度,确定所需共享RAM深度;
S3,配置各查表类型在共享RAM中的基地址,所配置的基地址为共享RAM的任一地址;配置各查表类型所取HASH结果位数,所取HASH结果位数对应的二进制数值最大值不小于各查表类型对应的RAM深度;根据所取HASH结果位数确定各查表类型对应的共享RAM中的数据库的大小;
S4,进行共享RAM中的查找条目配置时,根据待配置的查找条目的关键字值进行HASH计算,根据该查找条目所属的查表类型的所取HASH结果位数对计算结果进行取值,加上查找条目所属查表类型的基地址,作为共享RAM中待写入条目的RAM地址;将待配置的查找条目的关键字值和对应的查表结果,配置到共享RAM中待写入条目的RAM地址,并配置该查找条目的条目有效标识为有效,具体包括:读出待写入条目的RAM地址对应的RAM数据,对读出的RAM数据中的查找条目从左到右依次分析,判断RAM数据中查找条目是否有效,若有效,检查关键字值是否和查找条目中的一致,如果一致,更新查找条目对应的查表结果;若不一致,跳过该查找条目,继续检查读出的RAM数据中的下一条查找条目;若无效,则将待配置的查找条目的关键字值和查表结果配置到共享RAM中的查找条目,并配置共享RAM中的查找条目的条目有效标识为有效。
2.如权利要求1所述的一种基于HASH查找方式共享RAM的方法,其特征在于:步骤S2具体包括以下步骤:
将共享RAM位宽分别除以各查表类型的条目位宽,并向下取整,得到各查表类型对应的并行查表次数;
将各查表类型的条目数,除以对应的并行查表次数,并按照二进制向上取整,得到各查表类型对应的RAM深度;
确定所需共享RAM深度,共享RAM深度不小于各次查表对应RAM深度的累加值。
3.如权利要求1所述的一种基于HASH查找方式共享RAM的方法,其特征在于:步骤S4之后还包括步骤S5:
接收查找请求时,根据查找请求的关键字值进行HASH计算,对计算结果再根据配置的查找条目所属查表类型的所取HASH结果位数进行取值,加上配置的查找条目所属查表类型的基地址作为共享RAM中待读出条目的RAM地址,并读出对应的RAM数据;对读出的RAM数据中所有查找条目从左到右依次分析,当查找条目的条目有效标识为有效时,将查找请求的关键字值和读出的查找条目中的关键字值进行比对,关键字值匹配时输出关键字值对应的查表结果;否则进行读出的RAM数据中下一查找条目的判断。
4.一种基于HASH查找方式共享RAM的***,其特征在于,包括:
RAM位宽计算模块,其用于获取各查表类型包含的查找条目的条目数和条目位宽,根据各查表类型的条目位宽,确定所需共享RAM位宽,共享RAM位宽不小于条目位宽最大值;
RAM深度计算模块,根据共享RAM位宽以及各查表类型的条目数,计算出各查表类型对应的RAM深度,确定所需共享RAM深度;
RAM配置模块,其用于配置各查表类型在共享RAM中的基地址,所配置的基地址为共享RAM的任一地址;配置各查表类型所取HASH结果位数,所取HASH结果位数对应的二进制数值最大值不小于各查表类型对应的RAM深度;根据所取HASH结果位数确定各查表类型对应的共享RAM中的数据库的大小;
查找条目配置模块,其用于:进行共享RAM中的查找条目配置时,根据待配置的查找条目的关键字值进行HASH计算,根据该查找条目所属的查表类型的所取HASH结果位数对计算结果进行取值,加上查找条目所属查表类型的基地址,作为共享RAM中待写入条目的RAM地址;将待配置的查找条目的关键字值和对应的查表结果,配置到共享RAM中待写入条目的RAM地址,并配置该查找条目的条目有效标识为有效,具体包括:读出待写入条目的RAM地址对应的RAM数据,对读出的RAM数据中的查找条目从左到右依次分析,判断RAM数据中查找条目是否有效,若有效,检查关键字值是否和查找条目中的一致,如果一致,更新查找条目对应的查表结果;若不一致,跳过该查找条目,继续检查读出的RAM数据中的下一条查找条目;若无效,则将待配置的查找条目的关键字值和查表结果配置到共享RAM中的查找条目,并配置共享RAM中的查找条目的条目有效标识为有效。
5.如权利要求4所述的一种基于HASH查找方式共享RAM的***,其特征在于:所述RAM深度计算模块具体用于:
将共享RAM位宽分别除以各查表类型的条目位宽,并向下取整,得到各查表类型对应的并行查表次数;
将各查表类型的条目数,除以对应的并行查表次数,并按照二进制向上取整,得到各查表类型对应的RAM深度;
确定所需共享RAM深度,共享RAM深度不小于各次查表对应RAM深度的累加值。
6.如权利要求4所述的一种基于HASH查找方式共享RAM的***,其特征在于:该***还包括查表功能模块和计算读写模块;
所述查表功能模块用于:接收到查找请求时,提取出查找请求的关键字值输出至计算读写模块;
所述计算读写模块用于:根据查找请求的关键字值进行HASH计算,对计算结果再根据配置的查找条目所属查表类型的所取HASH结果位数进行取值,加上配置的查找条目的基地址作为共享RAM中待读出条目的RAM地址,并读出对应的RAM数据输出至查表功能模块;
所述查表功能模块还用于:对读出的RAM数据中所有查找条目从左到右依次分析,当读出对应的查找条目的条目有效标识为有效时,将查找请求的关键字值和读出的查找条目中的关键字值进行比对,关键字值匹配时输出关键字值对应的查表结果;否则进行读出的RAM数据中下一查找条目的判断。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810842538.5A CN109039911B (zh) | 2018-07-27 | 2018-07-27 | 一种基于hash查找方式共享ram的方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810842538.5A CN109039911B (zh) | 2018-07-27 | 2018-07-27 | 一种基于hash查找方式共享ram的方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109039911A CN109039911A (zh) | 2018-12-18 |
CN109039911B true CN109039911B (zh) | 2021-02-26 |
Family
ID=64646036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810842538.5A Active CN109039911B (zh) | 2018-07-27 | 2018-07-27 | 一种基于hash查找方式共享ram的方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109039911B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114615196A (zh) * | 2022-03-24 | 2022-06-10 | 北京左江科技股份有限公司 | 一种高速精确匹配查找方法 |
CN117478626B (zh) * | 2023-12-27 | 2024-04-05 | 天津光电聚能通信股份有限公司 | 基于组相连缓存的快速匹配查找***、方法、设备及介质 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100355241C (zh) * | 2003-04-14 | 2007-12-12 | 华为技术有限公司 | 散列存储表表项位宽压缩的实现方法 |
CN1787477A (zh) * | 2004-12-09 | 2006-06-14 | 北京三星通信技术研究有限公司 | IPv6路由表的查找方法 |
CN100450100C (zh) * | 2006-08-29 | 2009-01-07 | 华为技术有限公司 | 一种路由方法和路由设备 |
CN101621502A (zh) * | 2008-06-30 | 2010-01-06 | 华为技术有限公司 | 存储、查找路由表的方法及装置 |
CN101827137B (zh) * | 2010-04-13 | 2013-01-30 | 西安邮电学院 | 一种基于哈希表和扩展存储器的高性能IPv6地址查找方法 |
CN102364463B (zh) * | 2011-09-19 | 2013-07-10 | 浪潮电子信息产业股份有限公司 | 一种基于Hash查找CAM的方法 |
US9620213B2 (en) * | 2013-12-27 | 2017-04-11 | Cavium, Inc. | Method and system for reconfigurable parallel lookups using multiple shared memories |
CN105224532B (zh) * | 2014-05-28 | 2019-11-08 | 腾讯科技(深圳)有限公司 | 数据处理方法及装置 |
US10169124B2 (en) * | 2014-12-16 | 2019-01-01 | Samsung Electronics Co., Ltd. | Unified object interface for memory and storage system |
CN104809179B (zh) * | 2015-04-16 | 2018-10-02 | 华为技术有限公司 | 访问哈希表的装置和方法 |
CN105608028A (zh) * | 2015-10-19 | 2016-05-25 | 陕西宝成航空仪表有限责任公司 | 基于emif接口和双口ram实现dsp与fpga高速通信方法 |
CN106446099A (zh) * | 2016-09-13 | 2017-02-22 | 国家超级计算深圳中心(深圳云计算中心) | 一种分布式云存储方法、***及其上传下载方法 |
-
2018
- 2018-07-27 CN CN201810842538.5A patent/CN109039911B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109039911A (zh) | 2018-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210367887A1 (en) | Flow classification apparatus, methods, and systems | |
US10496680B2 (en) | High-performance bloom filter array | |
US9984144B2 (en) | Efficient lookup of TCAM-like rules in RAM | |
CN109921995B (zh) | 一种配置地址表的方法、fpga和应用该fpga的网络设备 | |
US10515015B2 (en) | Hash table-based mask length computation for longest prefix match caching | |
WO2021135491A1 (zh) | 流表的匹配方法及装置 | |
US11652744B1 (en) | Multi-stage prefix matching enhancements | |
CN109039911B (zh) | 一种基于hash查找方式共享ram的方法及*** | |
CN111988231A (zh) | 一种掩码五元组规则匹配的方法及装置 | |
US20160142316A1 (en) | Apparatus and method for scalable and flexible table search in a network switch | |
CN113986560B (zh) | 一种在智能网卡/DPU内实现P4与OvS逻辑复用的方法 | |
WO2024067746A1 (zh) | 一种基于fpga实现的掩码匹配方法及*** | |
CN112187636B (zh) | Ecmp路由的存储方法及装置 | |
US20230041395A1 (en) | Method and Device for Processing Routing Table Entries | |
CN112667640B (zh) | 一种路由地址存储方法及装置 | |
CN104253754A (zh) | 一种acl快速匹配的方法和设备 | |
CN112818185A (zh) | 一种基于sram的最长前缀匹配硬件***查找的方法 | |
US20060198379A1 (en) | Prefix optimizations for a network search engine | |
CN115086221B (zh) | 一种报文处理方法、装置、转发设备和存储介质 | |
CN111163077A (zh) | 一种基于网络处理器实现多维连续掩码的***和方法 | |
CN112822112B (zh) | 一种路由地址存储方法及装置 | |
CN103368852A (zh) | 用于处理哈希冲突的方法和*** | |
CN113343034A (zh) | Ip查找方法、***及存储介质 | |
Lee et al. | Approaches for improving tuple space search-based table lookup | |
CN101822027A (zh) | 用于网际协议地址的高效cam查找的方法和设备 |
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 |