浅谈新型非易失存储

非易失存储,Non-Volatile Memory (NVM),是相对DRAM(掉电后数据丢失)而言的,指可以持久化保存数据的存储介质。广义上来说,NAND Flash也是一种非易失存储。近些年来,不论在学术界还是工业界,新型非易失存储技术都是关注的重点且取得了一定的突破。新型非易失存储由于性能相比闪存提升巨大,达到了接近DRAM的水平,一般在学术界被称为Non Volatile Main Memory (NVMM)。关注存储领域动态的同学们经常会看到很多类似的名词:PCM、PM、SCM,NVM、NVMM、NVDIMM等等,有些技术资料和报道中不加区分的混用,让人搞不清。本文从理清概念开始,概要介绍一下当前非易失存储技术进展和它带来的系统软件变革。

新型非易失存储介质和设备

NVMM是对多种新型非易失存储介质的统称,目前的NVMM包括:相变存储器 Phase-Change Memory (PCM)、忆阻器 Memristor(ReRAM)、自旋扭矩转换随机存储器 Spin Transfer Torque - Magnetic Random Access Memory (STT-MRAM)等等。PCM是通过硫系化合物非晶和多晶之间的快速相变来实现信息存储的,ReRAM则是基于一种特殊的二氧化钛材料实现纳米级忆阻器实现数据存储,STT-MRAM的物理机制是磁致阻变效应。以上新型非易失存储介质所用材料虽然各有不同,但都有着低延迟、高密度、可字节寻址等优异特性。相比基于浮栅晶体管的NAND Flash确实可称得上是革命性创新。

NAND Flash可以做成不同接口和不同形式的闪存设备:SATA接口一般用于普通固态硬盘(SSD)产品、PCIe接口则常用于高端服务器闪存产品。NVMM由于可以媲美DRAM的性能,可以做成类似内存条形式直接插在主板的DIMM插槽上。这类产品可以称为持久化内存,Persistent Memory (PM),或存储级内存,Storage Class Memory (SCM)。PM和SCM基本是相同的含义,个人理解的细微差别是应用场景的区别——PM没有明确指向性,SCM则是倾向于处在存储层次中DRAM和闪存之间。

NVDIMM又是什么呢?实际上早已有之,是基于NAND Flash的非易失型内存条——通常被做成“电池+NAND Flash+DRAM”的形式:在掉电时用电池电量将DRAM数据刷回NAND Flash实现持久化。

近两年,英特尔推出了目前唯一的NVMM商用产品——基于3D Xpoint (Cross Point)技术的Optane Memory设备,又称Apache Pass,也可简称为AEP。3D Xpoint技术的核心介质具体是前述PCM、ReRAM中的哪一种至今还未公布,但可以从下图简单了解下其存储原理,“cross point”的名称正是来自图中的存储单元结构。

浅谈新型非易失存储_第1张图片

图1 英特尔3D Xpoint技术

英特尔同时也推出了基于3D Xpoint技术的Optane SSD,采用PCIe接口。相比基于NAND Flash的企业级SSD在顺序读写上似乎并没有太大提升,顺序写大约在2000MB/s的水平。但得益于稳定的低时延——读写均为10us,其4KB随机读写性能非常逆天,随机写达到500000 IOPS。

新型非易失存储的定位

业界在新型非易失存储上搞的热火朝天,性能到底如何呢?实验室中的数值不算数,我们还是以能量产的3D Xpoint作为参考:目前Optane Memory的读延迟大约是350 ns,这是一个比较让人“亦可赛艇”的数值了。要知道DRAM的读延迟大约是100 ns,至少已经看到了DRAM的尾灯(在一个数量级上)。参考下图中的存储层次体系,3D Xpoint确实已经一只脚迈进了主存的区间,甩了闪存一大截。因此,当我们思考如何使用新型非易失存储时会发现有了很大的想象空间。

浅谈新型非易失存储_第2张图片

图2 存储层次体系

存储器件的定位和用途一般要考虑延迟、寿命、成本、容量、可持久化等多方面的因素,主存(Memory)和辅存(Storage)之间有很大的特性差别:主存要求极低延迟、字节寻址,辅存要求大容量、持久化。主存和辅存是上下层级关系,而新型非易失存储的出现让我们看到了同时满足低时延、字节寻址、持久化、大容量的理想存储形态。

浅谈新型非易失存储_第3张图片

图 3 新型非易失存储特性现状

可以预见新型非易失存储将会带来远超闪存的存储变革。因为闪存其实并没有改变存储层次体系,它是在原有的主存DRAM和辅存磁盘之间增加了一层。而新型非易失存储则是模糊了主存和辅存的界限,它可以不再是DRAM和闪存之间的一层而是和DRAM并列。

浅谈新型非易失存储_第4张图片

图4 新型非易失存储定位

学术界已经有大量的研究工作考虑如何设计系统软件适应和更好地使用新型非易失存储,主要的大方向是两个:一个是将新型非易失存储用做主存,另一个则是将新型非易失存储用做辅存。将非易失存储作为主存又可分为:完全替换DRAM和同DRAM共存两种。完全替换DRAM后,我们不再需要主存外的存储了——因为主存本身是持久化的。编程接口和运行方式也变得简化和不同——无需持久化数据到文件,内存变量和对象都是持久化的。这个方向上的挑战是如何提供更易于使用的编程接口和数据安全保证,以及系统崩溃后重启如何恢复到正常状态。当然这个场景还离我们比较遥远,DRAM和新型非易失存储混用从目前3D Xpoint的性能指标看是比较现实的。DRAM和新型非易失存储共用作为主存的话,需要考虑非易失存储的寿命问题和性能差异——设计合理的内存分配和缓存方案,Linux内核社区已经有几组patch在做这方面的尝试,包括:隔离DRAM和PM,跟踪冷热并迁移,或是将新型非易失存储用做SWAP等等。

更为稳妥地考虑目前3D Xpoint的使用,实际上还是将其作为存储更合适。接口虽然和DRAM相同,但寿命和性能上评估还是作为存储更为合理。下面我们主要看看存储软件层面需要作出哪些变化。

存储软件的大变革

现有的Linux存储软件栈完全是按照主存和辅存上下级形式设计的,Page Cache非常有效的弥补了DRAM和硬盘之间的性能鸿沟,极大的提升了文件读写的性能。然而在新型非易失存储出现后,接近DRAM的低延迟让Page Cache变成了负担。硬件性能的提升让软件栈的开销变得不可忽略——这是很多硬件设计改变引发软件变革的核心逻辑。基于这一逻辑,我们看到了很多在数据库、文件系统上的新工作涌现。如下图所示为英特尔开发的面向非易失存储的文件系统PMFS,跳过了Page Cache和块设备层,读写设备的形式也和内存访问一致,极大的减少了软件层面引入的开销。

浅谈新型非易失存储_第5张图片

图5 传统存储栈和PMFS引入的变化

针对非易失存储的特点,Linux内核主线也合入了DAX(Direct Access)方案。DAX实现了跳过Page Cache对非易失性存储的直接读写,传统的文件系统可以通过支持DAX实现对非易失性存储的适配,带来读写性能的提升。但DAX不能解决传统文件系统元数据读写还是要经过Page Cache的问题,因此很多专门面向非易失存储的文件系统应运而生,除PMFS之外,较为活跃和想法新颖的还有使用日志结构文件系统思路的NOVA、利用Soft Update技术的SoupFS等。这里不再一一展开,感兴趣的同学可以查看后附参考文献链接。

另外英特尔还开发了新型非易失存储的内存分配库(PMDK),memcached、redis等原本就是利用内存的Key Value数据库可以非常方便的移植到新型非易失存储系统上。总之,“bypass Page Cache”,甚至是“bypass 内核”,大幅削减软件栈开销是应对硬件性能大幅提升的主要软件设计思路。

基于SCM的混合存储

       当前作为唯一能买到的新型非易失存储,Optane Memory还是非常贵的。可以想见未来一段时间,完全使用新型非易失存储作为存储设备还是过于奢侈的。因此新型非易失存储和闪存,甚至是磁盘一起组成混合存储系统就成为了一种必然趋势。如果直接使用已有的存储Cache设计(如BCache),又会面临不能充分发挥非易失存储性能的问题。在基于新型非易失存储的混合存储设计方向上,学术界已经有一些非常好的尝试。跨介质文件系统 Strata通过libFS和kernelFS两个模块实现了对非易失存储性能的极致保留:LibFS记录用户态操作直接写入SCM,kernelFS在后台整理、迁移数据到合适的存储介质上。——这有点类似LevelDB的思路。另外,也有基于前述新型非易失存储文件系统NOVA来提供混合存储支持的实现Ziggurat。通过对写入模式的预测来决定数据落入不同的存储介质,并根据数据冷热进行不同存储介质间的迁移。

新型非易失存储的广泛使用就在不远的将来, 当然存储技术路线的演进可能依然曲折多变。对于系统开发者来说,这是一片大有可为的天地。

参考文献

[1] Intel Optane Technooly 3D Xpoint: https://www.intel.com/content/www/us/en/architecture-and-technology/optane-technology-animation.html

[2] PMDK: https://pmem.io/

[3] Dulloor et. al, System Software for Persistent Memory, EuroSys 2014

[4] Xu et. al, NOVA: A Log-structured File System for Hybrid Volatile/Non-volatile Main Memories, FAST 2016

[5] Dong et. al, Soft Updates Made Simple and Fast on Non-volatile Memory, ATC 2017

[6] Kwon et. al, Strata: A Cross Media File System, SOSP 2017

[7] Zheng et. al, Ziggurat: A Tiered File System for Non-Volatile Main Memories and Disks, FAST 2019

扫描关注
“内核工匠”微信公众号
Linux 内核黑科技 | 技术文章 | 精选教程

 

你可能感兴趣的:(浅谈新型非易失存储)