一种基于混合DRAM-NVM内存的冷热键值识别方法技术

技术编号:30170293 阅读:14 留言:0更新日期:2021-09-25 15:28
本发明专利技术公开了一种基于混合DRAM

【技术实现步骤摘要】
一种基于混合DRAM

NVM内存的冷热键值识别方法


[0001]本专利技术属于计算机数据存储领域,具体涉及一种基于混合DRAM

NVM内存的冷热键值识别方法。

技术介绍

[0002]近年来,一些新型的非易失内存(Non

Volatile Memory,NVM)技术开始涌现,如相变存储器(PCM)、忆阻器(ReRAM)、自旋扭矩磁存储器(STT

MRAM)和3D

XPoint等。相较于传统的DRAM内存技术,NVM具有磁盘的掉电非易失,高存储密度,功耗低的特性,同时也具备DRAM按字节修改寻址,低读写延迟的特性。因此使用NVM技术弥补了DRAM内存系统内存容量不足以及功耗高的不足。但当前NVM技术仍然存在读写延迟不对称和磨损次数有限等缺点,所以NVM更适合与DRAM共同连接到计算机系统的内存总线组成混合内存。
[0003]键值对是数据库最简单的组织形式,其中键是值的索引编号,值是数据库要存放的数据,在用户查询数据时,只需要提供待查询的键,就可以在数据库中查询获得其对应的值。例如在电话号码数据库中,键:小马,值:18753137777,<小马,18753137777>就是一个键值对,用户通过待查询的键“小马”,就可以获取其电话号码18753137777。目前键值对广泛应用于各种数据库,例如Redis,Voldemort,Oracle BDB。哈希索引则是数据库中一种常用的查询键值对的数据结构,广泛应用于各种数据库和文件系统当中,当前随着大数据和云计算的兴起,对内存哈希索引的查询延迟要求越来越高,这也促使科研人员对新型非易失内存的哈希索引结构的研究。
[0004]当前已经出现了许多基于持久性内存的哈希索引的研究,然而其中大多数都是基于只有NVM作为内存的系统,这并不能很好地发挥混合DRAM

NVM内存系统的优势。在实际工作负载中,哈希表中的一部分键值对需要被频繁读取,这些被频繁读取的键值对称为热键值;而极少被访问到的键值对被称为冷键值。如果每次都访问NVM读取热键值,将导致较高的访问延迟并浪费NVM带宽。自然而然的想法是在DRAM中建立缓存表存储热键值,在这种情况下,查询一个键值对的过程为:先查询键值对是否存在于DRAM中的缓存表中,若存在则读取键值对的value返回给查询用户;若不存在于缓存表中,则对NVM中的数据表进行查找。通过建立缓存表,把热键值的读取限制在DRAM当中,能够有效提升数据索引效率。然而由于缓存表的容量有限,如何识别冷热键值并及时进行冷热替换成为目前需要解决的问题。目前并没有针对持久性哈希表的冷热键值识别方法,导致缓存表无法在哈希表中发挥应有的作用,阻碍了哈希表数据索引速度的提升。
[0005]Kaixin Huang等人提出了Rewo(论文发表于国际会议DATE2020)。如图1所示,Rewo中有两个表,一个在NVM空间,另一个在DRAM空间。在NVM中的NVM表主要用于保证键值对在NVM中的持久性保存,缓存表则是NVM表的副本,服务于查询请求。缓存表与NVM表的大小比例为1:2,缓存表保留了NVM表的一部分数据,这一部分数据的查询请求能够在DRAM空间中得到满足。虽然Rewo通过在DRAM中设置缓存表实现了键值对的快速查询,但这种方法没有提出冷热键值识别的方法,导致缓存表无法针对热数据集作出冷热识别,降低了缓存表利
用效率。

技术实现思路

[0006]本专利技术要解决的技术问题是提供一种基于混合DRAM

NVM内存的冷热键值识别方法,在满足系统崩溃时数据可恢复的前提下,解决现有的混合内存哈希表由于缺少冷热键值识别方法而导致的数据索引访问延迟高的问题。
[0007]为了实现上述目的,本专利技术包括以下步骤:
[0008]第一步,构建并初始化NVM表,将NVM表存储在NVM中,方法是:
[0009]1.1采用桶式数组结构构建NVM表,NVM表含有N个哈希桶,N为正整数,每个哈希桶含有8个哈希单元,每个哈希单元的大小为32字节,一个哈希单元存储一个键值对<key,value>,key表示存储元素的键,value表示存储元素的值。通过桶地址转换函数,使用键值对的key计算得到哈希桶地址(令为p),作为索引NVM表的哈希桶地址,通过哈希桶地址可以准确定位NVM表的哈希桶,桶地址转换函数的计算公式是:
[0010]p=hash(key)%N
[0011]其中p为哈希桶地址,hash()为c++标准模板库中的标准哈希函数,N为NVM表的哈希桶总数,“%”为取模操作;
[0012]1.2将用户需要存储的M个键值对<key1,value1>,

,<key
m
,value
m
>,

,<key
M
,value
M
>插入到NVM表中,将<key
m
,value
m
>插入到NVM表中方法是:
[0013]通过桶地址转换函数计算得到<key
m
,value
m
>相应的哈希桶地址P
m
,P
m
=hash(key
m
)%N,并将<key
m
,value
m
>按顺序插入到NVM表的地址为P
m
的哈希桶中。1.3将NVM表存储在NVM中。
[0014]第二步,构建并初始化缓存表,将缓存表存储在DRAM中,方法是:
[0015]2.1采用桶式数组结构构建缓存表,缓存表也含有N个缓存桶,每个桶含有4个缓存单元,每个缓存单元的大小为33字节(包含1字节的用于标识缓存单元中键值对冷热程度的hotmap标识符和32字节的热键值),使用第一步所述的桶地址转换函数,利用键值对的键key计算获得缓存桶地址p,作为索引缓存表的缓存桶地址,通过缓存桶地址就可以准确定位缓存表的缓存桶。例如:通过桶地址转换函数P
m
=hash(key
m
)%N计算得到<key
m
,value
m
>在缓存表中相应的缓存桶地址P
m
,通过P
m
准确定位缓存表的缓存桶,在该缓存桶可找到<key
m
,value
m
>。
[0016]2.2将用户需要存储的M个键值对<key1,value1>,

,<k本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于混合DRAM

NVM内存的冷热键值识别方法,采用桶式数组结构构建哈希表,其特征在于包括以下步骤:第一步,构建并初始化NVM表,将NVM表存储在NVM中,方法是:1.1采用桶式数组结构构建NVM表,NVM表含有N个哈希桶,N为正整数,每个哈希桶含有8个哈希单元,每个哈希单元的大小为32字节,一个哈希单元存储一个键值对<key,value>,key表示存储元素的键,value表示存储元素的值;通过桶地址转换函数,使用键值对的key计算得到哈希桶地址,令为p,作为索引NVM表的哈希桶地址,通过哈希桶地址可以准确定位NVM表的哈希桶,桶地址转换函数的计算公式是:P=hash(key)%N其中p为哈希桶地址,hash()为c++标准模板库中的标准哈希函数,N为NVM表的哈希桶总数,“%”为取模操作;1.2将用户需要存储的M个键值对<key1,value1>,

,<key
m
,value
m
>,

,<key
M
,value
M
>插入到NVM表中;1.3将NVM表存储在NVM中;第二步,构建并初始化缓存表,将缓存表存储在DRAM中,方法是:2.1采用桶式数组结构构建缓存表,缓存表也含有N个缓存桶,每个桶含有4个缓存单元,每个缓存单元的大小为33字节,包含1字节的用于标识缓存单元中键值对冷热程度的hotmap标识符和32字节的热键值,使用第一步所述的桶地址转换函数,利用键值对的键key计算获得缓存桶地址p,作为索引缓存表的缓存桶地址;2.2将用户需要存储的M个键值对<key1,value1>,

,<key
m
,value
m
>,

,<key
M
,value
M
>插入到缓存表中,并在插入一个键值对后将该键值对所位于的缓存单元的hotmap值初始化为1;2.3将缓存表存储在DRAM中;第三步,确定待查询的键值对在缓存桶和哈希桶的地址,方法是:3.1从键盘接收用户输入的待查询的键值对的键,令为key
X
,采用桶地址转换函数,利用keyx计算出缓存桶地址,令为pp;3.2采用桶地址转换函数,利用keyx计算出哈希桶地址,令为pt;第四步,将keyx与缓存表中地址为pp的缓存桶中的4个缓存单元中的元素进行匹配,方法是:4.1令缓存单元变量i=1;4.2利用keyx匹配缓存表中地址为pp的缓存桶的第i个缓存单元,若匹配...

【专利技术属性】
技术研发人员:朱俊豪黄成龙方粮李成易品筠马德胜
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1