CN112269784B - 一种基于硬件实现的哈希表装置以及插入、查询和删除方法 - Google Patents
一种基于硬件实现的哈希表装置以及插入、查询和删除方法 Download PDFInfo
- Publication number
- CN112269784B CN112269784B CN202011173962.9A CN202011173962A CN112269784B CN 112269784 B CN112269784 B CN 112269784B CN 202011173962 A CN202011173962 A CN 202011173962A CN 112269784 B CN112269784 B CN 112269784B
- Authority
- CN
- China
- Prior art keywords
- hash
- column
- module
- data
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 36
- 238000004364 calculation method Methods 0.000 claims abstract description 56
- 238000012423 maintenance Methods 0.000 claims abstract description 18
- 238000012217 deletion Methods 0.000 abstract description 12
- 230000037430 deletion Effects 0.000 abstract description 12
- 238000003780 insertion Methods 0.000 abstract description 6
- 230000037431 insertion Effects 0.000 abstract description 6
- 238000012545 processing Methods 0.000 abstract description 2
- 101150060512 SPATA6 gene Proteins 0.000 description 333
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000012966 insertion method Methods 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于数据处理技术领域,具体涉及一种基于硬件实现的哈希表装置以及操作插入、查询和删除方法。所述哈希表结构包括:哈希值计算模块,用于获取输入关键字的哈希值;还用于查找和/或修改哈希表主表模块、哈希表次级表模块;哈希表主表模块,包括数值栏和第一地址栏;哈希表次级表模块,包括数据栏、标志位和第二地址栏;哈希表次级表维护模块,用于记录所述哈希表次级表模块中的空闲存储地址。通过上述硬件结构构成的哈希表结构不仅成本、功耗交底,还能能够提高效率,同时逻辑控制、电路复杂程度等也更高,能够满足更高强度的使用。
Description
技术领域
本发明属于数据处理技术领域,具体涉及一种基于硬件实现的哈希表装置以及操作插入、查询和删除方法。
背景技术
哈希表是一种传统的针对查找问题的高效解决方法,可以有效减少无效查找过程。其基本思想是将输入的关键字以某种映射关系映射到一个中,从而减少查找匹配的过程。
哈希表的实现就是利用一个特定的哈希算法Hash(key),将给定的输入关键字(key)通过该哈希函数映射到一个新的地址,该地址称为哈希表中的哈希地址。通过哈希函数,可以建立起该关键字(key)和当前哈希地址之间的一个对应映射关系。在查询过程中,只需要对当前关键字进行一次同样的哈希地址的计算,就可以查找是否存在待查找的关键字。
在主机内存中有一个线性表,包含多条不同的记录(表中的每一行,成为一个记录),每个记录包含个不同属性(表中的每一列,称为一个属性)。针对该线性表,设计一个哈希表。其过程包含以下步骤:1)选择该线性表中的一个或几个属性值,作为计算哈希值得输入关键字(key);2)计算哈希值,即Hash(key),作为哈希表的索引;3)将原始的线性表中的数据放入哈希表中。
哈希表的实现,最大的问题就是如何在出现地址冲突时维护整张表的性能稳定。在哈希值计算时,会出现不同关键字对应相同哈希地址的情况:即key1≠key2,但Hash(key1)=Hash(key2),这种情况即被称为冲突。也就是说,同样的哈希地址对应的原始输入关键字不同。
哈希表的软件实现,相同哈希地址的项目通常以链表的形式存储。该方法查表和更新等操作需要多次的访存操作,时间开销很大。有些也给出新的哈希表的管理模型,例如多级哈希计算、基于位图的哈希表的管理(专利)等。
哈希表的硬件实现多是将某些特定操作实现并行化,并利用硬件实现。这些操作包括哈希值的计算、哈希表的查找、哈希表的删除等。有的硬件实现利用多链式哈希表、哈希桶等更为复杂的存储结构来构建哈希表,实现哈希表的维护操作。
但是现有技术中基于硬件实现的哈希表装置简单,无法实现复杂的功能,而通过软件实现的哈希表耗费高昂,适应性不强。因此,基于上述原因,本发明的目的在于提供一种基于硬件实现的哈希表装置以及插入、查询和删除方法。
发明内容
本发明的目的在于提供一种基于硬件实现的哈希表装置以及操作插入、查询和删除方法,以解决现有技术中哈希表功能欠缺或成本较高的问题。
本发明提供的基于硬件实现的哈希表装置,包括:哈希值计算模块,用于根据哈希计算获取输入关键字的哈希值;还用于根据获取的哈希值查找和/或修改哈希表主表模块、哈希表次级表模块;哈希表主表模块,包括数值栏和第一地址栏,所述数值栏与所述第一地址栏一一对应;所述数值栏用于存储哈希值,所述第一地址栏用于存储第一地址,所述第一地址指向所述哈希值在哈希表次级表模块中的位置;哈希表次级表模块,包括数据栏、标志位和第二地址栏,所述数据栏、标志位和第二地址栏一一对应;所述数据栏用于存储所述哈希表主表模块中哈希值的预设关键字数据;标志位用于指示哈希值是否存在哈希冲突;所述第二地址栏用于记录哈希冲突中下一条数据在哈希表次级表模块中的位置;哈希表次级表维护模块,用于存储所述哈希表次级表模块中的空闲存储地址。
如上所述的基于硬件实现的哈希表装置,进一步优选为,所述标志位用于记录“0”或“1”两种数据;“0”代表哈希表次级表模块中当前数据栏存储的数据下方还存在与该哈希值对应的数据记录,此时,所述第二地址栏记录的地址指向该哈希值在哈希表次级表模块中的下一条数据的数据栏地址;“1”代表当前数据栏存储的数据为该哈希值在哈希表次级表模块中的对应的最后一条数据,此时所述第二地址栏为空。
如上所述的基于硬件实现的哈希表装置,进一步优选为,所述哈希表次级表维护模块中设有FIFO存储器,所述FIFO存储器用于存储哈希表次级表模块中的空闲存储地址。
本发明还公开了基于上述任一项所述的哈希表结构的插入方法,包括:
S1:哈希计算模块根据哈希计算获取待插入的输入关键字的哈希值,并根据获取的哈希值查找哈希表主表模块,以判断哈希表主表模块的数值栏是否存在与该哈希值一致的哈希值;S2:哈希计算模块获取哈希表次级表维护模块中存储的空闲存储地址;S3:哈希计算模块根据哈希表主模块中哈希值的存在与否更新哈希表主表模块和/或哈希表次级表模块,进而将插入的输入关键字的哈希值存入数值栏、原始数据存储在空闲存储地址的数据栏中,且能够根据数值栏对应的第一地址栏定位哈希表次表模块中数值栏的位置。
如上所述的基于硬件实现的哈希表装置的插入方法,进一步优选为,当哈希表主模块中不存在与输入关键字相同的哈希值时,步骤S3包括:S31:哈希计算模块将获取的哈希值存入哈希表主表模块的数值栏中,并将空闲存储地址存储于该数值栏对应的第一地址栏中;S32:哈希计算模块将输入关键字的原始数据存入哈希表次级表模块的空闲存储地址对应的数据栏中,并更新与该数据栏对应的标志位和第二地址栏。
如上所述的基于硬件实现的哈希表装置的插入方法,进一步优选为,当哈希表主模块中存在与输入关键字相同的哈希值时,步骤S3包括:S33:哈希计算模块在哈希表主表模块中定位与输入关键字的哈希值相同的数值栏位置,并根据数值栏对应的第一地址栏中的第一地址定位该哈希值在哈希表次级表模块中数据栏的位置;S34:哈希计算模块根据哈希表次级表模块中数据栏对应的标志位和第二地址栏定位标志位为1的数值栏,并更新该数值栏的标志位和第二地址栏,使第二地址栏中的第二地址指向空闲存储地址中的数据栏;S35:哈希计算模块将输入关键字的原始数据存储在空闲存储地址的数据栏,并对应更新标志位。
本发明还公开了基于上述任一项所述的哈希表结构的查询方法,包括:S5:哈希计算模块根据哈希计算获取待查找的输入关键字的哈希值;根据该哈希值查找哈希表主表模块,并判断哈希表主表模块的数值栏中是否存在与该哈希值一致的哈希值数据;S6:若否,则哈希表结构中不存在待查找数据;若是,则定位至该数值栏并根据其对应的第一地址栏中的第一地址定位到哈希表次级表模块中的数据栏;查找该数据栏中存储的预存关键字,并判断预存关键字是否与输入关键字匹配;S7:若否,则哈希表结构中不存在待查找数据;若是,则哈希表结构中存在待查找数据。
如上所述的基于哈希表结构的查询方法,进一步优选为,步骤S6还包括:
S61:根据哈希表次级表模块中的数据栏对应的标志位判断待查找哈希值是否存在哈希冲突;S62:若否,仅查询当前位置处数据栏中存储的预存关键字,并判断预存关键字是否与输入关键字匹配;若是,则依次查询哈希表次级表模块中与该哈希值存在哈希冲突的所有数据栏中存储的预存关键字,并判断预存关键字是否与输入关键字匹配。
本发明还公开了基于上述中任一项所述的哈希表结构的删除方法,包括:S8:哈希计算模块根据哈希计算获取待查找的输入关键字的哈希值;根据该哈希值查找哈希表主表模块,并确认哈希表主表的数值栏中是否存在与该哈希值一致的哈希值数据;S9:若否,则哈希表结构中不存在待查找数据,结束查询;若是,则根据与该数值栏中哈希值对应的第一地址栏中地址定位到哈希表次级表模块中的数据栏;S10:查找该数据栏中存储的预存关键字,并判断预存关键字是否与输入关键字匹配;若否,则哈希表结构中不存在待查找数据,结束查询;若是,则清空哈希表次表模块中的数值栏并更新哈希表次表模块;S11:哈希计算模块将清空后的第一地址栏中地址存入哈希表次级表维护模块中。
如上所述的哈希表结构的删除方法,进一步优选为,步骤S10还包括:S101:根据定位的数据栏对应的标志位判断该哈希值在哈希表次级表模块中是否存在哈希冲突;S102:若否,则查找该数据栏中存储的预存关键字,并判断预存关键字是否与输入关键字匹配,并在匹配时清空哈希表次表模块中的数值栏、标志位、第二地址栏以及哈希表主表模块中对应的第一地址栏;否则结束查询;S103:若是,则依次查询存在哈希冲突的多个数据栏中存储的预存关键字,并判断预存关键字是否与输入关键字匹配,并在匹配时清空哈希表次表模块中的数值栏、标志位和第二地址栏,同时修改上一数据栏对应的第二地址栏,使其指向下一数据栏。
与现有技术相比,本发明所公开的一种基于硬件实现的哈希表装置以及插入、查询和删除方法具有以下有益效果:
1)相比于软件实现的哈希表,基于硬件实现的哈希表装置具有更高效的效率。且相较于软件的实现的哈希表结构,基于硬件实现的哈希表装置在板卡或存储资源的成本、功耗等开销较低,而逻辑控制、电路复杂程度等更高。
2)该方案给出了具体的硬件实现哈希表的结构和功能。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明中基于硬件实现的哈希表装置的模块结构图;
图2为图1中哈希表结构的一种插入方法;
图3为图1中哈希表结构的另一种插入方法;
图4为图2-3中插入方法的流程图;
图5为图1中哈希表结构的一种查询方法;
图6为图1中哈希表结构的另一种查询方法;
图7为图5-6中查询方法的流程图;
图8为图1中哈希表结构的一种删除方法;
图9为图1中哈希表结构的另一种删除方法;
图10为图1中哈希表结构的有一种删除方法;
图11为图8-10中删除方法的流程图。
具体实施方式
实施例1:
如图1所示,本实施例公开了基于硬件实现的哈希表装置,包括:
哈希值计算模块,用于根据哈希计算获取输入关键字的哈希值;还用于根据获取的哈希值查找和/或修改哈希表主表模块、哈希表次级表模块;
哈希表主表模块,包括数值栏和第一地址栏,所述数值栏与所述第一地址栏一一对应;所述数值栏用于存储哈希值,所述第一地址栏用于存储第一地址,所述第一地址指向所述哈希值在哈希表次级表模块中的位置;
哈希表次级表模块,包括数据栏、标志位和第二地址栏,所述数据栏、标志位和第二地址栏一一对应;所述数据栏用于存储所述哈希表主表模块中哈希值的预设关键字数据;标志位用于指示哈希值是否存在哈希冲突;所述第二地址栏用于记录哈希冲突中下一条数据在哈希表次级表模块中的位置;
哈希表次级表维护模块,用于记录所述哈希表次级表模块中的空闲存储地址。
进一步的,所述标志位用于记录“0”或“1”两种数据;“0”代表哈希表次级表模块中当前数据栏存储的数据下方还存在与该哈希值对应的数据记录,此时,所述第二地址栏记录的地址指向该哈希值在哈希表次级表模块中的下一条数据的数据栏地址;“1”代表当前数据栏存储的数据为该哈希值在哈希表次级表模块中的对应的最后一条数据,此时所述第二地址栏为空。
进一步的,所述哈希表次级表维护模块中设有FIFO存储器,所述FIFO存储器用于存储哈希表次级表模块中的空闲存储地址。
实施例2:
如图2-4所示,本实施例公开了基于实施例1中公开的哈希表结构的插入方法,包括:
S1:哈希计算模块根据哈希计算获取待插入的输入关键字的哈希值,并根据获取的哈希值查找哈希表主表模块,以判断哈希表主表模块的数值栏是否存在与该哈希值一致的哈希值;
S2:哈希计算模块获取哈希表次级表维护模块中存储的空闲存储地址;
S3:哈希计算模块根据哈希表主模块中哈希值的存在与否更新哈希表主表模块和/或哈希表次级表模块,进而将插入的输入关键字的哈希值存入数值栏、原始数据存储在空闲存储地址的数据栏中,且能够根据数值栏对应的第一地址栏定位哈希表次表模块中数值栏的位置。
进一步的,当哈希表主模块中不存在与输入关键字相同的哈希值时,步骤S3包括:
S31:哈希计算模块将获取的哈希值存入哈希表主表模块的数值栏中,并将空闲存储地址存储于该数值栏对应的第一地址栏中;
S32:哈希计算模块将输入关键字的原始数据存入哈希表次级表模块的空闲存储地址对应的数据栏中,并更新与该数据栏对应的标志位和第二地址栏。
进一步的,当哈希表主模块中存在与输入关键字相同的哈希值时,步骤S3包括:
S33:哈希计算模块在哈希表主表模块中定位与输入关键字的哈希值相同的数值栏位置,并根据数值栏对应的第一地址栏中的第一地址定位该哈希值在哈希表次级表模块中数据栏的位置;
S34:哈希计算模块根据哈希表次级表模块中数据栏对应的标志位和第二地址栏定位标志位为1的数值栏,并更新该数值栏的标志位和第二地址栏,使第二地址栏中的第二地址指向空闲存储地址中的数据栏;
S35:哈希计算模块将输入关键字的原始数据存储在空闲存储地址的数据栏,并对应更新标志位。
图2为当前哈希表结构中没有与输入关键字相关记录时的插入流程。此时哈希值计算模块获取输入关键字的哈希值以及哈希表次级表维护模块中的空闲存储地址,然后将哈希值和空闲存储地址存入哈希表主表模块的数值栏和第一地址栏中,将输入关键字的原始数据存入空闲存储地址在哈希表次级表模块中的数据栏,然后将数据栏对应的标志位修改为1。
图3为当前哈希表结构存在与输入关键字相关记录时的插入流程。此时哈希值计算模块获取输入关键字的哈希值以及哈希表次级表维护模块中的空闲存储地址,然后根据哈希值定位哈希表主表模块中的对应的数值栏,根据数值栏对应的第一地址栏定位哈希值次级表模块中的数据栏,找到哈希值次级表模块记录数组链中的最后一位,即标志位为1的记录,修改最后一位的标志位至“0”,然后将空闲存储地址存入其对应的第二地址栏中。
图4为具体的插入流程。
实施例3:
如图5-7所示,本实施例公开了基于实施例1中公开的哈希表结构的查询方法,包括:
S5:哈希计算模块根据哈希计算获取待查找的输入关键字的哈希值;根据该哈希值查找哈希表主表模块,并判断哈希表主表模块的数值栏中是否存在与该哈希值一致的哈希值数据;
S6:若否,则哈希表结构中不存在待查找数据;若是,则定位至该数值栏并根据其对应的第一地址栏中的第一地址定位到哈希表次级表模块中的数据栏;查找该数据栏中存储的预存关键字,并判断预存关键字是否与输入关键字匹配;
S7:若否,则哈希表结构中不存在待查找数据;若是,则哈希表结构中存在待查找数据。
进一步的,步骤S6还包括:
S61:根据哈希表次级表模块中的数据栏对应的标志位判断待查找哈希值是否存在哈希冲突;
S62:若否,仅查询当前位置处数据栏中存储的预存关键字,并判断预存关键字是否与输入关键字匹配;若是,则依次查询哈希表次级表模块中与该哈希值存在哈希冲突的所有数据栏中存储的预存关键字,并判断预存关键字是否与输入关键字匹配。
图5为哈希表次级表模块中不存在输入关键字的相关记录时的查找步骤,此时,通过输入关键字计算得到的哈希值无法在哈希表主表模块中查找到相同的记录,或者哈希表主表模块中存在相同哈希值,但是没有对应的第一地址。
图6为哈希表次级表模块中存在输入关键字的相关记录时的查找步骤,此时,通过输入关键字计算得到的哈希值定位哈希表主表模块中的数值栏,并通过数值栏对应的第一地址栏导向哈希表次级表模块,并依次查找所有与该哈希值对应的数据栏,然后判断是否有与输入关键字对应的内容。
图7为具体的查找流程。
实施例4:
如图8-11所示,本实施例公开了基于实施例1中公开的哈希表结构的查询方法,包括:
S8:哈希计算模块根据哈希计算获取待查找的输入关键字的哈希值;根据该哈希值查找哈希表主表模块,并确认哈希表主表的数值栏中是否存在与该哈希值一致的哈希值数据;
S9:若否,则哈希表结构中不存在待查找数据,结束查询;若是,则根据与该数值栏中哈希值对应的第一地址栏中地址定位到哈希表次级表模块中的数据栏;
S10:查找该数据栏中存储的预存关键字,并判断预存关键字是否与输入关键字匹配;若否,则哈希表结构中不存在待查找数据,结束查询;若是,则清空哈希表次表模块中的数值栏并更新哈希表次表模块;
S11:哈希计算模块将清空后的第一地址栏中地址存入哈希表次级表维护模块中。
进一步的,步骤S10还包括:
S101:根据定位的数据栏对应的标志位判断该哈希值在哈希表次级表模块中是否存在哈希冲突;
S102:若否,则查找该数据栏中存储的预存关键字,并判断预存关键字是否与输入关键字匹配,并在匹配时清空哈希表次表模块中的数值栏、标志位、第二地址栏以及哈希表主表模块中对应的第一地址栏;否则结束查询;
S103:若是,则依次查询存在哈希冲突的多个数据栏中存储的预存关键字,并判断预存关键字是否与输入关键字匹配,并在匹配时清空哈希表次表模块中的数值栏、标志位和第二地址栏,同时修改上一数据栏对应的第二地址栏,使其指向下一数据栏。
图8为哈希表次级表模块中不存在哈希冲突时哈希表结构的删除操作,即哈希值计算模块通过输入关键字的哈希值依次定位哈希表主表模块和哈希表次级表模块中与该哈希值对应的记录,然后删除记录,并将哈希表次级表模块中清空记录的地址作为空闲存储地址存入哈希表次级表维护模块中。
图9为哈希表次级表模块中存在哈希冲突时哈希表结构的删除操作,此时删除的是中间的某条记录。具体的,哈希值计算模块通过输入关键字的哈希值依次定位哈希表主表模块和哈希表次级表模块中与该哈希值对应的记录,并判断出哈希表次级表模块中存在哈希冲突,且存在哈希冲突的多条记录中,与待删除的输入关键字匹配的记录位于中间,此时,删除该条记录,并同步修改该条记录的上一条记录,使上一条记录中的第二地址指向删除记录的下一条记录;然后将哈希表次级表模块中清空记录的地址作为空闲存储地址存入哈希表次级表维护模块中。
图10为哈希表次级表模块中存在哈希冲突时哈希表结构的删除操作,此时删除的是最后一条记录。此时直接定位至哈希表次级表模块中的最后一条记录并删除,同时修改其上一条记录中的标志位和第二地址栏,使上一条记录作为更新后的哈希表次级表模块的最后一条记录。
图11为整个删除过程的完整流程。
与现有技术相比,本发明所公开的一种基于硬件实现的哈希表装置以及插入、查询和删除方法具有以下有益效果:
1)相比于软件实现的哈希表,基于硬件实现的哈希表装置具有更高效的效率。且相较于软件的实现的哈希表结构,基于硬件实现的哈希表装置在板卡或存储资源的成本、功耗等开销较低,而逻辑控制、电路复杂程度等更高。
2)该方案给出了具体的硬件实现哈希表的结构和功能。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种基于硬件实现的哈希表装置,其特征在于,包括:
哈希值计算模块,用于根据哈希计算获取输入关键字的哈希值;还用于根据获取的哈希值查找和/或修改哈希表主表模块、哈希表次级表模块;
哈希表主表模块,包括数值栏和第一地址栏,所述数值栏与所述第一地址栏一一对应;所述数值栏用于存储哈希值,所述第一地址栏用于存储第一地址,所述第一地址指向所述哈希值在哈希表次级表模块中的位置;
哈希表次级表模块,包括数据栏、标志位和第二地址栏,所述数据栏、标志位和第二地址栏一一对应;所述数据栏用于存储所述哈希表主表模块中哈希值的预设关键字数据;标志位用于指示哈希值是否存在哈希冲突;所述第二地址栏用于记录哈希冲突中下一条数据在哈希表次级表模块中的位置;
哈希表次级表维护模块,用于存储所述哈希表次级表模块中的空闲存储地址。
2.根据权利要求1所述的基于硬件实现的哈希表装置,其特征在于,所述标志位用于记录“0”或“1”两种数据;“0”代表哈希表次级表模块中当前数据栏存储的数据下方还存在与该哈希值对应的数据记录,此时,所述第二地址栏记录的地址指向该哈希值在哈希表次级表模块中的下一条数据;“1”代表当前数据栏存储的数据为该哈希值在哈希表次级表模块中的最后一条数据,此时所述第二地址栏为空。
3.根据权利要求2所述的基于硬件实现的哈希表装置,其特征在于,
所述哈希表次级表维护模块中设有FIFO存储器,所述FIFO存储器用于存储哈希表次级表模块中的空闲存储地址。
4.一种基于权利要求1-3中任一项所述的基于硬件实现的哈希表装置的插入方法,其特征在于,包括:
S1:哈希计算模块根据哈希计算获取待插入的输入关键字的哈希值,并根据获取的哈希值查找哈希表主表模块,以判断哈希表主表模块的数值栏是否存在与该哈希值一致的哈希值;
S2:哈希计算模块获取哈希表次级表维护模块中存储的空闲存储地址;
S3:哈希计算模块根据哈希表主模块中哈希值的存在与否更新哈希表主表模块和/或哈希表次级表模块,进而将插入的输入关键字的哈希值存入数值栏、原始数据存储在空闲存储地址的数据栏中,且能够根据数值栏对应的第一地址栏定位哈希表次表模块中数值栏的位置。
5.根据权利要求4所述的基于硬件实现的哈希表装置的插入方法,其特征在于,当哈希表主模块中不存在与输入关键字相同的哈希值时,步骤S3包括:
S31:哈希计算模块将获取的哈希值存入哈希表主表模块的数值栏中,并将空闲存储地址存储于该数值栏对应的第一地址栏中;
S32:哈希计算模块将输入关键字的原始数据存入哈希表次级表模块的空闲存储地址对应的数据栏中,并更新与该数据栏对应的标志位和第二地址栏。
6.根据权利要求4所述的基于硬件实现的哈希表装置的插入方法,其特征在于,当哈希表主模块中存在与输入关键字相同的哈希值时,步骤S3包括:
S33:哈希计算模块在哈希表主表模块中定位与输入关键字的哈希值相同的数值栏位置,并根据数值栏对应的第一地址栏中的第一地址定位该哈希值在哈希表次级表模块中数据栏的位置;
S34:哈希计算模块根据哈希表次级表模块中数据栏对应的标志位和第二地址栏定位标志位为1的数值栏,并更新该数值栏的标志位和第二地址栏,使第二地址栏中的第二地址指向空闲存储地址中的数据栏;
S35:哈希计算模块将输入关键字的原始数据存储在空闲存储地址的数据栏,并对应更新标志位。
7.一种基于权利要求1-3中任一项所述的基于硬件实现的哈希表装置的查询方法,其特征在于,包括:
S5:哈希计算模块根据哈希计算获取待查找的输入关键字的哈希值;根据该哈希值查找哈希表主表模块,并判断哈希表主表模块的数值栏中是否存在与该哈希值一致的哈希值数据;
S6:若否,则哈希表结构中不存在待查找数据;若是,则定位至该数值栏并根据其对应的第一地址栏中的第一地址定位到哈希表次级表模块中的数据栏;查找该数据栏中存储的预存关键字,并判断预存关键字是否与输入关键字匹配;
S7:若否,则哈希表结构中不存在待查找数据;若是,则哈希表结构中存在待查找数据。
8.根据权利要求7所述的基于硬件实现的哈希表装置的查询方法,其特征在于,步骤S6还包括:
S61:根据哈希表次级表模块中的数据栏对应的标志位判断待查找哈希值是否存在哈希冲突;
S62:若否,仅查询当前位置处数据栏中存储的预存关键字,并判断预存关键字是否与输入关键字匹配;若是,则依次查询哈希表次级表模块中与该哈希值存在哈希冲突的所有数据栏中存储的预存关键字,并判断预存关键字是否与输入关键字匹配。
9.一种基于权利要求1-3中任一项所述的基于硬件实现的哈希表装置的删除方法,其特征在于,包括:
S8:哈希计算模块根据哈希计算获取待查找的输入关键字的哈希值;根据该哈希值查找哈希表主表模块,并确认哈希表主表的数值栏中是否存在与该哈希值一致的哈希值数据;
S9:若否,则哈希表结构中不存在待查找数据,结束查询;若是,则根据与该数值栏中哈希值对应的第一地址栏中地址定位到哈希表次级表模块中的数据栏;
S10:查找该数据栏中存储的预存关键字,并判断预存关键字是否与输入关键字匹配;若否,则哈希表结构中不存在待查找数据,结束查询;若是,则清空哈希表次表模块中的数值栏并更新哈希表次表模块;
S11:哈希计算模块将清空后的第一地址栏中地址存入哈希表次级表维护模块中。
10.根据权利要求9所述的哈希表结构的删除方法,其特征在于,步骤S10还包括:
S101:根据定位的数据栏对应的标志位判断该哈希值在哈希表次级表模块中是否存在哈希冲突;
S102:若否,则查找该数据栏中存储的预存关键字,并判断预存关键字是否与输入关键字匹配,并在匹配时清空哈希表次表模块中的数值栏、标志位、第二地址栏以及哈希表主表模块中对应的第一地址栏;否则结束查询;
S103:若是,则依次查询存在哈希冲突的多个数据栏中存储的预存关键字,并判断预存关键字是否与输入关键字匹配,并在匹配时清空哈希表次表模块中的数值栏、标志位和第二地址栏,同时修改上一数据栏对应的第二地址栏,使其指向下一数据栏。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011173962.9A CN112269784B (zh) | 2020-10-28 | 2020-10-28 | 一种基于硬件实现的哈希表装置以及插入、查询和删除方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011173962.9A CN112269784B (zh) | 2020-10-28 | 2020-10-28 | 一种基于硬件实现的哈希表装置以及插入、查询和删除方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112269784A CN112269784A (zh) | 2021-01-26 |
CN112269784B true CN112269784B (zh) | 2024-08-13 |
Family
ID=74346020
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011173962.9A Active CN112269784B (zh) | 2020-10-28 | 2020-10-28 | 一种基于硬件实现的哈希表装置以及插入、查询和删除方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112269784B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113886267A (zh) * | 2021-10-25 | 2022-01-04 | 锐凌无线通讯科技(深圳)有限公司 | 一种软件系统的检测方法、装置、电子设备及存储介质 |
CN115421804B (zh) * | 2022-07-29 | 2023-02-24 | 中科驭数(北京)科技有限公司 | 一种基于kpu统一接口的数据管理方法、系统及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102314485A (zh) * | 2011-07-27 | 2012-01-11 | 中国科学院计算机网络信息中心 | 哈希表添加、查找和删除方法及装置 |
CN109582598A (zh) * | 2018-12-13 | 2019-04-05 | 武汉中元华电软件有限公司 | 一种基于外部存储实现高效查找哈希表的预处理方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100504387B1 (ko) * | 2003-05-26 | 2005-07-27 | 임혜숙 | Sram과 해슁을 이용한 ip 어드레스 검색 방법 및하드웨어 구조 |
CN1912870A (zh) * | 2006-09-05 | 2007-02-14 | 四川南山之桥微电子有限公司 | 一种哈希表查表方法 |
CN100470550C (zh) * | 2007-04-02 | 2009-03-18 | 华为技术有限公司 | 一种信息存储的方法、信息查找的方法及引擎装置 |
CN103117931B (zh) * | 2013-02-21 | 2015-07-01 | 烽火通信科技股份有限公司 | 基于哈希表和tcam表的mac地址硬件学习方法及系统 |
US9852074B2 (en) * | 2015-01-12 | 2017-12-26 | Alcatel Lucent | Cache-optimized hash table data structure |
CN111625534A (zh) * | 2020-04-09 | 2020-09-04 | 中国人民解放军战略支援部队信息工程大学 | 用于哈希运算的数据结构及基于该结构的哈希表存储、查询方法 |
-
2020
- 2020-10-28 CN CN202011173962.9A patent/CN112269784B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102314485A (zh) * | 2011-07-27 | 2012-01-11 | 中国科学院计算机网络信息中心 | 哈希表添加、查找和删除方法及装置 |
CN109582598A (zh) * | 2018-12-13 | 2019-04-05 | 武汉中元华电软件有限公司 | 一种基于外部存储实现高效查找哈希表的预处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112269784A (zh) | 2021-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11080204B2 (en) | Latchless, non-blocking dynamically resizable segmented hash index | |
CN110083601B (zh) | 面向键值存储系统的索引树构建方法及系统 | |
CN102122285B (zh) | 一种数据缓存系统中的数据查询系统和数据查询方法 | |
US7885967B2 (en) | Management of large dynamic tables | |
CN101540723B (zh) | 一种流表查找方法和装置 | |
US9495398B2 (en) | Index for hybrid database | |
US20140188885A1 (en) | Utilization and Power Efficient Hashing | |
US7805427B1 (en) | Integrated search engine devices that support multi-way search trees having multi-column nodes | |
CN106991102B (zh) | 倒排索引中键值对的处理方法及处理系统 | |
US8086641B1 (en) | Integrated search engine devices that utilize SPM-linked bit maps to reduce handle memory duplication and methods of operating same | |
CN106815267A (zh) | 数据存储方法和装置 | |
CN112131218B (zh) | 一种基因对比的哈希查表方法、装置、设备及存储介质 | |
US20080133494A1 (en) | Method and apparatus for searching forwarding table | |
CN112269784B (zh) | 一种基于硬件实现的哈希表装置以及插入、查询和删除方法 | |
US20050187898A1 (en) | Data Lookup architecture | |
CN101277252A (zh) | 多分支Trie树的遍历方法 | |
US7747599B1 (en) | Integrated search engine devices that utilize hierarchical memories containing b-trees and span prefix masks to support longest prefix match search operations | |
CN107729053B (zh) | 一种实现高速缓存表的方法 | |
CN114884877B (zh) | 一种哈希表和HOT相结合的IPv6路由查找方法 | |
CN112395213B (zh) | 一种基于内存面向热点数据的aceh索引结构及方法 | |
CN106302178B (zh) | 一种路由查询方法及装置 | |
US7953721B1 (en) | Integrated search engine devices that support database key dumping and methods of operating same | |
CN102984071B (zh) | 分段地址路由的路由表组织方法及查找路由的方法 | |
US8886677B1 (en) | Integrated search engine devices that support LPM search operations using span prefix masks that encode key prefix length | |
KR101587756B1 (ko) | 블룸 필터 선-검색을 이용한 스트링 정보 검색 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |