编者按
DPU芯片,跟之前的GPU、AI芯片最大的不同在于,DPU是集成多种领域加速于一体的集成加速平台。如果说GPU、AI加速芯片,是CPU+xPU单个异构计算的分离趋势,那么DPU的出现,则预示着,整个计算系统,在从单异构的分离逐渐走向多异构的融合。
当然,DPU仅仅只是开始,更加充分的融合,将在本文详细分析和介绍。
1 数据中心(相比终端)系统的特点
1.1 软件业务和硬件平台分离
数据中心软件有一个非常重要的要求,就是高可用性(High Availability,HA)。比如通过负载均衡器实现后端服务的高可用,负载均衡器本身也是通过集群机制实现自身的高可用。底层的VM通过热迁移实现高可用,容器则是通过在新的环境自动拉起新实例来实现容器的高可用。
如果我们关注底层软件和硬件,我们会发现,实际运行的软件(不考虑虚拟化部分,虚拟化实际上是介于软件和硬件之间,通过软硬件协同实现的虚拟化机制)和硬件实际上是完全脱离的:
- 软件实体可以在不同的硬件平台上运行,可以实时迁移,上层的软件以为软件实体一直是高可用的,感受不到底层硬件的变化(硬件有可能磁盘故障、死机或者是更新服务器等)。
- 完整的单个硬件平台通过虚拟化,可以灵活地切分成许多虚拟的硬件平台,可以支持不同的软件实体运行。
1.2 单服务器的虚拟化、多系统、多租户,全数据中心多集群系统交叉混合
我们之前讲过,系统分为四类,跟智能终端系统相比,云和边缘数据中心的系统最大特点是虚拟化和服务化,数据中心服务器和终端设备系统最大的区别在于:
- 首先,通过虚拟化实现多系统多租户共存于单个硬件平台。硬件平台需要支持虚拟化和高扩展性,提供多个个性化的虚拟硬件平台。然后需要支持多个不同甚至迥异的软件系统,运行在各自独立的虚拟硬件平台上。
- 另一个,终端系统当做单个系统的话,那么数据中心服务器则是多个系统混合运行。这样,我们可以把支持虚拟化多系统多租户运行的服务器运行的系统定义为宏系统。
单个服务器是多系统多租户运行的宏系统,那么整个数据中心或多个数据中心连成一体的数以十万、甚至百万级服务器组成的超大型集群;其上运行的系统,就完全变成了,不同租户的多种集群系统混合交叉在一起,并行不悖运行的超大型多宏系统。
1.3 物理硬件的一致性和虚拟“硬件”的多样性
很多做硬件的同学,不由自主的,会很喜欢搞硬件“创新”。比如:
- 通过PCIe Switch,连接不同数量不同规格的CPU、GPU以及存储盘、网卡等I/O设备,组成形态各异的多种类型的硬件服务器;
- 通过智能网卡、DPU等强大的能力,实现不同规格、不同性能的多计算节点的自由组合;
- 还有,通过TOR的功能增强,把许多DPU的工作放到TOR交换机,实现Smart TOR或者TOR-DPU的方式,来实现系统能力的增强;
- 其他各种硬件创新项目。
但我个人一直的观点是:硬件需要尽可能的简单,通过软件去实现各种复杂多样性。比如,数据中心不宜有不同层次不同规格的服务器和网络设备,而是极致简单清晰的就计算节点和网络核心设备两种物理设备类型:
- 计算节点,即服务器,核心功能是计算和各类数据的处理,其网络功能,尽可能只体现在输入输出时的高性能网络。
- 交换机,作为高效的网络核心设备,专注网络的相关处理,尽可能少地参与到用户的计算,保持对用户计算的透明。
在AWS的官网中介绍Nitro系统优势的时候,首先提到的就是“更快的创新”:
Nitro System 将各种各样的构建基块集合,且可按照不同方式进行组合,从而让我们能够通过不断扩展的计算、存储、内存和网络选项,灵活设计并快速交付 EC2 云服务器实例类型。 这项创新还促成了裸机实例,客户可以在这些实例中使用自己的管理程序或不需要使用任何管理程序。
这句话的意思,我再给大家进一步解释一下:AWS首先通过Nitro系统可以完全抵消虚拟化的各种软件开销,完全实现了虚拟化的硬件加速。然后可以非常方便的把一台服务器的CPU资源、加速器资源、内存资源、I/O资源以及其他各种资源完全的虚拟化,然后就可以随意的重新组合,然后可以快速而高效的给用户提供形态各异的虚拟机实例,实例类型如计算优化型、内存优化型、存储优化型、网络优化型、GPU/FPGA/DSA加速优化型等。
总结一下,站在云计算公司的视角,CSP希望的是尽可能简单的并且自己可以掌控一切的数据中心网络架构,希望的是尽可能简单的、一致的服务器硬件规格(这样,运维才最简单并且系统的稳定性才最高),然后通过(软件的)虚拟化机制,实现多种多样的(软件)虚拟硬件平台,来支撑VM和容器的运行。
2 数据中心处理器:从合到分,再从分到合
2.1 再来学习一下冯诺依曼架构
冯诺依曼架构是经典的计算架构,从此架构我们可以得到计算的三个主要的部件:计算单元、存储单元,以及输入输出单元。
2.2 第一阶段:CPU单一计算平台
如上图所示,绿色代表计算单元+存储单元,这里的计算单元是CPU。为了简化系统分析,我们把存储单元略去,默认是跟随计算单元。
2.3 第二阶段:从合到分,CPU+其他计算芯片的异构计算平台
基于CPU的摩尔定律失效,CPU的性能提升很慢,每年只有不到3%,要想性能翻倍,需要20年以上。然而,对性能的需求,依然在不断上升,因此,CPU+xPU的异构计算逐渐走向舞台的中央。
所有的xPU,包括GPU、AI-DSA等加速器无法单独存在,需要有Host CPU,形成CPU+xPU的异构计算的方式来实现完整的计算。
单个CPU+xPU异构计算本身存在的问题:
- 可加速部分占整个系统的比例有限,例如加速占比为80%,则加速最高不超过5倍;
- 数据在CPU和加速器之间来回搬运的影响,加速比率打了折扣,有些场景综合加速效果不明显;
- 异构加速显式的引入新的实体,计算变成两个或多个实体显式的协作完成,增加了整个系统的复杂度;
- 虽然GPU相比CPU性能提升不少,但是相比DSA/ASIC的性能,还是有显著的差距;而DSA/ASIC的问题则在于,无法适应复杂场景对业务灵活性的要求,导致大规模应用成为巨大的门槛;
- CPU+xPU架构,是以CPU为中心,整个IO路径很长,IO成为性能的瓶颈。
如果把基于CPU+xPU的多个异构计算整合起来,那会存在新的问题:
- 本质上,每一个CPU+xPU是一个个的孤岛,不同xPU之间的通信会非常的麻烦,都需要CPU的参与,非常低效率低性能;
- 在服务器的物理空间里,通常只能加载一种类型的加速卡。不存在这么多的空间,可以加载如此多类型和数量的加速卡。站在服务器功耗约束的角度,这么多加速卡也不允许。
- 以CPU为中心的架构,所有的xPU交互需要CPU的参与(P2P方式可以减轻一些CPU的压力,但至少跨越2条总线交互依然是低效的,本质问题没有解决)。CPU是整个系统的重中之重,随着CPU的性能提升缓慢,CPU成为整个系统的瓶颈,拖累了整个系统整体性能的显著提升。
2.4 第三阶段:从分到合的起点:DPU+其他计算芯片的异构计算平台
我们再来看看以DPU为中心的架构。
需要澄清一下:以CPU计算为中心的架构,本质上是以控制为中心;以DPU为中心的架构,也不天然就等同于以数据为中心;如果DPU的架构实现依然是传统SOC,那么DPU本质上仍然是以控制为中心。要想真正实现以数据为中心,整个系统架构需要做大范围调整。
我们来看看在以DPU为中心的多个异构计算的混合状态下,具体解决了哪些问题?
- 有一种说法,DPU是一个Switch,它不做具体的功能,只是连接了众多的PU。那这样的话,DPU实际上什么事情也没干,这样的DPU没有意义。
- 大家对DPU形成共识的看法,DPU需要支持虚拟化、网络、存储和安全的加速处理。这样的话,DPU本身完成了大量I/O数据的计算任务,减轻了CPU的负担并且显著的提升了整个系统的性能。
系统“分分合合”,DPU的出现,代表了计算在从分离逐渐走向合并,即把多个CPU+xPU的异构加速逐渐整合成单个处理芯片,实现异构计算的逐步整合。预示着服务器大芯片系统的发展,逐步从单CPU到CPU+xPU异构计算的逐渐分解的阶段,走向了把多个CPU+xPU持续整合到一起的逐渐合并的新阶段。
DPU没有解决哪些问题?
- 计算任务,不仅仅包括I/O类任务处理,还可以是其他系统层,甚至可以是应用层的计算任务。如果把DPU当做综合性的计算加速平台,DPU可以继续集成更多的加速功能。
- DPU代替CPU,成为中心节点,“屠龙少年变成了恶龙”,CPU、GPU、其他xPU之间的通信依然很麻烦,依然是一个个孤岛。
- 如果不更新整个系统的底层架构,以DPU为中心的架构,本质上仍然是以控制为中心的计算,而不是以数据为中心的计算,依然无法达到整个数据吞吐量和计算量的数量级提升。
- 依然存在物理空间约束的问题,服务器空间有限,特别是2U或1U的服务器,也需要足够强劲的算力。而且随着绿色数据中心的流行,对单台服务器的功耗约束势必越来越大。这个时候,各自独立的CPU、GPU以及各类独立加速器的问题就是亟待解决的。
- 从以CPU为中心架构,改成以DPU为中心的架构。会使得DPU成为重中之重,成为系统的关键“瓶颈”,成为系统的不可承受之重。
2.5 第四阶段:从分到合:更高效的融合计算平台
在新的阶段里,没有所谓的核心节点,把CPU、GPU、DPU(DPU可以看做Multi-XPU的集合),集成到单芯片。这个众多功能融合的芯片,就是我们一直提到的超异构计算芯片(HPU,Hyper-heterogeneous Processing Unit)。
超异构计算芯片HPU可以认为是CPU+GPU+DPU的融合型芯片,但不能简单的看做三者的集成。HPU需要解耦CPU、GPU和DPU的功能,重构整个系统,并且形成以数据为中心、数据流驱动计算的新型架构。
需要强调的是,超异构融合芯片不能跟超融合的概念混为一谈,超异构芯片不等于云计算里经常讲的超融合:
- 超融合是为了把云计算IaaS服务的大集群再整合到小规模集群,这样方便在私有云和企业云部署。
- 而超异构融合芯片则强调系统栈的整体优化,是把服务器上运行的系统整体优化到多种引擎混合的高效高性能的单芯片里。超异构融合芯片既可以支持超融合,也可以支持不融合(即极致解构并超多用户超多系统共存)。
我们可以简单的把系统分为两个平面:
- 控制和管理平面:仍然是运行在CPU的软件;
- 计算和数据平面:此刻,CPU、GPU、其他各类xPU,甚至包括I/O都可以看做是平等的各类计算引擎,他们完成各自擅长的工作,并且充分交互,形成一个更加高效更加高性能的的一个整体的系统。
3 大芯片融合的背景条件
3.1 条件1:90%以上的服务器系统相对轻量,单芯片可以容纳
重量级场景,需要独立的CPU、GPU和DPU三芯片,而轻量级场景则可以有独立的单芯片融合方案,实现比传统CPU芯片同等面积下,性能数量级提升的可能,可以覆盖轻量级系统所需的算力和复杂度。
而轻量级场景所占的所有服务器的规模也能够达到90%左右:
- 边缘服务器。数据中心包括云数据中心和边缘数据中心,据有关数据分析,未来,边缘计算会占到整个数据中心规模的80%。
- 企业级服务器。企业云场景,需要支持虚拟化,但一般来说不需要支持多租户。服务器对算力的需求没有云那么高。也属于轻量级场景。
- 云数据中心服务器大体分为两类,一类是重量级的业务服务器,一类是轻量级的存储、其他各类资源池化服务器。这些资源池化服务的轻量级场景,都可以由超异构单芯片覆盖。
- 此外,独立的超异构融合芯片,也可以作为DPU的角色,和CPU、GPU配合来使用。
3.2 条件2:Chiplet技术成熟,使得单芯片可以覆盖重量级场景
Chiplet技术提供了使系统规模立竿见影快速提升的可能,这样,我们可以提供一个更大规模的超异构融合芯片,来覆盖各类重量级计算场景,用在典型的云计算业务计算服务器和异构计算服务器场景。
从而,使得超异构计算单芯片(单DIE芯片和多DIE组成的Chiplet芯片),可覆盖云网边端融合的所有复杂计算场景(复杂计算的显著标志为:虚拟化和服务化)。
4 融合,大芯片的发展趋势
4.1 案例:NVIDIA Bluefield DPU集成GPU
NVIDIA DPU roadmap
NVIDIA DPU的Roadmap,NVIDIA计划从Bluefield第四代开始,把DPU和GPU两者集成一个单芯片。
NVIDIA DPU和GPU集成了,也已经有了独立的Grace CPU。那么,在Chiplet技术已经成熟的情况下,再把CPU集成进来,构成CPU+GPU+DPU的超异构芯片,还会远吗?(不远,因为在自动驾驶端已经有了。)
4.2 案例2:NVIDIA自动驾驶Atlan超异构融合芯片
图 NVIDIA计划2024年推出的自动驾驶芯片Atlan
NVIDIA在自动驾驶领域的芯片发展,也基本上是2年一代产品。2024年要发布的Atlan芯片,则完全变成了集成ARM Neoverse系列的Grace CPU(NVIDIA数据中心CPU)、有可能是Hopper架构的GPU(NVIDIA数据中心GPU)以及Bluefield DPU(NVIDIA数据中心DPU),可以单芯片达到1000 TOPS。
这样,我们可以看到,在自动驾驶领域,已经实现了多种处理引擎混合的完全的超异构融合芯片,Atlan使用的是数据中心相同的处理引擎架构,可以无缝实现云边端协同甚至融合。
从量变到质变,Atlan随着集成单元的增多,随着性能需求的上升,随着系统复杂度的上升而对芯片的通用灵活可编程能力要求上升,都需要全新的架构,全新的整合重构。
(正文完)
来源:软硬件融合
微信公众号:
相关文章推荐
更多软硬件技术干货请关注软硬件融合专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。