CN109189792A - 一种并行Hash查表架构和方法 - Google Patents
一种并行Hash查表架构和方法 Download PDFInfo
- Publication number
- CN109189792A CN109189792A CN201811061917.7A CN201811061917A CN109189792A CN 109189792 A CN109189792 A CN 109189792A CN 201811061917 A CN201811061917 A CN 201811061917A CN 109189792 A CN109189792 A CN 109189792A
- Authority
- CN
- China
- Prior art keywords
- hash
- ram
- look
- key
- key assignments
- 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.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种并行Hash查表架构及方法,包括:查表Hash键值KEY,根据需要确定bit位宽;n个Hash函数,各自选择不同的表达式;n个ram,各自独立,与Hash函数一一对应;Compare对比模块,同时完成n个ram查表结果和查表键值KEY的对比,并根据对比结果得到正确的查表内容;其中,每个Hash函数对应深度不同的ram。本发明能够有效的解决现有技术中查找性能差的问题,不再需要多次循环比对、再Hash计算,也不需要多次读取RAM空间,从而大大压缩查表的时间,提高了Hash查找的效率。
Description
技术领域
本发明属于数据
背景技术
实际工程设计中,经常会遇到对一个大范围的数据进行存储并查找相应内容,但是由于需要存储数据的不确定性以及存储空间的限制,不能保证预留足够大的存储体来存放所有数据。这时就需要考虑如何将一个大范围的数据映射到一个小范围存储中,并在使用时可以快速定位查找地址,而Hash函数正是实现这样操作的工具。实际中的Hash函数是指把一个大范围映射到一个小范围的算法,该操作的目的是为了节省空间,使得数据容易保存。
在实现Hash结构的一般方案中,往往会使用2倍于实际存储内容的一个ram空间,利用多个Hash函数解决表项查找过程中的冲突问题。
如图1所示,方案中展示了利用四个Hash函数的查表架构,该架构是目前比较通用的Hash查表方案架构。KEY是用于Hash的键值,首先KEY经过Hash0得到第一个地址,作为RAM的查表地址。读取对应地址数值和键值KEY做比较,如果比对成功则本次查表成功,否则使用Hash1再次进行计算,查表比对。依次类推,进行Hash2、Hash3的查找比对。
该方案实现Hash查找存储时,使用多个Hash函数对应一个存储空间,由于Hash冲突的原因,使得一个键值需要经过多次Hash计算和查找才能匹配成功。而所有的数据在一个存储空间,可供读取的接口只有一套,因此需要串行完成hash计算->读取->比较->再hash->再读取->……->比对成功(或失败)。该架构在时间效率上存在很大不足,限制整体查表的速率,并且存在查表时间不确定性,该问题在硬件ASIC设计中尤为突出。
如果第一次对比成功,该次查表完成,所用时间定为t。最坏的情况下,需要第四次查找对比后才能知道是否查表成功,需要4t的时间。平均查表时间在1.5t-2.5t之间,并且由于查表的不确定性,最终得到查表是否成功的时间也存在1t-4t的不确定。
目前在对时间要求较高的查找环境中,该方案这种不确定时间的串行查找比对方式显然不能满足设计需求。
发明内容
有鉴于此,本发明设计了一种并行Hash计算的Hash查找架构和方法,能够有效的解决上述查找性能差的问题,不再需要多次循环比对、再Hash计算,也不需要多次读取RAM空间,从而大大压缩查表的时间,提高了Hash查找的效率。
为达到上述目的,本发明的技术方案是这样实现的:
一种并行Hash查表架构,包括:
查表Hash键值KEY,根据需要确定bit位宽;
n个Hash函数,各自选择不同的表达式;
n个ram,各自独立,与Hash函数一一对应;
Compare对比模块,同时完成n个ram查表结果和查表键值KEY的对比,并根据对比结果得到正确的查表内容;
其中,每个Hash函数对应深度不同的ram。
优选的,用CRC多项式作为Hash函数,位宽较大的CRC多项式对应RAM深度较深的ram。
进一步的,所述n个RAM空间大小不一、依次递减,使得各RAM存储查表的概率依次递减。
优选的,所述n个RAM空间大小为等比递减。
本发明还提供了上述查表结构的使用方法,包括:
1)获得查表的键值KEY,分别送入n个Hash函数,并保存本次键值留作与结果对比;
2)每个Hash函数根据输入的键值,进行独立的Hash计算;
3)各自Hash计算结果分别作为RAM的查表地址,读取相应的RAM表项,同时获得n个表项内容;
4)将n个表项内容与保存的键值KEY分别做对比,选取其中比对成功的一组作为最终的查表结果,进行输出,完成本次的Hash查表。
进一步的,步骤2)中,各Hash计算时间相同,同时输出计算结果。
进一步的,步骤4)中,由Compare对比模块同时完成n个ram查表结果和查表键值KEY的对比。
进一步的,多个键值KEY同时在步骤1)-4)的不同环节运行,在前面键值KEY数据进行查表时进入新的查表键值KEY数据,流水进行查表动作。
与现有技术相比,本发明的有益效果为:
本发明在架构设计中将原来的一块共用RAM空间拆分成n个大小不同的RAM,每块RAM对应自己独特的Hash函数,相互之间无任何联系,保证了Hash之间的独立性和结果的随机性,在最终Hash查表效果上与传统的Hash查表一致。
通过RAM空间的拆分,使得原先一套查找接口被n个Hash共用的现象改为了每个Hash都有自己的RAM接口,相互之间互不影响,从而将n个Hash的查表动作由原先的n个过程缩减到了1个过程中共同完成。在保证Hash查表的效果基础上,大大提高了多Hash查表的效率。
多个RAM容量的设计不再是通常的大小相等,而是根据实际建表和查表过程中使用的频率进行确定,采用由前到后依次递减的设计规则。该设计的依据是由于Hash表的建立和查找过程中使用和比对的顺序也是由前到后,因此越是靠前的RAM使用的概率越大,所以越靠前的RAM使用较大的空间更有利于数据的存储和查找。该设计结构使得多Hash的效率和空间的使用率更高。
匹配多RAM输出结果,compare对比模块实现同时n个结果与键值KEY做比对,保证整体查表的吞吐量。
本发明所设计的Hash查表结构,用多路Hash查找不同RAM替代了原有的单路Hash查找、多次循环的方式,使得每个键值经由Hash查表的时间为一个固定数值,而不再是根据前面查找结果而定。该结构保证查表有固定延时使得Hash查表在硬件逻辑实现上更加简单,去掉了原先的延时不确定性。
附图说明
图1是现有技术中Hash查表结构示意图;
图2是本发明实施例的Hash查表结构示意图;
图3是本发明实施例的流水查表示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
1、Hash架构设计
本发明设计了一种并行Hash计算、多RAM存储空间、RAM等比大小、并行比对的Hash查找架构。
如图2所示,是本发明的架构设计。说明如下:
1)查表Hash键值KEY,根据需要确定bit位宽;
2)Hash函数0-(n-1),共n个,与ram一一对应,n个Hash函数需要选择不同的表达式,尽量减少各hash函数之间的关联性;
3)RAM共n个,各自独立,与前面的Hash函数一一对应。RAM设计成空间大小不一,保持等比的关系(或其他递减形式),使得各RAM存储查表的概率依次递减,更好地解决建表和查表时的冲突;
4)Compare对比模块,同时完成n个ram查表结果和查表键值KEY的对比,并根据对比结果从中得到正确的查表内容;
2、设计说明
RAM空间的划分:
使用Hash查表主要是为了解决大空间数据向有限存储空间映射的问题,并解决映射过程中的冲突。公认的研究结果表明,如果需要存储深度是M的数据,在实际使用2M深度RAM空间时冲突的概率最小。本发明也遵循该原则进行设计。
本发明设计的独特点在于将深度是2M的ram空间进行了拆分,而不再只有一个ram接口。拆分成n个大小不等的ram,每个ram有一套对应各自Hash的查表接口。其中,ram大小的划分采用了由大到小,等比递减的设计原则。
RAM | RAM0 | RAM1 | …… | RAMn-3 | RAMn-2 | RAMn-1 |
大小 | M | M/2 | …… | M/2<sup>n-3</sup> | M/2<sup>n-2</sup> | M/2<sup>n-2</sup> |
如上表所示,RAM0的大小是M,RAM1的大小是M/2,……,最后两RAM大小都是M/2n-2,最终使得所有RAM的大小之和为:M+M/2+……+M/2n-2+M/2n-2=2M。
本处各RAM深度的选取不一定需要遵循等比原则,也可以根据实际仿真建表、查表设计中各RAM的使用情况进行调整,整体的设计原则要求RAM深度划分与RAM表使用概率成正比,这将在实际查表中得到性能最优化的体现。
Hash函数的选择:
本发明选用了n个Hash函数实现ram地址的查找,尽量降低查找过程中的失败(n个hash都未找到正确的表项)。Hash函数的选择可以根据需要以及实际仿真效果选择。比如选用CRC多项式作为Hash函数,因为每个Hash函数对应深度不同的RAM,可以将CRC多项式也做顺序调整,使得位宽较大的对应RAM深度较深的。在硬件实现中,要保持各Hash函数计算时间尽量最短,并且所有Hash使用相同的时间完成,这是保证整体架构并行实现的前提。
Hash个数n以及存储空间2M的选择:
本发明设计了一个通用的高效Hash查表架构,可根据用户不同的需求确定架构中各参数的大小。
如前所述,当实际存储数据深度为M时,选择所有n个RAM的深度总和为2M时,此时Hash建表和查表的冲突概率最小。因此,M是设计中RAM允许存储的最大表项(RAM空间的利用率不高于50%)。
Hash查表中解决冲突的一个重要方法是使用更多的Hash函数,函数越多,计算出可供选择的地址越多,全部冲突(查表失败)的概率越小。但Hash函数越多,导致需要使用更多的逻辑资源去实现,因此需要综合考虑性能与资源的取舍问题。通过大量的仿真实验对比,当选取合适的Hash函数时,在M=8k的环境中,选取n=8比较合适,百万次建表过程无失败的现象。
3、计算过程
1)获得查表的键值KEY,分别送入n个Hash函数,并保存本次键值留作与结果对比;
2)每个Hash函数根据输入的键值,进行独立的Hash计算,保证各Hash计算时间相同,同时输出计算结果;
3)各自Hash计算结果分别作为RAM的查表地址,读取相应的RAM表项,同时获得n个表项内容;
4)将n个表项内容与保存的键值KEY分别做对比(n个对比同时进行),选取其中比对成功的一组作为最终的查表结果,进行输出,完成本次的Hash查表。
4、流水查表
由于本发明设计中不存在传统方案中查表时间不确定性,并且本架构中每部分功能相对明确,所以可以在前面数据进行查表时进入新的查表数据。也就是可以保证多个键值同时在本设计中的不同环节运行,流水进行查表动作,这将大大提高Hash查表的效率。如图3所示,KEY0首先输入,依次是KEY1、KEY2、KEY3,每个查表动作占据一个计算部分,前后错开、相互之间无影响。
本发明中存储空间采用了多RAM、深度递减的设计方法,不同于传统的1块或多块等大小RAM,更好地利用了不同位置RAM使用概率依次递减的规则;
本发明中的RAM递减规则不限于等比递减,还包括其他方式与使用概率相关的RAM大小设计方法;
本发明设计中可以将Hash查表计算的各个环节固定化,从而在硬件实现的每个时钟下都有固定的操作,实现查表的流水化过程。
本发明的技术关键点在于:
1、多RAM存储空间,RAM大小根据使用概率确定;
2、各RAM大小采用不对等的架构,突出各RAM的使用概率,更有利于进行建表和查表过程;
3、对同一键值,多Hash并行计算,使用计算结果并行查找各自RAM表,并行设计提高查表效率;
4、同一时刻对比查表结果和键值,省去了传统Hash中多次对比;
5、在硬件设计中可以将每部分动作分配到固定时钟周期下进行,从而使得整体查表时间是一个固定数值,方便硬件设计。
6、相对固定延迟的各步骤操作,便于实现流水查表。
以上描述了本发明的基本原理、主要特征和实施方案等信息,但是本发明不受上述实施过程的限制,在不脱离发明精神和范围的前提下,本发明还可以有各种变化和改进。因此,除非这种变化和改进脱离了本发明的范围,它们应该被看作包含在本发明中。
Claims (8)
1.一种并行Hash查表架构,其特征在于,包括:
查表Hash键值KEY,根据需要确定bit位宽;
n个Hash函数,各自选择不同的表达式;
n个ram,各自独立,与Hash函数一一对应;
Compare对比模块,同时完成n个ram查表结果和查表键值KEY的对比,并根据对比结果得到正确的查表内容;
其中,每个Hash函数对应深度不同的ram。
2.根据权利要求1所述的一种并行Hash查表架构,其特征在于,用CRC多项式作为Hash函数,位宽较大的CRC多项式对应RAM深度较深的ram。
3.根据权利要求1所述的一种并行Hash查表架构,其特征在于,所述n个RAM空间大小不一、依次递减,使得各RAM存储查表的概率依次递减。
4.根据权利要求3所述的一种并行Hash查表架构,其特征在于,所述n个RAM空间大小为等比递减。
5.根据权利要求1-4任一项所述的并行Hash查表结构的使用方法,其特征在于,包括:
1)获得查表的键值KEY,分别送入n个Hash函数,并保存本次键值留作与结果对比;
2)每个Hash函数根据输入的键值,进行独立的Hash计算;
3)各自Hash计算结果分别作为RAM的查表地址,读取相应的RAM表项,同时获得n个表项内容;
4)将n个表项内容与保存的键值KEY分别做对比,选取其中比对成功的一组作为最终的查表结果,进行输出,完成本次的Hash查表。
6.根据权利要求5所述的并行Hash查表结构的使用方法,其特征在于,步骤2)中,各Hash计算时间相同,同时输出数据计算结果。
7.根据权利要求5所述的并行Hash查表结构的使用方法,其特征在于,步骤4)中,由Compare对比模块同时完成n个ram查表结果和查表键值KEY的对比。
8.根据权利要求5所述的并行Hash查表结构的使用方法,其特征在于,多个键值KEY同时在步骤1)-4)的不同环节运行,在前面键值KEY数据进行查表时进入新的查表键值KEY数据,流水进行查表动作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811061917.7A CN109189792A (zh) | 2018-09-12 | 2018-09-12 | 一种并行Hash查表架构和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811061917.7A CN109189792A (zh) | 2018-09-12 | 2018-09-12 | 一种并行Hash查表架构和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109189792A true CN109189792A (zh) | 2019-01-11 |
Family
ID=64910329
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811061917.7A Pending CN109189792A (zh) | 2018-09-12 | 2018-09-12 | 一种并行Hash查表架构和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109189792A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110086892A (zh) * | 2019-03-29 | 2019-08-02 | 郑州信大捷安信息技术股份有限公司 | 一种基于fpga的snat系统及方法 |
CN111224877A (zh) * | 2019-12-10 | 2020-06-02 | 中国航空工业集团公司西安航空计算技术研究所 | 一种afdx交换机的vl查询方法和装置 |
CN112769704A (zh) * | 2021-02-09 | 2021-05-07 | 芯河半导体科技(无锡)有限公司 | 一种基于hash表的高速可扩展IP路由查找硬件装置 |
CN114615196A (zh) * | 2022-03-24 | 2022-06-10 | 北京左江科技股份有限公司 | 一种高速精确匹配查找方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080052488A1 (en) * | 2006-05-10 | 2008-02-28 | International Business Machines Corporation | Method for a Hash Table Lookup and Processor Cache |
CN101604337A (zh) * | 2009-07-13 | 2009-12-16 | 中兴通讯股份有限公司 | 一种哈希表项存储、查找装置及方法 |
CN101692651A (zh) * | 2009-09-27 | 2010-04-07 | 中兴通讯股份有限公司 | 一种哈希查找表的方法和装置 |
CN102194002A (zh) * | 2011-05-25 | 2011-09-21 | 中兴通讯股份有限公司 | 哈希表的表项添加、删除、查找方法及哈希表存储装置 |
CN102402611A (zh) * | 2011-12-12 | 2012-04-04 | 盛科网络(苏州)有限公司 | 一种用tcam实现关键字快速查找并读表的方法 |
-
2018
- 2018-09-12 CN CN201811061917.7A patent/CN109189792A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080052488A1 (en) * | 2006-05-10 | 2008-02-28 | International Business Machines Corporation | Method for a Hash Table Lookup and Processor Cache |
CN101604337A (zh) * | 2009-07-13 | 2009-12-16 | 中兴通讯股份有限公司 | 一种哈希表项存储、查找装置及方法 |
CN101692651A (zh) * | 2009-09-27 | 2010-04-07 | 中兴通讯股份有限公司 | 一种哈希查找表的方法和装置 |
CN102194002A (zh) * | 2011-05-25 | 2011-09-21 | 中兴通讯股份有限公司 | 哈希表的表项添加、删除、查找方法及哈希表存储装置 |
CN102402611A (zh) * | 2011-12-12 | 2012-04-04 | 盛科网络(苏州)有限公司 | 一种用tcam实现关键字快速查找并读表的方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110086892A (zh) * | 2019-03-29 | 2019-08-02 | 郑州信大捷安信息技术股份有限公司 | 一种基于fpga的snat系统及方法 |
CN110086892B (zh) * | 2019-03-29 | 2022-04-15 | 郑州信大捷安信息技术股份有限公司 | 一种基于fpga的snat系统及方法 |
CN111224877A (zh) * | 2019-12-10 | 2020-06-02 | 中国航空工业集团公司西安航空计算技术研究所 | 一种afdx交换机的vl查询方法和装置 |
CN112769704A (zh) * | 2021-02-09 | 2021-05-07 | 芯河半导体科技(无锡)有限公司 | 一种基于hash表的高速可扩展IP路由查找硬件装置 |
CN114615196A (zh) * | 2022-03-24 | 2022-06-10 | 北京左江科技股份有限公司 | 一种高速精确匹配查找方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109189792A (zh) | 一种并行Hash查表架构和方法 | |
US10831758B2 (en) | Partitioning and repartitioning for data parallel operations | |
US5878409A (en) | Method and apparatus for implementing partial declustering in a parallel database system | |
Chikhi et al. | Data structures to represent a set of k-long DNA sequences | |
US6732110B2 (en) | Estimation of column cardinality in a partitioned relational database | |
US9195701B2 (en) | System and method for flexible distributed massively parallel processing (MPP) database | |
CN101604337B (zh) | 一种哈希表项存储、查找装置及方法 | |
US20110047144A1 (en) | System, method, and apparatus for parallelizing query optimization | |
US7054994B2 (en) | Multiple-RAM CAM device and method therefor | |
CN112015741A (zh) | 一种海量数据的分库分表存储方法与装置 | |
CN111801665A (zh) | 用于大数据应用的分层局部敏感哈希(lsh)分区索引 | |
Dabhi et al. | Extensive survey on hierarchical clustering methods in data mining | |
CN104809161A (zh) | 一种对稀疏矩阵进行压缩和查询的方法及系统 | |
CN104834709A (zh) | 一种基于负载均衡的并行余弦模式挖掘方法 | |
CN106156142A (zh) | 一种文本聚类的处理方法、服务器及系统 | |
US20150012563A1 (en) | Data mining using associative matrices | |
CN110297836B (zh) | 基于压缩位图方式的用户标签存储方法和检索方法 | |
CN104123354A (zh) | 一种基于MySQL数据库的查询优化方法 | |
Beran | Decomposable bulk synchronous parallel computers | |
Torshiz et al. | Enhanced schemes for data fragmentation, allocation, and replication in Distributed Database Systems | |
Gonzaga de Oliveira et al. | Finding a starting vertex for the reverse Cuthill-McKee method for bandwidth reduction: a comparative analysis using asymmetric matrices | |
CN113505825B (zh) | 一种图计算装置 | |
Guo et al. | Multi-objective optimal combination queries | |
Cary | Toward optimal ϵ-approximate nearest neighbor algorithms | |
Roh et al. | Efficient construction of histograms for multidimensional data using quad-trees |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190111 |
|
RJ01 | Rejection of invention patent application after publication |