导入HMB机制 | 无DRAM SSD成本更具优势

固态硬盘是一种以NAND闪存(Flash Memory)作为储存媒介的储存装置. 由于NAND Flash的物理特性, 与传统硬盘(Hard Drive)相比, SSD具有低功耗, 低噪音, 轻量化, 抗震动, 高效能等众多优势, 也因此近年来在整个储存市场上SSD的出货量逐年上升.

根据半导体储存装置研究机构DRAMeXchange的报告指出, SSD出货的动能时至今日仍处在高档, 尤其是在消费级(Client)SSD市场上, 其成长动能被预期将可以延续至2020年(图1).

图1 SSD出货量统计及预估

数据源: DRAMeXchange(2017)

SSD接口持续演进 PCIe扩充性大胜SATA

SSD的物理接口支持主要有Serial Advanced Technology Attachment (SATA)和Peripheral Component Interconnect Express(PCIe)两种. 其中SATA Gen3为当前市场上最为普及的SSD传输接口, 其理论传输带宽为6GT/s. 在过去的几年里, SATA Gen3的数据传输带宽, 相较于传统硬盘有明显的优势, 促使SSD的市占率逐年攀升.

与此同时, NAND Flash的制程与相关技术也不断地演进, NAND Flash和控制器的传输接口标准, 从过去的Legacy Mode到现在的Toggle 2.0/ONFI 4.0速度已有极大幅度的提升, 使得过去几年最盛行的SATA Gen3, 其理论带宽反而成为SSD发展上的一大瓶颈, PCIe SSD也就趁势崛起.

以PCIe Gen3来说, 其理论带宽可达8GT/s(1-lane), 除此之外, PCIe接口提供优异的扩充性, 理论传输带宽会随着信道(Lane)的数目倍增. 目前PCIe接口可以从1-lane向上扩充到16-lane, 在传输带宽上可以说已经和SATA不在同一个档次上了.

除了上述的物理接口支持演进之外, SSD与主板(Host)之间的传输协议, 也因应NAND Flash的快速发展, 从早前为了SATA装置而制定的Advanced Host Controller Interface(AHCI), 逐步走向Non-Volatile Memory Express(NVMe), 表1简单对照了AHCI vs. NVMe的主要差异.

换句话说, NVMe的传输协议继PCIe接口的演进之后, 再次解放了SSD这种以NAND Flash作为储存媒介装置的潜能, 将SSD推向下一个世代. 随着NVMe传输协议在SSD市场上的普及, 消费级PCIe SSD被预期将在2018年达到50%左右的市占率.

在消费级SSD市场上, 有几个主要因素可以直接影响到产品的销售数字.

价格

一般来说, NAND Flash是整个SSD当中价格最昂贵的组件, 随着不同厂商的SSD配置, NAND Flash的成本可以达到SSD整体物料成本(Bill of Material, BOM)的80%~95%.

然而, NAND Flash是SSD的主要储存配置, 是不可或缺的. 因此若要节省成本以降低售价, 移除其他SSD上非必要的的组件即是一个方法.

而众家厂商首先想到移除的对象便会是动态随机存取内存(Dynamic Random Access Memory, DRAM), 粗略来看, 一颗4Gb的DRAM芯片价钱即达3~4美元左右. 显而易见, 如果DRAM可以被移除在SSD的BOM之外, 对SSD的成本及售价来说都会有相当显著的帮助.

功耗

对于SSD的厂商来说, 功耗会是另外一个重大的考虑, 尤其是针对目标市场是PC OEM的SSD产品来说. 一般概估来说, SSD会占用一个可携式设备大约5%~10%左右的功耗.

如果SSD可以降低功耗, 便可以将整体的功耗预算(Power Budget)留给其余的零组件以及延长可携式设备的电池寿命.

可靠度

SSD作为用户的储存装置, 其数据的可靠度势必为用户最主要的考虑. 虽然现今的各种错误侦测及错误更正技术日渐发达, 但若能将一断电即流失数据的DRAM移除, 便可更进一步降低用户数据遗失或是失真的可能性.

性能

即使以上的各项因素都是SSD制造商以及用户的主要考虑, 效能依然强力影响着消费者购买SSD的意愿. 若一颗SSD没有DRAM来作为快取(Cache)使用, 其效能势必会受到显著的影响, 而这也是为什么DRAM-Less SSD如今在PCIe SSD市场并不普及的原因. 今日会购买PCIe SSD产品的消费者主要都是需要高速的访问速度, 而移除DRAM对SSD的整体效能来说反而是打了折扣.

HMB助力DRAM-Less SSD效能改善

所幸, NVMe协会也观察到消费级SSD市场上的这个趋势, 在2014年提出的NVMe规格v1.2当中制定了Host Memory Buffer(HMB)这个功能用以提升DRAM-Less SSD的整体效能, 期望消费级SSD解决方案能够更进一步地达到价格与效能之间的平衡点.

Host Memory Buffer, 顾名思义即为提供一套机制, 让主机端(Host)可以将目前不须要用到的内存资源, 透过NVMe协议提供给SSD使用. 如此一来, DRAM-Less SSD便可以在本身并没有配置DRAM的情况下, 取得额外的DRAM资源来作为快取提升效能. 当在特定情境下, SSD获取Host额外配置的HMB资源, SSD控制器(Controller)会将那些信息放置在这块区域内呢? 客观来说, 这是由各家SSD控制器内建的韧体所决定的.

然而, 考虑到以往的SSD产品实作状况, Logical to Physical Address Translation Table(L2P Mapping Table)是最有可能被放置在HMB内的系统信息.

简单来说, L2P Mapping Table用来纪录逻辑层面(Logical)的页(Page)位置与物理层面(Physical)的页位置之间的映像(Mapping)关系. 不论SSD须要做读取或是写入, 都会须要存取一定数量的L2P Mapping信息, 因此将L2P Mapping Table放入HMB缩减访问时间, 以提升SSD访问速度乍看上去是相当合理的.

在实际导入HMB设计之后, DRAM-Less SSD的效能可能会如何地被影响呢? 以下是透过一个简易计算模型(4信道无配置DRAM之SSD控制器+传输接口: PCIe Gen3 2-lane+3D NAND Flash)所得出的整体效能变化趋势.

为了可以单纯呈现出开启HMB之后所造成的效能差异, 我们先假设SSD可以从Host拿到的HMB大小固定为128MB且不会被收回去. 由图2我们可以明显的看出在循序读写的操作下开启HMB之后的效能, 并不会有太大的改善. 考虑到HMB的本质上依然是挥发性内存, 用来存放用户读写数据的空间比例通常不会太高, 绝大部分还是作为存放L2P Mapping Table的快取(实作方式会随着各家SSD厂商的设计而有所不同).

图2 启用HMB前后循序读写效能比较

整体效能改善不易 HMB设计有玄机

一般来说, 从RAM里面读取数据的时间, 远小于从NAND Flash里面读取数据的时间(ns vs. us), 所以若能透过适当的算法设计提升, 存放在HMB当中L2P Mapping Table的击中率(Hit Rate), 便能够一定程度地改善整体效能.

在循序读写的操作下, 由于用户读写的数据是具有连续性的, 在逻辑层面-物理层面的映像关系也会呈现连续性分布, 因此L2P Mapping Table并不须要频繁地被重新从NAND Flash里面抓取到HMB当中.

换句话说, 对循序读写的操作来说, 因为L2P Mapping Table的Hit Rate必定很高, 须要重新抓取L2P Mapping Table的机会很低, 因此即使仅仅依靠控制器内嵌成本较高容量较小的静态随机存取内存( Static Random Access Memory, SRAM)来存放小量的L2P Mapping Table已经足够, 这也是为什么HMB可以存放更多Table, 对整体效能却不会有太明显的影响.

当用户进行随机读取时, 对于SSD控制器来说, 下一笔即将要被处理的数据位置是无法预测的, 也就是说临时存放在SRAM内部的小量L2P Mapping Table的Hit Rate相较于循序读写来说会大幅降低.

在此情况下, 若能够取得额外的缓存空间存放更多的L2P Mapping Table, 藉以提升Hit Rate进而抑制须要从NAND Flash内重新抓取信息的频率, 便能显著地提升随机读取效能.

以此简易的计算模型来看, 即便是针对整个SSD存放空间(Full Disk)进行随机读取, 基于HMB造成的效能改善甚至可以达到40%. 除此之外, 我们可以观察到另一个趋势是: HMB所造成的效能改善幅度, 会随着整体SSD容量上升而更加显著(图3).

图3 启用HMB前后4KB随机读取效能比较

这是因为当用户进行随机读取时, 在测试数据足够多的情况下, DRAM-Less SSD容量越大, 在相同的SRAM大小配置下, 存放在快取中的Mapping Table其Hit Rate会越低, 此时若能够获取Host释放给SSD的HMB资源, 伴随适当的Flash Translation Layer(FTL)架构设计可以更大程度的提升效能.

图4显示了基于同一个DRAM-Less SSD估测模型下, HMB对4KB数据随机写入的性能改善趋势. 对于SSD控制器来说, 写入的行为相较于读取来说又更加的复杂.

图4 启用HMB前后4KB随机写入效能比较

除了在写入数据时需要读取L2P Mapping Table以外, 控制器韧体还须要修改L2P Mapping Table的内容(逻辑层面-物理层面的映像表须要做相对应修改), 并且将其存回到NAND Flash里面, 以完成整个数据写入的动作.

若没有足够的缓存空间来存放L2P Mapping Table, 在随机写入的情况之下控制器会需要更频繁的存取NAND Flash区块以取得每一笔当下欲写入数据的L2P Mapping Table信息.

除此之外, 一般对各家NAND Flash来说写入数据的时间会远大于读取数据的时间(ms vs. us), 所以如果SSD没有配置DRAM来作为快取使用, 随机写入的效能将会大幅受到影响.

如果DRAM-Less SSD其设计可以支持HMB, 进而从Host端获取额外的DRAM资源, 便能从中获取更加显著的效益.

以相同的估测模型来看, 针对整个SSD存放空间(Full Disk)进行随机写入测试时, DRAM-Less SSD支持HMB机制, 所产生的效能提升, 甚至可以上看4~5倍.

HMB大小影响读写效能 SSD设计须更周全

上述的DRAM-Less SSD效能趋势, 都是建立在Device端可以持续从Host端拿到固定128MB专属内存资源的情况下所估算出来的.

然而, 实际上的HMB大小是由Host根据当下的内存使用状况, 搭配SSD提出的需求所动态分配的, 如果Host端当下可以提供的内存资源大小, 并不符合SSD的需求, 那么SSD便不会去使用这块HMB.

因此在进行DRAM-Less SSD的控制器韧体设计时, 最好可以考虑到不只一种的HMB大小, 这样一来可以提升使用HMB的机率进而优化用户体验.

基于相同的估测模型, 图5显示了当HMB的大小从0(without HMB)到1024MB 4KB随机读写的计算结果.

图5 不同HMB区块大小对于4KB随机读写效能之影响

我们可以观察到, 虽然大致的效能趋势随着HMB size的增加而更好, 但是当HMB资源足够多的时候, SSD的效能会开始趋近饱和(Saturation). 这是因为当HMB足够多的情况下, SSD控制器可以将为了进行读写操作所有需要的系统信息(包含L2P Mapping Table)放到HMB里面.

如此一来, DRAM-Less SSD效能可被视为优化结果(理论上效能等同于原生即配置相同DRAM资源的SSD). 因此, 当SSD控制器厂商在设计韧体架构时, 须要考虑到怎样的系统数据结构, 可以让DRAM-Less SSD尽早地达到效能饱和点.

换句话说, 如何在DRAM-Less SSD内设计一组用于支持HMB系统数据结构, 兼顾访问速度和内存资源消耗, 甚至专门优化在以统计机率的观点来看较容易分配给SSD的HMB大小下的情境, 成为了各家SSD控制器厂商在即将百家争鸣的PCIe DRAM-Less SSD产品在线之决胜点.

效能提升固然是HMB被提出的初衷, 然而在谈论完效能部分之后我们还是需要回过头来关注对于所有储存装置来说最基本的要求: 储存数据的完整性(Data Integrity).

让我们思考一个问题: 对于SSD控制器而言, 是否能够100%完全信任所有存在于HMB内的信息? 在理想的情境下, 答案是肯定的; 而在实际的使用中, 我们仍然建议需要搭配足够强度的安全机制.

当DRAM-Less SSD被分配到一块HMB资源, 什么样的信息会被存放在HMB里面? 实际上, 这个问题的答案随着各家SSD控制器的韧体设计会有所不同. 但是数据缓冲区(Data Buffer), L2P Mapping Table或是其余控制器所需的系统信息都是可能的选项.

其中有些信息对SSD控制器来说是非常重要甚至不可重建的, 因此NVMe在推出HMB时即要求可支持的HMB的SSD控制器要能够在不预期关闭HMB功能的情况下, 依然保证SSD内数据的完整性.

除此之外, 预期外甚至是不合法的主机端存取或是数据传输过程中的失真都有可能影响到存放在HMB内的信息. 如何确保HMB内储存数据的完整性也成为PCIe DRAM-Less SSD的一项课题.

确保SSD数据传输完整性 E2EDPP机制立大功

在SSD市场上, 各家解决方案皆被期望有能力保证数据在主机端到装置端之间传输时的完整性. 端对端数据路径保护(End-to-End Data Path Protection, E2EDPP)(图6)即为一套相当流行的机制来达成这个目的. 当数据被读取或写入时, 其行走路径会经过不同的站点, 写入路径包含Host→PCIe IP→Processor→Data Buffer→Security Engine→Flash IP→ NAND Flash, 读取路径则是反向.

图6 端对端数据路径保护(含HMB数据路径)

这个保护机制最主要的目的除了确保数据在传输受到保护之外, 若控制器内部RAM搬动数据发生Soft Error, 整体设计上也有能力侦错, 避免错误的数据传送至主机端.

现在DRAM-Less SSD能够透过支持HMB功能, 在主机端取得特定专属空间来存放信息, E2EDPP的机制也应该要被扩展, 以同步确保HMB数据在主机端和装置端之间的双向传输.

如何实现HMB信息传输路径上的数据完整性确保, 端看各家SSD控制器厂商的设计. 其中一个简易的概念是在HMB数据当中加入同位检查(Parity Check)或是循环冗余代码检查(Cyclic Redundancy Check, CRC)用以侦测数据是否有发生错误. 一旦检验失败, 控制器即立刻进行错误处理(Error Handling).

另一方面, 由于HMB数据是存放在主机端的RAM里面, 虽然NVMe规范内明确要求这个区块在HMB启动期间只有SSD能够取用, 但是任何发生在主机端的误操作甚至是恶意存取行为都有可能取得HMB内存放的信息甚至根据取得的信息进行数据窜改进而影响到用户. 因此, 可以额外将要写入主机端的HMB信息先进行加密再进行传输, 待装置端读回这笔HMB信息时, 同样先进行解密并完成检验数据后再行使用(图7).

图7 HMB信息侦错及加解密机制简易示意图

相信在确保HMB数据完整性及安全性的课题上, 不同的SSD控制器制造商存在着各式各样的实作方式. 何种作法是最理想的方案目前也许还没有定论, 但可以肯定的是, 在利用HMB来提升DRAM-Less SSD效能的同时, 整体系统设计依然须要强化数据保护机制以保证用户数据的正确性. 如此一来, HMB确实很有机会可以将DRAM-Less SSD引领到下一个境界.

2016 GoodChinaBrand | ICP: 12011751 | China Exports