CN106528670A - 一种减少Hash查找冲突的方法 - Google Patents
一种减少Hash查找冲突的方法 Download PDFInfo
- Publication number
- CN106528670A CN106528670A CN201610928529.9A CN201610928529A CN106528670A CN 106528670 A CN106528670 A CN 106528670A CN 201610928529 A CN201610928529 A CN 201610928529A CN 106528670 A CN106528670 A CN 106528670A
- Authority
- CN
- China
- Prior art keywords
- hash
- data
- pin
- fifo
- storehouse
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种减少Hash查找冲突的方法,包括散列记忆模块,在散列记忆模块上进行查找冲突的方法包括选择散列算法的引脚(0)产生的地址函数做为随机存取存储器地址,判断先入先出的堆栈深度是否达到一个临界值,如果达到,则将数据从堆栈中取出并重新进入散列算法的引脚(1),否则进入散列算法的引脚(4),当前密钥数据根据散列算法的引脚(1)重新产生地址函数做为随机存取存储器的第二个地址函数,并从堆栈中取出当前密钥数据,重新进入散列算法的引脚(1)。本发明通过动态调节Hash个数来有效减少Hash冲突,同时又可以很好的满足芯片的网络带宽要求。
Description
技术领域
本发明涉及以太网技术领域,尤其涉及一种减少Hash查找冲突的方法。
背景技术
在网络芯片中经常会用到数据反查地址的功能,即给一个密钥数据(以下简称key)得到随机存储器(random access memory,以下简称RAM)中存储这个key的地址,请参阅图1所示。实现这个功能,通常有两种做法,一种是为此定制的三态内容寻址存储器(ternary content addressable memory,以下简称TCAM),另一种为用散列算法(以下称为hash算法)。Hash算法与TCAM相比拥有更少的资源,但是却会带来地址冲突现象。
其中,hash算法将一个较长的二进制密钥数据映射成RAM的地址函数(以下简称index),并从RAM中读取对应地址的数据,这个数据如果与key相匹配,那么表明这个hash算法得到的index是与这个Key相匹配的。但是因为key的数据位宽比index要长,因此会有多条key编码出同一个index,从而产生了冲突现象。由于RAM读写带宽的原因,因此为了降低冲突概率,通常的做法是增加一套不同的hash算法以及一块RAM,RAM增加为代价实现降低Hash冲突。
如图2所示,同一个key进过两个不同的Hash,得到两个不同的地址,分别访问不同的RAM,得到两个不同的数据,这两个数据只要有一个与key相匹配,那么对应的index就与key匹配,这样hash算法的冲突率就降低了一半,然而这种做法却是以增加RAM为代价。
发明内容
本发明的目的在于克服现有技术的缺陷,提供一种减少Hash查找冲突的方法,在不增加额外RAM,动态调节Hash算法的级数,即不影响带宽又降低Hash算法的冲突率。
为实现上述目的,本发明提出如下技术方案:一种减少Hash查找冲突的方法,包括散列记忆模块,在散列记忆模块上进行查找冲突的方法包括以下步骤:
第一步,如有需要查找散列算法的密钥数据,则将这个密钥数据先送入一个先入先出的堆栈,在先入先出的堆栈不空的情况下执行下一步操作;
第二步,选择先入先出的堆栈顶端的数据作为要处理的密钥数据,并选择散列算法的引脚(0)地址产生的地址函数做为随机存取存储器地址函数;
第三步,判断先入先出的堆栈深度是否达到一个临界值,如果达到,则将数据从堆栈中取出并重新进入散列算法的引脚(1),否则进入散列算法的引脚(4);
第四步,当前密钥数据根据散列算法的引脚(1)重新产生地址函数做为随机存取存储器的第二个地址函数,并从堆栈中取出当前密钥数据,重新进入散列算法的引脚(1)。
优选地,所述先入先出的堆栈内始终存储数据。
优选地,所述先入先出的堆栈当达到临界值时,密钥数据只能产生一个数据函数。
优选地,所述先入先出的堆栈当降到临界值下面时,密钥数据分别产生两个数据函数。
本发明的有益效果是:本发明通过动态增加Hash级数,有效的降低Hash冲突率,同时又能满足芯片对网络带宽的要求。
附图说明
图1是现有技术中Hash编码产生RAM地址的模块示意图;
图2是现有技术中传统降低Hash冲突的方法示意图;
图3是本发明动态调节Hash级数,降低Hash冲突率的方法示意图;
图4是本发明动态调节Hash级数的一较佳实例。
具体实施方式
下面将结合本发明的附图,对本发明实施例的技术方案进行清楚、完整的描述。
请参阅图3所示,一种减少Hash查找冲突的方法,包括散列记忆模块,在散列记忆模块上进行查找冲突的方法包括以下步骤,
第一步,如有需要查找散列算法的密钥数据,则将这个密钥数据先送入一个先入先出的堆栈,在先入先出的堆栈不空的情况下执行下一步操作;
第二步,选择先入先出的堆栈顶端的数据作为要处理的密钥数据,并选择散列算法的引脚(0)地址产生的地址函数做为随机存取存储器地址函数;
第三步,判断先入先出的堆栈深度是否达到一个临界值,如果达到,则将数据从堆栈中取出并重新进入散列算法的引脚(1),否则进入散列算法的引脚(4);
第四步,当前密钥数据根据散列算法的引脚1重新产生地址函数1做为随机存取存储器的第二个地址函数,并从堆栈中取出当前密钥数据,重新进入散列算法的引脚(1)。
请参阅图4,本发明动态调节hash算法级数的一较佳实例:设置先入先出的堆栈(First Input First Outpu,英文简称FIFO)的临界值为3,在时钟周期为0中,FIFO不为空,因此通过hash0产生了第一个key0的index0并读RAM,在时钟周期为1中,通过hash1产生了key0的index1并读RAM,同时Pop掉key0,在时钟周期为2中,虽然现在FIFO中有两个数据(分别为key1和key2),但是还没有达到临界值,因此根据hash0产生key1的index0,在时钟周期为3时,根据hash1产生key1的index1,并pop掉key1,同样,在时钟周期4和5,产生key2的index0和index1,到了时钟周期6,因为FIFO里面已经有3个数据(key3,key4和key5),因此已经达到临界值,key3只能产生1个index,也就是index0,然后pop掉。到了时钟周期7,8,9,10,因为后续FIFO没有进来新的key,因此又降到临界值下面,所以分别产生key4的index0和index1以及key5的index0和index1。
本发明的技术内容及技术特征已揭示如上,然而熟悉本领域的技术人员仍可能基于本发明的教示及揭示而作种种不背离本发明精神的替换及修饰,因此,本发明保护范围应不限于实施例所揭示的内容,而应包括各种不背离本发明的替换及修饰,并为本专利申请权利要求所涵盖。
Claims (4)
1.一种减少Hash查找冲突的方法,其特征在于:包括散列记忆模块,在散列记忆模块上进行查找冲突的方法包括以下步骤,
第一步,如有需要查找散列算法的密钥数据,则将这个密钥数据先送入一个先入先出的堆栈,在先入先出的堆栈不空的情况下执行下一步操作;
第二步,选择先入先出的堆栈顶端的数据作为要处理的密钥数据,并选择散列算法的引脚(0)产生的地址函数做为随机存取存储器地址函数;
第三步,判断先入先出的堆栈深度是否达到一个临界值,如果达到,则将数据从堆栈中取出并重新进入散列算法的引脚(1),否则进入散列算法的引脚(4);
第四步,当前密钥数据根据散列算法的引脚(1)重新产生地址函数做为随机存取存储器的第二个地址函数,并从堆栈中取出当前密钥数据,重新进入散列算法的引脚(1)。
2.根据权利要求1所述的减少Hash查找冲突的方法,其特征在于,所述先入先出的堆栈内始终存储数据。
3.根据权利要求1所述的减少Hash查找冲突的方法,其特征在于,所述先入先出的堆栈当达到临界值时,密钥数据只能产生一个数据函数。
4.根据权利要求1所述的减少Hash查找冲突的方法,其特征在于,所述先入先出的堆栈当降到临界值下面时,密钥数据分别产生两个数据函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610928529.9A CN106528670A (zh) | 2016-10-31 | 2016-10-31 | 一种减少Hash查找冲突的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610928529.9A CN106528670A (zh) | 2016-10-31 | 2016-10-31 | 一种减少Hash查找冲突的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106528670A true CN106528670A (zh) | 2017-03-22 |
Family
ID=58291645
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610928529.9A Withdrawn CN106528670A (zh) | 2016-10-31 | 2016-10-31 | 一种减少Hash查找冲突的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106528670A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1929451A (zh) * | 2006-09-29 | 2007-03-14 | 华为数字技术有限公司 | 一种解决Hash冲突的方法及装置 |
CN101833541A (zh) * | 2010-04-26 | 2010-09-15 | 华为技术有限公司 | 哈希数据处理方法和装置 |
US20100299538A1 (en) * | 2009-05-20 | 2010-11-25 | Conexant Systems, Inc. | Systems and Methods for Low-Latency Encrypted Storage |
CN102880724A (zh) * | 2012-10-23 | 2013-01-16 | 盛科网络(苏州)有限公司 | 处理哈希冲突的方法及系统 |
CN102880628A (zh) * | 2012-06-15 | 2013-01-16 | 福建星网锐捷网络有限公司 | 哈希数据存储方法和装置 |
CN103577564A (zh) * | 2013-10-25 | 2014-02-12 | 盛科网络(苏州)有限公司 | 通过软件搬移降低hash冲突的方法及装置 |
-
2016
- 2016-10-31 CN CN201610928529.9A patent/CN106528670A/zh not_active Withdrawn
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1929451A (zh) * | 2006-09-29 | 2007-03-14 | 华为数字技术有限公司 | 一种解决Hash冲突的方法及装置 |
US20100299538A1 (en) * | 2009-05-20 | 2010-11-25 | Conexant Systems, Inc. | Systems and Methods for Low-Latency Encrypted Storage |
CN101833541A (zh) * | 2010-04-26 | 2010-09-15 | 华为技术有限公司 | 哈希数据处理方法和装置 |
CN102880628A (zh) * | 2012-06-15 | 2013-01-16 | 福建星网锐捷网络有限公司 | 哈希数据存储方法和装置 |
CN102880724A (zh) * | 2012-10-23 | 2013-01-16 | 盛科网络(苏州)有限公司 | 处理哈希冲突的方法及系统 |
CN103577564A (zh) * | 2013-10-25 | 2014-02-12 | 盛科网络(苏州)有限公司 | 通过软件搬移降低hash冲突的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9997245B1 (en) | Method and apparatus for TCAM based look-up | |
US10049126B2 (en) | Cuckoo hashing with selectable hash | |
EP2560327B1 (en) | Routing table establishment method and device | |
Van Lunteren et al. | Fast and scalable packet classification | |
CN102377664B (zh) | 一种基于tcam的区域匹配装置和方法 | |
US9704574B1 (en) | Method and apparatus for pattern matching | |
US20050018683A1 (en) | IP address storage technique for longest prefix match | |
US20130024649A1 (en) | Method and device for storing routing table entry | |
CN104158744A (zh) | 用于网络处理器的建表和查找方法 | |
CN113806403B (zh) | 一种在智能网卡/dpu内降低查找匹配逻辑资源的方法 | |
CN103107945A (zh) | 一种快速查找ipv6路由的系统及方法 | |
CN101277252A (zh) | 多分支Trie树的遍历方法 | |
CN114884877B (zh) | 一种哈希表和HOT相结合的IPv6路由查找方法 | |
US20120054198A1 (en) | Table creating and lookup method used by network processor | |
CN101655820B (zh) | 关键字存储方法及存储装置 | |
CN106708438A (zh) | 降低Hash冲突概率的方法及装置 | |
CN112818185A (zh) | 一种基于sram的最长前缀匹配硬件系统查找的方法 | |
WO2020248690A1 (zh) | 报文匹配查表方法、系统、存储介质和终端 | |
CN106528670A (zh) | 一种减少Hash查找冲突的方法 | |
US9703484B2 (en) | Memory with compressed key | |
US10795580B2 (en) | Content addressable memory system | |
US20160105363A1 (en) | Memory system for multiple clients | |
CN103399920A (zh) | 键值搜索方法、键值搜索装置及芯片 | |
US7994948B2 (en) | Table generation method for decoding variable-length codes | |
EP3958267A1 (en) | Range information encoding and matching method, and computer storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20170322 |