正在从概念走向现实的存算一体技术

存算一体或者计算存储(Computational Storage)这一理念从学术界提出到现在已经有超过20年的时间了。在过去的5、6年里,全球的主要内存、硬盘厂家投入了几百万美元的研发经费来研究这一技术,并开发了不少的样品产品。站在2021年的当下,随着EDSFF等新一代存储模块的快速推广,存算一体技术开始逐渐从实验室走向实际应用。

存算一体技术其实和智能网卡(SmartNIC)技术一样,都是要实现对CPU计算任务的卸载。在硬盘存储容量还不是太大的时代,由CPU直接读取硬盘上的数据,再对这些数据进行搜索、加解密、压缩等操作,这还能在效率和能耗两方面满足应用需求。但随着大数据时代的到来,AI计算和数据挖掘等应用的兴起,仍然依靠CPU来进行数据的读取和处理,将会带来极大的带宽瓶颈,并产生更多的能耗。因此,在存储模块处进行数据计算的卸载,是除了针对网络数据卸载处理的SmartNIC之外的另一种卸载计算形式。

CPU计算卸载的多种形式

要实现计算存储,在硬件设计上最直接的方法就是在U.2、M.2或E1.S形态的SSD存储模块上增加一片具有计算功能的芯片,起到计算引擎的作用。这块芯片可以是FPGA,也可以是定制化的专用ASIC。计算引擎一方面通过SSD控制器读取或写入存储颗粒上的数据,另一方面通过PCIe总线响应主CPU的各种命令。计算引擎和主CPU之间的数据交互不再是SSD上存储的原始数据,而是经过计算引擎预处理后的数据。

计算存储模块的形态

计算引擎为存储模块带来了分布式的计算处理能力,为了不显著增加存储模块的功耗,人们通常会在计算引擎里使用低功耗的ARM计算核心。对于E1.S这种形态的存储模块,如果带有4个ARM核心,那么在可以放置32个E1.S存储模块的1U服务器上,一下子就可以多出128个用于数据预处理的计算核心。这128个ARM Core相当于为1U服务器额外增加了一块ARM CPU芯片,将有效地减轻主CPU处理存储数据的负担。

计算存储模块带来的计算核心数的增加

计算存储模块(Computational Storage Disk)在真实数据处理上的效果如何呢?国外厂家给出了最常见的数据库大数据检索性能对比结果。数据检索包括了数据加载和数据搜索这两个步骤,对于同样大小的数据库,只依靠CPU来进行数据检索,耗时74.8分钟。而使用配有24块计算存储模块的服务器系统,整个数据检索时间只有29.2分钟。数据加载时间减少了95%,数据搜索时间减少了60%,所用功耗也减少了60%。这一对比测试结果直观地体现了计算存储模块带来的性能和功耗优势。

计算存储模块带来的数据搜索能力提升

除了可以用在最常见的数据搜索上之外,通过在计算存储模块上加载AI神经网络模型,可以让AI模型基于存储的数据就近进行推理和训练。由于AI模型种类众多,因此需要有针对性地进行软件层面数据处理的优化。这也意味着,计算存储模块在提供硬件计算资源之外,还需要做好现有软件功能卸载到存储模块上去的各项工作。毕竟,单个存储模块中的计算能力是远远比不上主CPU的计算能力。

计算存储模块技术对软硬件的要求

除了在SSD存储模块上增加计算能力之外,存算一体技术还有另一个重要的发展方向,那就是在业界经常听到的内存计算(Processing In Memory)。在内存计算方面,Samsung是目前走在业界最前沿的厂家,其开发的具有计算功能的HBM2内存已经开始在实际产品上进行验证测试了。

应用在HBM上的存内计算技术

Samsung的HBM2-PIM技术是通过在HBM2内存上增加可编程计算单元(PCU)来实现的。由于目前各类AI处理芯片基本都是通过增加片上HBM内存的方式来提升芯片内存容量,因此开发具有计算功能的HBM2内存具有非常实用的价值。

Samsung PIM模块微架构

可编程计算单元通过上下两个NAND Bank接口与内存颗粒相连,在其内部包含了FP16 ADD(加法)和FP16 MULT(乘法)计算单元。AI神经网络模型最主要的计算就是向量/矩阵的乘加运算,NAND颗粒里存储的数据在其对应的PCU里就可以进行初步计算,得到的计算结果再传给CPU或GPU计算核心进行进一步的处理。Samsung表示带有PCU模块的HBM2内存仍然遵循JEDEC规范对常规HBM内存性能和延时的要求,因此用户可以认为计算功能是为HBM2内存增加的新功能特性。

作为最初的尝试,Samsung将4片常规DRAM Die和4片具有计算功能的PIM-DRAM Die通过硅通孔(TSV:Through Silicon Via)组合起来,构成第一代的HBM2-PIM内存。该HBM内存的代号为Aquabolt-XL,可以提供1.23TB/s和4.92TB/s的带宽,并能集成到GPU和FPGA芯片里。

Samsung在HBM2内存上使用PIM模块的尝试

Xilinx的Alveo U280卡上就使用了带有两片HBM-PIM内存模块的FPGA芯片。Samsung和Xilinx进行合作,对使用和未使用HBM-PIM模块的FPGA芯片进行性能测试,对比两者在实际AI负载下的性能差异。

使用Samsung HBM2-PIM模块的Xilinx Alveo U280加速库

Xilinx Alveo U280 FPGA卡上的实测结果还是令人振奋的。在运行用于语音识别的RNN-T循环神经网络模型的情况下,带有PIM模块的U280卡系统性能提升了2.49倍,而功耗反倒降低了62%。这一实测数据直观地展示了在内存上进行数据近距离计算的优势。

HBM2-PIM模块对AI模型计算带来的性能和能耗提升

Samsung在完善HBM2-PIM内存模块的同时,还计划将该技术推广到LPDDR5内存上。从Samsung给出的初步测试数据来看,在LPDDR5内存上应用PIM技术同样可以对AI神经网络模型带来不同程度的计算加速。由于LPDDR5内存更多地应用在移动端设备上,因此在不久的将来,广大的普通用户也可以和数据中心用户一样,享受到存算一体技术所带来的好处。

Samsung HBM2-PIM模块在LPDDR5内存上的应用

总 结

不管是基于内存的计算还是基于硬盘的计算,存算一体技术初看起来似乎只是内存和硬盘厂家的事情。但实际上,这些存储模块只是在外观上看起来跟普通产品差异不大,其内部对数据处理方式的变化将从根本上改变服务器系统的运行方式。

存算一体技术对服务器架构带来的影响

计算的卸载使得网卡、内存和硬盘都具有了独立的数据处理能力,CPU将不再是服务器内部唯一的计算核心。具有计算功能的设备不仅减轻了CPU的工作压力,也降低了服务器内部用于数据传输的CXL和PCIe总线带宽的需求。在数据量以指数级增长、AI模型从小的专用型向大的通用型发展的今天,这样的卸载将使得CPU能够更专注于用户负载,为用户使用提供更好的应用体验。

下一篇
« Prev Post
上一篇
Next Post »