在本文中,主要探讨了非易失性主存储器(NVM)中对数结构的数据存取方式,包括事务内存系统(TM)、地址映射机制、数据恢复策略等。非易失性主存储器是一种能够保持信息不丢失的存储器,即使在断电等情况下依然能够保存数据。接下来,我将详细阐述这些知识点。 非易失性主存储器在数据存取方面采用对数结构。对数结构是一种将数据存入日志中,然后顺序追加的方式。与传统的随机存取方式相比,对数结构可以简化存储管理,提升写入效率。但是,由于对数结构需要顺序写入,这可能会导致频繁的垃圾回收和数据合并操作,进而影响性能。因此,在非易失性主存储器中,对数结构的应用需要特别注意这些潜在的问题。 事务内存系统(TM)在对数结构的非易失性主存储器中用于管理数据操作的并发控制。TM系统简化了多线程程序中复杂的数据同步问题,使得并发编程更为简便。在传统的多线程编程中,开发者需要编写锁来保证数据的一致性,但在TM系统中,可以利用事务来实现原子操作,从而避免了锁的复杂性。TM系统为上层提供了简化的接口,允许程序执行一系列操作,要么全部成功,要么全部失败,保证了操作的原子性。 在非易失性主存储器中,数据恢复也是一个重要的话题。在正常的程序关闭情况下,DRAM中的地址映射和其他必要元数据会被压缩并刷入到非易失性内存(NVMM)中,以便在程序重启时快速恢复。然而,如果系统发生崩溃,DRAM中的数据将会丢失,因此需要重建DRAM中的数据结构。为了加速这个过程,使用了线程级别的并行性进行恢复。本文的第四部分第4.5节将提供更详细的信息。 地址映射机制是本文的重点之一,它使得应用程序能够以类似DRAM的方式与NVM交互,构建数据结构,而不必改变其内存访问模型。应用程序中的地址被视为“家庭地址”,而日志中的位置则对应用程序隐藏,被称为“日志地址”。本文采用了树形结构来维护从家庭地址到日志地址的映射。在树中的一个节点表示一对{家庭地址, 长度},表示家庭空间的一个区域,以及该区域映射到的日志地址。相比于哈希表,使用树结构的原因是,在基于平面地址空间的系统中,分配粒度与访问粒度并不一致。例如,一个应用程序可能使用pmalloc分配了一个大型结构体,但在事务中只读写了其中的一小部分。因此,需要支持任意访问的地址转换,这些访问可能与分配的对象不对齐。 对数结构的非易失性主存储器系统的效率在很大程度上取决于地址映射的效率。传统的对数结构系统的延迟主要由磁盘或SSD的数据访问延迟主导,这些数据访问的粒度较大(例如512B的块大小),且频率较低。然而,在本文所讨论的案例中,NVM的速度更快,访问频率更高,且可以支持小到几字节的粒度访问。因此,地址映射机制的设计需要非常谨慎,以保证系统的高性能。 在非易失性主存储器中,由于内存的非易失特性,存储器可以在断电之后依然保持数据不丢失,这为数据恢复提供了便利。系统在正常关闭过程中会压缩DRAM中的地址映射,并将其及其他必要的元数据刷新到NVMM中,以便程序重启时能够迅速恢复数据结构。然而,如果发生系统崩溃,DRAM中的数据将丢失,因此需要重建DRAM的数据结构。为了加快这一重建过程,文章提出了使用线程级并行性进行恢复的方法。 通过上述的介绍,我们可以看到对数结构的非易失性主存储器所涉及的技术知识点非常丰富。从事务内存系统(TM)到地址映射机制,再到数据恢复策略,这些内容共同构成了一个复杂且高效的数据存储解决方案,它不仅提升了数据存取的效率,也保证了数据的稳定性和安全性。在未来的存储系统设计中,这种结构有可能成为主流,从而大大推动计算平台的性能发展。
- 粉丝: 5
- 资源: 961
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助