CN112269784A - 一种基于硬件实现的哈希表结构以及插入、查询和删除方法 - Google Patents

一种基于硬件实现的哈希表结构以及插入、查询和删除方法 Download PDF

Info

Publication number
CN112269784A
CN112269784A CN202011173962.9A CN202011173962A CN112269784A CN 112269784 A CN112269784 A CN 112269784A CN 202011173962 A CN202011173962 A CN 202011173962A CN 112269784 A CN112269784 A CN 112269784A
Authority
CN
China
Prior art keywords
hash
column
module
data
hash table
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
CN202011173962.9A
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.)
Yusur Technology Co ltd
Original Assignee
Yusur Technology Co ltd
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 Yusur Technology Co ltd filed Critical Yusur Technology Co ltd
Priority to CN202011173962.9A priority Critical patent/CN112269784A/zh
Publication of CN112269784A publication Critical patent/CN112269784A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

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:若是,则依次查询存在哈希冲突的多个数据栏中存储的预存关键字,并判断预存关键字是否与输入关键字匹配,并在匹配时清空哈希表次表模块中的数值栏、标志位和第二地址栏,同时修改上一数据栏对应的第二地址栏,使其指向下一数据栏。
CN202011173962.9A 2020-10-28 2020-10-28 一种基于硬件实现的哈希表结构以及插入、查询和删除方法 Pending CN112269784A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011173962.9A CN112269784A (zh) 2020-10-28 2020-10-28 一种基于硬件实现的哈希表结构以及插入、查询和删除方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011173962.9A CN112269784A (zh) 2020-10-28 2020-10-28 一种基于硬件实现的哈希表结构以及插入、查询和删除方法

Publications (1)

Publication Number Publication Date
CN112269784A true CN112269784A (zh) 2021-01-26

Family

ID=74346020

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011173962.9A Pending CN112269784A (zh) 2020-10-28 2020-10-28 一种基于硬件实现的哈希表结构以及插入、查询和删除方法

Country Status (1)

Country Link
CN (1) CN112269784A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115421804A (zh) * 2022-07-29 2022-12-02 中科驭数(北京)科技有限公司 一种基于kpu统一接口的数据管理方法、系统及装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040101742A (ko) * 2003-05-26 2004-12-03 임혜숙 Sram과 해슁을 이용한 ip 어드레스 검색 방법 및하드웨어 구조
CN1912870A (zh) * 2006-09-05 2007-02-14 四川南山之桥微电子有限公司 一种哈希表查表方法
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
CN102314485A (zh) * 2011-07-27 2012-01-11 中国科学院计算机网络信息中心 哈希表添加、查找和删除方法及装置
WO2014127605A1 (zh) * 2013-02-21 2014-08-28 烽火通信科技股份有限公司 基于哈希表和tcam表的mac地址硬件学习方法及系统
US20160203082A1 (en) * 2015-01-12 2016-07-14 Alcatel-Lucent Canada, Inc. Cache-optimized hash table data structure
CN109582598A (zh) * 2018-12-13 2019-04-05 武汉中元华电软件有限公司 一种基于外部存储实现高效查找哈希表的预处理方法
CN111625534A (zh) * 2020-04-09 2020-09-04 中国人民解放军战略支援部队信息工程大学 用于哈希运算的数据结构及基于该结构的哈希表存储、查询方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040101742A (ko) * 2003-05-26 2004-12-03 임혜숙 Sram과 해슁을 이용한 ip 어드레스 검색 방법 및하드웨어 구조
CN1912870A (zh) * 2006-09-05 2007-02-14 四川南山之桥微电子有限公司 一种哈希表查表方法
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
CN102314485A (zh) * 2011-07-27 2012-01-11 中国科学院计算机网络信息中心 哈希表添加、查找和删除方法及装置
WO2014127605A1 (zh) * 2013-02-21 2014-08-28 烽火通信科技股份有限公司 基于哈希表和tcam表的mac地址硬件学习方法及系统
US20160203082A1 (en) * 2015-01-12 2016-07-14 Alcatel-Lucent Canada, Inc. Cache-optimized hash table data structure
CN109582598A (zh) * 2018-12-13 2019-04-05 武汉中元华电软件有限公司 一种基于外部存储实现高效查找哈希表的预处理方法
CN111625534A (zh) * 2020-04-09 2020-09-04 中国人民解放军战略支援部队信息工程大学 用于哈希运算的数据结构及基于该结构的哈希表存储、查询方法

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
HU XUEXUAN 等: "Parallel optimization of a type of dynamic hashing", 2017 3RD IEEE INTERNATIONAL CONFERENCE ON COMPUTER AND COMMUNICATIONS(ICCC), pages 2343 - 2352 *
SALAMI 等: "HATCH: Hash Table Caching in Hardware for Efficient Relational Join on FPGA", 2015 IEEE 23RD ANNUAL INTERNATIONAL SYMPOSIUM ON FIELD-PROGRAMMABLE CUSTOM COMPUTING MACHINES, pages 163 - 163 *
史长琼 等: "哈希表动态负载平衡策略的优化", 长沙理工大学学报(自然科学版), no. 1, pages 68 - 72 *
张伟 等: "多进程共享的高效哈希表", 《计算机工程与设计》, vol. 38, no. 5, pages 1190 - 1195 *
朱芳芳 等: "改进的哈希表查找算法", 杭州电子科技大学学报, no. 5, pages 46 - 49 *
梁超 等: "工业无线网络OPC-UA发布/订阅/机制优化研究", 《软件导刊》, vol. 19, no. 7, pages 15 - 18 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115421804A (zh) * 2022-07-29 2022-12-02 中科驭数(北京)科技有限公司 一种基于kpu统一接口的数据管理方法、系统及装置
CN115421804B (zh) * 2022-07-29 2023-02-24 中科驭数(北京)科技有限公司 一种基于kpu统一接口的数据管理方法、系统及装置

Similar Documents

Publication Publication Date Title
CN110083601B (zh) 面向键值存储系统的索引树构建方法及系统
US6240418B1 (en) Database apparatus
CN103678556B (zh) 列式数据库处理的方法和处理设备
US7558802B2 (en) Information retrieving system
CN102122285B (zh) 一种数据缓存系统中的数据查询系统和数据查询方法
CN106991102B (zh) 倒排索引中键值对的处理方法及处理系统
US7805427B1 (en) Integrated search engine devices that support multi-way search trees having multi-column nodes
CN112131218B (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) 数据存储方法和装置
US7054994B2 (en) Multiple-RAM CAM device and method therefor
US20100228914A1 (en) Data caching system and method for implementing large capacity cache
CN111143368B (zh) 一种关系型数据库数据对比方法及系统
CN111552692A (zh) 一种加减法布谷鸟过滤器
CN111914020A (zh) 数据同步方法及装置、数据查询方法及装置
CN109815240A (zh) 用于管理索引的方法、装置、设备和存储介质
US7987205B1 (en) Integrated search engine devices having pipelined node maintenance sub-engines therein that support database flush operations
CN109408539B (zh) 数据操作方法、装置、服务器和存储介质
CN112395213B (zh) 一种基于内存面向热点数据的aceh索引结构及方法
CN112269784A (zh) 一种基于硬件实现的哈希表结构以及插入、查询和删除方法
US7953721B1 (en) Integrated search engine devices that support database key dumping and methods of operating same
JP2001527240A (ja) データ構造内の管理
CN106354721A (zh) 基于权限的检索方法和装置
CN116450607A (zh) 数据处理方法、设备及存储介质
CN113536058A (zh) 一种空间索引修改方法、装置、设备及存储介质

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