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) 帮助编程者推理崩溃一致性。

  • 本系列的上篇为:内存模型系列(上)- 内存一致性模型(Memory Consistency)。
  • 本博客所有文本及胶片均公开在了 Github 上,如需转载,注明出处即可。如若建议、勘误等,发起 Issue 或在下方评论均可。

文章目录

  • Memory Models Series - Memory Persistency (Slides)
    • 前言
    • 1. Terminology
    • 2. Strict Persistency
    • 3. Relaxed Persistency
      • 3.1 Epoch Persistency
      • 3.2 Strand Persistency
    • Reference

前言

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

持久内存(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)等词指代持久内存,但近来学术界和工业界已统一使用持久内存一词。

存储器 读取延迟 写入延迟 字节可寻址 非易失性
DRAM2 50ns 50ns
NAND FLASH3 10μs 10μs
3D XPoint3 100ns 500ns

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

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

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

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

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

1. Terminology


2. Strict Persistency


3. Relaxed Persistency

3.1 Epoch Persistency





3.2 Strand Persistency

Reference


  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 ↩︎

内存模型系列(下)- 内存持久性模型(Memory Persistency)相关推荐

  1. 【机器学习】最大熵模型【下】最大熵模型学习的最优化算法

    有任何的书写错误.排版错误.概念错误等,希望大家包含指正. 由于字数限制,分成两篇博客. [机器学习]最大熵模型[上]最大熵模型概述与约束最优化问题 [机器学习]最大熵模型[下]最大熵模型学习的最优化 ...

  2. linux查看设备内存代码,Linux下内存查看命令(示例代码)

    在Linux下面,我们常用top命令来查看系统进程,top也能显示系统内存.我们常用的Linux下查看内容的专用工具是free命令. Linux下内存查看命令free详解: 在Linux下查看内存我们 ...

  3. 扩散模型加持下,机器人模型DALL-E-Bot可以轻松完成自主重新排列任务

    原文链接:https://www.techbeat.net/article-info?id=4217 作者:seven_ 最近,图像扩散模型的发展可谓是风生水起,很多AI大厂纷纷在这一领域展开研究,例 ...

  4. eclipse内存设置Linux,Eclipse CDT Linux下内存分析 补记

    常用工具汇总 常用的内存分析工具 PurifyPlus 不支持常用的Linux 64系统[Ubuntu redhat],悲剧 Valgrind简介 Memcheck Memcheck 工具主要检查下面 ...

  5. linux下内存分配原因导致的Load过高

    这又是我学习的<linux内核实战>一篇笔记吧,做了些补充,为了便于自己的记忆,理解和整理下.一直对Linux的内存分配过程算是充满好奇,也看了些相关文章,不过有些和实际比较脱离,这两天学 ...

  6. 【模型开发】风控评分模型开发流程

    [博客地址]:https://blog.csdn.net/sunyaowu315 [博客大纲地址]:https://blog.csdn.net/sunyaowu315/article/details/ ...

  7. 差分方程模型(二):蛛网模型

    差分方程模型系列博文: 差分方程模型(一):模型介绍与Z变换 差分方程模型(二):蛛网模型 差分方程模型(三): 预测商品销售量 差分方程模型(四):遗传模型 目录 1 问题提出 2 模型假设:供应函 ...

  8. sketchup模型 下载【花瓣吊灯模型】

    设计朋友们 曾经,你有没有苦恼过 在设计模型推敲阶段.或者建模阶段 缺少各种常用的景观模型 比如:植物.构筑.家具.装饰.人物等等 现在小编整理了一些你所需的SU模型 这里有[花瓣吊灯模型] 让我们一 ...

  9. JAVA之JUC系列 - JAVA内存模型

    Java内存模型(简称JMM),定义了线程本地内存和主内存之间的关系,理解JMM的特性,对深入理解Java多线程中内存的可见性会有很大帮助.下面我们从并发编程模型中关注的两个问题说起. 一. 并发编程 ...

  10. 浅谈内存屏障,C++内存序与内存模型

    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可. 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权. 文章目录 引言 一个有意思的问题 ...

最新文章

  1. 吴恩达:关于机器学习职业生涯以及阅读论文的一些建议
  2. 作为候选人,你需要问些什么?你需要查些什么?这些关乎你的利益和未来!
  3. CTF---密码学入门第一题 这里没有key
  4. 数据库 -- 由数据库连接池引出的三种设计模式
  5. 想离职,是现在就提?还是等到年后?
  6. Python-OpenCV基本操作
  7. JS控制图片滚动的效果
  8. 3个阶段 项目征名_中资企业新签的3个海外项目开工
  9. Mac彻底卸载搜狗输入法
  10. python2和python3同时安装
  11. ds哈希查找--链地址法_Hash冲突之开放地址法
  12. C++前序中序后序非递归遍历
  13. Baas是什么?区块链Baas平台开发解决方案带你知晓
  14. html座机正则表达式,java座机号码正则表达式
  15. win10 计算机磁盘加内存,内存不够用?教你给Win10系统增加C盘空间
  16. 橘子学java之java中的协程
  17. 除了迅雷还有谁在“偷”你的信息?
  18. 6617: Finite Encyclopedia of Integer Sequences
  19. 手把手的 Numpy 教程
  20. (笔记)andro studio ——ProgressDialog

热门文章

  1. 广告行业eCPM概念
  2. nginx 启动 报错,80端口被占用问题,80端口无法杀掉问题
  3. Redis大Key优化
  4. html语言vb怎么定义数组,VB动态数组的定义方法
  5. win10电脑插耳机没反应(win10插上耳机还外放)
  6. oracle期中考试题库,2017年Oracle认证考试题库
  7. Scala——面向对象和函数式编程语言
  8. Vue 中使用 watch 方法实时获取路由信息
  9. 项目经理进阶:如何做好一个领导者
  10. 前端JS 实现将24位RGB颜色转换16位RGB颜色