人工智能时代,数据中心需要新型内存

来源:半导体行业观察翻译 作者: 时间:2017-10-16 09:47

人工智能 数据中心 新型内存

  随着所要处理、存储和访问的数据量的持续攀升,数据中心之中也开始出现 DRAM 扩展和替代选择。这对数据中心的架构有很大的影响,因为其现在的目标是让处理过程尽可能地靠近数据并减少每个地方的延迟。

  在冯·诺依曼计算架构中,内存一直以来都是一个关键部分。现今数据中心中通常使用的内存是基于 DDR4 的 DIMM,还有一些直接连接到 CPU 的传统 DDR3。但对于数据中心中的许多新应用(包括人工智能、机器学习和深度学习)而言,这些内存都太慢了。所以人们正在努力研究如何提升数据存取的速度,同时又不会给电力预算带来太大的影响。

  相比于之前的 DRAM 版本,DDR5 将能带来显著的速度提升。内存制造商已经坚持了很多年,说 DDR4 之后不会有后续了。DDR4 曾经伴随着智能手机和其它移动设备的兴起为我们带来了流视频和几乎无处不在的图像处理。据固态技术协会(JEDEC)称,DDR5 的带宽和密度将达到 DDR4 的两倍,并且也有更好的信道效率(channel efficiency)。

  但 DDR5 本身很可能是不够的。在多个市场中由各种互连设备中的传感器生成的数据的量正在爆发式增长,因此为了理解这些数据,所需的计算能力也在水涨船高。机器学习/人工智能/深度学习也在助长对其它新型内存的需求;不管是单独的应用方面,还是作为互连设备的扩展方面都是如此。

  GDDR5 是选择之一,这是一种同步图形随机存储存储器(SGRAM/synchronous graphics random-access memory)。GDDR5 是为显卡、游戏机和高性能计算而开发的。比如,英伟达就在其显卡中使用了这项技术来助力深度学习和机器学习应用。

  “如果你看看机器学习和深度学习,基本上也就两件事——一个必须训练的数据集和得到的模型,该模型然后可部署用于推理。”Rambus 高级产品营销经理 Sarvagya Kochak 说,“数据的训练需要非常密集的计算资源,这也是重型 GPU 非常适合这类应用的原因。相比于 CPU,GPU 更适合低精度的、浮点型的运算。FPGA 也可以使用,而且确实有些公司在用。它们在功耗上面表现更好。具体用哪种很大程度上取决于所要开发的模型。”

  所有这些架构都有一个共同之处:需要处理和存储大量数据,并且需要非常快的存取。到目前为止,还没有一种能够满足所有需求的内存类型;在数据中心中,这让人类进行了一些非同寻常的技术组合。

  “人们在尝试做人工智能、深度学习和超级计算,我们正开始看到这些应用,这些方面对 HBM2(高带宽内存 2)的兴趣很大。”Cadence 的 IP Group 的产品营销组总监 Marc Greenberg 说,“HBM2 器件的一个堆栈就能为你提供每秒 Tb 级的内存带宽,这是非常大的。但使用我们现在已有的技术,你只能在单一一个 HBM2 堆栈中存储 4 GB。从广泛领域的许多方面看,这都算不上很多数据,所以你没法在 HBM 中存储非常大的数据库。但你也许可以在 HBM 中存储大型数据库的索引。这种架构可能就只有几个 GB 的 HBM,从而可以非常快速的存取;而更大量的内存可以安置在 DRAM 总线上——不管是用 DRAM 还是 NVM(非易失性内存)。所以你实际上在这里使用了两种方案。”

  尽管寻求更高带宽和更大容量的内存的大致趋势依旧没有改变,但实现这一目标的路径则在发生着变化。

  “HBM2 技术提供了非常非常高速度的带宽,目前正被用于图形应用、网络交换机应用和超级计算/高性能计算应用。”Greedberg 说,“在主流的服务器中你还看不到它们的身影。主流服务器非常看重容量。如果你想在这些服务器上运行大量虚拟机或类似某种巨型数据库应用的东西,那么你就需要在靠近 CPU 的地方安置大量存储。在靠近 CPU 的地方安置内存是很重要的。你可以将许多 TB 的数据存储在 SSD 或磁盘上,但那就有点远了,访问这些数据需要花去大量时间。因此,现在的一个趋势是尽量在 DRAM 总线上安置更多内存,这可以通过 DDR5 实现,或者也许可以将一些闪存放在 DRAM 总线上。如果你想在 DRAM 总线上放一些闪存,你有一些不同的方法可选,包括 NVDIMM-N 协议。”

局限和解决方案

  但是,每一次变化都有需要克服的技术难题。比如,可以直接连接到 CPU 的 DRAM 的量是有限的,这对数据吞吐量和整体处理性能而言都是一个大问题。

  “那是第一个问题。”Kochak 说,“那基本上一直以来都是最大的难题,因为 DRAM 器件的扩展速度没有真正跟上。三星、SK海力士和美光等大型内存制造商难以实现越来越高的密度。目前 4 Gb 和 8 Gb器件正在大量生产出货。16 Gb 器件应该会在一两年内上市,但这会带来一个非常显著的难题,因为从 CPU 的角度看,CPU 速度在过去十年中都没有显著提升。它们或多或少已经持平了,因为晶体管速度不能再超过当前已有的水平了。”

  为了提升处理速度,CPU 供应商在处理器中增加了更多核心。但这种做法也有自己的问题。

  “这种方法的问题是 CPU 中有一个集成的内存控制器,并连接到了 DRAM DIMM。”Kochak 说,“更老的 CPU 有两个内存控制器。现在则有四个内存控制器。不久后就会有六个内存控制器,而且可以预计未来每个 CPU 甚至可能会有八个内存控制器。内存控制器越来越多的原因是需要送入所有核心中的数据越来越多了,所以如果内存控制器太少,数据就没法从 DRAM 送入这些核心。如果这些核心不处理数据,那就没有使用它们的意义。随着核心数的增长,DRAM 和系统之间就将需要更多带宽。”

  因为带宽增大了,所以就需要大量内存。但随着带宽持续增长,所需的内存还会更多。他说:“看看内存一直以来的增长速度以及每个 CPU 连接的内存的增长速度,情况并不好。”

  英特尔已经在尝试使用 3D XPoint 来解决其中一些容量相关的问题了。3D XPoint 是一种相变内存,应该既能提供闪存一样的容量,又能带来 DRAM 一样的性能。

  Kochak 说:“从用例的角度看,只是在内存信道上放一个非易失性内存(NVM)对系统而言毫无用处。你必须要能使用这个设施,并且让主机系统、平台和应用都知道这个非易失性内存,让你能用它做些炫酷的事情。”

持久型内存(persistent memory)

  这就是需要考虑 NVDIMM 的地方了。NVDIMM 是指非易失性双列直插式存储模块(non-volatile DIMM),它既能作为标准 DRAM 工作,也能有闪存那样的持久性。一个典型的 NVDIMM 模块包含 DRAM、闪存、控制逻辑和一个独立电源;其中独立电源的作用是在出现意外断电事件、系统崩溃或计划中的停机时,内存中的关键信息能得以保留。所以它是一种持久型内存器件。

  NVDIMM-N 是将闪存放在了 DRAM 总线上用作防备断电事件的备份机制,Greenberg 说:“很多服务器都需要能在断电发生后恢复状态。如果你想象这是某种具有某些财务能力的机器并且在断电时有一项交易刚好开始,那么它就必须要能恢复并且记得当时正在进行的工作并完成这笔交易。也有其它一些相似的技术能够完成这个任务,比如带有备用电池的 DIMM——当发生断电时,电池会将 DRAM 中的数据保存到磁盘上。”

  Kochak 说尽管英特尔、美光、索尼、Viking Technology、三星和 Netlist 等多家公司都已经在出货 NVDIMM 了,但 SNIA(网络存储工业协会)还在努力推进这一标准,另外还诞生了另一个为持久型内存的应用而开发编程模型的组织。

  随着时间的推移,他相信应用开发者将会弄清楚使用持久性内存的方式。“我们今天的很多软件都是围绕一个关键开发的——DRAM 是易失性的,你会失去 DRAM 中的数据,所以在设计你的系统时,总是需要考虑故障。要做到这一点,需要做很多事情,比如设置检查点和记录日志。如果你不必做大量这些操作,你就可以使用同样的架构更快速有效地找到解决问题的方法以及提升应用的性能。然后你不需要为应付易失性系统而进行其它操作,因为这个系统的内存是非易失性的。”

  但这算不上是标准的即插即用方法。当涉及到在 NVDIMM 中的设计以及连接到 CPU 或 SoC 时,每个人的做法都不一样。

  “每个人都想做得不同,这或多或少反映 了每种 SoC 都有所不同。”Greenberg 说,“每种 SoC 的内存需求都或多或少不同,所以在各个方面都有很大的不同。它们支持 DIMM 还是固定在板上?DIMM 支持多少信道?速度多快?什么类型?需要支持什么功能?每个人的需求都有点不一样,每个人都想在尺寸和功耗上面进行优化。让人们能灵活选择是很重要的。”

  选择适合 CPU 的内存的主要考虑之一是内存带宽需求的持续增长。他说:“常常有人要求我们帮助他们推高频率的界限,以及尽其所能地试图提升内存总线的频率。另外还有一个显著的需求是增加可以连接在总线上的 DRAM 的量。在数据中心企业存储空间中,使DRAM 总线速度更快的新方法有两种。一是使用 DDR5 而非 DDR4。这是实现目标的主流方法。将你的内存管道从 DDR4 改成 DDR5。如果你确实需要在容量方面得到提升,你可能就需要看看 NVDIMM-P 了。”

会有用吗?

  使用先进内存设计系统可不是一件简单的事情。西门子旗下 Mentor 的仿真部门的存储产品专家 Ben Whitehead 说他花了大量时间与公司们谈论他们的方法和工具,以便创造先进内存。

  “NVDIMM 同时包含两种技术——首先包含 DRAM 技术,所以它看起来就像是具有 DIMM 形式的 DRAM,但它还有非易失性的部分,不管是闪存还是什么。如果你只是用 SSD 硬盘这样的闪存驱动器,那么验证该设计的设计和难题会比实际的设计本身更加困难,因为现在闪存的特性已经非常复杂,它会导致其中出现设计难题。你可以想出一种满足其架构要求的架构和设计,但要真正将其体现出来,并验证它确实在做它需要做的事,那可就极其复杂了。”

  问题涉及的范围包含垃圾回收(garbage collection)、写入放大(write amplification)和写入位置,因为根据你执行写入时 NAND 闪存的状态,可能会出现多很多的写入。

  “如果你在一个特定的地址执行写入,如果该地址已损坏,那你就需要移动它。”Whitehead 说,“所以你就擦除那个模块,然后将该数据写入到一个不同的位置。这又会导致另一个会移动该模块的扰动。所以当该主机写入一个模块时,你实际上有一个模块的 8、10、16 次写入。[So you can actually have 8, 10, 16 writes of a block just from the host writing one block]这种主机上的放大和主机造成的流量会在后端造成数量惊人的瓶颈和性能问题,而你又很难预测。”

  Whitehead 解释说,这需要一种验证方法,以创造这些情况。“你没有必要必须创造它们——通常这些情况会在一个驱动器运行了 6 或 8 小时之后才会发生。一旦该驱动器写满了几次之后,你就会真正开始看到这些性能特征、这些瓶颈开始出现。这种设计本身并不直观,但你可以创建管理这些功能的模块,不管是用固件的形式,还是硬件的形式。但要测试这些模块——只是说 SSD 的话,行业就会面临非常艰难的难题。”

  一种解决方案是将写入闪存所需的东西全都用起来,并将其与 DRAM 结合在一起,让该系统看起来就像是 DRAM。但这种做法的缺点是复杂度会翻倍。

  “你确实需要在一个仿真器中查看整个系统的能力,或者一些获取系统本身的能力,而不是将其分割成子模块——我们可能认为这些子模块或子系统的效果真的很好。”他说,“你必须将其放入系统之中,才能真正了解。我们可没有时间来创造非常牢靠的、非常以 IP 为中心的、非常完美的、可以在任何系统中工作的子系统,因为时间根本不够。我们可以创造出这种子系统,但所需的时间、金钱和开支会多得难以承受。公司需要尽可能快地将这些模块集成到系统当中,这样他们才能找到仅与该配置相关的真正漏洞并推出产品。这是个难题。在 NAND 闪存中存在很多模拟物理的问题,而且你必须在系统层面上加以解决。”

总结

  随着深度学习、机器学习和人工智能等新应用的发展,数据中心也需要提升处理性能以便更快地处理更大规模的数据。为了实现服务器架构中所需的内存,内存行业正在各种不同的有趣方向上努力。在这个快速演进的领域中,生态系统越来越确定数据应该保存在什么地方、系统应该怎样架构以及未来的瓶颈在哪里。

  内存是当今世界的一个重要组成部分,目前还没有任何一种单一解决方案能够解决所有问题。



关注电子行业精彩资讯,关注华强资讯官方微信,精华内容抢鲜读,还有机会获赠全年杂志

关注方法:添加好友→搜索“华强微电子”→关注

或微信“扫一扫”二维码

资讯排行榜

  • 每日排行
  • 每周排行
  • 每月排行

华强资讯微信号

关注方法:
· 使用微信扫一扫二维码
· 搜索微信号:华强微电子