当前位置: 首页 > 科技观察

从DPU的兴起谈计算系统的变革

时间:2023-03-16 12:21:49 科技观察

DPU概念近来异常火爆。从Mellanox、Fungible、NVIDIA到Intel,各路王子纷纷加入战场。各种SmartNIC、DPU、IPU概念层出不穷,各种SDK、FunOS、DOCA、IPDK琳琅满目,比当年的AI还火。本文就数据中心为什么需要变革、数据中心面临的问题和技术发展趋势、DPU的技术细节、芯片为什么会导致新的计算架构进行系统分析和系统分析。推荐给大家。为什么数据中心现在要发生变化?数据中心的核心支柱服务器是一个很有趣也很残酷的行业。很容易垄断,很快就会被淘汰。一不留神,它就会退出历史舞台。就像20年前x86通过占领个人PC市场逆袭数据中心/大型机市场的“农村包围城市”战略一样,今天的arm/RISC-V架构开始通过占领手机、互联网进入数据中心物联网和其他终端设备。中央市场。但与20年前不同的是,英特尔面临的竞争不是来自同行,而是来自客户的“自下而上”的竞争。比如2020年苹果宣布2年内用自研AppleSilicon替代英特尔CPU;AWS云服务新增服务器中自研arm架构的比例也超过了10%。这种“不对称”的竞争会加速x86架构的衰落,因此ARK预测这种架构变革可能只需要10年时间。按照两三年一代的迭代速度,留给英特尔的机会可能就只有三代产品了。这个服务器架构的变化还有一个很有意思的地方,通常被大家忽略了。未来10年,服务器的增量大部分将发生在边缘计算领域。预计2029年边缘服务器将达到70-900亿美元,将占据服务器市场规模的50%左右。所以我们认为“第三”大芯片的机会在边缘计算领域应该会更快出现。以数据为中心的计算时代硅谷初创公司Fungible率先提出“以数据为中心”的数据中心计算时代的概念。在以数据为中心的架构中,计算更靠近网络,即流量产生或到达的地方,通过添加SoC来卸载主机CPU处理流量的开销。根据Fungible和AWS的统计,在一个大型数据中心,流量处理约占计算量的30%,即数据中心有30%的计算用于流量处理。这笔费用形象地称为数据中心税(DatacenterTax)。借用某资本的总结,以数据为中心的计算架构的优势在于减少了CPU到加速卡的路径,数据传输效率更高,性能更好。最先提出这一概念的Fungible也给自己的芯片起了一个独特的名字“DPU”,同时认为DPU将成为继CPU、GPU之后计算机的“第三大”芯片。Fungible将其使命视为解决以数据为中心的时代的网络流量问题。DPU的出现是为了解决数据中心三个方面的五个主要问题:根据技术出现的先后顺序和特点,我们将DPU的发展分为三个阶段:第一阶段:SmartNIC(智能设备),对于DPU来说,这可以称为史前时代。解决节点间流量问题最简单的方法是增加网卡的处理能力,通过在网卡上引入SoC或FPGA来加速一些特定的流量应用,从而增强网络可靠性,降低网络延迟,改善网络表现。其中,Xilinx和Mellanox在该领域起步较早。遗憾的是,由于战略能力不足,错过了进一步发展的机会,逐渐被DPU取代,最终被淘汰。其中,Mellanox被Nvidia收购,Xilinx被AMD收购。智能网卡作为DPU的一个应用产品而存在。(我们拭目以待Marvell会如何选择)第二阶段:DPU(数据处理芯片)这个阶段是数据芯片真正开始受到重视的阶段。它于2019年由Fungible首次提出,但并未引起太大反响。在对收购的Mellanox进行重新包装后,英伟达在2020年10月重新定义了DPU的概念,DPU的概念一炮走红。有趣的是,Nvidia对DPU的定义与Fungible完全不同。Nvidia的博客上有一个非常有趣的评论。虽然Fungible宣称DPU是为了解决很多网络问题。但回归本质,强大的x86没有解决的一个问题,为什么嵌入式SoC可以做得更好?这是一个非常严肃的问题,需要积极回答。显然Fungible避免了这个本质问题,而是使用了120瓦的SoC来处理流量问题。然而,Nvidia从另一个纬度回答了这个问题,即DPU应该只处理网络数据路径初始化和异常处理,而不是其他任何东西。Nvidia的做法非常简单易懂。毕竟卖GPU比卖DPU更赚钱,英伟达不会放过任何增加GPU销量的机会。但是仔细看这句话,其实暗含了Nvidia的一条技术路线,异常处理!第三阶段:IPU(基础设施芯片)是“第三”芯片如此重要的战场,英特尔的加入自然少不了。英特尔的解决方案非常简单粗暴。DPU的存在不就是为了解决流量分流的问题吗?我只用FPGA!DPU不就是用来管理云平台的吗?好吧,我会再发送一个CPU。所以Intel的方案变成了FPGA+Xeon-D的模式,通过PCB版放在智能网卡上(估计功耗会超过200瓦)。同时,英特尔给这个解决方案起了一个很有意思的名字“基础架构处理器”。很明显,Intel将IPU定位为主机CPU上的一个小型“外挂”CPU,未来“外挂”CPU和FPGA将被封装到一个芯片中,形成一个奇特的两CPU系统,由PCIe总线。这种在一条总线上有多个CPU的架构已经被英特尔用在GPUPhi中。从系统的角度来看,这个架构非常简单,我们认为这应该是DPU应该发展的方向。但与此同时,IPU提出了一个架构问题,“在这个架构中,是以IPU为中心,还是以主机CPU为中心?”。目前,Intel只是给出了非常含糊的介绍,避免了这个问题。我们相信,真正解决这个问题的芯片,未来可以成为真正的“第三大”芯片,甚至是主芯片。显然,英特尔和英伟达都看到了这个机会。DPU/IPU的真正价值在于谁来处理异常?是主机CPU还是DPU?如果是DPU呢?那么GPU等其他设备的异常由谁来处理呢?经过几年的发展,数据芯片(DPU/IPU)的地位不断提升,正在成为“第三大”芯片。对比Fungible、Nvidia和Intel目前的技术路线,我们总结如下:DPU/IPU的重要性已经达成共识。但围绕DPU的定位存在一些争论,不同公司根据自身的技术特点选择不同的技术路线。数据中心存在的问题与技术发展的趋势需求01数据中心存在哪些问题?数据中心作为当前信息化的基石,在过去的50年里得到了飞速发展。随着计算能力的提升,数据中心的能耗也在不断增加。一般来说,从广义上讲,数据中心面临三个核心问题:性能问题(scale-up):如何提高计算性能,简单的说每台服务器都越来越快,这有点难。目前最强大的CPU应该是ARM架构的Fugaku;横向扩展:第二个问题是系统效率。如果一台服务器的容量不够用(一台服务器对于大多数数据中心来说是不够的),那么我们就需要多台服务器组成一个集群来进行集群计算。如何访问更多的服务器?高效协调各个服务器的运行状态和效率,也是一个非常复杂的问题,需要解决。通常这个问题是系统架构和网络问题;能耗问题(power):第三个第一个问题是能耗。如何降低能耗,提高计算效率,从传统的追求性能的技术路线转向追求效率的技术路线?中国在这方面战略上遥遥领先于其他国家,尤其是“碳达峰、碳中和3060”基本政策的提出。如果中国能尽快在计算上实现“碳中和”,使CPU仅需少量能耗即可运行,将对能源安全和信息结构产生巨大影响。性能和能耗的问题是一个非常复杂和有趣的问题,但它不是我们DPU的重点。后续我们会介绍如何使用DPU和低功耗CPU来实现高性能高吞吐量计算的架构。今天我们继续DPU的技术路线。按照DPU最初的定义,DPU核心是解决数据中心的第二个问题:“如何解决多节点服务器互联效率问题”。根据Fungible的结论,目前的数据中心互联架构无法适应巨型数据中心和边缘数据中心,因此Fungible提出使用DPU和TrueFabric技术来解决这个问题。诚然,有些数据中心非常庞大,几万甚至几十万台服务器相互连接形成一个集群;有些非常小,只有十几台服务器互连。那么Fungible的技术路线能否解决这个问题呢?有没有更友好的技术路线?02数据互联面临的问题?数据中心互连通常采用光通信。随着100T当量以下容量的增加,光模块的功耗占互联整体成本的50%以上,光模块的成本也已经超过通道的成本(也就是说,光模块的成本之和)光模块比开关盒更贵),但随着吞吐量的激增,互连延迟并没有明显降低。03云计算产业的下游需求有哪些?对于数据中心用户来说,下游云计算行业需要越来越精细化的设备管理和资源分配。在云计算3.0架构下,云管理平台(IaaS)希望继续管理设备(CPU、GPU、FPGA、AI、NIC等资源分配)。当然这种管理最好是基于TCP/IP协议的RestfulAPI接口。如果更进一步,我们希望每个微服务(CPU运行的应用程序)之间的TCP/IP通信也能在新的网络架构中得到加速。云计算2.0以服务器为单位,实现计算资源的软件定义。IaaS软件通过对服务器CPU的控制,实现CPU、内存、存储和网络的资源分配。在云计算3.0时代,设备单元将由云平台(IaaS)以“个体”、“独立”的方式进行管理和控制,整个设备单元将以机架式分解硬件的形式存在。同时,一切以API调用为主!04DPU需要解决的问题在Fungible的基础上,我们总结了数据中心互联DPU芯片需要解决的几大问题如下:DPU的技术细节下面我们从系统的角度来分析一下现在的DPU做了什么你解决了什么问题。01传统云计算的网络模型服务器互联和网络架构非常复杂,涉及的环节很多。为了简化问题,我只展示DPU会涉及到的环节,如下图所示:计算模块:主要由hostCPUBear组成(部分由网卡上的DMAchiplet承担)。一个微服务(APP应用)与另一个微服务(APP应用)通信时,按照节点内(同一主机CPU上)和节点间(不同主机CPU),数据流涉及的链路如下:01.1节点间数据流转:这是传统服务器与服务器互联的应用场景。在这种场景下,数据主要经过用户空间、内核空间、hypervisor、总线、网卡、PHY、交换机等一系列路径。在这些路径中:HostCPUlink:现代CPU计算速度非常快,延迟一般由计算量决定。协议复杂,延迟高,主频高,延迟低。由于大多数协议都在主机CPU上处理,提高主频可以减少传统意义上的延迟;HyperVisor路径:HyperVisor一般与系统OS深度耦合,是IaaS计算平台的核心。计算量不大,主要工作是资源调度和上下文切换。在一般的云计算应用场景中,存在一定的资源(CPU、内存等)超售(即一个CPU卖给2-4个用户,用户分时使用CPU)。由于内存和CPU的速度存在数量级的差异,频繁的计算切换会严重影响CPU的效率,使CPU等待数据的读写。同时,由于网络需要考虑状态(TCP时序等),一旦发生切换,很有可能需要重新计算部分数据,造成无形的计算资源浪费,增加延迟。系统总线模块:该模块从一开始就是一个纯硬件模块。一般软件架构师不关注这部分,一般网络芯片架构师也不设计这部分。这是一个被忽视的部分。我们列出来是因为我们的DPU+会在这块做文章,这部分也必须包含在DPU里面。技术改进比较简单,增加总线频率即可。网卡模块:这个是重头戏,但是工作内容很简单,就是将网络信息转换成光电信号发送出去。由于CPU需要处理大量的工作,所以增加了DMA(一种用于简单网络协议处理功能的小型MCU)来辅助CPU工作。现在的SmartNIC和DPU基本上就是升级这个模块,让一个MCU可以做更复杂的事情。PHY,网络交换机部分:这部分是以太网协议的设备。01.2节点内的数据流:这种数据模式是微服务的基本通信方式。基本路径与节点间互连相同,唯一不同的是路由由Hypervisor(NAT或端口??,软路由)或网卡(Bridge,硬路由)处理,即无需额外处理网络包开关设备。这种方式是云计算的基本处理方式。01.3云计算资源池:在分布式系统(云计算、分布式数据库、分布式存储等)中,微服务同时存在于多个节点上,因此节点间和节点内通信并存。在这种模式下,每一个微服务都相当于一个跨服务器的“进程”。在这种情况下,多个服务器相互连接,形成一个“大服务器”。网络形成网络拓扑结构,称为Fabric。所以DPU的目标是为云计算应用搭建一个快速的Fabric网络。图:NetworkFabric、ComputingPool、Microservices构成云计算技术IaaS。综上所述,我们可以看到现在的数据中心(包括小型集群)都是建立在一个网络Fabric的基础上,在这个Fabric上提供统一的基于TCP/IP协议的微服务。服务架构。这种网络结构的基础是以太网技术,技术发展的目标是提高吞吐量和减少延迟。02基于DPU的云计算架构前文提到,网络架构是微服务和云计算发展的必然趋势。这个网络Fabric就像一个数据网络,数据在中间流动。所以Fungible和Nvidia将构成这个FabricDPU的芯片命名为数据处理芯片。那么DPU是如何构建这个Fabric的呢?如何减少网络延迟?02.1DPU创新DPU是如何创新的?刚才介绍过,在数据流中,核心协议处理部分与微服务应用关联不大。所以一个想法是将内核模块下沉到DMA,这需要更强大的MCU。一开始,Xillinx和Intel都是用FPGA来代替传统的DMA(网络芯片)来达到应用加速的目的。在这种架构中,数据处理发生在主机CPU之前,因此可以改善应用程序通信的延迟。主要原因是:网络处理发生在中断之前,并没有改善延迟,反而节省了CPU等待时间。FPGA独享处理网络任务不需要上下文切换,大大降低了高负载应用中切换带来的延迟,大大降低了网络抖动。可以用FPGA加速一些需要硬件加速的通用计算,通过DPU互联进一步释放CPU。我们可以有效降低网络延迟和抖动,构建网络Fabric。02.2当前DPU问题:过热由于上述创新和Nvidia的大V效应,DPU升温非常快。现在DPU最大的问题就是“过热”,功耗太高。以前一个网络DMA芯片的功耗只有5瓦左右,现在一个DPU的功耗超过100瓦(FungibleF1120瓦)。能够承受如此大功耗的网络设备,在大多数应用场景中是无法使用的。尤其是在100/200G及以上的情况下,当光模块的功耗已经超过网络设备的功耗时,增加一个100瓦的网络DPU会大大增加网络的能耗。所以必须解决DPU功耗问题。02.3当前DPU存在的问题:架构臃肿另一个问题与架构有关。如果仔细观察DPU的架构,不难发现基本上DPU由三个模块组成:1)网络模块,2)计算模块,3)总线模块。计算模块可以理解为之前网络DMA芯片的升级版,从简单的ASIC升级为强大的CPU或网络处理器;网络模块是网卡的核心部件,具有100/200G接口,提供网络切换功能,本质上是一个小型的网络交换芯片;总线模块需要与主机CPU互连进行协议转换,也需要与DPU内置CPU互连,一般采用PCIe4.0/5.0。如果Fungible没有把F1称为智能网络的DPU,我觉得用这颗芯片做路由器或者防火墙芯片绰绰有余。考虑到Fungible有强大的路由器和防火墙背景,也就不难理解了。感觉Fungible的技术路线是把防火墙芯片做小,放在网卡设备上,给每台服务器提供一个防火墙芯片。但是120瓦的功耗确实有点高。个人感觉这个技术路线不是DPU应该做的。Nvidia很快就发现了这个问题,他们觉得不可能用DPU来处理CPU的任务。DPU的CPU应该只做路径初始化和异常处理,有点类似L2/L3层切换。所以Nvidia的DPU只放了几个armcpu来增加可编程性。功耗也显着降低。02.4目前DPU问题:成本太高,功耗一样。目前的DPU成本太高,基于DPU的方案并没有降低网络互联的成本。02.5目前DPU存在的问题:应用场景目前DPU都是面向数据中心的应用场景。但服务器增长空间更多在边缘计算中心,未来边缘计算互联互通将成为网络技术趋势,因此DPU必须考虑边缘计算场景。下一代数据中心(集群)将由DataFabric来支撑,而DPU是这个新Fabric的核心。为什么芯片会催生出新的计算架构?01DPU和SmartNICCDPU区别于SmartNIC的最大特点是DPU本身构建了一个新的网络拓扑,而不是简单的数据处理和卸载计算。当初Fungible定义DPU芯片是因为它自己开发了TCP协议,大大降低了以太网互联的延迟和抖动问题。DPU和SmartNIC的区别如下:DPU可以建立新的协议,而SmartNIC一般只是加速协议处理DPU可以建立总线拓扑,SmartNIC是不能建立新总线拓扑的设备DPU可以作为中心芯片(可以直接控制SSD等设备),而SmartNIC不能直接控制SSD、GPU等。Nvidia对DPU和SmartNIC做了很详细的介绍,但是没有去到核心架构。DPU可以脱离hostCPU而存在,而SmartNIC则不行。本质区别在于DPU可以建立自己的总线系统来控制和管理其他设备,是真正的中心芯片和第三芯片。这就是为什么SmartNIC存在了这么多年,也只有Fungible可以说他们的芯片是DPU!02“神奇”的DPU多路复用总线是一个非常宝贵的资源,可以做很多事情!Fungible的架构师显然意识到了这一点,做出了一个非常有趣的解决方案。DPU复用!我们看到过使用SR-IOV技术在一台服务器中虚拟出多网卡VF技术来实现多网卡,但是很少看到一个网卡被多台服务器使用?当然,回到Fungbile在DPU功耗达到120瓦的实际情况下,我们必须对这个DPU进行“复用”,以降低使用成本。Fungible的建筑师确实做到了这一点。在DPU复用架构中,DPU实际上起到了交换ASIC的作用,也就是说DPU可以互连一个小集群。目前Fungible支持8个,Nvidia的BlueFiled应该不会超过8个。03DPU多路复用打造的“核心”计算架构DPU多路复用似乎是Fungible无奈的选择(功耗和成本太高,需要降低TCO),但它创造了一个全新的计算架构。传统的以CPU为中心的计算系统应该让位于DPU。以后我们会单独从架构的角度来分析为什么这种趋势是不可避免的。在传统的服务器架构中,服务器设计以CPU为中心。CPU通过初始化总线树为每个设备分配一个ID,然后所有设备按照总线协议进行协作。NIC可以通过软件和硬件协作通过SR-IOV技术加速虚拟化环境中的网络性能。在这种网络处理方式中,Mellonax的ConnectX表现更为突出。如果需要多个CPU,可以通过CPU总线扩展一个、两个、四个甚至八个CPU,以增强计算能力。这种架构具有很强的通用计算能力,但重复计算较多(每个VM都需要处理类似的网络计算),CPU开销比较大,成本非常高。这就是30%数据中心税的来源。在DPU多路复用架构中,DPU相当于一个网络交换机,将多台CPU服务器互连形成一个计算集群。由于网络协议栈和一些公共计算是预先由DPU处理的,在这个集群中,CPU与CPU的通信减少了很多开销,达到了降低延迟的效果。或者反过来,不需要强大的CPU。这样,可以大大降低8路互连集群的CPU成本,同时增强网络数据处理能力。在云计算领域具有非常明显的竞争优势。因此,它已成为当前技术发展的最热门方向。04什么是DPU?目前对于DPU并没有明确的定义。虽然大家都强调以数据处理为主,但其实都是SmartNIC。同时,很明显,Fungbile的出发点是以网络架构和网络安全为核心的技术路线。它本质上是一家试图解决L2/L3(fabricandrouting)问题的L4(协议层)公司,而Nvidia是以设备为中心,以GPU数据加速为手段,它本质上是一家L1(设备层)公司解决L2/L3(结构和路由)问题。两家公司的技术背景和技术路线也存在明显差异。其他公司只能算是SmartNIC公司,打着DPU的旗号做加速。05DPU的未来Fungible和Nvidia虽然都意识到了DPU的重要性,但在时间上有领先优势,也针对新架构做出了解决方案。而Intel发布的IPU进一步强调了数据芯片在基础设施中的重要性,干脆将所有IaaS模块下沉到DPU,并将DPU更名为IPU。虽然英特尔还没有明确表示自己的IPU架构,但可以预见,英特尔将整合网络、软件平台、总线技术的技术实力。