1 持久内存的产生

1.1 大数据发展对内存的需求

1.数据量持续增长
IDC预测,全球总数据量将从2019年的40ZB(1ZB=1×1012GB)增长到2025年的175ZB。175ZB是多大的数据量呢?假如把这些数据都刻录到DVD上,再将DVD堆起来,其高度约是地球到月球距离的23倍,这个距离大约能绕地球赤道222圈。
2.大数据技术的发展
3.数据分层
DRAM访问速度最快,但是成本最高,所以只能用来暂存需要频繁访问的数据,这种数据称为热数据。硬盘容量大,成本最低,但是访问速度最慢,所以适合用来保存不需要经常访问的数据,这种数据称为冷数据。介于热数据与冷数据之间的,是那些偶尔需要访问的数据,称为温数据,各种固态硬盘(SSD)可以用来保存温数据。还有一类数据主要是用于存档的,除非特别情况一般极少访问,称为冻数据,通常被存放在更廉价的大容量硬盘驱动器(Hard Disk Drive,HDD)上。
在这里插入图片描述

1.2 内存和存储间的性能鸿沟

1.内存-存储架构概述

易失性设备需要维持供电,断电后数据会丢失,如SRAM(Static Random AccessMemory,静态随机存储器)和DRAM(Dynamic Random AccessMemory,动态随机存储器)。非易失性设备,如EEPROM(Electrically Erasable Programmable Read Only Memory)和Flash,数据在断电后可以继续存在。
在这里插入图片描述
缓存使用SRAM,使用与微处理器相同的CMOS技术。SRAM的集成度相对较低,一般缓存成本比较高,容量比较小,因此L1缓存的存储量只有几十KB,L3缓存的存储量也不过几十MB。

缓存之下的物理内存采用DRAM,其存储量比缓存大得多,单条就可达到几十GB。目前的计算机系统常采用多通道技术,可以同时支持几十根内存,用户可在性能(插多少根内存)和成本(每根内存多大容量)之间选择一个平衡点。

物理内存之下是能持久保存数据的设备,包括SSD和硬盘。存储设备的容量非常大,最终用户的所有数据都会存储在其中。长期以来,由高密度旋转磁性盘片记录数据的硬盘一直是非易失性存储的主角。随着Flash容量的提升和成本的下降,由Flash颗粒制作的SSD得到了广泛应用。SSD常常作为硬盘的读写缓存。

2.性能鸿沟

微处理器的延时是皮秒级(1ps=10-12s)至纳秒级(1ns=10-9s)的,内存的延时是几十纳秒,SSD的延时是100μs(1μs=10-6s)至几十毫秒(1ms=10-3s),硬盘的延时是一百毫秒至几百毫秒,内存的延时与SSD的延时相差千倍。

在处理海量数据的时候,由于内存容量的限制,只有中间结果可以存储在内存中,因此需要频繁地从硬盘中导入、导出大量的数据。

因此,在内存子系统与SSD之间就出现了一个性能缺口,需要由新的存储层次来填补,称之为持久内存(Persistent Memory,PMEM),有时也称为非易失性内存(Non-volatile Memory,NVM)或存储级别的内存(Storage Class Memory,SCM)。持久内存可以采用不同的介质,如磁随机存储、相变存储等。用持久内存来解决内存与存储之间的性能鸿沟,甚至在某些场景下取代部分内存,可以降低系统的整体成本、功耗及设计难度。

1.3 持久内存的使用场景

持久内存具有两点优势:其一,它的容量接近SSD的容量,以英特尔傲腾持久内存为例,最大的容量将达到TB级;其二,它的速度非常快,是目前最接近DRAM的非易失性内存,而成本又比DRAM低得多。在不同的应用场景下,通过合理的配置,可以充分利用持久内存的这两个优势。当前,持久内存主流的应用场景主要有海量内存扩展、持久化缓存、高速存储和PMoF(PersistentMemory over Fabric,通过高速网络的持久内存访问)等。

1.海量内存扩展
由于持久内存的性能接近DRAM,但成本比DRAM低很多,经过合理的配置,持久内存可以取代大部分DRAM作为主内存。
随着数据库需求的持续增高,多租户的数据库即服务虚拟化(Multi-tenant Database-as-a-service Virtualization)希望用尽可能高的虚拟机密度来降低成本,持久内存低成本和高容量的特性正好满足这一需 求。英特尔的实验数据显示,一个192GB的DRAM加上1TB持久内存的系统,比768GB全DRAM系统的成本降低了30%,但是能够多支持36%的虚拟机。
2.持久化缓存
各种应用都需要持久化的数据量,尤其需要在线持久化的数据量。而持久化的方式,都是经过谨慎设计的,否则,过大的数据量持久化必然会影响系统整体的性能。但是大容量的缓存也带来了一个挑战,若发生断电或者Redis宕机,那么预热整个缓存数据需要很长的时间,业务的性能很容易受到影响。
3.高速存储
在作为高速存储应用时,持久内存主要发挥其读写速度快且数据断电可保持的特点。传统的存储设备将数据持久化地写到硬盘中,导致各项性能不可避免地会受限于硬盘的访问延时。SSD的出现大大缩短了访问延时,而持久内存的出现进一步缩短了访问延时,从而优化了整个系统设计方案。
4.PMoF
随着计算和存储分离趋势的发展,可以构建一个统一的大容量内存池共享给不同的应用程序使用。PMoF就是这种更高效地利用远程持久内存(Remote Persistent Memory,RPM)的技术,在实际PMoF设计实现时,还需要考虑以下几方面:

  • 持久内存速度尤其是读速度非常快,远程访问需要低延时的网络
  • 持久内存带宽很大,需要高效的访问协议;
  • 远程访问不能带来很大的额外开销,否则就会丧失持久内存带来的速度和延时优势。

基于RDMA(Remote Direct Memory Access,远程直接存取存储器)技术的高性能网络有高带宽、低延时、稳定的流控等优点,因此采用PMoF技术可以更好地发挥持久内存在远程访问场景下的性能优势。

2 非易失性存储介质

很多厂商和研究机构一直在探索性能、成本、循环寿命及工艺可靠性等方面都更加优异的非易失性存储介质。
 非易失性存储介质分类

2.1 传统非易失性存储介质

传统非易失性存储器按照存储器中的数据能否在线随时修改为标准,可以分为两大类,即只读存储器(ROM)和Flash。

ROM的特点是数据一旦存储就无法再更改或删除,且内容不会因断电消失,所以通常用来存储一些不需要经常变更的信息或资料,如计算机启动时用的基本输入输出系统(BasicInput Output System,BIOS)。

为了实现编程和擦除操作,ROM发展出了多种类型,包括可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable Programmable ROM,EPROM)等,其中,EPROM解决了传统ROM只能编写一次的弊端。根据擦除方式的不同,EPROM又可以分为紫外线可擦除可编程只读存储器(Ultraviolet EPROM,UVEPROM)和电子可擦除可 编程只读存储器(Electrically EPROM,EEPROM),但是这些不同种类的ROM都具有擦写不便、集成度低等缺点。

Flash实现了存储数据的在线修改和擦除,其存储单元结构与EEPROM相似,但是EEPROM只能对整个芯片进行擦写操作,而Flash能对字节进行擦写,另外,Flash的擦写电压比EEPROM的低很多。

Flash可以分为两种:第一种是由英特尔于1988年首次推出的NOR Flash,其采用热电子注入的方式写入数据,基于隧穿效应擦除数据;第二种是由日立公司于1989年研制出的NAND Flash,其擦写操作也是基于隧穿效应进行的。NORFlash有独立的地址线和数据线,很容易随机存取其内部的每一个字节。NOR Flash允许在芯片内执行,应用程序可以直接在Flash上运行,不必再把代码读到系统RAM中,所以非常适合用于各种消费电子产品中。NAND Flash可以实现很小的存储单元尺寸,从而实现较高的存储密度,并且写入和擦除速度也相对较快。NAND Flash成本较低,非常适用于存储卡之类的大容量存储设备。

2.2 新型非易失性存储介质

为了开发出比传统非易失性存储介质更高速、更低功耗、更高密度、更可靠的非易失性存储介质,近年来研究者们把目光聚集到一些具有特殊性能的材料上。铁电随机存储器(Ferroelectric RAM,FeRAM)、磁性随机存储器(Magnetic RAM,MRAM)、阻变存储器(Resistive RAM,ReRAM)、相变存储器(PhaseChanging Memory,PCM),以及进入市场不久的3D-XPoint。

1.铁电随机存储器FeRAM

通过铁电材料的不同极化方向来存储数据。在铁电材料上施加一个小于其击穿场强的外加电场时,晶体中的原子会在电场的作用下发生位移,使得晶体中的正负电荷中心不重合,并且处于一种稳定状态(极化向上);当施加反向电场时,晶体中的原子向反方向发生位移,达到另一种稳定状态(极化向下)。极化向上或者极化向下的双稳态可以用来存储二进制信息“1”和“0”。当撤销外加电场后,晶体中的原子在没有获得足够多的能量之前会保持原来的位置,不需要电压来维持,所以FeRAM是一种非易失性存储。

FeRAM具有高读写速度、低功耗和擦写循环性能好等优点。但是,FeRAM破坏性的数据读取方式导致每次数据的读取都需要重新写入,其读写过程还伴随着大量擦写操作,这对FeRAM的擦写循环性能提出了更高要求。另外,FeRAM中的铁电材料在单元尺寸缩小至一定程度时就会失去铁电效应,这限制了其朝高密度方向的发展。另外,当环境温度超过铁电材料的居里温度时,铁电材料会由铁电相转变为顺电相,失去存储功能,因此FeRAM的数据保持能力较差。

2.磁性随机存储器MRAM

MRAM通过磁化方向的改变来存储数据,并通过磁阻效应来实现数据读。当自由磁层的磁矩方向与固定磁层的磁矩方向同向时,通过隧穿层的电子受到的散射作用弱,在垂直方向上表现出低电阻,相当于逻辑“1”;当自由磁层的磁矩方向与固定磁层的磁矩 方向反向时,通过隧穿层的电子受到的散射作用强,在垂直方向上表现出高电阻,相当于逻辑“0”。磁层的磁矩在断电后不会失效,所以MRAM是一种非易失性存储器。

MRAM的读写速度接近DRAM,具有可反复擦写次数高等优点。尽管如此,MRAM也面临磁致电阻过于微弱的挑战,两个状态之间的电阻只有30%~40%的差异,当读取电压降低 时尤其明显。另外,由于磁性材料的原因,MRAM在进行写入和擦除操作时,不同存储单元之间存在磁场干扰的问题。器件小型化后这一问题更加突出,这也限制了其朝高密度方向的发展。

3.阻变存储器
ReRAM利用材料的电阻在电压作用下发生变化的现象来存储数据,器件可以在高阻态和低阻态间发生可逆转变。研究人员将这些材料或器件都称为忆阻器(Memrister)。忆阻器在外加电压的作用下,电阻值会在至少两个稳定的阻态间发生切换,当撤去外加电压后,阻态能够保持,使之成为又一种非易失性存储器。这类应用在信息存储领域的忆阻器又被称为阻变存储器。尽管ReRAM的物理实现可以来自各种不同的阻变材料或者基于多种物理机制,且针对不同材料观察到的电阻转变特性有所不同,但是基本上可以分

ReRAM具有擦写速度快、存储密度高、具备多值存储和三维存储潜力等优点。但是由于改变存储器状态涉及原子键结的断裂及重组,相当于每执行一次写操作,材料就受到一次摧残,因此ReRAM耐久性较差。

4.相变存储器
PCM利用以硫属化合物为基础的相变材料在电流的焦耳热作用下,通过晶态和非晶态之间的转变来存储数据。对相变材料施加一个相对较宽的脉冲电流,使材料的温度处于晶化温度和熔点之间,材料结晶,处于晶态的材料具有较高的自由电子密度,表现出半金属特性,其电阻值较低,相当于逻辑“1”;对相变材料施加一个极短的大电流脉冲,使材料的温度处于熔点以上并马上淬火冷却,进而使材料的部分区域进入非晶态,处于非晶态的材料具有较低的自由电子密度,表现出半导体特性,其电阻值较高,相当于逻辑“0”。PCM中信息的读取是通过施加一个足够小的脉冲电压来进行的,材料的状态不会因为读取过程中可能断电而改变,所以PCM是一种非易失性存储器。

PCM具有重复擦写次数高、存储密度高、多值存储潜力大等优点。然而,高质量相变材料的制备及使材料发生相变所需的大电流是限制PCM商用化的主要因素,电流大意味着高功耗,这也是推广PCM大规模应用需要解决的主要问题。

5.3D-XPoint
3D-XPoint是英特尔和美光(Micron)于2015年发布的新型非易失性存储器,目前已知的3D-XPoint的结构的基本单元由选择器(Selector)和内存单元(Memory Cell)共同构成,两者存在于字线和位线之间。字线和位线之间存在特定的电压差,能够改变存储单元中特殊材料的电阻,从而实现写操作。字线和位线可以检测某个存储单元的电阻值,并根据其电阻值来反馈数据存储情况,从而实现读操作。

2.3 非易失性存储介质主要特性比较

在这里插入图片描述

3 持久内存模块

3.1 持久内存的JEDEC标准分类

1.NVDIMM-N
NVDIMM-N是目前市场上主流且已经实现商用的持久内存,有8GB、16GB和32GB等容量可选。它将同样容量的DRAM和 NAND Flash放在同一个内存模块中,另外还有一个超级电容。计算机的微处理器可以直接访问DRAM,支持按字节寻址和块寻址。当没有掉电时,它的工作方式和传统的DRAM相同,因此读写延时和DRAM相同,为几十纳秒级。当掉电时,超级电容将作为后备电源,为把数据从DRAM复制到NAND Flash中提供足够的电能,当电力恢复时,再把数据重新加载到DRAM中。NVDIMM-N的工作方式决定了它的Flash部分是不可寻址的。由于NVDIMM-N同时使用两种存储介质,成本急剧增加。但是,NVDIMM-N为业界提供了持久内存的概念和实例。

2.NVDIMM-F
NVDIMM-F是使用了DDR3或者DDR4总线的NAND Flash。Flash只支持块寻址,它先通过模块上的多个控制器和桥接器,把来自DDR总线接口的信息转换成符合SATA协议的信息,再进一步将其转换成对Flash操作的指令。NVDIMM-F的总带宽取决于其模块上SATA控制器的数目,其中每个SATA-II协议接口的控制器的带宽最大可达到500MB/s。NVDIMM-F的延时为几十微秒,是SATA控制器和DRAM-SATA桥接器的延时总和。虽然多重协议间转换,以及在BIOS和操作系统上的改动为NVDIMM-F的性能带来了一些负面影响,但是它的容量可以轻松达到TB以上。

3.NVDIMM-P
NVDIMM-P同时使用了DRAM和NAND Flash,但是其中NAND Flash的容量远大于DRAM的容量,DRAM作为缓存用于降低系统的读写延时及优化对NAND Flash的读写操作。NVDIMM-P支持DDR5接口,与DDR4相比提供了双倍带宽,并且提高了信道频率。NVDIMM-P支持按字节寻址和块寻址,它的容量可以达到TB,同时能把延时保持在102纳秒级,通过合理地配置DRAM与NAND Flash,其成本比DRAM低。可见,NVDIMM-P在规避了NVDIMM-N和NVDIMM-F的缺点的同时,提供了近似于DRAM性能的持久内存方案。

3.2 英特尔傲腾持久内存

英特尔在2018年5月发布了基于3D-XPoint技术的英特尔傲腾持久内存。它是一种使用了新型非易失性存储介质的NVDIMM,它与DRAM采用相同的通道接口,可以与DRAM搭配使用。它使用DDR-T协议进行通信,允许异步命令和数据时序。它使用大小为64B的缓存行作为访问粒度,类似于DDR4内存。

英特尔傲腾持久内存可以配置多种操作模式,包括内存模式(Memory Mode)、应用程序直接访问模式(App DirectMode)(也被称为AD模式),以及在两者之间分配比例滑动的混合模式。

1.内存模式
在内存模式中,持久内存被当作超大容量的易失性内存来使用,而DRAM则被微处理器用作写回型缓存(Write-backCache),这个由DRAM构成的缓存由主机的内存控制器管理。

在内存模式下,持久内存与DRAM一样,数据是掉电易失的,因为每个电源周期都会清除易失性密钥。DRAM被称为近内存(Near Memory),而持久内存被称为远内存 (Far Memory)。从性能角度来看,如果读写操作命中近内存,将会获得DRAM级别的读写延时,即10ns级别的延时。反之,读写操作流向由持久内存构成的远内存,从而产生额外的延时,达到亚微秒级别的延时。

值得注意的是,内存模式并非都适用于所有应用场景,需要根据具体的应用场景和工作负载的特性来判断。如果应用或负载需要超大内存,并且其中的热数据总量能基本容纳在DRAM中时,内存模式就非常适合。如果DRAM不足以容纳热数据,并且应用或者负载需要很高的内存带宽来访问较大的地址空间时,内存模式就不适合。有些内存数据库更适合使用下面介绍的AD模式。

2.AD模式
在AD模式中,持久内存直接暴露给用户态的应用程序来使用。在这种模式下,持久内存是按字节寻址的,为保持缓存一致性,所存储的数据是持久非易失的,并且具有接近于内存的读写访问速度,同时提供了可执行DMA和RDMA的功能。

AD模式需要特定的持久内存感知软件和应用程序的支持,应用程序通过持久内存感知文件系统(PMEM-Aware File System)将用户态的内存空间直接映射到持久内存设备上,从而应用程序可以直接进行加载(Load)和存储(Store)操作。这种形式也被称作DAX,意为直接访问。为了使开发者更加方便有效地基于持久内存进行应用程序开发,英特尔提供了用于在持久内存上进行编程的用户态软件库PMDK(Persistent Memory Development Kit)。

比较适合AD模式的应用场景包括:性能瓶颈在于磁盘I/O的应用、某些需要较高内存带宽来访问较大地址空间的内存数据库的应用、需要支持更大数据集和更多客户端或者线程数的应用等。此外,还可以将持久内存配置为应用程序直接使用的存储(Storage Over App Direct Mode),用户只需要通过驱动,就可以对持久内存进行像对硬盘一样的块操作。与传统企业级SSD相比,此模式可以提供更好的性能、更低的延时和更好的耐用性。
在这里插入图片描述

GitHub 加速计划 / nv / nvm
78.06 K
7.82 K
下载
nvm-sh/nvm: 是一个 Node.js 版本管理器,用于在不同的 Node.js 版本之间进行切换。它可以帮助开发者轻松管理多个 Node.js 版本,方便进行开发和测试。特点包括轻量级、易于使用、支持跨平台等。
最近提交(Master分支:1 个月前 )
da2720a4 - 1 个月前
9fb9dec7 Fixes #3417 1 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐