[发明专利]一种基于完美哈希算法的FPGA训练及查询电路实现方法有效
申请号: | 201710508277.9 | 申请日: | 2017-06-28 |
公开(公告)号: | CN107330047B | 公开(公告)日: | 2020-06-30 |
发明(设计)人: | 邓俊杰 | 申请(专利权)人: | 华信塞姆(成都)科技有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22 |
代理公司: | 成都君合集专利代理事务所(普通合伙) 51228 | 代理人: | 张鸣洁 |
地址: | 610041 四川省成都市*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于完美哈希算法的FPGA训练及查询电路实现方法,包括以下步骤:创建静态键值表;将静态键值与真随机数作一阶哈希计算映射到一阶哈希表;将一阶哈希表中冲突于同一槽位的静态键值组成一个冲突组复制到键值重排表中相邻位置;将冲突组进行二阶哈希计算,得到冲突组映射地址索引值互异的二阶哈希表;查询静态键值的序号时,在所述一阶哈希表和/或二阶哈希表,根据静态键值对应的地址索引值,读取静态键值的序号,通过序号查询可以输出哈希索引号。由于FPGA强大流水线计算能力,冲突组映射到二阶哈希表空间大小,初始设置为不小于冲突数的最小的2的整数次幂,通过尝试逐渐放宽,这将大大节约二阶哈希表的容量。 | ||
搜索关键词: | 一种 基于 完美 算法 fpga 训练 查询 电路 实现 方法 | ||
【主权项】:
一种基于完美哈希算法的FPGA训练及查询电路实现方法,其特征在于,包括以下步骤:S1)将静态键值和静态键值的哈希索引值输入静态键值表;S2)将静态键值与输入的一个真随机数作一阶哈希计算得到一阶哈希表,所述一阶哈希表的表项包括:地址/索引:在对静态键值重新排列阶段,表示静态键值在生成的键值重排表的基地址;在二阶哈希训练完成后即一阶哈希表中的冲突组解决后,如果vld=1,col=0,表示静态键值的序号;如果vld=1,col=1,表示静态键值的序号存放在二阶哈希训练生成的二阶哈希表中的基地址;vld:1比特,有效指示,vld=1时表示至少有一个键值经过一阶哈希运算映射到这个表项上;col:1比特,当vld=1,col=1的时候表示有几个键值冲突到此表项上;当vld=1,col=0时表示只有一个键值映射到这个表项上;col_cnt:冲突组冲突计数,每当有一个键值被映射到这个槽位,则将此计数值加1,每当有一个冲突在此槽位上的键值被复制进入键值重排表,则计数值减1;col_rec:冲突组冲突数记录,每当有一个键值被映射到这个冲突组的槽位,则将此计数值加1;函数池索引:如果一阶哈希表中此槽位没有冲突,则为空,如果存在冲突则存放二阶哈希训练过程中的哈希函数的索引;CRC size:映射到这个槽位的所有键值在进行二阶哈希时,采用CRC本原多项式的长度;S3)读取静态键值表的每一个静态键值并查找一阶哈希表,将冲突于同一槽位的静态键值复制到键值重排表,使在一阶哈希表中冲突于同一槽位的静态键值在键值重排表中的位置相邻;S4)遍历查询一阶哈希表,根据一阶哈希表中的冲突信息将冲突到一阶哈希表中相同槽位的所有键值从键值重排表中读取出来,这些键值对应为一阶哈希表的一个冲突组,进行二阶哈希计算,使所述冲突组映射到二阶哈希表中不同的地址索引值;S5)再次遍历原始键值表,将某一键值keyi进行一阶哈希计算,其中i为自然数,计算结果对应一阶哈希表中的一个地址,如果此地址的表项显示col=0,则查询下一个原始键值keyi+1,否则,结合一阶哈希表中的信息进行二阶哈希计算,计算结果为其在二阶哈希表中的地址,将i填入二阶哈希表的表项,然后查询下一个原始键值keyi+1;S6)查询静态键值的序号或地址索引时,在所述一阶哈希表和/或二阶哈希表,查找静态键值的序号,根据序号读取原始键值表的原始键值与哈希索引值,输入查询的键值与原始键值对比,如果相等,则输出哈希索引值;否则,查询失败。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华信塞姆(成都)科技有限公司,未经华信塞姆(成都)科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201710508277.9/,转载请声明来源钻瓜专利网。
- 上一篇:一种智慧旅游综合服务系统
- 下一篇:一种共轴对转电吊扇