[发明专利]哈希冲突处理方法及系统在审
申请号: | 202011018787.6 | 申请日: | 2020-09-24 |
公开(公告)号: | CN112148738A | 公开(公告)日: | 2020-12-29 |
发明(设计)人: | 赵子苍;李磊 | 申请(专利权)人: | 盛科网络(苏州)有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/2453;G06F3/06 |
代理公司: | 苏州三英知识产权代理有限公司 32412 | 代理人: | 周仁青 |
地址: | 215000 江苏省苏州市苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 冲突 处理 方法 系统 | ||
本发明揭示了一种哈希冲突处理方法及系统,所述方法包括:S1、判断需添加数据对应的关键字是否出现哈希冲突;S2、若是,则分别在多个哈希桶中计算关键字对应的哈希值,获取多个哈希桶中冲突的多条数据;S3、选择一个哈希桶,将该哈希桶中冲突的一条数据搬移至另外的哈希桶中。本发明使用深度优先搜索的数据搬移能够有效解决哈希冲突,以此来提高存储空间的利用率,减少了哈希冲突解决表的使用,大大降低了成本和功耗。
技术领域
本发明属于数据处理技术领域,具体涉及一种哈希冲突处理方法及系统。
背景技术
在交换芯片中二层、三层转发表的查找等领域,通常会涉及哈希算法的使用。首先简单介绍哈希算法,哈希也称为散列,通过哈希函数F对关键字Key进行计算得到一个索引值,这个索引值称为哈希值。使用哈希值作为存储空间的索引,并将数据记录到存储空间中。进行哈希查找时,通过哈希函数对所查找的关键字Key进行哈希计算,并使用计算后的索引去存储空间中取数据。哈希算法查找非常快速,但是有一个致命的缺点即哈希冲突。
当两个不同的关键字key1和key2,通过哈希函数F计算后得到的索引值相同,此时就会出现同一个位置有两条相同的数据,这种现象就是哈希冲突。各个厂商以及科研院所都在寻求解决哈希冲突的方法,但是从理论上是不可能完全避免哈希冲突的,需要各种方法来尽量减少哈希冲突。
当前主流的解决哈希冲突的方法之一有增加哈希冲突解决表,有些厂商使用TCAM(三态内容寻址存储器)解决,有些厂商使用CAM(内容寻址寄存器)解决。TCAM查找速度快,但是价格昂贵,大量使用会增加成本以及功耗;CAM成本相对较低,但是查找速度慢,不能大量使用,否则会影响查找的速度。
另外一种哈希冲突的解决方案是将一块存储空间分割为多块空间(多个哈希桶),使用不同的哈希函数进行计算。比如分为2块存储空间,分别使用哈希函数F1和F2。在存储时,对关键字Key分别进行哈希计算,F1(Key)=INDEX1,F2(Key)=INDEX2,使用INDEX1和INDEX2分别索引两块存储空间,如有有任何一块存储空间有空闲的位置则将数据存放到存储空间中。但该解决方案中哈希桶的数量不能为无限多个,因此还是会有哈希冲突的存在。
因此,针对上述技术问题,有必要提供一种哈希冲突处理方法及系统。
发明内容
有鉴于此,本发明的目的在于提供一种哈希冲突处理方法及系统。
为了实现上述目的,本发明一实施例提供的技术方案如下:
一种哈希冲突处理方法,所述方法包括:
S1、判断需添加数据对应的关键字是否出现哈希冲突;
S2、若是,则分别在多个哈希桶中计算关键字对应的哈希值,获取多个哈希桶中冲突的多条数据;
S3、选择一个哈希桶,将该哈希桶中冲突的一条数据搬移至另外的哈希桶中。
一实施例中,所述步骤S3具体为:
S31、在待搬移的哈希桶中计算待搬移数据的哈希值,获取待搬移位置;
S32、判断待搬移位置是否存在数据,若否,则将冲突的一条数据搬移至待搬移的哈希桶中的待搬移位置。
一实施例中,所述步骤S32还包括:
若待搬移位置存在数据,则重复步骤S3。
一实施例中,所述方法具体为:
S1、判断需添加数据对应的关键字Key是否出现哈希冲突;
S2、若是,则分别在第一哈希桶和第二哈希桶中计算关键字Key对应的哈希值INDEX0和INDEX1,获取第一哈希桶和第二哈希桶中冲突的两条数据Key100和Key200;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于盛科网络(苏州)有限公司,未经盛科网络(苏州)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011018787.6/2.html,转载请声明来源钻瓜专利网。