CN1912870A - 一种哈希表查表方法 - Google Patents
一种哈希表查表方法 Download PDFInfo
- 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
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),可得:
如果用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芯片中数据读取存储和删除。
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)
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 | 中科驭数(北京)科技有限公司 | 一种基于硬件实现的哈希表结构以及插入、查询和删除方法 |
-
2006
- 2006-09-05 CN CN 200610021759 patent/CN1912870A/zh active Pending
Cited By (13)
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 |