CN109189792A - 一种并行Hash查表架构和方法 - Google Patents

一种并行Hash查表架构和方法 Download PDF

Info

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
Application number
CN201811061917.7A
Other languages
English (en)
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.)
Tianjin Binhai New Area Information Technology Innovation Center
Tianjin Core Technology Co Ltd
Original Assignee
Tianjin Binhai New Area Information Technology Innovation Center
Tianjin Core Technology 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 Tianjin Binhai New Area Information Technology Innovation Center, Tianjin Core Technology Co Ltd filed Critical Tianjin Binhai New Area Information Technology Innovation Center
Priority to CN201811061917.7A priority Critical patent/CN109189792A/zh
Publication of CN109189792A publication Critical patent/CN109189792A/zh
Pending legal-status Critical Current

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函数是指把一个大范围映射到一个小范围的算法,该操作的目的是为了节省空间,使得数据容易保存。
在实现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数据,流水进行查表动作。
CN201811061917.7A 2018-09-12 2018-09-12 一种并行Hash查表架构和方法 Pending CN109189792A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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实现关键字快速查找并读表的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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