[发明专利]一种基于持久性内存的跳表结构及其访问方法在审
申请号: | 202310057625.0 | 申请日: | 2023-01-18 |
公开(公告)号: | CN116048408A | 公开(公告)日: | 2023-05-02 |
发明(设计)人: | 吴嘉豪;黄忠东 | 申请(专利权)人: | 浙江大学 |
主分类号: | G06F3/06 | 分类号: | G06F3/06 |
代理公司: | 杭州求是专利事务所有限公司 33200 | 代理人: | 邱启旺 |
地址: | 310058 浙江*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 持久性 内存 结构 及其 访问 方法 | ||
本发明公开了一种基于持久性内存的跳表结构及其访问方法,为跳表的最底层链表分配持久性内存,并持久化所述跳表的最底层链表;设计一种针对CPU缓存优化的跳表结构;插入数据到基于持久性内存的跳表中;删除基于持久性内存的跳表的数据;管理持久性内存的空闲空间。通过本发明,在向基于持久性内存的跳表中进行插入,查找,删除操作时,能够充分利用CPU缓存和持久性内存硬件特性,提高了操作的性能。
技术领域
本发明涉及持久性内存技术领域,特别是一种基于持久性内存的跳表结构及其访问方法。
背景技术
持久性内存:持久性内存(Persistent Memory)是一种新型的内存级存储硬件,支持字节粒度寻址,能够持久化存储数据,同时还有读写延迟低,带宽高,容量大等特点。持久性内存设备不仅具有与动态随机存取存储器(Dynamic Random Access Memory,DRAM)相近的读写性能,读写延迟在1微秒以内,还具备像磁盘等传统存储设备一样的持久化数据的能力,在断电的时候不会丢失数据。持久性内存的出现使研究人员着手设计基于持久性内存的存储结构,如数据库系统中的索引,旨在保证数据持久性的同时提升数据库系统的性能。
跳表是一种可以进行二分查找的有序链表,其在原有的有序链表上增加了多级索引,通过二分搜索的方法在索引上进行快速查找。跳表由于其良好的插入和删除性能,被广泛用作数据库的内存索引。现代计算机系统使用了CPU缓存用于加速对数据和指令的读写访问,CPU缓存对程序性能的影响非常大。而跳表由于其使用链表存储数据,链表节点之间的数据地址是跳跃式的,现有的跳表设计无法充分利用现代CPU缓存。
持久性内存设备内部是以4个缓存行(256Byte)为粒度来读取和存放的。一个小的写合并缓冲区被用来避免写放大,因为持久性内存和CPU之间的传输大小和DRAM一样,是64字节。因此,针对256字节进行优化是有必要的,只有当使用块大小的倍数时,才能达到峰值吞吐量。
发明内容
本发明的目的在于针对现有技术的不足,提供一种基于持久性内存的跳表结构及其访问方法,该跳表结构使用持久性内存和易失性内存的混合主存数据结构,以解决持久性跳表数据结构的CPU缓存利用率低的问题。
本发明的目的是通过以下技术方案来实现的:一种基于持久性内存的跳表结构,将跳表的最底层链表数据存储到持久性内存上,而其余的上层链表存储到易失性内存上,构成一种基于持久性内存的跳表结构。
进一步地,所述跳表的最底层链表的节点存储在一个能容纳多个节点空间的块上。
进一步地,所述跳表的最底层链表在持久性内存上的布局分为5个部分,分别为:元数据区、bitmap区、日志区、空闲队列区和数据区。
进一步地,所述元数据区用于记录单个数据的大小,bitmap区、日志区、空闲队列区和数据区的起始地址,元数据区、bitmap区、日志区、空闲队列区和数据区的大小,块大小的元数据。
进一步地,所述bitmap区用于标记数据区的各个块的各个数据是否被使用。
进一步地,所述日志区中存储操作的日志,用于在故障恢复时保证数据的一致性。
进一步地,所述空闲队列区用于管理删除数据后被标记空闲的数据块。
进一步地,所述数据区包含多个数据块,每个数据块包含多个数据;所述数据区包含已使用的文件和未使用的文件;所述已使用的文件和未使用的文件的边界用一个指针unused_ptr来标识。
一种基于上述任一项所述的一种基于持久性内存的跳表结构的访问方法,包括插入数据、删除数据和空闲空间管理步骤;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江大学,未经浙江大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202310057625.0/2.html,转载请声明来源钻瓜专利网。