CN116991855B - 哈希表处理方法、装置、设备、介质、控制器及固态硬盘 - Google Patents
哈希表处理方法、装置、设备、介质、控制器及固态硬盘 Download PDFInfo
- Publication number
- CN116991855B CN116991855B CN202311254304.6A CN202311254304A CN116991855B CN 116991855 B CN116991855 B CN 116991855B CN 202311254304 A CN202311254304 A CN 202311254304A CN 116991855 B CN116991855 B CN 116991855B
- Authority
- CN
- China
- Prior art keywords
- target
- hash
- indication information
- overflow
- selectable
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 13
- 239000007787 solid Substances 0.000 title claims abstract description 11
- 238000000034 method Methods 0.000 claims abstract description 69
- 238000004364 calculation method Methods 0.000 claims abstract description 35
- 238000012545 processing Methods 0.000 claims abstract description 16
- 230000004044 response Effects 0.000 claims abstract description 11
- 230000008569 process Effects 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 12
- 238000012544 monitoring process Methods 0.000 claims description 12
- 238000013508 migration Methods 0.000 claims description 11
- 230000005012 migration Effects 0.000 claims description 11
- 230000006870 function Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 6
- 230000001960 triggered effect Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 241000544061 Cuculus canorus Species 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 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/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- 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/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- 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/2282—Tablespace storage structures; Management thereof
-
- 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/24—Querying
- G06F16/245—Query processing
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)
- Computational Linguistics (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了计算机技术领域内的一种哈希表处理方法、装置、设备、介质、控制器及固态硬盘。本发明在根据目标数据在内存中的目标指示信息计算得到目标哈希值后,先根据目标哈希值进一步计算得到目标偏移量,然后对目标哈希值和目标偏移量进行计算,可得到多个目标扩展信息,之后将多个目标扩展信息作为多个可选位置标记,并在哈希表中查询多个可选位置标记对应的多个可选桶,若多个可选桶中存在包括空闲单元的目标桶,则在目标桶中选择空闲的目标单元,将目标指示信息存储至目标单元后,将目标单元标记为非空闲。由此能在哈希表中存储更多指示信息,降低了CPU负载、内存访问频率及哈希表操作响应延时,提高了内存空间利用率及QoS。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种哈希表处理方法、装置、设备、介质、控制器及固态硬盘。
背景技术
哈希表,又叫散列表,是依据Key值直接获取数据的存储结构,利用哈希函数在key值与存储位置之间建立一个映射关系来快速获取存储数据。理想情况下,哈希查找算法在时间复杂度方面能达到O(1),因此具有广泛的应用场景。传统的哈希查找实现方法主要在软件层面实现,目前单一的哈希函数无法有效平衡哈希冲突与空间利用率,而多哈希函数又需要频繁的访问内存空间,查找效率低下。随着技术的发展,对存储数据响应的要求越来越高,需要更高效率的哈希查找来满足数据存取响应的高性能要求。因此,现有通过硬件实现哈希表能有效降低内存访问频率,提升哈希查找效率。但是,由于哈希冲突存在,哈希表内数据元素较多后,新的数据元素要加入哈希表中往往需要进行rehash重新计算新的哈希值来寻找空闲的存储位置,这就增加了建表过程的时间开销,在性能方面存在一定的瓶颈。
哈希冲突是哈希表的建立过程中无法避免的问题,常用的解决方法主要有散列法和链地址法。散列法,又分为开放寻址法和再散列法两种。开放寻址法在发生哈希冲突时通过H(key)=(H(key)+d)%m(其中m为哈希表的表长,d为一个增量)计算出新的哈希地址,直到发现空闲存储位置后将key写入哈希表;再散列法在发生哈希冲突时使用另一个哈希函数来重新计算,直到冲突不再发生。链地址法在发生哈希冲突时将产生冲突的key存储在对应位置的链表中,因此需要额外一张表来存放这些线性表指针。
综上,现有技术中存在以下问题:(1)散列法下的哈希表存在程序效率低,性能差等问题;(2)链地址法下的哈希表又存在内存空间利用率低,性能波动大的问题;(3)多哈希函数下的哈希表在建表过程的时间开销大,性能存在瓶颈。以上是本领域技术人员需要解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种哈希表处理方法、装置、设备、介质、控制器及固态硬盘,以提高哈希表性能,提升内存空间利用率,减少性能波动,提高QoS(ServiceQuality,服务质量)。其具体方案如下:
第一方面,本发明提供了一种哈希表处理方法,包括:
根据目标数据在内存中的目标指示信息计算得到目标哈希值;
根据所述目标哈希值计算得到目标偏移量;
对所述目标哈希值和所述目标偏移量进行计算,得到多个目标扩展信息;
将所述多个目标扩展信息作为多个可选位置标记,并在哈希表中查询所述多个可选位置标记对应的多个可选桶;
若所述多个可选桶中存在包括空闲单元的目标桶,则在所述目标桶中选择空闲的目标单元,将所述目标指示信息存储至所述目标单元后,将所述目标单元标记为非空闲。
可选地,还包括:
若所述多个可选桶中不存在所述目标桶,则在所述多个可选桶中选择溢出次数最小的桶作为对象桶,在所述对象桶中选择重复哈希次数最小的非空闲的对象单元;
用所述目标指示信息替换所述对象单元中存储的对象指示信息,并使所述对象单元的重复哈希次数递增一。
可选地,还包括:
判断递增后的所述对象单元的重复哈希次数是否超过预设阈值;
若递增后的所述对象单元的重复哈希次数超过所述预设阈值,则获取所述对象指示信息对应的对象哈希值和对象偏移量,并调整所述对象偏移量;
将所述对象单元的重复哈希次数清零,在溢出表中将所述对象桶的溢出次数递增一,并在所述溢出表中存储所述对象指示信息。
可选地,还包括:
若所述哈希表的剩余空间超过预设空间阈值,则将所述对象指示信息从所述溢出表迁移至所述哈希表;
若所述哈希表的剩余空间未超过预设空间阈值,则删除所述哈希表中的可删除数据后,执行所述将所述对象指示信息从所述溢出表迁移至所述哈希表。
可选地,所述将所述对象指示信息从所述溢出表迁移至所述哈希表,包括:
对所述对象哈希值和调整后的对象偏移量进行计算,得到多个对象扩展信息;
将所述多个对象扩展信息作为所述多个可选位置标记,并执行在哈希表中查询所述多个可选位置标记对应的多个可选桶及后续步骤。
可选地,还包括:
若查操作命中所述溢出表,则确定所述查操作查询的第一指示信息在所述溢出表中的第一命中次数,并确定所述第一指示信息原本在所述哈希表中占用的单元当前存储的第二指示信息的第二命中次数;
若所述第一命中次数减去所述第二命中次数的差值大于预设差异阈值,则使所述第一指示信息和所述第二指示信息互换存储单元。
可选地,还包括:
若删除所述哈希表中任意单元中存储的指示信息、且该单元所属桶在所述溢出表中的溢出次数不为零,则将所述溢出表中存储的任意指示信息从所述溢出表迁移至该单元。
第二方面,本发明提供了一种哈希表处理装置,包括:
哈希计算模块,用于根据目标数据在内存中的目标指示信息计算得到目标哈希值;
偏移计算模块,用于根据所述目标哈希值计算得到目标偏移量;
扩展信息计算模块,用于对所述目标哈希值和所述目标偏移量进行计算,得到多个目标扩展信息;
存储模块,用于将所述多个目标扩展信息作为多个可选位置标记,并在哈希表中查询所述多个可选位置标记对应的多个可选桶;若所述多个可选桶中存在包括空闲单元的目标桶,则在所述目标桶中选择空闲的目标单元,将所述目标指示信息存储至所述目标单元后,将所述目标单元标记为非空闲。
第三方面,本发明提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,以实现前述公开的哈希表处理方法。
第四方面,本发明提供了一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的哈希表处理方法。
第五方面,本发明提供了一种控制器,包括:
哈希计算电路,用于根据目标数据在内存中的目标指示信息计算得到目标哈希值;
偏移计算电路,用于根据所述目标哈希值计算得到目标偏移量;
扩展信息计算电路,用于对所述目标哈希值和所述目标偏移量进行计算,得到多个目标扩展信息;
存储电路,用于将所述多个目标扩展信息作为多个可选位置标记,并在哈希表中查询所述多个可选位置标记对应的多个可选桶;若所述多个可选桶中存在包括空闲单元的目标桶,则在所述目标桶中选择空闲的目标单元,将所述目标指示信息存储至所述目标单元后,将所述目标单元标记为非空闲。
可选地,还包括:
接收电路,用于接收主机端发送的所述目标指示信息;
响应电路,用于返回存储成功消息或存储失败消息至所述主机端;
迁移控制电路,用于控制溢出表中存储的指示信息从所述溢出表被迁移至所述哈希表的过程;
表监控模块,用于监控所述溢出表和所述哈希表。
第六方面,本发明提供了一种固态硬盘,包括前文所述的控制器。
通过以上方案可知,本发明提供了一种哈希表处理方法,包括:根据目标数据在内存中的目标指示信息计算得到目标哈希值;根据所述目标哈希值计算得到目标偏移量;对所述目标哈希值和所述目标偏移量进行计算,得到多个目标扩展信息;将所述多个目标扩展信息作为多个可选位置标记,并在哈希表中查询所述多个可选位置标记对应的多个可选桶;若所述多个可选桶中存在包括空闲单元的目标桶,则在所述目标桶中选择空闲的目标单元,将所述目标指示信息存储至所述目标单元后,将所述目标单元标记为非空闲。
可见,本发明的有益效果为:在根据目标数据在内存中的目标指示信息计算得到目标哈希值后,先根据目标哈希值进一步计算得到目标偏移量,然后对目标哈希值和目标偏移量进行计算,可得到多个目标扩展信息,之后将多个目标扩展信息作为多个可选位置标记,并在哈希表中查询多个可选位置标记对应的多个可选桶,若多个可选桶中存在包括空闲单元的目标桶,则在目标桶中选择空闲的目标单元,将目标指示信息存储至目标单元后,将目标单元标记为非空闲。由此能在哈希表中存储更多指示信息,降低了CPU负载、内存访问频率及哈希表操作响应延时,提高了内存空间利用率及QoS。
相应地,本发明提供的一种哈希表处理装置、设备、介质、控制器及固态硬盘,也同样具有上述技术效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明公开的一种哈希表处理方法流程图;
图2为本发明公开的一种哈希表处理装置示意图;
图3为本发明公开的一种电子设备示意图;
图4为本发明公开的一种控制器组成结构示意图;
图5为本发明公开的一种哈希写入过程示意图;
图6为本发明公开的一种哈希查找过程示意图;
图7为本发明公开的一种哈希删除过程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1所示,本发明实施例公开了一种哈希表处理方法,包括:
S101、根据目标数据在内存中的目标指示信息计算得到目标哈希值。
在本实施例中,目标数据在内存中的目标指示信息具体为:目标数据在内存中的存储地址或目标数据在内存中的存储地址对应的key。根据目标指示信息计算目标哈希值时,可采用任意哈希函数,如:Cuckoo算法等。
S102、根据目标哈希值计算得到目标偏移量。
S103、对目标哈希值和目标偏移量进行计算,得到多个目标扩展信息。
在本实施例中,根据目标哈希值计算得到目标偏移量,包括:对目标哈希值求模,将求模结果作为目标偏移量。为了基于目标哈希值和目标偏移量得到多个目标扩展信息,可以采用多种运算方式分别处理目标哈希值和目标偏移量,如:将目标哈希值和目标偏移量进行与、或、非、拼接和异或等运算。本实施例至少选两种运算方式,以便得到至少两个目标扩展信息。
其中,目标扩展信息为哈希表中桶的标记信息(即可选位置标记),得到至少两个目标扩展信息可提供至少两个桶作为可选项,大大降低CPU负载及内存访问频率,提高哈希表性能,降低哈希表写入、删除以及查找的响应延时,减少性能波动,能够提升内存空间利用率,提高QoS。
S104、将多个目标扩展信息作为多个可选位置标记,并在哈希表中查询多个可选位置标记对应的多个可选桶。
S105、若多个可选桶中存在包括空闲单元的目标桶,则在目标桶中选择空闲的目标单元,将目标指示信息存储至目标单元后,将目标单元标记为非空闲。
在本实施例中,哈希表中的每一桶对应有溢出次数,每一桶中的每一单元对应有重复哈希次数。当不存在目标桶且被替换的单元的重复哈希次数更新后超过预设阈值,则认为发生溢出事件,则将该单元的重复哈希次数清零,在溢出表中将该单元所属桶的溢出次数递增一,并在溢出表中该单元中原来存储的对象指示信息。
在一种实施方式中,若多个可选桶中不存在目标桶,则在多个可选桶中选择溢出次数最小的桶作为对象桶,在对象桶中选择重复哈希次数最小的非空闲的对象单元;用目标指示信息替换对象单元中存储的对象指示信息,并使对象单元的重复哈希次数递增一。判断递增后的对象单元的重复哈希次数是否超过预设阈值;若递增后的对象单元的重复哈希次数超过预设阈值,则获取对象指示信息对应的对象哈希值和对象偏移量,并调整对象偏移量;将对象单元的重复哈希次数清零,在溢出表中将对象桶的溢出次数递增一,并在溢出表中存储对象指示信息。其中,调整对象偏移量,包括:选择与原来计算对象偏移量的运算方式不同的其他运算方式重新计算对象偏移量。例如:原来计算对象偏移量的运算方式为:将对象哈希值的求模结果作为对象偏移量,那么调整对象偏移量时,可以对对象哈希值进行其他处理,以获得不同于原求模结果的其他计算结果来作为调整后的对象偏移量。
在将对象指示信息存储至溢出表后,溢出表便有了更新,为了使指示信息更多可能的存储在哈希表中,可判断哈希表是否有容纳新指示信息的能力。如果哈希表有容纳新指示信息的能力,则将溢出表中存储的指示信息迁移至哈希表。此迁移操作可称之为回写操作。在一种实施方式中,若哈希表的剩余空间超过预设空间阈值,则表明哈希表的剩余空间足够多,具有容纳新指示信息的能力,因此可触发回写操作,将对象指示信息从溢出表迁移至哈希表;若哈希表的剩余空间未超过预设空间阈值,则表明哈希表的剩余空间不够多,不能再容纳新指示信息,因此先不触发回写操作,待删除哈希表中的可删除数据,以使哈希表具有容纳新指示信息的能力后,再执行将对象指示信息从溢出表迁移至哈希表进行回写操作。其中,哈希表中的可删除数据可按照指示信息的访问频次决定,如:将哈希表中访问频次低于某一固定值的指示信息作为可删除数据,以腾出更多的空闲单元。
调整对象偏移量后,对对象哈希值和调整后的对象偏移量进行计算,可获得不同于原扩展信息的新的对象扩展信息,由此可扩大桶的可选范围,更容易给对象指示信息选择存储位置。在一种实施方式中,将对象指示信息从溢出表迁移至哈希表,包括:对对象哈希值和调整后的对象偏移量进行计算,得到多个对象扩展信息;将多个对象扩展信息作为多个可选位置标记,并执行在哈希表中查询多个可选位置标记对应的多个可选桶及后续步骤。
在本实施例中,查操作也会触发回写操作。在一种实施方式中,若查操作命中溢出表,则确定查操作查询的第一指示信息在溢出表中的第一命中次数,并确定第一指示信息原本在哈希表中占用的单元当前存储的第二指示信息的第二命中次数;若第一命中次数减去第二命中次数的差值大于预设差异阈值,则表明查操作命中的第一指示信息比第二指示信息的访问频次更高,因此使第一指示信息和第二指示信息互换存储单元来完成回写操作,以使指示信息尽可能存储在哈希表中。下次查第一指示信息时,直接查哈希表而不用查溢出表。
相应地,删除哈希表的操作也会触发回写操作。在一种实施方式中,若删除哈希表中任意单元中存储的指示信息、且该单元所属桶在溢出表中的溢出次数不为零,则表明该单元所属桶中的任意单元中原存储的指示信息在溢出表中有记录,因此将溢出表中存储的任意指示信息从溢出表迁移至该单元来完成回写操作,以使指示信息尽可能存储在哈希表中。
可见,本实施例在根据目标数据在内存中的目标指示信息计算得到目标哈希值后,先根据目标哈希值进一步计算得到目标偏移量,然后对目标哈希值和目标偏移量进行计算,可得到多个目标扩展信息,之后将多个目标扩展信息作为多个可选位置标记,并在哈希表中查询多个可选位置标记对应的多个可选桶,若多个可选桶中存在包括空闲单元的目标桶,则在目标桶中选择空闲的目标单元,将目标指示信息存储至目标单元后,将目标单元标记为非空闲。由此可扩大每一次所确定的桶的可选范围,也就能在哈希表中存储更多的指示信息,大大降低CPU负载及内存访问频率,提高哈希表性能,降低哈希表写入、删除以及查找的响应延时,减少性能波动,能够提升内存空间利用率,提升QoS,具有高性能低时延的优点。
下面对本发明实施例提供的一种哈希表处理装置进行介绍,下文描述的一种哈希表处理装置与本文描述的其他实施例可以相互参照。
参见图2所示,本发明实施例公开了一种哈希表处理装置,包括:
哈希计算模块201,用于根据目标数据在内存中的目标指示信息计算得到目标哈希值;
偏移计算模块202,用于根据目标哈希值计算得到目标偏移量;
扩展信息计算模块203,用于对目标哈希值和目标偏移量进行计算,得到多个目标扩展信息;
存储模块204,用于将多个目标扩展信息作为多个可选位置标记,并在哈希表中查询多个可选位置标记对应的多个可选桶;若多个可选桶中存在包括空闲单元的目标桶,则在目标桶中选择空闲的目标单元,将目标指示信息存储至目标单元后,将目标单元标记为非空闲。
在一种实施方式中,还包括:
替换模块,用于若多个可选桶中不存在目标桶,则在多个可选桶中选择溢出次数最小的桶作为对象桶,在对象桶中选择重复哈希次数最小的非空闲的对象单元;用目标指示信息替换对象单元中存储的对象指示信息,并使对象单元的重复哈希次数递增一。
在一种实施方式中,还包括:
溢出模块,用于判断递增后的对象单元的重复哈希次数是否超过预设阈值;若递增后的对象单元的重复哈希次数超过预设阈值,则获取对象指示信息对应的对象哈希值和对象偏移量,并调整对象偏移量;将对象单元的重复哈希次数清零,在溢出表中将对象桶的溢出次数递增一,并在溢出表中存储对象指示信息。
在一种实施方式中,还包括:
回写模块,用于若哈希表的剩余空间超过预设空间阈值,则将对象指示信息从溢出表迁移至哈希表;若哈希表的剩余空间未超过预设空间阈值,则删除哈希表中的可删除数据后,执行将对象指示信息从溢出表迁移至哈希表的步骤。
在一种实施方式中,回写模块具体用于:
对对象哈希值和调整后的对象偏移量进行计算,得到多个对象扩展信息;
将多个对象扩展信息作为多个可选位置标记,并执行在哈希表中查询多个可选位置标记对应的多个可选桶及后续步骤。
在一种实施方式中,回写模块,还用于若查操作命中溢出表,则确定查操作查询的第一指示信息在溢出表中的第一命中次数,并确定第一指示信息原本在哈希表中占用的单元当前存储的第二指示信息的第二命中次数;
若第一命中次数减去第二命中次数的差值大于预设差异阈值,则使第一指示信息和第二指示信息互换存储单元。
在一种实施方式中,回写模块,还用于若删除哈希表中任意单元中存储的指示信息、且该单元所属桶在溢出表中的溢出次数不为零,则将溢出表中存储的任意指示信息从溢出表迁移至该单元。
其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本实施例提供了一种哈希表处理装置,大大降低CPU负载及内存访问频率,提高哈希表性能,降低哈希表写入、删除以及查找的响应延时,减少性能波动,提升内存空间利用率,提高QoS。
下面对本发明实施例提供的一种电子设备进行介绍,下文描述的一种电子设备与本文描述的其他实施例可以相互参照。
参见图3所示,本发明实施例公开了一种电子设备,包括:
存储器301,用于保存计算机程序;
处理器302,用于执行所述计算机程序,以实现上述任意实施例公开的方法。
下面对本发明实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与本文描述的其他实施例可以相互参照。
一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的哈希表处理方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
下面对本发明实施例提供的一种控制器进行介绍,下文描述的一种控制器与本文描述的其他实施例可以相互参照。
本发明实施例公开了一种控制器,包括:
哈希计算电路,用于根据目标数据在内存中的目标指示信息计算得到目标哈希值;
偏移计算电路,用于根据目标哈希值计算得到目标偏移量;
扩展信息计算电路,用于对目标哈希值和目标偏移量进行计算,得到多个目标扩展信息;
存储电路,用于将多个目标扩展信息作为多个可选位置标记,并在哈希表中查询多个可选位置标记对应的多个可选桶;若多个可选桶中存在包括空闲单元的目标桶,则在目标桶中选择空闲的目标单元,将目标指示信息存储至目标单元后,将目标单元标记为非空闲。
在一种实施方式中,还包括:
接收电路,用于接收主机端发送的目标指示信息;
响应电路,用于返回存储成功消息或存储失败消息至主机端;
迁移控制电路,用于控制溢出表中存储的指示信息从溢出表被迁移至哈希表的过程;
表监控模块,用于监控溢出表和哈希表。
在本实施例中,各个模块以流水线方式工作,各模块内部的执行步骤互不干扰。
在一种实施方式中,存储电路还用于:若多个可选桶中不存在目标桶,则在多个可选桶中选择溢出次数最小的桶作为对象桶,在对象桶中选择重复哈希次数最小的非空闲的对象单元;用目标指示信息替换对象单元中存储的对象指示信息,并使表监控模块对象单元的重复哈希次数递增一。
在一种实施方式中,存储电路还用于:判断递增后的对象单元的重复哈希次数是否超过预设阈值;若递增后的对象单元的重复哈希次数超过预设阈值,则获取对象指示信息对应的对象哈希值和对象偏移量,并使偏移计算电路调整对象偏移量;在溢出表中存储对象指示信息;使表监控模块将对象单元的重复哈希次数清零,在溢出表中将对象桶的溢出次数递增一。
在一种实施方式中,迁移控制电路具体用于:若哈希表的剩余空间超过预设空间阈值,则将对象指示信息从溢出表迁移至哈希表;若哈希表的剩余空间未超过预设空间阈值,则删除哈希表中的可删除数据后,执行将对象指示信息从溢出表迁移至哈希表的步骤。
在一种实施方式中,扩展信息计算电路具体用于:对对象哈希值和调整后的对象偏移量进行计算,得到多个对象扩展信息;将多个对象扩展信息作为多个可选位置标记,并执行在哈希表中查询多个可选位置标记对应的多个可选桶及后续步骤。
在一种实施方式中,迁移控制电路具体用于:若查操作命中溢出表,则确定查操作查询的第一指示信息在溢出表中的第一命中次数,并确定第一指示信息原本在哈希表中占用的单元当前存储的第二指示信息的第二命中次数;若第一命中次数减去第二命中次数的差值大于预设差异阈值,则使第一指示信息和第二指示信息互换存储单元。
在一种实施方式中,迁移控制电路具体用于:若删除哈希表中任意单元中存储的指示信息、且该单元所属桶在溢出表中的溢出次数不为零,则将溢出表中存储的任意指示信息从溢出表迁移至该单元。
其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本实施例提供了一种控制器,能够扩展哈希表对内存的地址映射范围,提升内存空间利用率。
下面对本发明实施例提供的一种固态硬盘进行介绍,下文描述的一种固态硬盘与本文描述的其他实施例可以相互参照。本发明实施例公开了一种固态硬盘,包括前文所述的控制器,其他相关内容请参照其他实施例,本实施例不再赘述。
需要说明的是,哈希表建立过程中有一个无法避免的问题就是哈希冲突,一般采用散列法和链地址法等方法进行解决。散列法又分为开放寻址法和再散列法两种。其中,开放寻址法在发生哈希冲突时通过H(key)=(H(key)+d)%m计算出新的哈希地址,直到发现空闲存储位置后将key写入哈希表;m为哈希表的表长,d为一个增量。再散列法在发生哈希冲突时使用另一个哈希函数来重新计算,直到冲突不再发生。链地址法在发生哈希冲突时将产生冲突的key存储在对应位置的链表中,因此需要额外一张表来存放这些线性表指针。
此外,可以利用多哈希函数解决单哈希函数下的哈希冲突与空间利用率低的问题,如:Cuckoo哈希使用两个哈希函数来计算存储位置,当两个存储位置均空闲时,则选择任意一个位置存储数据;当只有一个存储位置空闲时,则选择此位置存储数据;当两个存储位置均非空闲时,则随机选择一个存储位置存储当前数据,将所选存储位置上的数据并将其踢出,然后为该踢出值使用另一个哈希函数为其另找一个存储位置进行写入。
下面基于Cuckoo哈希,并利用硬件及流水线方式进行哈希表的构建。其中,额外增加一个溢出表以及回写控制单元来提高哈希表性能,降低哈希表的写入、删除以及查找的响应延时,减少性能波动。
请参见图4,图4中的各个硬件模块以流水线方式工作,接收队列模块用于接收外部的哈希操作请求,完成队列模块将外部请求的处理结果返回到外部。根据外部请求携带的Key信息计算出哈希值、偏移值以及扩展值,以完成哈希表的写入等操作,同时用一个溢出表记录溢出Key的相关信息。表监控模块用于监控并更新溢出表、哈希表中slot的状态。
哈希计算模块用于对接收的外部请求的Key计算出原始的哈希值H(key);偏移计算模块根据H(key)计算出偏移量n,当需要再哈希时,偏移计算模块还负责仲裁外部key、溢出表再哈希Key以及溢出表回写Key,以进行偏移量和扩展值的重新计算;扩展值计算模块根据原始的哈希值H(key)以及偏移量n计算出多个哈希扩展值F(Hkey,n)作为哈希表的可选存储位置,每个可选存储位置记为bucket(桶),每个bucket可包含多个子存储空间记为slot(单元)。具体的,以流水线方式进行计算的过程包括:哈希计算模块基于key1元素完成H(key1)的计算后将其结果传递至偏移计算模块,偏移计算模块进行第二级的偏移量n1计算,偏移计算模块计算偏移量n1的过程中,哈希计算模块会继续从接收队列中接收key2元素进行H(key2)的计算;偏移计算模块计算出偏移量n1并传递到扩展值计算模块后,扩展值计算模块进行第三级的F(Hkey1,n1)计算,此过程中,偏移计算模块根据H(key2)计算偏移量n2,同时哈希计算模块继续从接收队列中接收第三个Key元素进行H(key3)的计算,以此类推。
哈希表主要完成Key元素在哈希表的写入、查找和删除操作。如图5所示,根据计算出的F1(Hk,n)在哈希表对应可选的桶(bucket)中选择一个空闲(idle)状态的slot将Key保存,并将此slot由idle置为繁忙(busy),对应图5中加粗字体所示意的单元状态变化。可见,往哈希表写入或删除Key元素时触发表监控模块,以更新相应slot的状态为busy或idle。在写入Key元素至哈希表的同时记录下此Key元素对应的原始哈希值H(key)及偏移量n。
当发生哈希冲突,即在当前所有可选bucket中所有slot均为busy状态时,选择溢出次数最小的bucket中的任意一个slot并将新的Key2写入此slot存储空间,并记录原始哈希值H(key2)和偏移量n2;之后将此slot存储空间中原存储的Key1元素及其对应的原始哈希值H(key1)和偏移量n1传递给溢出表,并触发再哈希控制模块进行重复哈希操作,以为key1寻找新的idle状态的slot,同时更新该slot的状态为busy。如果第一次为key1寻找不到空闲的新slot,也就是再次发生了哈希冲突,那么重复前述过程。每发生一次哈希冲突,替换所存key的slot的re-hash计数(重复哈希次数)自增1。
溢出表负责所有溢出Key元素的管理以及回写。当发生哈希冲突后,原存Key1的slot的re-hash计数自增1,此时根据自增后的re-hash计数以及初始化预设的冲突re-hash水线大小(一个预设阈值)来判断是否发生溢出事件,如果自增后的re-hash计数超过冲突re-hash水线大小,则发生哈希溢出事件,此时需要调整偏移量n1来计算新的可选bucket存储位置,以便寻找idle状态的slot,然后重复哈希表写入过程;如果自增后的re-hash计数不超过冲突re-hash水线大小,则无需调整偏移量n1,即利用原偏移量n1重新计算F(Hkey1,n1)来选bucket。
当发生哈希溢出事件时,相应bucket对应的溢出计数自增1,并清除Key1的slot的re-hash计数。将Key1移至溢出表,溢出表的已用空间计数自增1。此时可根据溢出表的已用空间总数以及溢出水线大小来判断哈希表的空间利用率,如果哈希表的空间不足,则告知外部控制单元对哈希表进行数据管理,如删除其中的部分非高频访问的Key;如果哈希表的空间充足,则可以将溢出表中的高频访问的Key挪至哈希表,以完成回写操作。
如图6所示,哈希查找过程通过两个子过程实现,包括:哈希表查找和溢出表查找。由于硬件逻辑的并行性,每个子过程都是O(1)的时间开销。引入流水线思想,最终查找结果统一在溢出查找后输出,如果哈希表查找阶段匹配到了Key元素,则溢出查找阶段不对溢出表进行任何操作。这种设计结构可以平滑每个外部查找请求的总时间开销,降低性能波动。本发明哈希查找过程通过两个子过程实现,即哈希表查找状态机和溢出查找状态机。由于硬件逻辑的并行性,每个子过程都是O(1)的时间开销。通过引入流水线思想,哈希查找结果统一在溢出查找后输出,如果哈希表查找阶段匹配到了Key元素,则溢出查找阶段不对溢出表进行任何操作,可以平滑每个外部查找请求的总时间开销,降低性能波动,提升内存空间利用率和QoS。
回写控制模块主要负责控制回写操作流程。如果哈希查找过程中在哈希表中匹配到所查Key元素,则哈希表中此Key元素的命中频率计数自增1;如果在溢出表中匹配到所查Key元素,则溢出表中此Key元素的命中频率计数自增1。当命中溢出表时,对比溢出表中所查Key元素的命中频率计数与该Key元素在哈希表中对应的原位置上的Key的命中频率计数的差值是否达到初始化预设的回写水线,若是,则在溢出表查找阶段触发回写操作,将当前所查Key元素与其在哈希表中原位置上的Key互换位置。
如图7所示,哈希删除过程复用哈希查找过程实现。哈希表的删除过程仅需要将所删slot对应的busy状态置为idle即可。进一步,如果哈希表的删除过程在哈希表查找阶段匹配成功且相应的bucket的溢出计数不为零,则表明该bucket的某一slot上的原key在溢出表中,因此在溢出表删除阶段触发溢出表内Key元素的回写操作,即:将此溢出表内的一个Key元素回写到被删除的slot空间中,重新将该存储slot位置的存储状态置为busy且哈希表中此bucket溢出计数自减1。如果此回写过程中出现:此slot被新的Key置为busy,则放弃此次回写操作,此bucket溢出计数不变。
可见,本实施例引入流水线思想进行整个哈希表写入、删除等过程,哈希冲突及哈希溢出也均为内部流水线化处理,不影响外部的请求,降低哈希建表的时间开销,能够满足高性能低时延场景需求。其中,采用一个回写控制模块来监测哈希表内Key元素的状态,能够降低CPU负载及内存访问频率,提升内存空间利用率,具有高性能低时延的优点,能够降低内存负载并提高哈希查找效率,以适应高性能低延时的数据存取需求。
本发明涉及的“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法或设备固有的其它步骤或单元。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的可读存储介质中。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种哈希表处理方法,其特征在于,包括:
根据目标数据在内存中的目标指示信息计算得到目标哈希值;
根据所述目标哈希值计算得到目标偏移量;
对所述目标哈希值和所述目标偏移量进行计算,得到多个目标扩展信息;
将所述多个目标扩展信息作为多个可选位置标记,并在哈希表中查询所述多个可选位置标记对应的多个可选桶;
若所述多个可选桶中存在包括空闲单元的目标桶,则在所述目标桶中选择空闲的目标单元,将所述目标指示信息存储至所述目标单元后,将所述目标单元标记为非空闲;
若所述多个可选桶中不存在所述目标桶,则在所述多个可选桶中选择溢出次数最小的桶作为对象桶,在所述对象桶中选择重复哈希次数最小的非空闲的对象单元;
用所述目标指示信息替换所述对象单元中存储的对象指示信息,并使所述对象单元的重复哈希次数递增一;
判断递增后的所述对象单元的重复哈希次数是否超过预设阈值;
若递增后的所述对象单元的重复哈希次数超过所述预设阈值,则获取所述对象指示信息对应的对象哈希值和对象偏移量,并调整所述对象偏移量;
将所述对象单元的重复哈希次数清零,在溢出表中将所述对象桶的溢出次数递增一,并在所述溢出表中存储所述对象指示信息;
若所述哈希表的剩余空间超过预设空间阈值,则将所述对象指示信息从所述溢出表迁移至所述哈希表;
其中,所述将所述对象指示信息从所述溢出表迁移至所述哈希表,包括:
对所述对象哈希值和调整后的对象偏移量进行计算,得到多个对象扩展信息;
将所述多个对象扩展信息作为所述多个可选位置标记,并执行在哈希表中查询所述多个可选位置标记对应的多个可选桶及后续步骤。
2.根据权利要求1所述的方法,其特征在于,还包括:
若所述哈希表的剩余空间未超过预设空间阈值,则删除所述哈希表中的可删除数据后,执行所述将所述对象指示信息从所述溢出表迁移至所述哈希表。
3.根据权利要求2所述的方法,其特征在于,还包括:
若查操作命中所述溢出表,则确定所述查操作查询的第一指示信息在所述溢出表中的第一命中次数,并确定所述第一指示信息原本在所述哈希表中占用的单元当前存储的第二指示信息的第二命中次数;
若所述第一命中次数减去所述第二命中次数的差值大于预设差异阈值,则使所述第一指示信息和所述第二指示信息互换存储单元。
4.根据权利要求2所述的方法,其特征在于,还包括:
若删除所述哈希表中任意单元中存储的指示信息、且该单元所属桶在所述溢出表中的溢出次数不为零,则将所述溢出表中存储的任意指示信息从所述溢出表迁移至该单元。
5.一种哈希表处理装置,其特征在于,包括:
哈希计算模块,用于根据目标数据在内存中的目标指示信息计算得到目标哈希值;
偏移计算模块,用于根据所述目标哈希值计算得到目标偏移量;
扩展信息计算模块,用于对所述目标哈希值和所述目标偏移量进行计算,得到多个目标扩展信息;
存储模块,用于将所述多个目标扩展信息作为多个可选位置标记,并在哈希表中查询所述多个可选位置标记对应的多个可选桶;若所述多个可选桶中存在包括空闲单元的目标桶,则在所述目标桶中选择空闲的目标单元,将所述目标指示信息存储至所述目标单元后,将所述目标单元标记为非空闲;
替换模块,用于若所述多个可选桶中不存在所述目标桶,则在所述多个可选桶中选择溢出次数最小的桶作为对象桶,在所述对象桶中选择重复哈希次数最小的非空闲的对象单元;用所述目标指示信息替换所述对象单元中存储的对象指示信息,并使所述对象单元的重复哈希次数递增一;
溢出模块,用于判断递增后的所述对象单元的重复哈希次数是否超过预设阈值;若递增后的所述对象单元的重复哈希次数超过所述预设阈值,则获取所述对象指示信息对应的对象哈希值和对象偏移量,并调整所述对象偏移量;将所述对象单元的重复哈希次数清零,在溢出表中将所述对象桶的溢出次数递增一,并在所述溢出表中存储所述对象指示信息;
回写模块,用于若所述哈希表的剩余空间超过预设空间阈值,则将所述对象指示信息从所述溢出表迁移至所述哈希表;回写模块具体用于:对所述对象哈希值和调整后的对象偏移量进行计算,得到多个对象扩展信息;将所述多个对象扩展信息作为所述多个可选位置标记,并执行在哈希表中查询所述多个可选位置标记对应的多个可选桶及后续步骤。
6.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,以实现如权利要求1至4任一项所述的方法。
7.一种可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述的方法。
8.一种控制器,其特征在于,包括:
哈希计算电路,用于根据目标数据在内存中的目标指示信息计算得到目标哈希值;
偏移计算电路,用于根据所述目标哈希值计算得到目标偏移量;
扩展信息计算电路,用于对所述目标哈希值和所述目标偏移量进行计算,得到多个目标扩展信息;
存储电路,用于将所述多个目标扩展信息作为多个可选位置标记,并在哈希表中查询所述多个可选位置标记对应的多个可选桶;若所述多个可选桶中存在包括空闲单元的目标桶,则在所述目标桶中选择空闲的目标单元,将所述目标指示信息存储至所述目标单元后,将所述目标单元标记为非空闲;
存储电路还用于:若所述多个可选桶中不存在所述目标桶,则在所述多个可选桶中选择溢出次数最小的桶作为对象桶,在所述对象桶中选择重复哈希次数最小的非空闲的对象单元;用所述目标指示信息替换所述对象单元中存储的对象指示信息,并使所述对象单元的重复哈希次数递增一;判断递增后的所述对象单元的重复哈希次数是否超过预设阈值;若递增后的所述对象单元的重复哈希次数超过所述预设阈值,则获取所述对象指示信息对应的对象哈希值和对象偏移量,并调整所述对象偏移量;在所述溢出表中存储所述对象指示信息;使表监控模块将所述对象单元的重复哈希次数清零,在溢出表中将所述对象桶的溢出次数递增一;
迁移控制电路具体用于:若所述哈希表的剩余空间超过预设空间阈值,则将所述对象指示信息从所述溢出表迁移至所述哈希表;
扩展信息计算电路具体用于:对所述对象哈希值和调整后的对象偏移量进行计算,得到多个对象扩展信息;将所述多个对象扩展信息作为所述多个可选位置标记,并执行在哈希表中查询所述多个可选位置标记对应的多个可选桶及后续步骤。
9.根据权利要求8所述的控制器,其特征在于,还包括:
接收电路,用于接收主机端发送的所述目标指示信息;
响应电路,用于返回存储成功消息或存储失败消息至所述主机端;
迁移控制电路,用于控制溢出表中存储的指示信息从所述溢出表被迁移至所述哈希表的过程;
表监控模块,用于监控所述溢出表和所述哈希表。
10.一种固态硬盘,其特征在于,包括权利要求8或9所述的控制器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311254304.6A CN116991855B (zh) | 2023-09-27 | 2023-09-27 | 哈希表处理方法、装置、设备、介质、控制器及固态硬盘 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311254304.6A CN116991855B (zh) | 2023-09-27 | 2023-09-27 | 哈希表处理方法、装置、设备、介质、控制器及固态硬盘 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116991855A CN116991855A (zh) | 2023-11-03 |
CN116991855B true CN116991855B (zh) | 2024-01-12 |
Family
ID=88530594
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311254304.6A Active CN116991855B (zh) | 2023-09-27 | 2023-09-27 | 哈希表处理方法、装置、设备、介质、控制器及固态硬盘 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116991855B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117390029B (zh) * | 2023-12-11 | 2024-05-17 | 格创通信(浙江)有限公司 | 一种表项插入方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07219821A (ja) * | 1994-01-28 | 1995-08-18 | Nec Corp | カタログ管理ファイル最適化方式 |
CN105960645A (zh) * | 2014-01-15 | 2016-09-21 | D·R·切里顿 | 基于去重复的数据安全性 |
US9946657B1 (en) * | 2016-03-01 | 2018-04-17 | Nutanix, Inc. | Spilling small cache entries to a solid state device |
JP2018120594A (ja) * | 2017-01-25 | 2018-08-02 | 三星電子株式会社Samsung Electronics Co.,Ltd. | 最大化された重複除去メモリのためのシステム及び方法 |
CN111541617A (zh) * | 2020-04-17 | 2020-08-14 | 网络通信与安全紫金山实验室 | 一种用于高速大规模并发数据流的数据流表处理方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10528539B2 (en) * | 2016-07-01 | 2020-01-07 | Intel Corporation | Optimized selection of hash collision chains |
-
2023
- 2023-09-27 CN CN202311254304.6A patent/CN116991855B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07219821A (ja) * | 1994-01-28 | 1995-08-18 | Nec Corp | カタログ管理ファイル最適化方式 |
CN105960645A (zh) * | 2014-01-15 | 2016-09-21 | D·R·切里顿 | 基于去重复的数据安全性 |
US9946657B1 (en) * | 2016-03-01 | 2018-04-17 | Nutanix, Inc. | Spilling small cache entries to a solid state device |
JP2018120594A (ja) * | 2017-01-25 | 2018-08-02 | 三星電子株式会社Samsung Electronics Co.,Ltd. | 最大化された重複除去メモリのためのシステム及び方法 |
CN111541617A (zh) * | 2020-04-17 | 2020-08-14 | 网络通信与安全紫金山实验室 | 一种用于高速大规模并发数据流的数据流表处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN116991855A (zh) | 2023-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6916751B2 (ja) | ハイブリッドメモリーモジュール及びその動作方法 | |
KR101620773B1 (ko) | 복합식 비휘발성 저장 디바이스를 위한 데이터 이송 | |
US10649890B2 (en) | Information processing system, storage control apparatus, storage control method, and storage control program | |
KR102036769B1 (ko) | 데이터 캐싱 방법, 캐시 및 컴퓨터 시스템 | |
EP3229142B1 (en) | Read cache management method and device based on solid state drive | |
WO2018099107A1 (zh) | 一种哈希表管理的方法和装置、计算机存储介质 | |
US20020138648A1 (en) | Hash compensation architecture and method for network address lookup | |
US20110202744A1 (en) | Hashing with hardware-based reorder using duplicate values | |
CN116991855B (zh) | 哈希表处理方法、装置、设备、介质、控制器及固态硬盘 | |
US8583874B2 (en) | Method and apparatus for caching prefetched data | |
US20100228914A1 (en) | Data caching system and method for implementing large capacity cache | |
CN107122130B (zh) | 一种数据重删方法及装置 | |
CN113434440A (zh) | 一种减少存储器访问延迟方法及系统 | |
US10185666B2 (en) | Item-wise simulation in a block cache where data eviction places data into comparable score in comparable section in the block cache | |
CN109933543B (zh) | Cache的数据锁定方法、装置和计算机设备 | |
US20130117302A1 (en) | Apparatus and method for searching for index-structured data including memory-based summary vector | |
CN112948313B (zh) | 一种会话数据的管理方法和装置 | |
WO2020063355A1 (zh) | 数据块的缓存方法、装置、计算机设备及计算机可读存储介质 | |
CN114860627B (zh) | 基于地址信息动态生成页表的方法 | |
CN107766258B (zh) | 内存存储方法与装置、内存查询方法与装置 | |
CN114706834B (zh) | 一种高效率的动态集合管理方法和系统 | |
WO2007088591A1 (ja) | メモリアクセス制御装置およびメモリアクセス制御方法 | |
CN111831691A (zh) | 一种数据读写方法及装置、电子设备、存储介质 | |
JPH08137754A (ja) | ディスクキャッシュ装置 | |
CN115480826B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |