持久内存架构与工程实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2 持久内存硬件架构

2.2.1 持久内存的硬件模块

持久内存主要包含以下几个硬件模块:控制器、非易失性存储介质、动态内存和支持控制组件。不同类型的持久内存的内部结构有所不同,下面分别予以介绍。

1.英特尔傲腾持久内存

先介绍英特尔傲腾持久内存,其关键组件如图2-4所示。

图2-4 英特尔傲腾持久内存的关键组件

持久内存与DRAM使用相同的硬件接口,但是使用不同的通信协议:DRAM使用DDR协议,持久内存使用类似于DDR协议。

(1)持久内存控制器:持久内存的大部分操作都需要通过持久内存控制器来实现,它管理着主机平台接口及DQ缓冲区的专用总线接口。持久内存控制器还提供完整的介质管理,包括磨损均衡、坏块管理、错误检测与修正、元数据管理和地址转换。持久内存控制器的特定寄存器可以通过主机端的SMBus链路寻址,与主机共享串行状态检测(Serial Presence Detect,SPD)数据。持久内存控制器通过专用的SMBus与电源管理集成控制器(Power Management Integrated Controller,PMIC)连接,以控制电源管理设备。最后,持久内存控制器还能通过专用的Flash端口与串行外设接口(Serial Peripheral Interface,SPI)Flash连接,用于存储一个或多个内存控制器的固件。

(2)非易失性存储介质:非易失性存储介质使用了英特尔专有的傲腾技术,每根持久内存包含多片介质芯片,第一代产品的容量有128GB、256GB、512GB三个选项可选。

(3)其他组件功能。

● DQ缓冲区:英特尔傲腾持久内存使用了行业标准的DDR4 LRDIMM DQ缓冲设备,其方式与DDR4 LRDIMM相似。这些DQ缓冲设备将缓冲并重新驱动所有主机接口的DQ和DQS信号,以降低持久内存向DRAM主机通道提供的有效DQ或DQS的电气短线长度,并与RDIMM、LRDIMM和新兴的NVDIMM实现互操作。DQ缓冲区由持久内存控制器通过专有的控制总线来管理。

● 参考时钟发生器:持久内存包含时钟发生器,其在主机电源出现故障时仍然能够正常工作。持久内存控制器始终使用本地参考时钟。

● SPD:持久内存上的SPD数据可由主机系统通过标准主机SMBus链路寻址,并允许主机平台获取内存类型、关键操作属性和通道训练指南等特定信息。持久内存上使用的SPD与标准DRAM上使用的SPD相同。SPD通过SMBus链路连接到持久内存控制器上。

● 电源管理集成控制器:持久内存支持多个独立的电压域,以提供所有设备所需的电源,并创建某些电压轨的隔离变体以便为开机、断电、电源故障和电源管理提供特定的时序要求。

2.NVDIMM-N

除了英特尔傲腾持久内存,实现量产的另一大类持久内存就是NVDIMM-N,下面以AgigA的产品为参考介绍NVDIMM-N的硬件组成。

NVDIMM-N同时包含DRAM芯片和Flash芯片两种介质。正常工作时微处理器访问DRAM芯片,当系统掉电时则将数据由DRAM芯片复制到Flash芯片上,下一次上电时NVDIMM-N控制器再把Flash芯片中的数据恢复到DRAM芯片上。NVDIMM-N结构如图2-5所示。

图2-5 NVDIMM-N结构

NVDIMM-N的主要组成如下:

(1)NVDIMM控制器。NVDIMM控制器是NVDIMM-N的核心控制部件。当出现掉电预警时,它会控制多路选通开关以获得DRAM芯片访问权,并且把其中的数据复制到Flash芯片上。

掉电预警由系统其他控制逻辑检测并在发生掉电事件后发出,其形式可以是独立保存信号(SAVE)或SMBus的命令。理论上NVDIMM控制器能够检测自身电压并触发内容复制,但是由于没有和系统微处理器的“握手”,所以无法保证数据被成功写入持久化域。

NVDIMM控制器还需要控制内存模块上的供电。正常工作时NVDIMM-N由板载12V供电,进行数据复制时则切断和板载12V的通路,由超级电容进行供电。

(2)多路选通。多路选通(MUX)开关能选择DRAM芯片的访问源,其开关控制信号来自NVDIMM控制器。

(3)内存。内存使用的芯片和普通DRAM类似,但与一般服务器内存采用的×4位宽或×8位宽的内存芯片颗粒不同,它采用了×16位宽的芯片,以减少芯片数量和占用面积。

(4)Flash芯片。Flash芯片用于在掉电时保存数据,由NVDIMM控制器直接管理。

(5)超级电容。由于数据从DRAM芯片向Flash芯片的写入时间长达几十秒,普通的板载电容无法保持这么长的供电时间,所以NVDIMM-N采用外接的超级电容来供电。

2.2.2 持久内存的外部接口

目前市场上的持久内存都参照JEDEC标准下DDR的机械接口和电气接口与主机侧连接。已经发布的NVDIMM-N规范列出了一些新的接口要求,而NVDIMM-P规范还在讨论中,持久内存作为目前相关的商业化产品,可能是NVDIMM-P规范的重要参考。

持久内存和主机端有如下接口。

1.内存总线

NVDIMM-N参用了标准的DDR协议,而英特尔傲腾持久内存采用的协议类似于DDR协议。

主机内存控制器与持久内存的通信协议使用与DDR相同的物理接口,但使用不同的协议,因此部分信号做了重定义。如果系统同时连接DRAM与持久内存,那么这两种协议可以在同一条总线上共存,主机侧的内存控制器会根据访问类型对信号进行适配。主机内存控制器支持两组协议并分别与DRAM或持久内存进行通信,若在其外部,则复用同一组引脚信号,如图2-6所示。

图2-6 DRAM和持久内存的总线

协议的读取和写入指令在总线上使用完整的高速缓存行地址发送,并由持久内存控制器将这些通用指令转换为特定的技术指令。

写入数据与写入指令同时发送,并由持久内存控制器进行缓冲。

执行读指令时需要进行拆分,在执行读取指令后,持久内存控制器会在数据可用时请求使用数据总线进行传输。数据总线方向和时序由总线控制,从主机发送到持久内存控制器的每个发送请求的命令数据包都允许异步命令或数据计时,因此持久内存控制器可以自由地将命令重新排序到内存,并重新记录读取返回数据。

2.SMBus

DRAM规范的SMBus有两个功能:一是读写串行状态检测信息,内含详细的DIMM特征数据,包括关键时序、配置、容量、部件号、序列号和其他相关信息;二是温度检测。普通DRAM的这两个功能由一个集成芯片同时提供,持久内存的SMBus也需要支持上述功能,但相对于普通DRAM,其实现手段可能有所差异。

持久内存控制器连接在SMBus上,因此主机系统可以访问持久内存控制器上的多数通用寄存器,并执行许多关键后台功能,如将更新的固件加载到持久内存控制器中。图2-7为持久内存SMBus的连接图。

图2-7 持久内存SMBus的连接图

3.12V额外供电

普通的DRAM只支持VDD(1.2V)、VTT(0.6V)、VPP(2.5V)三种输入电压,其中VDD能给DRAM颗粒提供较大的电流。持久内存内部需要提供多种电压供控制器、存储介质,如果所有供电由1.2V电压作为输入,则需要包含升压电路,从而使效率低下,所以NVDIMM-N规范定义了两个专用的12V输入电压来供电。持久内存采用同样的定义。

像持久内存这样比较复杂的系统,通常会采用集成电源芯片PMIC。PMIC可以提供多路输出电压,同时管理电源时序以及持久内存和主机侧电压之间的隔离。

4.保存信号

保存信号(SAVE)是NVDIMM-N特有的,用于提示NVDIMM控制器开始向Flash里写入数据。主机端应该在完成ADR流程后再发出保存信号。

持久内存强制要求系统支持ADR,而且无须进行大规模的数据复制,只需要检测系统掉电时内部缓冲区的数据并将其写入持久化介质即可。