作者介绍

惠春阳, Intel 软件工程师, 主要从事SPDK开发和存储软件性能优化的工作。

随着存储技术的发展, 对存储性能的不懈追求, 高性能存储开始探索向内存通道的迁移。在这样的情况下, NVDIMM 技术便应运而生了。

NVDIMM (Non-Volatile Dual In-line Memory Module) 是一种可以随机访问的, 非易失性内存。非易失性内存指的是即使在不通电的情况下, 数据也不会消失。因此可以在计算机掉电 (unexpected power loss), 系统崩溃和正常关机的情况下, 依然保持数据。  NVDIMM 同时表明它使用的是 DIMM 封装, 与标准DIMM 插槽兼容, 并且通过标准的 DDR总线进行通信。考虑到它的非易失性, 并且兼容传统DRAM接口, 又被称作Persistent Memory。

01

种类

目前, 根据 JEDEC 标准化组织的定义, 有三种NVDIMM 的实现。分别是:

NVDIMM-N

指在一个模块上同时放入传统 DRAM 和 flash 闪存。  计算机可以直接访问传统 DRAM。支持按字节寻址, 也支持块寻址。通过使用一个小的后备电源,为在掉电时,  数据从DRAM 拷贝到闪存中提供足够的电能。当电力恢复时, 再重新加载到DRAM 中。

图1 NVDIMM-N示意图

NVDIMM-N 的主要工作方式其实和传统 DRAM是一样的。因此它的延迟也在10的1次方纳秒级。而且它的容量, 受限于体积, 相比传统的 DRAM 也不会有什么提升。

同时它的工作方式决定了它的 flash 部分是不可寻址的。而且同时使用两种介质的做法使成本急剧增加。但是, NVDIMM-N 为业界提供了持久性内存的新概念。目前市面上已经有很多基于NVIMM-N的产品。

NVDIMM-F

指使用了 DRAM 的DDR3或者 DDR4 总线的flash闪存。我们知道由 NAND flash 作为介质的 SSD, 一般使用SATA, SAS 或者PCIe 总线。使用 DDR 总线可以提高最大带宽, 一定程度上减少协议带来的延迟和开销。不过只支持块寻址。

NVDIMM-F 的主要工作方式本质上和SSD是一样的。因此它的延迟在 10的1次方微秒级。它的容量也可以轻松达到 TB 以上。

NVDIMM-P

这是一个目前还没有发布的标准 (Under Development)。预计将与DDR5 标准一同发布。按照计划,DDR5将比DDR4提供双倍的带宽,并提高信道效率。这些改进,以及服务器和客户端平台的用户友好界面,将在各种应用程序中支持高性能和改进的电源管理。

NVDIMM-P 实际上是真正 DRAM 和 flash 的混合。它既支持块寻址, 也支持类似传统 DRAM 的按字节寻址。它既可以在容量上达到类似 NAND flash 的TB以上, 又能把延迟保持在10的2次方纳秒级。

通过将数据介质直接连接至内存总线, CPU 可以直接访问数据, 无需任何驱动程序或 PCIe 开销。而且由于内存访问是通过64 字节的 cache line, CPU 只需要访问它需要的数据, 而不是像普通块设备那样每次要按块访问。

Intel 公司在2018年5月发布了基于3D XPoint™ 技术的Intel® Optane™ DC Persistent Memory。可以认为是NVDIMM-P 的一种实现。

图2  Intel® Optane™ DC Persistent Memory

02

硬件支持

应用程序可以直接访问NVDIMM-P, 就像对于传统 DRAM那样。这也消除了在传统块设备和内存之间页交换的需要。但是, 向持久性内存里写数据是和向普通DRAM里写数据共享计算机资源的。包括处理器缓冲区, L1/L2缓存等。

需要注意的是, 要使数据持久, 一定要保证数据写入了持久性内存设备, 或者写入了带有掉电保护的buffer。软件如果要充分利用持久性内存的特性, 指令集架构上至少需要以下支持:

写的原子性

表示对于持久性内存里任意大小的写都要保证是原子性的, 以防系统崩溃或者突然掉电。IA-32 和 IA-64 处理器保证了对缓存数据最大64位的数据访问 (对齐或者非对齐) 的写原子性。因此, 软件可以安全地在持久性内存上更新数据。这样也带来了性能上的提升, 因为消除了copy-on-write 或者 write-ahead-logging 这种保证写原子性的开销。

高效的缓存刷新(flushing)

出于性能的考虑, 持久性内存的数据也要先放入处理器的缓存(cache)才能被访问。经过优化的缓存刷新指令减少了由于刷新 (CLFLUSH) 造成的性能影响。

a. CLFLUSHOPT 提供了更加高效的缓存刷新指令

b. CLWB (Cache Line Write Back) 指令把cache line上改变的数据写回内存 (类似CLFLUSHOPT), 但是无需让这条 cache line 转变成无效状态(invalid, MESI protocol), 而是转换成未改变的独占状态(Exclusive)。CLWB 指令实际上是在试图减少由于某条cache line刷新所造成的下次访问必然的cache miss。

提交至持久性内存

(Committing to Persistence)

在现代计算机架构下, 缓存刷新的完成表明修改的数据已经被回写至内存子系统的写缓冲区。但是此时数据并不具有持久性。为了确保数据写入持久性内存, 软件需要刷新易失性的写缓冲区或者在内存子系统的其他缓存。新的用于持久性写的提交指令 PCOMMIT 可以把内存子系统写队列中的数据提交至持久性内存。

非暂时store操作的优化

(Non-temporal Store Optimization)

当软件需要拷贝大量数据从普通内存到持久性内存中时(或在持久性内存之间拷贝), 可以使用弱顺序, 非暂时的store操作 (比如使用MOVNTI 指令)。因为Non-temporal store指令可以隐式地使要回写的那条cache line 失效, 软件就不需要明确地flush cache line了(see Section 10.4.6.2. of Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 1)。

03

总结

本期我们介绍了NVDIMM 的几种实现方式, 以及为了发挥NVDIMM-P 的性能所做的硬件上的优化和支持。后面我们会继续介绍软件方面的支持, 包括编程模型, 编程库, SPDK方面的支持等。敬请期待。

参考文献

[1] Intel® Architecture Instruction Set Extensions Programming Reference

[2] JEDEC

https://www.jedec.org/category/technology-focus-area/main-memory-ddr3-ddr4-sdram

[2] The SSD Guy

https://thessdguy.com/

[3] Wikipedia

https://www.wikipedia.org/

本文转载自DPDK与SPDK开源社区

查看我们精华技术文章请移步:

Linux阅码场原创精华文章汇总

扫描下方二维码关注"Linux阅码场"

感谢您的耐心阅读,请随手点个“在看”吧~

火爆业界的明星,下一代存储技术的先行: NVDIMM 你了解吗?相关推荐

  1. 火爆业界的明星, 下一代存储技术的先行: NVDIMM (下篇)

    作者简介 惠春阳, Intel 软件工程师, 主要从事SPDK开发和存储软件性能优化的工作. 随着存储技术的发展,对存储性能的不懈追求,高性能存储开始探索向内存通道的迁移.在这样的情况下, NVDIM ...

  2. 下一代存储技术面临市场窗口期?

    文章经授权转载自中国电子报(ID:cena1984) 眼下的存储市场正处于多种技术路线并行迭代的关键时期.一方面,应用极为广泛的DRAM和NAND Flash,是目前存储市场上当之无愧的主流产品,但都 ...

  3. 全息存储:名气大于实力的存储技术?

    全息存储和玻璃存储.DNA存储并称当前三大数据存储前沿技术,笔者前面已经写过玻璃存储和DNA存储的文章(参见<玻璃存储,数字时代的罗塞塔石碑>.<DNA存储:数据存储的终极解决之道& ...

  4. 编解码再进化:Ali266与下一代视频技术

    过去的一年见证了人类百年不遇的大事记,也见证了多种视频应用的厚积薄发.而因此所带来的视频数据量的爆发式增长更加加剧了对高效编解码这样的底层硬核技术的急迫需求.正是在这样的大环境下,在ITU-T VCE ...

  5. 深度揭秘:腾讯存储技术发展史

    采访嘉宾 | 腾讯云副总裁谢明等 图源 | 视觉中国 来源 | CSDN(ID:CSDNnews) 在腾讯内部,负责腾讯存储技术研发的部门,一直被认为是生产技术专家的"黄埔军校". ...

  6. 编解码再进化:Ali266 与下一代视频技术

    过去的一年见证了人类百年不遇的大事记,也见证了多种视频应用的厚积薄发.而因此所带来的视频数据量的爆发式增长更加加剧了对高效编解码这样的底层硬核技术的急迫需求. 新视频编解码标准 VVC 定稿不久之后, ...

  7. 清华出品:一文看尽AI芯片两类瓶颈三大趋势,存储技术开拓新疆界 | 附全文...

    12月10日-11日,由北京未来芯片技术高精尖创新中心和清华大学微电子学研究所联合主办的「第三届未来芯片论坛:可重构计算的黄金时代」在清华大学主楼举办,并正式发布了<人工智能芯片技术白皮书(20 ...

  8. 2020年存储技术展望:AI推动数据存储理念进化

    2020年存储技术展望:AI推动数据存储理念进化 2020年以意想不到的方式在展开,让人们愈发渴望AI的到来. 大家知道早在60年前,"人工智能"概念就正式提出.其发展曾经历了两次 ...

  9. 江波龙深化存储技术优势 紧密结合物联网应用需求创新

    转自:http://www.chinaflashmarket.com/Producer/Netcom/News/142127 云计算.大数据以及移动互联网时代下,全球存储容量以爆发式的速度在增长.根据 ...

最新文章

  1. 第一届全国大学生智能汽车竞赛获奖名单
  2. xslt的简单使用[xml--html]
  3. 车仪表台上的装饰_仪表台放这个东西,相当于定时炸弹,很多人都忽略了
  4. OceanBase架构浅析(一)
  5. Linq表达式和Lambda表达式用法对比
  6. java值传递和引用传递的题目_Java 值传递和引用传递
  7. [NOI2002]荒岛野人 数论
  8. 【备忘录】c++ 整形浮点=字符串 类型转换
  9. iPhone第二季度在美销量降23%,但iPhone SE有亮点
  10. golang 解析php序列化,golang实现php里的serialize()和unserialize()序列和反序列方法
  11. 计算机的组成 —— 磁盘阵列(RAID)
  12. FPGA_四选一数据选择器
  13. linux谷歌浏览器无法登陆,新版CentOS 7.1上的谷歌浏览器无法启动
  14. 数据分析面试记录1-5
  15. 基于Selenium爬取动态网页
  16. 那些年用过的时间衰减函数
  17. 前端实现登录拼图验证
  18. 2019年肖秀荣命题人讲真题上下两册【全】
  19. php中关于文件操作的面试题,php面试题及答案
  20. 有理数加法 (15 分)

热门文章

  1. 快速将非Word中的不可编辑的公式转换为Word文档中公式编辑器里可编辑的公式的办法
  2. 【MySQL】函数提取字符串中的数字
  3. 通过Eclipse创建一个Project ,Java Project 和Tomcat Project 生成的目录和文件
  4. gitlab 配https_gitlab容器--带https配置
  5. GIS开发之二维地下管线综合管理系统(Arcgis)第四节 查询(2)
  6. Onedrive服务器位置,移动或更改Windows 10中OneDrive文件夹的位置 | MOS86
  7. 利用swiper在vue中做轮播图,并改变轮播图的原有箭头、图片等内容
  8. 解决谷歌浏览器提示您的链接不是私密链接
  9. 前端语法重温从0到1入门
  10. 食品药品舆情传播规律分析