内存模型系列(下)- 内存持久性模型(Memory Persistency)

本文深入探讨了内存持久性模型,旨在帮助理解持久内存系统中持久化指令的执行顺序及其对内存一致性和并行度的影响。针对未来PM系统的内存持久性问题,文中详细介绍了StrictPersistency、EpochPersistency和StrandPersistency三种模型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Memory Models Series - Memory Persistency (Slides)

日志

  1. [2019-02-13] 引入了前言;
  2. [2019-02-06] PPT 版式升级,阅读面积提升约三分之一,提供沉浸式阅读体验;
  3. [2018-07-25] 完成了本文的 PPT 框架。

作者按:内存模型系列 - 内存一致性模型。本文为内存模型系列下篇,主要深入浅出地介绍了用于约束内存持久化指令完成顺序的内存持久性模型(Memory Persistency)。该模型面向未来的 PM(Persistent Memory,持久内存)系统,其核心主张为:通过扩展内存一致性模型,1) 帮助架构师挖掘持久化指令的指令级并行度,2) 帮助编程者推理崩溃一致性。


前言

在开始介绍内存持久性模型之前,先为大家讲一下提出这个模型的背景。

持久内存(Persistent Memory,PM),也即能够通过常规访存指令(而非系统调用)访问的,具有低延迟(而非 I/O 总线)及字节可寻址(而非块)特性的非易失存储器1。基于 3D XPoin 的 Intel® Optane™ DC Persistent Memory,基于 DRAM 和 NAND Flash 的 NVDIMM-N 等,都是持久内存。下表给出了常见存储器的部分属性,其中字节可寻址(byte-addressable)表示以字节而非块为基本单位进行寻址,而非易失性(non-volatile)表示在掉电后其中的数据不会挥发。

注意:早期文献中也常使用 SCM(Stroage Class Memory),NVMM(Non-volatile Main Memory),NVDIMM(Non-volatile DIMM)等词指代持久内存,但近来学术界和工业界已统一使用持久内存一词。

存储器读取延迟写入延迟字节可寻址非易失性
DRAM250ns50ns
NAND FLASH310μs10μs
3D XPoint3100ns500ns

持久内存并不是什么虚无缥缈,离落地很远的事情。实际上持久内存有望于 2019 进入市场4。有资料表明,很多大型 IT 企业已经拿到了其工程样片,并据此进行了早期研发:非易失性内存在阿里生产环境的首次应用: Tair NVM最佳实践总结

在使用持久内存的时候,一个问题需要被严肃对待:内存一致性问题。出于各种此处不便展开的因素,未来持久内存问世的时候,处理器中的寄存器及缓存仍将是易失性,而大电容仅能确保掉电后内存控制器中的数据写入持久内存5,使得持久内存中的数据可能并非数据的最新副本。因缓存-内存中的数据不一致而引发的问题,便称为内存一致性问题。内存一致性问题的影响无疑是巨大的,轻则导致数据丢失,重则导致系统无法恢复。

那么如何避免内存一致性问题呢?不同工作从不同角度进行了解读,但最广为认可的方案还是由应用显示调用持久化指令,将缓存的数据刷入内存控制器中。有关持久化指令的介绍见博主另外的博文

注意:有论文总结了解决一致性问题的若干种方法,可见《Programming for Non-Volatile Main Memory Is Hard》。

毫无疑问,持久化指令的执行效率将是十分关键的。在最坏的情况下,如 CLFLUSH 的设计,所有持久化指令顺序地、毫无重叠(overlapped)执行,而这显然是大家无法接受的。在某些不强调这些指令完成顺序的情况下,如内存拷贝,大家还是期望能够牺牲对持久化指令的顺序约束,而获得效率上的提升。如果大家了解过内存一致性模型,肯定会想为什么不扩展已有内存一致性模型,去专门描述对持久化指令的约束呢?实际上已经有人提出了这样扩展的内存模型,也就是今天要介绍的内存持久化模型。

1. Terminology

21
22

2. Strict Persistency

23
24

3. Relaxed Persistency

3.1 Epoch Persistency

25
26
27
28
29

3.2 Strand Persistency

30

Reference

31


  1. Nalli S, Haria S, Hill M D, et al. An analysis of persistent memory use with WHISPER[C]//Architectural Support for Programming Languages and Operating System (ASPLOS’17). ACM, 2017: 135-148. ↩︎

  2. Mittal S, Vetter J S. A survey of software techniques for using non-volatile memories for storage and main memory systems[J]. IEEE Transactions on Parallel and Distributed Systems (TODS’16), 2016, 27(5): 1537-1550. ↩︎

  3. Raghu Kulkarni. Persisent Memory and NVDIMMs [C]. Flash Memory Summit 2018. SNIA. 2018. ↩︎ ↩︎

  4. https://newsroom.intel.com/editorials/re-architecting-data-center-memory-storage-hierarchy/, May 30, 2018. ↩︎

  5. https://software.intel.com/en-us/blogs/2016/09/12/deprecate-pcommit-instruction ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值