CN106708438A - 降低Hash冲突概率的方法及装置 - Google Patents
降低Hash冲突概率的方法及装置 Download PDFInfo
- Publication number
- CN106708438A CN106708438A CN201611170588.0A CN201611170588A CN106708438A CN 106708438 A CN106708438 A CN 106708438A CN 201611170588 A CN201611170588 A CN 201611170588A CN 106708438 A CN106708438 A CN 106708438A
- Authority
- CN
- China
- Prior art keywords
- hash
- storage
- divided
- memory
- reduction
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明揭示了一种降低Hash冲突概率的方法,通过将一块物理存储器分成多块,每一块存储器使用不同的Hash算法进行Hash运算,或者对同一块物理存储器采用不同的Hash算法进行多次Hash运算,得到多个hash值对应的链表入口,然后再用Hash算法输入的key与存储器存储条目内的数据进行一一比对,为当前需要存储的数据找到一个空的存储条目。本发明还揭示了一种降低Hash冲突概率的装置。本发明在不扩大物理存储器的前提下,有效的减少冲突概率。
Description
技术领域
本发明涉及计算机网络技术领域,尤其是涉及一种降低哈希(Hash)冲突概率的方法及装置。
背景技术
哈希(Hash)表是根据关键值(key)而直接进行访问的数据结构,它通过把关键码值映射到表项中一个位置(index)来存储,以加快数据查找的速度。其中,此映射函数叫做哈希函数(f),而存放记录的数组便是哈希表,哈希表的数学表达式为:index=f(key)。在网络通信领域以路由查找为例,哈希函数输入值(key)的有效范围是整个地址空间,哈希函数输出值(Index)有效范围是系统支持该表项的最大规格。显然,输出值的有效范围远远小于输入值的有效范围,在这个前提下,无论怎么去构造哈希函数(f),都不可避免会出现key1≠key2,而f(key1)=f(key2)的情况,此情况便为哈希冲突。
现有技术中,可根据存储数据的不同来选择不同的Hash函数,以降低冲突概率。但是该方式需要根据不同的数据模型来选择,不够灵活。还可针对同一Hash值入口,增加该入口下所挂载链表的深度,即扩充表项空间。除上述两种方式外,常用的解决哈希冲突的方法为“建立公共溢出区”,此方法将发生哈希冲突的数据存放于TCAM(三态可寻址寄存器)里面,然而,上述方法虽然可在一定程度避免哈希冲突的发生,但由于TCAM空间有限,且成本高昂,如果哈希冲突率高,而TCAM空间不足,那么会导致冲突的表项无处存放,额外增设TCAM也势必提高整个设备的成本。
发明内容
本发明的目的在于克服现有技术的缺陷,提供一种降低Hash冲突概率的方法及装置,以实现在不扩大物理存储器(Memory)的前提下,有效的减少冲突概率。
为实现上述目的,本发明提出如下技术方案:一种降低Hash冲突概率的方法,所述方法包括:将一块物理存储器分成多块,每一块存储器使用一个Hash算法进行Hash运算,得到多个hash值对应的链表入口,然后再用Hash算法输入的key与存储器存储条目内的数据进行一一比对,为当前需要存储的数据找到一个空的存储条目,其中,每块存储器使用的Hash算法均不相同,且分成后的每块存储器的存储深度小于原存储器。
优选地,所述Hash算法用到的Hash函数为本原多项式。
优选地,分成的每块存储器的存储深度均等或不均等。
本发明还提出了另外一种技术方案:一种降低Hash冲突概率的方法,所述方法包括:将一块物理存储器从逻辑上分成多块,每块存储器应用一个Hash算法进行Hash运算,得到多个hash值对应的链表入口,然后再用Hash算法输入的key与存储器存储条目内的数据进行一一比对,为当前需要存储的数据找到一个空的存储条目,其中,每块存储器使用的Hash算法均不相同,且分成后的每块存储器的存储深度与原存储器保持一致。
本发明还提出了另外一种技术方案:一种降低Hash冲突概率的装置,所述装置包括:分块模块、Hash运算模块和比对模块,所述分块模块用于将一块物理存储器分成多块,分成后的每块存储器对应一个所述Hash运算模块;所述Hash运算模块用于对其对应的存储器使用一个Hash算法进行Hash运算,得到多个hash值对应的链表入口;所述比对模块用于用Hash算法输入的key与存储器存储条目内的数据相一一比对,为当前需要存储的数据找到一个空的存储条目,其中,所述Hash运算模块之间使用的Hash算法均不相同,且由所述分块模块分成的存储器的存储深度小于或等于原存储器的深度。
优选地,所述分块模块将一块物理存储器分成多块存储深度均等或不均等的存储器。
与现有技术不同,本发明通过将一块存储器分成多块,每块使用不同的Hash算法进行运算,在不扩大物理存储器(Memory)的前提下,有效的减少冲突概率。
附图说明
图1是本发明实施例1降低Hash冲突概率的方法的流程示意图;
图2是本发明实施例1降低Hash冲突概率的方法的原理示意图;
图3是本发明实施例2降低Hash冲突概率的方法的流程示意图;
图4是本发明实施例2降低Hash冲突概率的方法的原理示意图;
图5是本发明降低Hash冲突概率的装置的模块示意图。
具体实施方式
下面将结合本发明的附图,对本发明实施例的技术方案进行清楚、完整的描述。
本发明所揭示的一种降低Hash冲突概率的方法及装置,通过对同一个物理存储器(Memory)进行多次逻辑上的hash运算,从而在Memory带宽允许的前提下,降低hash表的冲突概率。本发明为降低hash表冲突概率,提出了两个技术方案,即实施例1和实施例2,下面将对这两个实施例进行具体描述。
结合图1和图2所示,本发明实施例1所揭示的一种降低Hash冲突概率的方法,包括以下步骤:
步骤1,将一块物理存储器从逻辑上分成多块,分成后的每块存储器的存储深度小于原存储器的存储深度。
比如一块物理上32K深度的物理Memory,可以从逻辑上从上至下划分成四块8K的Memory,即将一块物理Memory分成了四块,每块的存储深度是均等的,当然分成的多块存储器的存储深度也可以是不均等的。
步骤2,每一块存储器使用一个Hash算法进行Hash运算,得到多个hash值对应的链表入口,每块存储器使用的Hash算法均不相同。
即每块存储器采用与其他存储器不同的Hash算法进行运算,如上述分成的四块Memory,为描述方便,可以标记为Memory1、Memory2、Memory3、Memory4,每块采用不同的Hash函数来计算,如对于当前需要存储的数据,Memory1、Memory2、Memory3和Memory4分别采用各自对应的Hash函数计算得到一个hash值。
优选地,本实施例中,每块存储器采用的Hash函数选用本原多项式,每块存储器之间的采用的本原多项式是不同的且是互质的。如每块逻辑的Memory中对应使用x13+x8+x6+x+1、x13+x7+x6+x+1、x13+x5+x2+x+1、x13+x4+x3+x+1这几个不同的本原多项式做Hash运算,即Memory1可对应采用x13+x8+x6+x+1,Memory2可对应采用x13+x7+x6+x+1,Memory3可对应采用x13+x5+x2+x+1,Memory4可对应采用x13+x4+x3+x+1,计算得到不同的Hash值。由于本原多项式相互之间是互质的,能够很好的平衡各个逻辑Memory之间的Hash算法。
同样地,这里的Hash函数也可优选使用本原多项式。
步骤3,将Hash算法输入的key与存储器存储条目内的数据进行一一比对,为当前需要存储的数据找到一个空的存储条目。
即判断链表入口对应的存储条目中是否已存有数据,如果没有,则该条目为空的,表明可以存储数据,此时可将当前需要存储的数据存储到该存储条目中。
这样,本发明实施例1产生的Hash冲突概率相当于用多块物理Memory所得到的冲突概率。
结合图3和图4所示,本发明实施例2所揭示的一种降低Hash冲突概率的方法,包括以下步骤:
步骤1,将一块物理存储器从逻辑上分成多块,分成后的每块存储器的存储深度与原存储器的存储深度保持一致,每块存储器对应的Hash算法不同。
比如一块物理上32K深度的物理Memory,可以从逻辑上分成四块32K的Memory,为描述方便,可以标记为Memory1、Memory2、Memory3、Memory4。即将一块物理Memory从逻辑上分成了四块,每块的存储深度是均等的,每块物理Memory对应一个Hash算法,每块物理Memory之间Hash算法互不相同。如Memory1对应Hash1,Memory2对应Hash2,Memory3对应Hash3,Memory4对应Hash4。
步骤2,每一块存储器使用一个Hash算法进行Hash运算,得到一个hash值对应的链表入口,每块存储器使用的Hash算法均不相同。
即将原存储器采用不同的Hash算法进行多次Hash运算,如上述分成的四块Memory,每块采用不同的Hash函数来计算,如对于当前需要存储的数据,Memory1、Memory2、Memory3和Memory4分别采用各自对应的Hash函数计算得到一个hash值,每个hash值对应hash表的一个链表入口。
优选地,本实施例中,存储器采用的Hash函数选用本原多项式,且采用的多个本原多项式是不同的且是互质的。如将原始存储器使用x13+x8+x6+x+1、x13+x7+x6+x+1、x13+x5+x2+x+1、x13+x4+x3+x+1这几个不同的本原多项式做4次Hash运算,计算得到不同的Hash值。由于本原多项式相互之间是互质的,能够很好的平衡各个逻辑Memory之间的Hash算法。
步骤3,将Hash算法输入的key与存储器存储条目内的数据进行一一比对,为当前需要存储的数据找到一个空的存储条目。
即判断链表入口对应的存储条目中是否已存有数据,如果没有,则该条目为空的,表明可以存储数据,此时可将当前需要存储的数据存储到该存储条目中。理论上只要对同一物理Memory应用多次不同的hash算法,总是能够为当前需要存储的数据找到一个空的条目,从而能有效降低hash冲突发生概率。
这样,本发明实施例1和实施例2产生的Hash冲突概率相当于用多块物理Memory所得到的冲突概率。
对应的,结合图5所示,本发明所揭示的一种降低Hash冲突概率的装置,包括:
分块模块,用于将一块物理存储器分成多块,分成的存储器的存储深度小于或等于原存储器的深度。
如上述将一块物理上32K深度的物理Memory,从上至下划分成四块8K的Memory,当然,分成的多块存储器的存储深度也可以是不均等的。或者将一块物理上32K深度的物理Memory从逻辑上分为四块32K深度的物理Memory。
Hash运算模块,用于对其对应的存储器使用一个Hash算法进行Hash运算,得到多个hash值对应的链表入口。分成后的每块存储器对应一个Hash运算模块,且Hash运算模块之间使用的Hash算法均不相同。
优选地,Hash运算模块采用的Hash函数优选为本原多项式。
比对模块,用于将Hash算法输入的key与存储器存储条目内的数据相一一比对,为当前需要存储的数据找到一个空的存储条目。
每个模块的具体实现原理可参照上述方法中的具体描述,这里不再赘述。
本发明的技术内容及技术特征已揭示如上,然而熟悉本领域的技术人员仍可能基于本发明的教示及揭示而作种种不背离本发明精神的替换及修饰,因此,本发明保护范围应不限于实施例所揭示的内容,而应包括各种不背离本发明的替换及修饰,并为本专利申请权利要求所涵盖。
Claims (10)
1.一种降低Hash冲突概率的方法,其特征在于,所述方法包括:将一块物理存储器分成多块,每一块存储器使用一个Hash算法进行Hash运算,得到多个hash值对应的链表入口,然后再用Hash算法输入的key与存储器存储条目内的数据进行一一比对,为当前需要存储的数据找到一个空的存储条目,其中,每块存储器使用的Hash算法均不相同,且分成后的每块存储器的存储深度小于原存储器。
2.根据权利要求1所述的降低Hash冲突概率的方法,其特征在于,所述Hash算法用到的Hash函数为本原多项式。
3.根据权利要求1所述的降低Hash冲突概率的方法,其特征在于,分成的每块存储器的存储深度均等。
4.根据权利要求1所述的降低Hash冲突概率的方法,其特征在于,分成的每块存储器的存储深度不均等。
5.一种降低Hash冲突概率的方法,其特征在于,所述方法包括:将一块物理存储器从逻辑上分成多块,每块存储器应用一个Hash算法进行Hash运算,得到多个hash值对应的链表入口,然后再用Hash算法输入的key与存储器存储条目内的数据进行一一比对,为当前需要存储的数据找到一个空的存储条目,其中,每块存储器使用的Hash算法均不相同,且分成后的每块存储器的存储深度与原存储器保持一致。
6.根据权利要求5所述的降低Hash冲突概率的方法,其特征在于,所述Hash算法用到的Hash函数为本原多项式。
7.一种降低Hash冲突概率的装置,其特征在于,所述装置包括:分块模块、Hash运算模块和比对模块,所述分块模块用于将一块物理存储器分成多块,分成后的每块存储器对应一个所述Hash运算模块;所述Hash运算模块用于对其对应的存储器使用一个Hash算法进行Hash运算,得到多个hash值对应的链表入口;所述比对模块用于将所述再用Hash算法输入的key与存储器存储条目内的数据相一一比对,为当前需要存储的数据找到一个空的存储条目,其中,所述Hash运算模块之间使用的Hash算法均不相同,且由所述分块模块分成的存储器的存储深度小于或等于原存储器的深度。
8.根据权利要求7所述的降低Hash冲突概率的装置,其特征在于,所述Hash运算模块之间使用的Hash函数为不同的且互质的本原多项式。
9.根据权利要求7所述的降低Hash冲突概率的装置,其特征在于,所述分块模块将一块物理存储器分成多块存储深度均等的存储器。
10.根据权利要求7所述的降低Hash冲突概率的装置,其特征在于,所述分块模块将一块物理存储器分成多块存储深度不均等的存储器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611170588.0A CN106708438A (zh) | 2016-12-16 | 2016-12-16 | 降低Hash冲突概率的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611170588.0A CN106708438A (zh) | 2016-12-16 | 2016-12-16 | 降低Hash冲突概率的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106708438A true CN106708438A (zh) | 2017-05-24 |
Family
ID=58939075
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611170588.0A Pending CN106708438A (zh) | 2016-12-16 | 2016-12-16 | 降低Hash冲突概率的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106708438A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109656468A (zh) * | 2017-10-11 | 2019-04-19 | 深圳市中兴微电子技术有限公司 | 一种实现数据存储的方法及装置 |
CN109934015A (zh) * | 2019-02-19 | 2019-06-25 | 上海悠钲网络科技有限公司 | 区块数据增信方法、区块链节点及存储介质 |
CN110019407A (zh) * | 2017-12-29 | 2019-07-16 | 北京金风科创风电设备有限公司 | 风电场中枚举数据的处理方法、装置、设备和存储介质 |
CN110086892A (zh) * | 2019-03-29 | 2019-08-02 | 郑州信大捷安信息技术股份有限公司 | 一种基于fpga的snat系统及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101034412A (zh) * | 2007-04-02 | 2007-09-12 | 华为技术有限公司 | 一种信息存储的方法、信息查找的方法及引擎装置 |
CN102880724A (zh) * | 2012-10-23 | 2013-01-16 | 盛科网络(苏州)有限公司 | 处理哈希冲突的方法及系统 |
CN103577564A (zh) * | 2013-10-25 | 2014-02-12 | 盛科网络(苏州)有限公司 | 通过软件搬移降低hash冲突的方法及装置 |
CN105893373A (zh) * | 2014-12-04 | 2016-08-24 | 北京捷易通科技有限公司 | 一种减少哈希冲突概率的方法及装置 |
-
2016
- 2016-12-16 CN CN201611170588.0A patent/CN106708438A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101034412A (zh) * | 2007-04-02 | 2007-09-12 | 华为技术有限公司 | 一种信息存储的方法、信息查找的方法及引擎装置 |
CN102880724A (zh) * | 2012-10-23 | 2013-01-16 | 盛科网络(苏州)有限公司 | 处理哈希冲突的方法及系统 |
CN103577564A (zh) * | 2013-10-25 | 2014-02-12 | 盛科网络(苏州)有限公司 | 通过软件搬移降低hash冲突的方法及装置 |
CN105893373A (zh) * | 2014-12-04 | 2016-08-24 | 北京捷易通科技有限公司 | 一种减少哈希冲突概率的方法及装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109656468A (zh) * | 2017-10-11 | 2019-04-19 | 深圳市中兴微电子技术有限公司 | 一种实现数据存储的方法及装置 |
CN109656468B (zh) * | 2017-10-11 | 2022-05-27 | 深圳市中兴微电子技术有限公司 | 一种实现数据存储的方法及装置 |
CN110019407A (zh) * | 2017-12-29 | 2019-07-16 | 北京金风科创风电设备有限公司 | 风电场中枚举数据的处理方法、装置、设备和存储介质 |
CN110019407B (zh) * | 2017-12-29 | 2021-07-13 | 北京金风科创风电设备有限公司 | 风电场中枚举数据的处理方法、装置、设备和存储介质 |
CN109934015A (zh) * | 2019-02-19 | 2019-06-25 | 上海悠钲网络科技有限公司 | 区块数据增信方法、区块链节点及存储介质 |
CN110086892A (zh) * | 2019-03-29 | 2019-08-02 | 郑州信大捷安信息技术股份有限公司 | 一种基于fpga的snat系统及方法 |
CN110086892B (zh) * | 2019-03-29 | 2022-04-15 | 郑州信大捷安信息技术股份有限公司 | 一种基于fpga的snat系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106708438A (zh) | 降低Hash冲突概率的方法及装置 | |
CN103425725B (zh) | 散列冲突降低系统 | |
US9627063B2 (en) | Ternary content addressable memory utilizing common masks and hash lookups | |
EP2560327B1 (en) | Routing table establishment method and device | |
CN105511801B (zh) | 数据存储的方法和装置 | |
CN108287840B (zh) | 一种基于矩阵哈希的数据存储和查询方法 | |
CN108875064B (zh) | 基于FPGA的OpenFlow多维数据匹配查找方法 | |
CN101827137A (zh) | 一种基于哈希表和扩展存储器的高性能IPv6地址查找方法 | |
CN101655861A (zh) | 基于双计数布鲁姆过滤器的哈希方法和哈希装置 | |
US6725216B2 (en) | Partitioning search key thereby distributing table across multiple non-contiguous memory segments, memory banks or memory modules | |
EP3280104B1 (en) | Ip routing lookup | |
CN103324713B (zh) | 多级服务器中的数据处理方法、装置和数据处理系统 | |
EP3657740A1 (en) | Message forwarding | |
US9294390B2 (en) | Hash table storage and search methods and devices | |
US9672239B1 (en) | Efficient content addressable memory (CAM) architecture | |
US20090282167A1 (en) | Method and apparatus for bridging | |
CN105515997B (zh) | 基于bf_tcam实现零范围扩张的高效范围匹配方法 | |
JP2017188094A5 (ja) | メモリモジュールの重複メモリ除去方法、及びそのためのdramメモリモジュール | |
CN104468361A (zh) | 带有优先级的tcam储存和查找方法及装置 | |
CN108255912A (zh) | 一种表项数据存储、查询方法及其装置 | |
CN115695014A (zh) | 访问控制列表构建和数据报文处理方法、装置、系统 | |
CN108664518B (zh) | 一种实现查表处理的方法及装置 | |
KR20150128553A (ko) | 하이브리드데이터베이스 및 하이브리드데이터베이스에서 테이블을 관리하는 방법 | |
CN104253754A (zh) | 一种acl快速匹配的方法和设备 | |
CN109800228A (zh) | 一种高效快速解决hash冲突的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170524 |
|
RJ01 | Rejection of invention patent application after publication |