myAltera帐号登录

忘记您的用户名或者密码?

还没有帐号?

闪存引发革命

两波巨大的技术革命浪潮冲击着数据中心,卷走了传统的思想,软件、内存和存储体系结构发生了深刻的变革。一波浪潮源自神经网络大片未知领域,正在改变应用程序访问数据的方式。另一波来自深奥的半导体物理,消融了内存和存储的边界。这最终将从根本上改变数据中心。这种变革会直接影响到嵌入式系统。

无限和平坦

计算一开始时,应用程序就必须识别出某些基本差别:在工作数据和文件之间,内存和大容量存储之间。即使是大数据平台Hadoop等相对较新的程序也非常审慎的对待这种差别,努力管理好每一台服务器的DRAM和硬盘。但这并不是现代程序语言的方式。

对于Java或者Python程序,认为存在对象的无限资源池,全部都驻留在主内存中(图 1)。有限的DRAM、较慢的硬盘以及老的互联机制等物理现实成为实现透明应用的主要问题,导致不能使用。替代了Hadoop映射/缩减,我们现在拥有了Spark,它实际上是对象存储DRAM有限的资源池。

图 1. 应用程序需要什么——大容量平坦的内存,而实际得到的——异构体系结构的内存和存储

 flash-triggers-a-revolution-fig-1

这种变化是由于工作负载转换而导致的。当主要的数据中心应用程序是网络搜索时——其中,一项任务向巨大的数据集发出查询申请,然后重试,这种情况下,映射/缩减比较实用。数据页面从硬盘流向内存,然后顺序流回硬盘。但是深度学习等新出现的应用,会重复的连续多次访问同一组数据集,或者进行图形分析,这会产生非常广泛的突发分散访问,90%的时间都花在等待硬盘上。转换到内存驻留对象存储能够极大的缩短执行时间。

这种变化是由于工作负载转换而导致的。当主要的数据中心应用程序是网络搜索时——其中,一项任务向巨大的数据集发出查询申请,然后重试,这种情况下,映射/缩减比较实用。数据页面从硬盘流向内存,然后顺序流回硬盘。但是深度学习等新出现的应用,会重复的连续多次访问同一组数据集,或者进行图形分析,这会产生非常广泛的突发分散访问,90%的时间都花在等待硬盘上。转换到内存驻留对象存储能够极大的缩短执行时间。

NVM的机遇

这两种转换——希望有大容量内存以及不断增长的数据集的不变性,同时在半导体内存物理世界中引发了前所未有的变革。相变内存和电阻内存等新存储器机制最终已经接近产品了——其访问时间和密度改变了游戏规则。3D NAND闪存使用塔式垂直结构,就像科学幻想中的城市风景,颠覆了摩尔定律预见的速度和密度规律。表面上,这些变化看起来与Spark所希望的一致:容量巨大的快速本地内存。

当然在芯片级的收获是最大的。当传统的扩展方式停滞不前时,这种方法便恰逢其时了。西部数据公司执行副总裁Siva Sivaram在今年的闪存峰会上讲道:“在15 nm,平面NAND浮动栅极只能存储大约15个电子。”一个电荷是如此之小,您必须准确无误的对其进行计数,特别是您要区分出内存单元中四个电荷电平的情况,这是多电平闪存必须能够做到的。闪存设计人员要么不得不放弃进一步扩展,要么找到方法把更多的浮动栅极封装到体积一定的芯片实体中。

为打破这种局限,NAND设计人员实际已经做到了芯片开发人员所做的:向纵向发展。并不是使用平面浮动栅极晶体管,而是堆叠3D NAND芯片。浮动栅极结构围绕一个圆柱形塔向上堆叠,就像柱子上的面包圈,嵌入到控制和信号线高密度多层网络中。在今年的新品发布中,某些供应商把这些塔结构堆叠到了64个浮动栅极的高度,三星在大会上介绍了512 Gb管芯,其峰值传送速率高达800 Mbps。

目前为止还看不到纵向增长要结束的迹象。SK Hynix的KW Jin预计技术会继续发展,会有18个月的大幅度增长,直到超过100个单元高度。他说,“但是对于200个单元堆叠,则需要技术突破。”

三星执行副总裁Jaeheon Jeong说,应用到固态硬盘中后,3D NAND芯片产生了令人惊奇的效果:1 TB单片BGA封装,采用NVMe接口,工作良好。他将宣布具有SAS接口的32 TB SSD。他还提到,Facebook正在替换目前的M.2卡,支持在1U机架插槽中安装32个NAND卡,在PCI Express® (PCIe®) Gen4上传送速率高达12 GBps。

填补空白

虽然在速度上进展非常快,但是3D NAND仍然还达不到DRAM的速度和延时。这就是空白,而Intel和Micron去年发布了3D XPoint内存。密度现在大约是64高度NAND的四分之一,但是宣称管芯级延时要低1000倍,这一至今还未公开的无晶体管单元技术恰好填补了DRAM和3D NAND之间密度和性能的空白。

在闪存峰会上,Micron高级体系结构主任Stefanie Woodbury展示了这些指标是如何转换成系统级性能的。她说,“在SSD级,与传统NAND SSD相比,每秒I/O操作次数(IOPS)提高了10倍,而响应时间只是其十分之一。”

三星也不甘其后,暗示将推出名为Q-NAND的竞争产品。Jeong宣称,“它要比PRAM [相变内存,很多人认为该技术落后于3D XPoint]更快,而能耗更低。今年我们就能够拥有1 TB器件。”除了最明显的一点是被称为NAND之外,Jeong并没有更多的讨论所涉及到的技术。

坏消息

这些进步听起来只是为了满足软件对大量平面物理内存的需求。但是在实际中,有很多复杂的问题。

首先是速度——访问延时和带宽。NAND比硬盘快得多,特别是在平均延时方面。然而即使是最新的3D NAND芯片也无法与DRAM相匹配。CAS延时——接收读命令与DRAM引脚上出现第一个有效数据之间的延时,大约是15 ns。NAND闪存延时要长数千倍:在模组级会更长,因为控制器必须参与会话。在传送速率上也存在相似的差异。因此,完全基于读性能,只使用NAND闪存作为主内存会严重降低应用程序性能——除非您有很好的高速缓存命中率,或者在等待时能够运行非常深的线程。

但是,读速度并不是真正的问题所在。NAND闪存模块擦除和写入——NAND芯片必须一次操作完成这些模块,这要比读慢很多,其时序在很大范围内会有很大的变化。而且,与DRAM相比,成功擦除和写入模块的次数非常少:从一千个周期到高密度器件的大约20,000个周期。如果您希望在范围的高端达到这些指标,那就要放弃其他指标,例如速度或者误码率。

注意到这些现实,NAND闪存看起来根本不是内存——而是存储介质,就像一类非常昂贵的高性能硬盘。因此,它必须有控制器以及驱动软件才能使用。当然,大部分SSD供应商就是这样使用NAND的:他们在控制器后面放置了大量的闪存芯片。控制器会对读操作进行高速缓存以降低延时。它会快速进行写操作以隐藏很大的写延时,减少擦除和重新写入闪存物理模块的次数。它会使用强大的纠错码以减小失效单元和随机误差带来的影响。它会重新映射地址以避开有太多错误比特的模块,均匀的分配开。

很显然,即使转换到采用完全不同的非易失技术也逃避不了这些现实。Intel和Micron还都没有公开他们的3D XPoint内存在器件级的详细特性。但是在闪存峰会的演讲中,Micron的Woodbury的确谈到控制器和固件是3D XPoint SSD性能的关键所在。

那么,使用SSD最明显的方式是对硬盘的仿真。含有NAND闪存管芯和控制器管芯的模组可以被放置到服务器卡硬盘中,与卡的SATA端口相连接。或者,一组闪存芯片和控制器可以仿真磁盘阵列,以RAID方式服务于整个机柜。

越来越得以接受的是放弃仿真,而是采用针对非易失内存进行了优化的协议通过最快的总线与SSD进行通信,非易失内存可以是NVMe,总线可以是大部分卡上的PCIe。据测试试验Calypso Systems公开的指标,在数据中心环境下,这种方法的性能要比SATA甚至SAS连接快三到五倍。

而且还有其他可能性。采用适当的控制器,SSD可以直接位于服务器卡的内存通道中,进一步提高了带宽,降低了延时。通过仔细的设计,很多的闪存和控制器管芯可以适配到传统的DIMM格式中,插入到DDR内存通道中。这就是NVDIMM背后的思想,它有几个特点。NVDIMM的小尺寸意味着容量受到严格限制——与磁盘大小的SSD的数十太字节相比,只有数十吉字节。但是,在闪存芯片和DDR总线之间放置了DRAM之后,NVDIMM-N卡的IOPS总体性能是企业级NVMe SSD的数十倍——其中,实际的DRAM卡只是把闪存芯片作为掉电时的备份。NVDIMM-F卡连接SSD与内存通道,而没有采用DRAM缓冲,其带宽同样也会很高,但是延时较长。

NVDIMM-N卡还有其他重要的特性:在NVMe协议中,可以作为内存进行寻址,而不用发送命令,也可以当做硬盘。这就带来了一个有趣的可能性:如果没有必要把非易失内存作为存储,我们能够对数据中心的非易失存储设备进行远程直接内存访问(RDMA)吗?很多分散的DRAM和NV存储器资源池可以通过数据中心的以太网和融合以太网(RoCE)协议承载RDMA连接起来。

现在,我们的软件梦想就要成真了。对于CPU的高速缓存和加速器,可以把数量众多的内存和类似内存的器件看做一个平面存储空间。即使是巨大的数据集也可以完全驻留在内存中,只是延时不同,这取决于物理页面在数据中心所在的位置。即使是最差情况,RoCE延时也要比冷存储硬盘延时小很多。

新思想

这给我们带来了三个新思想,每一个都有可能进一步改变数据中心。一个是我们刚刚介绍的分布式内存体系结构的逻辑产物。另外两个是闪存峰会带来的相关概念。

让我们从逻辑产物开始。通过数据中心的融合以太网的RDMA会话操作,我们分布式体系结构中的内存资源池被拼接在一起形成一个巨大的虚拟内存。某些数据中心——例如最著名的微软的Azure中心,在网络边缘的网卡(NIC)上探索使用硬件加速器。这就把可编程硬件——在Azure的例子中,是FPGA,实际上放在了巨大的平面内存中。

对于传统的网络或者存储操作,使用这些所谓的智能NIC是显而易见的。当数据通过网络接口流入流出高速缓存时,它们可以实现压缩/解压缩或者加密/解密算法。但是作为嵌入在内存中的通用处理器,对智能NIC的意义还研究不够。例如,能否组织应用程序使得数据流向CPU,从一致性内存流向高速缓存时,通过智能NIC中的硬件处理器进行处理?这种组织措施就能够把大部分工作从CPU分流掉,节省了时间、能耗、DRAM,以及高速缓存空间。

在峰会上,一家公司NGD Systems,以前的NxGn Data,发表了对这一思想不同的看法。公司介绍了6 TB,150k IOPS SSD,而且具有嵌入式处理功能。CEO Nadar Salessi解释说:“我们的思想是在SSD中执行搜索、正则表达式处理、映射缩减,或者Spark任务。”编程模型当然是一个重要的问题。Salessi说,基本思想是按照传统方法对任务编程,然后确定是否集中到SSD中。

智能NIC和NGD的本地处理都是集中在网络或者存储系统的嵌入式处理上。来自峰会的第三种思想则是完全不同的方向:把底层控制器处理从一致性内存中剥离出来。

EMC研究员Daniel Cobb评论说,“原始NAND芯片性能达到5百万IOPS。”但是,他继续说到,当我们把芯片封装在控制器和接口的后面时,我们只实现了一部分。可能我们应该断开控制器和外设总线连接。

原理上,可以虚拟化处理SSD控制器的开销任务,放到软件驱动中,由系统管理程序激活。芯片本身可以设计为直接支持RDMA。这就避免了DRAM和NAND之间的瓶颈,充分发挥了芯片的带宽能力。对系统性能的影响还不确定,特别是相对于写延时,系统软件需要干预写过程的情形。然而,考虑到固定数据结构越来越重要,在很多应用中这并不一定是个问题。

变革洪流

快速发展的非易失存储技术已经应用在数据中心架构中,有各种各样复杂的选择(图 2)。最明显的应对方法,也最可能保留现有体系结构的是把器件封装在一起替代磁盘。但是其利用率非常低。

图 2. 非易失存储各种可能的位置  

flash-triggers-a-revolution-fig-2

这种担心促使架构师转向其他选择,例如,PCIe承载NVMe协议,或者采用各种其他的高性能架构。这使得在NVDIMM模组中部署少量的闪存成为可能。但是,这些解决方案把非易失存储器放在了中间位置:不是硬盘,也不是真正的内存。它们的确有助于提高性能,但是需要引入采用自己的协议的第三类器件。3D XPoint等新出现的技术便是如此,引入了另一种中间器件,这一次是在DRAM和SSD之间。

这并不是应用程序所希望的方向。它们只是需要无限统一的内存空间。最符合这种思想的体系结构是RoCE。数据中心的所有DRAM和非易失器件都成为一个平坦的空间,延时不同,而逻辑行为相同。而这已经与目前的DRAM、NVDIMM模组和SSD自组织混合应用有很大的差别。尤其是一种差别是,RoCE明确的把应用相关的内存流量放到了数据中心的以太网上——不仅包括目前已经高达40 Gbps甚至更高的快速机架内网络,而且还有把机架交换机连接在一起的跨过整个中心的网络。这种转变对以太网带宽有强烈的需求:40 Gbps仅仅是开始。

带宽压力会带来更激进的变革吗,例如网络内或者内存内计算,要求在应用级调整软件?穿过网络而增加的延时会促使架构师集中精力让CPU和加速器有更强的多线程?这些压力会使NAND闪存供应商认真的考虑芯片级RDMA等更激进的想法吗?

不论数据中心向哪个方向发展,嵌入式系统设计人员都会非常谨慎。过去,企业级架构理念是从高速缓存到虚拟内存到以太网再到多核CPU,现在已经发展到嵌入式设计。非易失存储器革命也不会是例外。那么,今后具有1 TB物理内存的嵌入式设计会怎样呢?


CATEGORIES : 数据中心/ AUTHOR : Ron Wilson

Write a Reply or Comment

Your email address will not be published.