一种哈希表查表方法技术

技术编号:2845407 阅读:259 留言:1更新日期:2012-04-11 18:40
本发明专利技术涉及数据处理方法,特别涉及根据哈希算法对数据进行查表操作的方法。本发明专利技术提供了一种哈希表查找方法。本发明专利技术的技术方案包括如下步骤:a.提取数据关键字,根据关键字哈希出p位的地址;b.在地址指针表中的该地址处读出哈希桶中2↑[n]个表项不同的地址;c.根据这些地址读取关键字表判断是否命中。本发明专利技术的有益效果是,在少量增加RAM使用量的前提下,同时提供更大数目的哈希桶个数(地址空间)和更深的桶深,从而使哈希表的利用效率大大提高。且同时支持并行或者串行的查找,可以兼顾资源与效率。本发明专利技术的哈希表查表方法,主要用于专用集成电路(ASIC)芯片中的数据处理,包括数据读取、数据存储和数据删除处理。

【技术实现步骤摘要】

本专利技术涉及数据处理方法,特别涉及根据哈希算法对数据进行查表操作的方法。
技术介绍
传统的哈希表实现包含了2m个桶深为2n的哈希桶。每个桶都包含了哈希后得到的地址指向该桶的元素。当用X表示插入到表里面的元素,用Xi表示哈希到桶i上的元素,用Xji表示哈希到桶i上的第j个元素,用ai表示哈希到桶i上的元素个数时(ai≤2n),可得Xi={X1i,X2i,X3i,...,Xaii}]]>X=Yi=12mXi]]>如果用h(x)表示哈希函数,则查找,插入,删除算法可以表示为1.查找1)如果(x∈Xh(x)),则找到2)反则反之2.插入Xh(x)=Xh(x)Yx3.删除Xh(x)=Xh(x)-x在传统的硬件查表方案中,为了结构上的便利,往往将哈希表分割成2n个有2m个表项的子表,这些子表在查找时可采用并行或者串行查找(在速度优先的设计中,多采用并行查找的方法)。在进行并行查表时,复杂度为O(1+1)(考虑到对主表的操作);在进行串行查表时,其复杂度为O(2n+1)(考虑到对主表的操作)。要尽可能的让哈希表在冲突存在的情况下达到期望的利用率,只有尽可能做到以下几点1.降低冲突率1)使用“完美的”散列函数。但是对于网络等通用处理的应用来说,这样的散列函数不存在。而普通的散列函数,不论其概率分布如何之平均,由于其物理空间总是远远小于用于哈希的关键字的地址空间,所以冲突是不可避免的。2)增大哈希桶的个数(地址空间)的大小。如果使用的是平均概率分布的散列函数,在哈希桶的个数(地址空间)增大一倍后,冲突率会大大的下降。2.提高对冲突的容忍度增加每个哈希桶的最大深度。但是,对于传统硬件结构下的哈希表,不论增大哈希桶的个数(地址空间)的大小,还是增加每个哈希桶的最大深度,都意味着RAM(内存)使用量的等比增加,而RAM资源在芯片中是有限的。如要保持同样的RAM使用量,则必须在哈希桶的个数(地址空间)和哈希桶的最大深度之间做出一种平衡,这将就使哈希表的利用效率难以有大的提高。
技术实现思路
本专利技术所要解决的技术问题,就是提供一种哈希表查找方法,可以在只少量增加RAM使用量的前提下,同时提供更大数目的哈希桶个数(地址空间)和更深的桶深,从而使哈希表的利用效率大大的提高(接近100%)。并且同时支持并行和串行查找,能够同时兼顾资源和效率。本专利技术解决所述技术问题采用的技术方案是,,包括如下步骤a.提取数据关键字,根据关键字哈希出p位的地址;b.在地址指针表中的该地址处读出哈希桶中2n个表项不同的地址;c.根据这些地址读取关键字表判断是否命中。本专利技术的有益效果是,在少量增加RAM使用量的前提下,同时提供更大数目的哈希桶个数(地址空间)和更深的桶深,从而使哈希表的利用效率大大提高,接近100%。且同时支持并行或者串行的查找,可以兼顾资源与效率。附图说明图1是实施例1的流程图;图2是实施例2的流程图;图3是实施例3的流程图。具体实施例方式下面结合附图及实施例,详细描述本专利技术的技术方案。本专利技术的技术方案中,引入了一个指针表,该表包含2p个表项,与等效桶数相同;每个表项包含2n个指针,与等效桶深相同。在速度优先的设计中,可以采用2q个查找引擎并行查表的方法,但也需要加入2q个地址分配引擎。在进行并行查表时,其复杂度为O(1+2n p+1)(考虑到对地址指针表和主表的操作);在进行串行查表时,其复杂度为O(1+2n+1)(考虑到对地址指针表和主表的操作)。本专利技术的技术方案是,,包括如下步骤a.提取数据关键字,根据关键字哈希出p位的地址;b.在地址指针表中的该地址处读出哈希桶中2n个表项不同的地址;c.根据这些地址读取关键字表判断是否命中;具体的是对于读取数据的查表,步骤c如命中,则执行步骤d1读取对应主表表项,并返回相应值;如未命中,则本次读取失败;对于存储数据的查表,步骤c如命中,则执行步骤d2替换关键字表表项及对应主表表项;如未命中,且该指针表表项未满,则执行步骤d3从地址池中分配新的关键字表表项和主表表项,更新之;若未命中,且该指针表表项为满,则本次存储失败;对于删除数据的查表,步骤c如命中,则执行步骤d4删除关键字表表项和主表表项;反之则本次删除失败;进一步的是,如为并行查表方法,则同时读取关键字表;如为串行查表方法,则顺序读取关键字表;优选的查表参数为p=12,2n=8;特别是,所述哈希表查表方法用于ASIC芯片中数据读取、存储和删除。下面以包含4096个表项,等效桶数为4096,等效桶深为8的串行查表实现为例,其查找、添加、删除的流程如下参见图1,对于读取数据的查表,首先提取数据关键字,根据关键字哈希出12位的地址,然后在地址指针表中的该地址处读出该桶中8个表项不同的地址。然后根据这些地址顺序读取关键字表,判断是否命中。如命中,则读取对应主表表项,并返回相应值。反之则返回未命中。对于存储数据的查表,提取数据关键字,根据关键字哈希出12位的地址,然后在地址指针表中的该地址处读出该桶中8个表项不同的地址。然后根据这些地址顺序读取关键字表,判断是否命中。如命中,则替换关键字表表项及对应主表表项。如未命中,且该指针表表项未满,则从地址池中分配新的关键字表表项和主表表项,更新之。否则,则返回添加失败。程序流程见图2。对于删除数据的查表,提取数据关键字,根据关键字哈希出12位的地址,然后在地址指针表中的该地址处读出该桶中8个表项不同的地址。然后根据这些地址顺序读取关键字表,判断是否命中。如命中,删除关键字表表项和主表表项,反之则返回删除失败。程序流程见图3。本专利技术的哈希表查表方法,用于专用集成电路(ASIC)芯片中的数据处理,包括数据读取、数据存储和数据删除处理,能够在少量增加RAM使用量的前提下,同时提供更大数目的哈希桶个数(地址空间)和更深的桶深,从而使哈希表的利用效率大大提高,接近100%。且同时支持并行或者串行的查找,可以兼顾资源与效率。本文档来自技高网
...

【技术保护点】
一种哈希表查表方法,包括如下步骤:a.提取数据关键字,根据关键字哈希出p位的地址;b.在地址指针表中的该地址处读出哈希桶中2↑[n]个表项不同的地址;c.根据这些地址读取关键字表判断是否命中。

【技术特征摘要】
1.一种哈希表查表方法,包括如下步骤a.提取数据关键字,根据关键字哈希出p位的地址;b.在地址指针表中的该地址处读出哈希桶中2n个表项不同的地址;c.根据这些地址读取关键字表判断是否命中。2.根据权利要求1所述的哈希表查表方法,其特征在于,对于读取数据的查表,步骤c如命中,则执行步骤d1读取对应主表表项,并返回相应值;如未命中,则本次读取失败。3.根据权利要求1所述的哈希表查表方法,其特征在于,对于存储数据的查表,步骤c如命中,则执行步骤d2替换关键字表表项及对应主表表项;如未命中,且该指针表表项未满,则执行步骤d3从地址池中分配新的关键字表表项和主表表项,更新之;若未命中,且该指针表表项为满,则本次存储失败。4.根据权利要求1所述的哈希表查表方法,其特征在于...

【专利技术属性】
技术研发人员:包雅林李为民王凯刘书勇屈仁杰游游
申请(专利权)人:四川南山之桥微电子有限公司
类型:发明
国别省市:90[中国|成都]

网友询问留言 已有1条评论
  • 来自[天津市电信IDC机房] 2015年04月02日 17:31
    查水表,仅从字面上理解是自来水公司检查用户家的水表是否正常运转或是查看用户家中水表读数进行收费的一种行为。
    0
1