CN1912870A - 一种哈希表查表方法 - Google Patents

一种哈希表查表方法 Download PDF

Info

Publication number
CN1912870A
CN1912870A CN 200610021759 CN200610021759A CN1912870A CN 1912870 A CN1912870 A CN 1912870A CN 200610021759 CN200610021759 CN 200610021759 CN 200610021759 A CN200610021759 A CN 200610021759A CN 1912870 A CN1912870 A CN 1912870A
Authority
CN
China
Prior art keywords
look
list item
hash
hash table
address
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
Application number
CN 200610021759
Other languages
English (en)
Inventor
包雅林
李为民
王凯
刘书勇
屈仁杰
游游
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NANSHAN ZHIQIAO MICRO ELECTRONICS CO Ltd SICHUAN
Original Assignee
NANSHAN ZHIQIAO MICRO ELECTRONICS CO Ltd SICHUAN
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NANSHAN ZHIQIAO MICRO ELECTRONICS CO Ltd SICHUAN filed Critical NANSHAN ZHIQIAO MICRO ELECTRONICS CO Ltd SICHUAN
Priority to CN 200610021759 priority Critical patent/CN1912870A/zh
Publication of CN1912870A publication Critical patent/CN1912870A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

一种哈希表查表方法
技术领域
本发明涉及数据处理方法,特别涉及根据哈希算法对数据进行查表操作的方法。
背景技术
传统的哈希表实现包含了2m个桶深为2n的哈希桶。每个桶都包含了哈希后得到的地址指向该桶的元素。当用X表示插入到表里面的元素,用Xi表示哈希到桶i上的元素,用Xj i表示哈希到桶i上的第j个元素,用ai表示哈希到桶i上的元素个数时(ai≤2n),可得:
X i = { X 1 i , X 2 i , X 3 i , . . . , X a i i }
X = Y i = 1 2 m X i
如果用h(x)表示哈希函数,则查找,插入,删除算法可以表示为:
1.查找:
1)如果(x∈Xh(x)),则找到
2)反则反之
2.插入:
Xh(x)=Xh(x)Yx
3.删除:
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%。且同时支持并行或者串行的查找,可以兼顾资源与效率。

Claims (9)

1.一种哈希表查表方法,包括如下步骤:
a.提取数据关键字,根据关键字哈希出p位的地址;
b.在地址指针表中的该地址处读出哈希桶中2n个表项不同的地址;
c.根据这些地址读取关键字表判断是否命中。
2.根据权利要求1所述的哈希表查表方法,其特征在于,对于读取数据的查表,步骤c如命中,则执行步骤d1:读取对应主表表项,并返回相应值;如未命中,则本次读取失败。
3.根据权利要求1所述的哈希表查表方法,其特征在于,对于存储数据的查表,步骤c如命中,则执行步骤d2:替换关键字表表项及对应主表表项;如未命中,且该指针表表项未满,则执行步骤d3:从地址池中分配新的关键字表表项和主表表项,更新之;若未命中,且该指针表表项为满,则本次存储失败。
4.根据权利要求1所述的哈希表查表方法,其特征在于,对于删除数据的查表,步骤c如命中,则执行步骤d4:删除关键字表表项和主表表项;如未命中,则本次删除失败。
5.根据权利要求1-4任意一项权利要求所述的哈希表查表方法,其特征在于,如为并行查表方法,则同时读取关键字表;如为串行查表方法,则顺序读取关键字表。
6.根据权利要求5所述的哈希表查表方法,其特征在于,上述参数p=12,2n=8。
7.根据权利要求5所述的哈希表查表方法,其特征在于,所述哈希表查表方法用于ASIC芯片中数据读取、存储和删除。
8.根据权利要求1-4任意一项权利要求所述的哈希表查表方法,其特征在于,上述参数p=12,2n=8。
9.根据权利要求1-4任意一项权利要求所述的哈希表查表方法,其特征在于,所述哈希表查表方法用于ASIC芯片中数据读取存储和删除。
CN 200610021759 2006-09-05 2006-09-05 一种哈希表查表方法 Pending CN1912870A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200610021759 CN1912870A (zh) 2006-09-05 2006-09-05 一种哈希表查表方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200610021759 CN1912870A (zh) 2006-09-05 2006-09-05 一种哈希表查表方法

Publications (1)

Publication Number Publication Date
CN1912870A true CN1912870A (zh) 2007-02-14

Family

ID=37721810

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200610021759 Pending CN1912870A (zh) 2006-09-05 2006-09-05 一种哈希表查表方法

Country Status (1)

Country Link
CN (1) CN1912870A (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008119269A1 (fr) * 2007-04-02 2008-10-09 Huawei Technologies Co., Ltd. Procédé et dispositif de moteur de stockage et de consultation d'informations
CN101267381B (zh) * 2007-03-13 2010-12-29 大唐移动通信设备有限公司 哈希表操作方法及装置
WO2011006311A1 (zh) * 2009-07-13 2011-01-20 中兴通讯股份有限公司 哈希表项存储、查找装置及方法
CN102073733A (zh) * 2011-01-19 2011-05-25 中兴通讯股份有限公司 哈希表管理方法及装置
CN102541968A (zh) * 2010-12-31 2012-07-04 百度在线网络技术(北京)有限公司 一种索引方法
CN103238145A (zh) * 2010-12-03 2013-08-07 华为技术有限公司 用于网络装备中的高性能、可更新和确定的哈希表的方法和设备
CN107729053A (zh) * 2017-10-17 2018-02-23 安徽皖通邮电股份有限公司 一种实现高速缓存表的方法
CN110019250A (zh) * 2019-03-06 2019-07-16 清华大学 基于哈希函数的网络测量方法和计算机可读存储介质
CN112269784A (zh) * 2020-10-28 2021-01-26 中科驭数(北京)科技有限公司 一种基于硬件实现的哈希表结构以及插入、查询和删除方法

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101267381B (zh) * 2007-03-13 2010-12-29 大唐移动通信设备有限公司 哈希表操作方法及装置
WO2008119269A1 (fr) * 2007-04-02 2008-10-09 Huawei Technologies Co., Ltd. Procédé et dispositif de moteur de stockage et de consultation d'informations
WO2011006311A1 (zh) * 2009-07-13 2011-01-20 中兴通讯股份有限公司 哈希表项存储、查找装置及方法
CN103238145B (zh) * 2010-12-03 2016-11-16 华为技术有限公司 用于网络装备中的高性能、可更新和确定的哈希表的方法和设备
CN103238145A (zh) * 2010-12-03 2013-08-07 华为技术有限公司 用于网络装备中的高性能、可更新和确定的哈希表的方法和设备
CN102541968A (zh) * 2010-12-31 2012-07-04 百度在线网络技术(北京)有限公司 一种索引方法
CN102541968B (zh) * 2010-12-31 2014-04-09 百度在线网络技术(北京)有限公司 一种索引方法
CN102073733A (zh) * 2011-01-19 2011-05-25 中兴通讯股份有限公司 哈希表管理方法及装置
CN102073733B (zh) * 2011-01-19 2014-08-13 中兴通讯股份有限公司 哈希表管理方法及装置
CN107729053A (zh) * 2017-10-17 2018-02-23 安徽皖通邮电股份有限公司 一种实现高速缓存表的方法
CN107729053B (zh) * 2017-10-17 2020-11-27 安徽皖通邮电股份有限公司 一种实现高速缓存表的方法
CN110019250A (zh) * 2019-03-06 2019-07-16 清华大学 基于哈希函数的网络测量方法和计算机可读存储介质
CN112269784A (zh) * 2020-10-28 2021-01-26 中科驭数(北京)科技有限公司 一种基于硬件实现的哈希表结构以及插入、查询和删除方法

Similar Documents

Publication Publication Date Title
CN1912870A (zh) 一种哈希表查表方法
Bagwell Ideal hash trees
US11042477B2 (en) Memory management using segregated free lists
Brodal et al. Engineering a cache-oblivious sorting algorithm
CN101034412A (zh) 一种信息存储的方法、信息查找的方法及引擎装置
CN102117278B (zh) 链表的创建方法及系统、数据的查找方法及系统
CN101043421A (zh) 一种基于内存的ip地址最长匹配快速查找的方法
EP2281233B1 (en) Efficiently marking objects with large reference sets
CN1858734A (zh) 一种数据存储及搜索方法
CN100342353C (zh) 嵌入式操作系统中进程映射实现方法
CN1853170A (zh) 压缩高速缓存内数据的机制
CN101051320A (zh) 文件分配系统中的文件名生成方法及生成装置
CN102232219A (zh) 关键字存储、查找的方法及装置
CN101030221A (zh) 一种用于文本或网络内容分析的大规模多关键词匹配方法
US9069477B1 (en) Reuse of dynamically allocated memory
CN101051309A (zh) 在数字图书馆中所采用的检索系统和检索方法
CN108959113A (zh) 用于闪存感知堆存储器管理的方法和系统
CN101075260A (zh) 摘要提取方法以及摘要提取模块
Tulkinbekov et al. CaseDB: Lightweight key-value store for edge computing environment
CN1851676A (zh) 一种嵌入式系统缓冲式内存分配方法
CN1949214A (zh) 一种信息归并方法及系统
CN106095333B (zh) 一种数据存储系统、数据存储方法及数据存储中心
CN1991830A (zh) 网页标识抓取方法
CN104794129B (zh) 一种基于查询日志的数据处理方法和系统
CN1866203A (zh) 一种字符串引用方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication