[发明专利]一种面向非易失内存的链式散列插入和删除方法及系统在审
申请号: | 202110903042.6 | 申请日: | 2021-08-06 |
公开(公告)号: | CN113742339A | 公开(公告)日: | 2021-12-03 |
发明(设计)人: | 冯丹;肖仁智;胡燏翀 | 申请(专利权)人: | 华中科技大学 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/245;G06F3/06 |
代理公司: | 武汉华之喻知识产权代理有限公司 42267 | 代理人: | 李君;廖盈春 |
地址: | 430074 *** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 非易失 内存 链式 插入 删除 方法 系统 | ||
1.一种面向非易失内存的链式散列插入方法,其特征在于,包括以下步骤:
根据键的散列值寻找链式散列中主桶区链表是否有空闲,如有空闲则将键值对写入主桶内;否则,从预分配桶数组中取一个未使用的预分配桶,将键值对链接到预分配桶内,若预分配桶数组中无空闲的桶则插入键值对失败;
其中,在键值对写的过程中不采用条目计数变量count计算NVM散列表的键值对数目;在统计散列表中有效键值对数目时通过Size函数计算。
2.根据权利要求1所述的链式散列插入方法,其特征在于,在判断主桶区链表是否有空闲之前,链式散列划分为主桶和预分配桶。
3.根据权利要求1或2所述的链式散列插入方法,其特征在于,寻找主桶写键值对的方法,包括以下步骤:
通过散列函数计算键的散列值后,根据散列值寻找链式散列中对应的多槽散列主桶;
判断多槽散列主桶的链表是否存满,若未存满则寻找标志为0的槽,将键值对写入主桶内。
4.根据权利要求3所述的链式散列插入方法,其特征在于,采用免日志故障原子写将键值对写入主桶或预分配桶,具体执行过程如下:
寻找NVM中标志为0的槽,采用缓存行刷新指令刷回键和键值至槽中;
设置栅栏指令,防止栅栏指令之后的命令先于栅栏指令之前的命令将数据写入NVM;
将标志值设置为1,并将标志值通过缓存行刷新指令写入NVM,追加栅栏指令。
5.根据权利要求1所述的链式散列插入方法,其特征在于,所述主桶和预分配桶包括四个标志、四个槽位和一个指向下一个桶的指针;
其中,标志1代表被占用;标志0代表空闲;每个槽位存储一个键值对。
6.一种面向非易失内存的链式散列删除方法,其特征在于,包括以下步骤:
根据键的散列值,找出在链式散列中对应的散列桶;
在散列桶的链表中查找是否同时存在标志为1,且存在槽内的键和需寻找的键相等的槽;
若存在,则将槽的标志值设置为0,采用缓存行刷新指令将标志值0刷回NVM中,删除操作完成;
否则,判定找不到对应的键值对,删除失败;
其中,在键值对删除的过程中不采用条目计数变量count计算NVM散列表的键值对数目;在统计散列表中有效键值对数目时通过Size函数计算;
所述散列桶包括主桶和预分配桶。
7.根据权利要求6所述的链式散列删除方法,其特征在于,主桶和预分配桶包括四个标志、四个槽位和一个指向下一个桶的指针;
其中,标志1代表被占用;标志0代表空闲;每个槽位存储一个键值对。
8.一种面向非易失内存的链式散列插入系统,其特征在于,包括:
空闲主桶判断模块,用于根据键的散列值寻找链式散列中主桶区链表是否有空闲;
写模块,用于将键值对写入主桶或预分配桶内;
散列冲突预分配模块,用于判断预分配桶数组是否有空闲的预分配桶,若有则取一个未使用的预分配桶,否则判定插入键值对失败;
无局部快速写穿模块,用于在键值对写的过程中不采用条目计数变量count计算NVM散列表的键值对数目;在统计散列表中有效键值对数目时通过Size函数计算。
9.根据权利要求8所述的链式散列插入系统,其特征在于,所述写模块为免日志故障原子写模块,具体执行过程如下:
寻找NVM中标志为0的槽,采用缓存行刷新指令刷回键和键值至槽中;
设置栅栏指令,防止栅栏指令之后的命令先于栅栏指令之前的命令将数据写入NVM;
将标志值设置为1,并将标志值通过缓存行刷新指令写入NVM,追加栅栏指令。
10.一种面向非易失内存的链式散列删除系统,其特征在于,包括:
散列桶寻找模块,用于根据键的散列值,找出在链式散列中对应的散列桶;
键值比对模块,用于在散列桶的链表中查找是否同时存在标志为1,且存在槽内的键和需寻找的键相等的键;
删除模块,用于在散列桶的链表中存在标志为1,且存在槽内的键和需寻找的键相等时,将槽的标志值设置为0,采用缓存行刷新指令将标志值0刷回NVM中,删除操作完成;
删除失败判定模块,用于在散列桶的链表中不存在标志为1,且存在槽内的键和需寻找的键相等时,判定找不到对应的键值对,删除失败;
其中,在键值对删除的过程中不采用条目计数变量count计算NVM散列表的键值对数目;在统计散列表中有效键值对数目时通过Size函数计算;
所述散列桶包括主桶和预分配桶。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110903042.6/1.html,转载请声明来源钻瓜专利网。