
DPU是新近发展起来的一种专用处理器,其要解决的核心问题是基础设施的“降本增效”,将“CPU处理效率低下、GPU处理不了”的负载卸载到专用的DPU,提升整个计算系统的效率、降低整体系统的总体拥有成本。DPU的出现也许是体系结构朝着专用化的路线发展的又一个里程碑。本文试图分析这背后的原因,并且给出笔者对DPU的发展的一些思考。

数据处理器(Data Processing Unit,DPU)是以数据为中心构造的专用处理器,采用软件定义技术路线支撑基础设施层资源虚拟化,存储、安全、服务质量管理等基础设施层服务。2020年英伟达公司发布的DPU的产品战略中将其定位为数据中心继CPU和GPU之后的“第三颗主力芯片”,掀起了一波行业热潮。我们认为,DPU的出现是异构计算的一个阶段性标志,与GPU的发展类似,DPU是应用驱动的体系结构设计的又一典型案例,但与GPU不同的是,DPU面向的应用更加底层。DPU要解决的核心问题是基础设施的“降本增效”,将“CPU处理效率低下、GPU处理不了”的负载卸载到专用的DPU,提升整个计算系统的效率、降低整体系统的总体拥有成本(TOC)。
CPU、GPU、DPU——数据智能时代的“三驾马车”
中央处理器(Central Processing Unit,CPU)是整个IT生态的定义者,无论是服务器端的x86还是移动端的ARM,都各自构建了稳固的生态系统,不仅形成了技术生态圈,还形成了闭合的价值链,成为这些生态垄断者建立起来的最难以跨越的“护城河”。
图形处理器(Graphics Processing Unit,GPU)是执行规则计算的主力芯片,如图形渲染。英伟达(Nvidia)GPU经过朝向通用GPU(GPGPU)的努力和CUDA编程框架的推广,在数据并行的任务(如图形图像、深度学习、矩阵运算)等方面成为了主力算力引擎,并且成为了高性能计算最重要的辅助计算单元。2021年6月公布的全球高性能计算机 (超级计算机) TOP500榜单排名的前10名中,有六台(第2、3、5、6、8、9名)都部署有英伟达的GPU。
数据中心与超级计算机不同,后者主要面向科学计算,如大飞机研制、石油勘探、新药物研发、气象预报、电磁环境计算等应用,性能是其主要的排名指标,对接入带宽的要求不高[1];但数据中心面向云计算的商业化应用,对接入带宽、可靠性、灾备、弹性扩展等有更高的要求,与之相适应发展起来的虚拟机、容器云、并行编程框、内容分发网等技术,都是为了更好地支撑上层商业应用,如电商、支付、视频流、网盘、办公自动化(OA)等。但是这些基础设施即服务(IaaS)和平台即服务(PaaS)层的服务开销极大,美国亚马逊公司曾公布亚马逊云服务(AWS)的系统开销在30%以上——100台服务器,只有70台可以对外提供服务,亚马逊称其为“数据中心税”(datacenter tax)。如果需要达到更好的服务质量,在网络、存储、安全等基础设施服务上的开销还会更高。
这些基础层应用类型与CPU架构匹配程度不高导致了计算效率低下。现有的CPU架构分为两大类:多核架构(数个或十几个核)和众核架构(数百个核以上),每种架构支持唯一的一种规范通用指令集,如x86、ARM等。以指令集为界,软件和硬件被划分开来分别独立发展,迅速催生了软件产业和微处理器产业的协同发展。随着软件复杂度的上升,软件的生产率(productivity)得到了更多的重视,软件工程学科也更加关注如何高效地构建大型软件系统,而非如何用更少的硬件资源获得尽可能高的执行性能。业界有个幽默的“安迪-比尔定律”,其内容是“What Andy gives, Bill takes away”,安迪(Andy)指英特尔前CEO安迪·格鲁夫(Andy Grove),比尔(Bill)指微软前任CEO比尔·盖茨(Bill Gates),意为硬件提高的性能很快就被软件消耗掉了。
使用通用CPU处理当下大量的基础层应用比较低效,例如网络协议处理、交换路由计算、加密解密、数据压缩等计算密集的任务,以及支持分布式处理的数据一致性协议,如RAFT[2]等。这些负载为上层业务类应用提供数据传输、共享、安全等底层支撑服务。这些数据通过从网络IO或者板级高速PCIe总线接入系统,再通过共享主存采用直接存储器存取(Direct Memory Access,DMA)机制提供给CPU或GPU来处理。CPU既要处理大量的上层应用,又要维持底层软件的基础设施,还要处理各种特殊的IO类协议,不堪重负。
这些基础层负载为“异构计算”提供了一个广阔的发展空间。将这些基础层负载从CPU上卸载下来,短期内可以“提质增效”,长远来看还能为新的业务增长提供技术保障。DPU将有望成为承接这些负载的代表性芯片,与CPU和GPU的优势互补,建立起一个更加高效的算力平台。我们预测,用于数据中心的DPU的量将达到和数据中心服务器等量的级别,每年以千万级新增,算上存量的替代,估算五年总体的需求量将突破两亿枚,超过独立GPU卡的需求量。一台服务器可能没有GPU,但绝对需要有DPU,好比每台服务器都必须配备网卡一样。
“横空出世”的DPU孕育已久
DPU的出现是异构计算的又一个阶段性标志。摩尔定律放缓使得通用CPU的性能增长边际成本迅速上升。有数据表明,现在CPU的性能年化增长率(面积归一化之后)仅有3%左右[3],但计算需求却是爆发性增长,这几乎是所有专用计算芯片得以发展的重要背景因素。以AI芯片为例,最新的GPT-3等千亿级参数的超大型模型的出现,将算力需求推向了一个新的高度。DPU也不例外。随着2019年我国以信息网络等新型基础设施为代表的“新基建”战略帷幕的拉开,5G、千兆光纤网络建设发展迅速,移动互联网、工业互联网、车联网等领域发展日新月异。云计算、数据中心、智算中心等基础设施快速扩容,网络带宽从主流的10G朝着25G、40G、100G、200G甚至400G发展。网络带宽和连接数的剧增好比数据的通路更宽、更密,直接将处于端、边、云各处的计算节点暴露在了剧增的数据量下,而CPU的性能增长率与数据量增长率出现了显著的“剪刀差”现象。所以,寻求效率更高的计算芯片成为了业界的共识。DPU芯片就是在这样的背景趋势下出现的。
DPU作为计算卸载的引擎,其直接效果是给CPU“减负”。DPU的部分功能可以在早期的TCP卸载引擎(TCP/IP Offloading Engine,TOE)中看到[4]。正如其名,TOE就是将CPU处理TCP协议的任务“卸载”到网卡上。传统的TCP软件处理方式虽然层次清晰,但也逐渐成为网络带宽和延迟的瓶颈。软件处理方式对CPU的占用,也影响了CPU处理其他应用的性能。TOE技术通过将TCP协议和IP协议交由网络接口控制器处理,在利用硬件加速降低网络时延和提升带宽的同时,显著降低了CPU处理协议的压力。TOE技术具体有三个方面的优化:隔离网络中断,降低内存数据拷贝量,协议解析硬件化。这三个技术点逐渐发展成为现在数据平面计算的三个技术,也是DPU普遍需要支持的技术点。例如,NVMe协议将中断策略替换为轮询策略,更充分地开发高速存储介质的带宽优势;数据平面开发工具包(DPDK)采用用户态调用,开发“kernel-bypassing”机制,实现零拷贝(zero-copy);DPU中面向特定应用的专用核,例如各种复杂的校验和计算、数据包格式解析、查找表、IP安全(IPSec)的支持等,都可以视为协议处理的硬件化支持。所以,TOE基本可以被视为DPU的雏形。
延续TOE的思想,将更多的计算任务卸载至网卡侧来处理,促进了智能网卡(SmartNIC)技术的发展。常见的智能网卡的基本结构是以高速网卡为基础,外加一枚高性能的现场可编程门阵列(Field-Programmable Gate Array,FPGA)芯片作为计算的扩展,来实现用户自定义的计算逻辑,达到计算加速的目的。然而,这种“网卡+FPGA”的模式并没有将智能网卡变成一个绝对主流的计算设备,很多智能网卡产品被当作单纯的FPGA加速卡来使用,在利用FPGA优势的同时,也继承了所有FPGA的局限性。我们认为DPU是对现有智能网卡的整合,能看到很多以往智能网卡的影子,但明显高于之前任何一个智能网卡的定位。
亚马逊的AWS在2013年研发了Nitro产品,将数据中心开销(为虚拟机提供远程资源、加密解密、故障跟踪、安全策略等服务程序)全部放到专用加速器上执行。Nitro架构采用轻量化Hypervisor配合定制化的硬件,将虚拟机的计算(主要是CPU和内存)和IO(主要是网络和存储)子系统分离开来,通过PCIe总线连接,可以节省30%的CPU算力资源。阿里云提出的X-Dragon系统架构,核心是MOC卡,有比较丰富的对外接口,也包括了计算资源、存储资源和网络资源。MOC卡的核心X-Dragon SOC统一支持网络、IO、存储和外设的虚拟化,为虚拟机、裸金属(bare-metal)、容器云提供统一的资源池。
可见,DPU其实在行业内已经孕育已久,从早期的网络协议处理卸载,到后续的网络、存储、虚拟化卸载,其带来的作用非常显著,只不过在此之前DPU“有实无名”,是时候迈上一个新的台阶了。
DPU的特征结构:以数据为中心的专用处理器
从应用特征来看,应用可以被分为“IO密集型”和“计算密集型”两类,如图2纵轴所示。“IO密集型”应用通常体现为较高的输入和输出带宽,数据直接来自于IO,数据通常具备流式特征,数据局部性不显著,如果处理性能与带宽匹配,片上缓存的作用就可以弱化。这类应用包括处理路由转发、数据加密、压缩等。“计算密集型”应用体现为较高的计算密度,通常浮点性能突出,数据来自主存,数据局部性显著,复用性高,主存的大小对问题求解的性能有直接影响。这类应用包括线性代数方程组求解、大规模神经网络训练和推理等。
一个处理器芯片是“IO密集型”还是“计算密集型”只部分决定了芯片的结构特征,并不能完全定义芯片的主体架构。无论是哪种类型,主体计算架构既能以通用CPU为核心来构造,也能以专用加速器为核心来构造。前者可称为以控制为中心(control-centric)的模式,其核心是实现“通用”;后者称为以数据为中心(data-centric)的模式,其核心是通过定制化实现“高性能”。我们不妨以应用特征和架构特征这两个维度来粗略划分一下处理器芯片类型分布,如图2所示。
通用CPU是偏向于以控制为中心的结构,理论上看需要“图灵完备”,实际中就是要支持完备的指令集,通过编程指令序列来定义计算任务,通过执行指令序列来完成计算任务,因此具备极其灵活的编程支持,可以任意定义计算的逻辑实现“通用”,这也是CPU最大的优势。同时,为了提高编程的开发效率,降低编译器复杂度,缓存管理和细粒度并行的开发通常都是由硬件来完成。类似地,还有大量用于各种嵌入式、移动设备的微控制单元(MCU),并不强调高带宽,也是以控制为中心的结构。
GPU是以数据为中心的结构,形式上更倾向于专用加速器。GPU的结构称为数据并行(data-parallel)结构,提升性能的重点不是优化指令并行度,而是通过大规模同构核执行细粒度并行来消化大的数据带宽。例如,最新的NVIDIA TITAN RTX GPU有4608个CUDA核、576个Tensor核,而且单片GPU通常配置数十GB的超大显存。同时,缓存管理较多采用软件显式管理,降低硬件的复杂度。这类超众核结构是以数据为中心、执行计算密集型任务的代表性架构。
DPU也偏向于以数据为中心的结构,形式上集成了更多类别的专用加速器,通过让渡一定的指令灵活性以获得更极致的性能。但是与GPU不同,DPU要应对更多的网络IO,既包括外部以太网,也包括内部虚拟IO,所以DPU所面临的数据并行更多可能是数据包并行,而不是图像中的像素、像块级并行。而且DPU也会配置少数通用核(如ARM、MIPS)来处理一定的控制面的任务,运行轻量级操作系统来管理DPU上的众多的异构核资源,所以体现了一定“通用”性,但性能优势主要不源于这些通用核,而是大量专用计算核。早期的一些网络处理器采用过类似Tile64的通用众核结构,通过增加核的数量来应对多路处理的数据,实现并发处理,但单路延迟性能通常比较差。因此,DPU更偏向于以数据为中心,执行IO密集型任务。
DPU是软件定义的技术路线下的重要产物。在软件定义网络中,将数据面与控制面分离是最核心的思想。DPU被定义为强化了数据面性能的专用处理器,配合控制面的CPU,可以实现性能与通用性的更佳的平衡。
DPU通过“软件定义,硬件加速”升级数据中心基础设施
DPU的核心技术特征是“软件定义,硬件加速”。我们提出的软件定义加速器[5],结合业界已有的软件定义网络、软件定义存储,将成为DPU的基本技术路线。各种异构加速核的深度使用将是体现“硬件加速”的基本手段。我们预测,随着芯粒(Chiplet)、3D集成技术的成熟,DPU的异构架构的特征将得到进一步的体现。单枚DPU芯片产品中集成数十类异构核、数TB片上存储将在不久的将来成为现实。DPU也不仅仅在云端大规模部署,以支持虚拟机、裸金属、容器云,也在边缘端大量采用,以支撑数据面功能,如移动边缘计算(MEC)、虚拟网关、内容分发网络(CDN)等。
基础层(infrastructure layer)技术的变化是数据中心的核心,通过虚拟化技术实现高效的计算、网络、存储资源的池化和丰富的高速本地互连及远程网络连接是基础层的核心,既包括虚拟化IO(VirtIO)、虚拟交换(OvS),也包括高速网络、高速存储、数据同步、远程DMA等。宏观来看,DPU的功能就是使基础设施层应用与所需求的资源实现“所需即所得”,屏蔽网络、存储、计算、数据的物理位置的差异性,成为“超级连接枢纽”——一端连接CPU、GPU、SSD、FPGA加速卡等本地资源,一端连接交换机、路由器等网络资源,如图3所示;整合CPU、存储、GPU、FPGA等计算资源打造更高效的IaaS。也许正因为这个原因,英特尔在不久前的发布会中将其DPU称为“IPU”,即基础设施处理单元(Infrastructure Processing Unit),笔者认为这是比较准确的定义。传统CPU的访存通路是为处理内存(主存)中的数据而设计的,内存管理单元(Memory Management Unit,MMU)、 输入输出内存管理单元(Input-Output Memory Management Unit,IOMMU)都是为了让CPU能更高效、更安全地利用内存资源,网络数据也是通过DMA到内存中才能被CPU使用。随着系统结构朝着虚拟化、超并行、分布式、高并发方向发展,上层应用直接使用的不再是本地的计算、网络和存储资源,而是充分池化以后的虚拟计算、虚拟网络、虚拟存储资源;使用的数据也不局限在CPU本地的内存中,而是远程互连的所有内存。虚拟IO(VirtIO-net、VirtIO-blk、VirtIO-scsi等)、虚拟交换、远程直接内存访问(RDMA)等技术就是典型。这些技术都需要高速互连总线、高速网络等IO通路的支持。CPU处理高速IO中断的开销非常大,DPU可以替代CPU应对各类随机的IO中断,而且可以更高效地做各种地址转换,便于在虚拟化的环境中支持中断的实现,降低内存拷贝等开销。同时,从最早的TOE雏形到目前逐渐完善的网络虚拟化、存储虚拟化、计算虚拟化技术等,都有大量驱动类的底层协议需要处理,这些协议如果运行在主设备端的CPU上,就会产生巨大的算力开销;运行在DPU端,不仅可以节省CPU算力,更是可以做到系统整体的优化升级,正所谓“分工协作”才是运行效率的保证。
面向基础设施层的IaaS把服务器、存储、网络等资源都当作对平台提供支持的基本计算产品,比如现在常见的“裸金属”服务器,集物理机性能与虚拟机网络资源灵活部署的优势,通过特殊的虚拟化支持,将物理计算资源直接提供给用户,但并不降低资源的利用率、弹性扩展和管理的便捷程度。DPU将通过软件定义加速器、软件定义网络、软件定义安全、软件定义存储的技术路线全面提升数据中心的基础设施。未来DPU将会高效地支持虚拟交换、RDMA、TCP/IP、IPSec/SSL、VirtIO等各种基础层服务,对IT基础架构会带来长远的影响。
DPU的挑战与机遇
IaaS在国内云服务市场占比约60%,支撑了目前最重要的PaaS容器云技术。未来几年,我国仍将维持以IaaS为主的云计算结构,预计市场占比将逐渐上升到70%。目前要解决DPU标准化应用,还存在一定的挑战。由于数据中心本身的复杂性,各大厂商一方面采用商用成熟产品(Commercial Off-The-Shelf,COTS)组件来构建系统,追求低成本;一方面又设法分层服务化(IaaS、PaaS、SaaS),打造面向不用类型客户的标准化产品,但除此之外的技术实现几乎都是“八仙过海,各显神通”,如AWS有Nitro,阿里云有MOC。有的厂商强化IO能力,有的关注路由转发,有的重视存储卸载,有的关注安全加密,不一而足。这从目前各大厂商已公布的功能各异的DPU产品定义可以看出来:英特尔、博通(Broadcom)主要面向交换机和路由器芯片;美满(Marvall)的DPU主要面向5G的基带;Pensando主要面向支持P4的软件定义网络;Fungible主要面向网络、存储、虚拟化;最新的英伟达主要面向数据安全、网络、存储卸载。
要把这些各异的需求整合起来,并且适应不同厂商的数据中心架构,将是一个长期而艰巨的任务。各个DPU厂商不能寄希望于当前“需求各异、体系封闭”的局面自发地在短期内变得“整齐划一,全面开放”,只能是在竞争合作的博弈过程中,逐渐满足越来越多的行业需求。这需要行业“know-how”的长期整合和持续的产品迭代。
工业和信息化部于2021年7月发布的《新型数据中心发展三年行动计划(2021—2023年)》中明确提出要加快提升算力算效水平,“推动CPU、GPU等异构算力提升,逐步提高自主研发算力的部署比例”“加强专用服务器等核心技术研发”“树立基于5G和工业互联网等重点应用场景的边缘数据中心应用标杆”,等等。这个行动计划也反映了DPU等新型算力芯片的历史发展机遇。虽然国内厂商在芯片产品化的环节与国外一线厂商相比还有差距,但是在DPU架构的理解方面还是具有独到见解。而且我国目前在数据中心领域,无论是市场规模还是增速,特别是用户数量,与国外相比都有巨大的优势。国内研究机构和厂商有望充分利用这一需求侧的“势能”驱动供给侧加快研发的步伐,抓住发展DPU专用处理器的新机遇。
致谢:感谢中国科学院计算技术研究所孙凝晖院士、陈云霁研究员对本文的指导与建议。
参考文献
[1] 钱德沛. 构建支撑科技创新的新一代计算基础设施[J].数据与计算发展前沿, 2020, 2(1):1-17.
鄢贵海
CCF专业会员。中国科学院计算技术研究所研究员。中科驭数(北京)科技有限公司创始人、董事长。主要研究方向为计算机系统结构、领域专用处理器设计。yan@ict.ac.cn
卢文岩
CCF专业会员。中国科学院计算技术研究所助理研究员。主要研究方向为计算机系统结构、数字集成电路设计。
luwenyan@ict.ac.cn
李晓维
CCF会士、监事长。中国科学院计算技术研究所研究员。中国科学院计算机系统结构重点实验室常务副主任。主要研究方向为数字集成电路测试、可测试性设计、高可靠性设计。lxw@ict.ac.cn
其他作者:张宇、袁晓飞
特别声明:中国计算机学会(CCF)拥有《中国计算机学会通讯》(CCCF)所刊登内容的所有版权,未经CCF允许,不得转载本刊文字及照片,否则被视为侵权。对于侵权行为,CCF将追究其法律责任





点击“阅读原文”,查看更多CCCF文章。










