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

第四代算力革命:基于软硬件一体化的超异构计算

时间:2023-03-17 18:16:22 科技观察

编者按日前,国家发改委重庆和贵州、内蒙古、甘肃、宁夏等四部门将建设国家算力网国家枢纽节点,启动实施“东算西算”工程,构建国家算力网体系。计算能力已经成为整个数字信息社会发展的关键。有些问题可以通过“东算西算”来缓解,但并没有从根本上解决问题:目前为了提升算力,更需要建设一个现代化的数据中心通过“摊大饼”实现规模化、低能耗。这就是算力的scaleout(增加规模),那么如何实现算力的scaleup(提高单个计算节点的性能)呢?或者,我们如何显着(数量级)提高单个处理器的性能?目前,计算能力已经成为制约信息技术更加蓬勃发展的核心问题:CPU灵活性好,但效率最低,已经成为性能瓶颈;GPU具有一定的灵活性,但其效率仍然落后于DSA,可见未来我们很快就会面临和CPU一样的性能瓶颈。DSA在极端性能的情况下提供了一些灵活性。但面临的领域应用多样且瞬息万变,DSA芯片尚未实现大规模落地。我们需要构建新一代的创新计算范式。与现在相比,我们需要在计算能力上至少提升1-2个数量级,并提供非常好的易用编程能力,以继续应对未来10年更复杂系统的计算.电力需求激增的挑战。注:本文思路还比较粗,期待大家多多讨论,后续会优化更新。1、第一代:CPU1.1指令集软硬件解耦,CPU性能飙升,软件蓬勃发展的指令集,是软硬件的媒介。CPU是最灵活的,因为CPU上运行的指令就是最基本的加减乘法,再加上一些内存访问和控制指令,就像搭积木一样,我们可以自由组合出我们想要的各种形式的函数,形式很复杂而强大的程序或软件。CPU最大的价值在于提供并标准化了一套标准化的指令集,从此实现了软件和硬件的解耦:硬件工程师无需关心场景,??只需专注于通过各种“快速提升CPU的性能”一切”的方法。表现。而软件工程师则完全不需要考虑硬件的细节,只关注程序本身。然后在高级编程语言/编译器、操作系统和各种系统框架/库的支持下,构建一个庞大的软件生态超级帝国。通过标准化的指令集,实现了软件和硬件的解耦和向前兼容(软件向前兼容以前的硬件,硬件向前兼容以前的软件)。这样CPU的硬件设计者就不需要考虑上层的业务是什么,也就是不关心指令组合的程序的目的。我只需要关心我设计的CPU性能有多好,能达到更高的IPC(InstructionsperCycle)和更高的频率。图1历年CPU性能提升对比从图1可以看出,近40年来,CPU整体性能提升近5万倍。这一方面取决于处理器架构的翻天覆地的变化,也取决于半导体工艺的进步。另一方面,它更依赖于标准化的指令集,将CPU平台的硬件实现和软件编程完全解耦。没有了对方的束缚,无论是软件还是硬件都可以完全放飞自我。一方面是CPU性能的飙升,另一方面是软件逐渐发展成为一个超级生态帝国。从各种拥有百万用户的高级编程语言,到广泛应用于云计算数据中心、PC、手机等终端的智能操作系统,再到各种专业的数据库、中间件、云计算基础虚拟化、容器、更多的。上述软件是基础支撑软件,是软件的“冰山一角”,更多的是各种用户级应用软件、系统级和应用软件,它们共同组成了一个超级基于CPU的软件生态系统。1.2摩尔定律失效,CPU性能瓶颈,软件开发受限图2.CPU性能提升的五个阶段图2与上一节图1一致。图2主要清晰地展示了五个发展阶段:CISC阶段。80年代,以Intel、AMD的x86架构为典型代表的CISC架构CPU,迎来了CPU性能飞速提升的时代。可以加倍。RISC阶段。随后,CISC系统变得越来越复杂,许多设计资源都花在了不常用指令的实现上。随后,RISC证明了“越精简,越高效”。随着RISC架构CPU的普及,性能提升进一步加速,达到每年52%,性能翻倍仅需18个月。多核阶段。单核CPU的性能越来越难提升,通过并行集成更多的CPU核心来进一步提升性能。在此期间,每年业绩提升可达23%,业绩翻一番需要3.5年。多核整体性能下降阶段。随着集成CPU核心数量的增加,阿姆达尔定律证明处理器数量增加带来的收益会逐渐减少。在此期间,CPU性能每年仅增长12%,性能翻一番用了6年时间。性能提升瓶颈阶段。无论何时架构/微架构设计、技术、多核并行等各种手段用尽,CPU的整体性能提升已经到了瓶颈。如图所示,自2015年以来,CPU性能每年仅增长3%,而性能翻番还需要20年时间。2.第二代:GPU2.1GPGPU,通用并行计算平台GPU,GraphicsProcessingUnits,图形处理单元。顾名思义,GPU是一种主要用于图形处理的专用加速器。GPU的内部处理是由许多并行计算单元支持的。如果仅仅用于图形图像处理,就有点“莽撞”了,应用范围太窄了。因此,GPU内部的计算单元被通用化和重新设计,GPU变成了GPGPU。到2012年,GPU已经发展成为高度并行的众核系统。GPGPU具有强大的并行处理能力和可编程流水线,既可以处理图形数据,也可以处理非图形数据。特别是面对SIMD指令,数据处理的计算量远大于数据调度和传输的计算量,GPGPU在性能上大大超越传统CPU应用。现在大家所说的GPU,通常指的就是GPGPU。图3.NVIDIATuringGPU架构2018年,NVIDIA发布了最新一代GPU架构——Turing架构。基于图灵架构的GPU提供PCIe3.0连接CPU主机接口,并提供千兆线程引擎来管理所有工作。此外,图灵架构通过两个x8NVLink接口支持多个GPU之间的数据一致性访问。如图3所示,图灵架构GPU的核心处理引擎由以下部分组成:6个图形处理集群(GPC);每个GPC有6个纹理处理集群(TPC),一共36个TPC;每个TPC有2个Streaming多核处理器(SM),共有72个SM。每个SM由64个CUDA核心、8个Tensor核心、1个RT核心和4个纹理单元组成,总共有4608个CUDA核心、576个Tensor核心、72个RT核心和288个纹理单元。2.2CUDA,NVIDIAGPU成功的关键图4.CUDA框架2006年,NVIDIA推出了CUDA,它是一种通用的并行计算平台和编程模型,它以比NVIDIAGPU更高效的方式利用并行计算引擎。CPU解决许多复杂的计算问题。CUDA为开发人员提供了将C++作为高级编程语言使用的软件环境。还支持其他语言、应用程序编程接口或基于指令的方法,例如FORTRAN、DirectCompute、OpenACC。CUDA是NVIDIA成功的关键。大大降低了用户使用GPU并行编程的门槛。在此基础上,还针对不同场景构建强大的开发库和中间件,逐步建立起GPU+CUDA的强大生态。.3.第三代:DSA3.1DSA的兴起2017年3月,图灵奖获得者DavidPatterson和JohnHennessy在他们的主题演讲“架构的黄金时代”中提出了DSA架构。CPU的性能提升已经接近尾声,需要针对特定??场景进行针对性的、定制化的加速,而DSA是一个切实可行的方案。DSA在定制ASIC的基础上回调,具有一定的软件可编程灵活性。根据指令的“复杂性”,DSA可以归类为ASIC。与CPU、GPU、FPGA和传统ASIC相比,DSA有以下特点:与GPU和FPGA类似,通常的DSA不是图灵完备的。针对系统中计算密集型任务的计算加速,而不是运行整个系统。因此,DSA平台的架构是“CPU+DSA”。DSA指令集简单,可以编程,所以是处理器;DSA是为特定领域定制的,所以它是一种特殊的ASIC。DSA可以看作是ASIC对通常意义上的通用处理的回调,增加了ASIC的灵活性。如果DSA应用领域规模足够大,可以定制IC芯片,可以覆盖IC芯片高昂的前期成本;如果规模较小,选择FPGA来实现DSA设计是更好的选择。架构和逻辑设计需要了解特定领域和相关算法,而不是只关注架构和设计本身。基于CPU+DSA的异构编程是一个非常大的挑战。3.2AI领域的DSA案例:谷歌TPUDSA架构的第一个经典案例是谷歌的TPU。TPU(TensorProcessingUnit,张量处理单元)是谷歌为加速机器学习工作负载而定制开发的ASIC芯片。谷歌在2013年进行的一项预测分析表明,如果人们每天使用语音识别DNN进行语音搜索三分钟,那么数据中心的计算需求就会增加一倍,而使用传统CPU的成本高得令人望而却步。因此,谷歌启动了一个高优先级的项目——TPU项目,以快速生成自研ASIC用于推理。目标是将GPU的性能比提高10倍。图5.GoogleTPU1.0结构框图图5显示了TPU的结构框图。TPU指令通过PCIeGen3x16总线从Host发送到TPU指令缓冲区。内部块通过256字节宽的总线连接在一起。从右上角开始,矩阵乘法单元是TPU的核心,它包含一个256x256MAC,可以对有符号或无符号整数执行8位乘法累加,16位乘积收集在一个4MB的32-矩阵单元下方的位累加器。4MB包含4096个256个元素的32位累加器。矩阵单元在每个时钟周期产生一个256元素的部分和。TPU指令设计为CISC(复杂指令集计算机)类型,包括重复字段。这些CISC类指令的CPI(CyclesperInstruction,每条指令的平均时钟周期)通常在10到20之间。总共有十几条指令,主要的五条是:Read_Host_Memory。从CPU内存中读取数据到统一缓冲区(UB)。读取权重。将权重存储器中的权重读入权重FIFO作为矩阵单元的输入。矩阵乘法/卷积。让矩阵单元进行矩阵乘法或从统一缓冲区到累加器进行卷积。矩阵运算采用可变大小的B*256输入,将其乘以256x256恒定权重输入,并生成B*256输出,需要B个流水线周期才能完成。启用。根据ReLU、Sigmoid等选项执行人工神经元的非线性函数。它的输入是一个累加器,它的输出是一个统一的缓冲区。当连接到非线性功能逻辑时,还可以使用片上专用硬件来执行卷积所需的池化操作。Write_Host_Memory将数据从统一缓冲区写入CPU内存。其他指令包括交替主机内存读写、组配置、两个版本同步、中断主机、调试标志、空指令NOP和暂停Halt。(★代表TPU,▲代表K80GPU,●代表HaswellCPU)图6.CPU、GPU、TPU的Roofline组合图如图6所示。对于HPC,Y轴是floating-的性能每秒点运算,X轴是运算强度,以访问的每个DRAM字节的浮点运算来衡量。峰值计算速率是Roofline的“平坦”部分,内存带宽是每秒字节数,因此成为Roofline的“倾斜”部分。从图6中,我们可以看到所有TPUstar都位于CPU和GPU的屋顶线之上。从Roofline的平坦部分可以看出,TPU的处理速度比GPU和CPU快15-30倍。图7.CPU、GPU和TPU的性能和功耗如图7所示,其中TPU'是使用GDDR5存储的改进版本。可以看出CPU性能是GPU性能的196倍,GPU性能是68倍。谷歌随后开发了TPU2.0和3.0版本。TPU1.0的峰值性能达到了92Tops,而TPU2.0的峰值性能达到了180Tflops,TPU3.0的峰值性能达到了420Tflops。而且,从TPU2.0开始,TPU不再作为通用服务器的加速卡,而是定制化的TPU集群,将TPU的加速价值最大化。3.3网络领域的DSA案例:IntelTofinoSDN蓬勃发展,从控制面的可编程Openflow到数据面的可编程P4语言,出现了IntelPISA架构的Tofino芯片。从架构上看,Tofino是网络领域最典型的DSA。其可编程流水线不仅可以达到ASIC级别的性能,还可以通过P4对整个数据包处理数据平面进行编程。基于PISA架构,英特尔为数据中心设计了一款支持P4数据平面编程的ASIC交换芯片。它的目标是使网络编程像CPU编程一样容易。当网络完全可编程(即控制平面和数据平面都在终端用户的控制之下)时,网络行业将享受到与软件一样的快速发展。在英特尔看来,虽然NPU和FPGA已经存在,可以修改网络协议和编辑数据包,并为知道如何编写微代码或RTL的人提供适度的可编程性,但它们与ASIC性能不在一个数量级。所以NPU和FPGA只能用在对性能不敏感的地方。英特尔为网络行业提供了两全其美的解决方案:业界最高速度的可编程数据平面协议。英特尔不仅开发出世界上第一款比传统ASIC更快的可编程交换芯片,而且还使网络编程变得简单和通用。英特尔与谷歌、微软、普林斯顿和斯坦福合作开发了P4,这是一种用于网络编程的开源网络编程语言。程序员可以基于P4进行一次编程来描述网络行为,然后编译程序运行在各种不同的平台上。P4为网络设备制造商和网络所有者提供了一种差异化方法,可以使产品或整个网络优于竞争对手。这与目前的情况形成鲜明对比,如果用户想向网络添加新功能,则必须与芯片供应商共享该功能,并看到它也出现在竞争对手的网络中,这违背了差异化的目的。设备制造商也不愿意添加新功能。添加新功能需要几年时间,然后竞争优势就会昙花一现。这导致一些公司倾向于开发专有的固定功能ASIC以保持领先地位。图8.类似CPU编译器的网络编译器如图8所示,可编程性长期以来一直存在于计算、图形、数字信号处理和特定领域的处理器中,使蓬勃发展的开发人员社区能够快速创新并编写以最终用户为中心的解决方案。英特尔的PISA架构可以像DSP、GPU和TPU一样工作,将完全控制权交给网络所有者。为此,英特尔首先确定了一个小型原始指令集来处理数据包,总共约有11条指令。以及一个非常统一的可编程管道(PISA架构)来快速连续地处理数据包标头。程序以领域特定语言P4编写,由英特尔Capilano编译器编译,并经过优化以在PISA架构设备上以全线速度运行。英特尔的目标是让网络更加敏捷、灵活、模块化并且成本更低。据英特尔称,网络系统正朝着三层方向发展:底部是一个P4可编程Tofino交换机,上面是一个运行专有控制平面应用程序的基于Linux的操作系统。英特尔提供业界最快、最可编程、P4优化的交换机硬件。四、第四代:CASH超异构4.1芯片从2D到3D再到4D,单芯片可容纳的晶体管数量不断增加ARMCPUM1基于台积电5nm工艺,拥有160亿个晶体管。如此大规模的设计使得M1集成了8核CPU和8核GPU,每个处理器都可以非常奢侈地使用内部的Register、Buffer或Cache资源(这些都是晶体管的大消耗者)。图10.台积电新工艺路线图如图10所示,台积电5nm刚刚量产,其3nm工艺已经在路上,2nm和1nm也在未来几年的路线图中。而且,台积电已经开始在0.1nm制程攻关,半导体制程即将进入亚纳米(埃)时代。图11.3D存储封装如图11所示,在存储领域,近年来也出现了3D封装技术,使得集成电路从二维走向三维。图12.小芯片示意图。如图12所示,chiplet机制将多个芯片裸DIE集成在一起,从3D到4D,进一步提高了单位面积晶体管的集成度。工艺的不断进步,3D堆叠和chiplet多die互连使得芯片从2D->3D->4D发生变化。这些技术的进步意味着芯片的规模可以容纳更多的晶体管,这也意味着芯片的规模越来越大。4.2从异构到超异构,从SOC到Multi-SOC,设计规模越来越大并行计算的主流架构如图13所示:图13(a)显示了CPU同构并行。常见的多核CPU和多CPU插槽互联就是同构并行计算。CPU是最常见的并行计算架构,因为它具有灵活性和通用性。但是,由于单CPU核心的性能已经达到了瓶颈,单颗芯片所能容纳的CPU核心数量也逐渐接近尾声。CPU同构并行性几乎没有发挥性能潜力的空间。图13(b)显示了CPU+xPU的异构加速并行架构。一般来说,GPU、FPGA、DSA加速器都是作为CPU的协处理加速器存在的,并不是图灵完备的。因此,这些加速器都需要CPU控制,CPU+xPU成为典型的架构。异构并行计算架构说明:如果CPU不参与计算,它负责GPU等加速器的控制以及任务和数据的协调,所以不需要特别强大的CPU。整个异构计算的计算性能基本上是由加速器决定的。GPU作为加速器。GPU具有一定的灵活性,但在效率上与DSA相比仍有差距,在可预见的未来很快将面临与CPU同样的性能瓶颈问题。FPGA作为加速器,受限于编程难度和设计规模的限制。通常用作FaaS平台,充分利用FPGA硬件的可编程灵活性。DSA充当加速器。DSA在极端性能的情况下提供了一些灵活性。但面临的领域应用多样且瞬息万变,DSA芯片尚未实现大规模落地。图14.多个处理引擎共存的超异构并行计算。随着芯片技术支持的设计规模越来越大,CPU、GPU、FPGA以及一些特定的算法引擎都可以作为IP集成到一个更大的系统中。以此方式,构建更大规模的芯片设计成为可能。在这里,我们提出“超异构”并行计算的概念,如图14所示。超异构是指由CPU、GPU、FPGA、DSA、ASIC等处理器引擎以各种形式组成的复杂芯片系统。.从系统的角度来看,传统SOC是单一系统,而超级异构系统则是将多个系统集成为一个更大的宏系统。传统SOC与超异构SOC的区别与联系:设计规模不同。MCU芯??片是SOC,手机芯片是SOC,超异构架构芯片也是SOC。那么有什么区别呢?但MCU级SOC通常不运行操作系统或RTOS级操作系统,只是进行一些简单的控制和处理。手机SOC需要运行大型操作系统,如Android、IOS等,使得我们的手机越来越接近于电脑。超异构架构不是简单的运行操作系统和各种软件,而是专注于提供一个巨大的资源池,性能强大,软件使用灵活充分;在底层软件的辅助下,硬件成为一个无差别的计算平台资源池,供软件随意分割组合,更灵活地为用户提供计算能力。单系统和多系统。传统的SOC更多的是基于CPU的核心控制程序来驱动CPU、GPU、其他外围模块以及接口数据IO的工作。可以说整个系统的运行都是集中管理和控制的。由于其规模和复杂性,超异构性使其难以实现。每个子系统实际上就是一个传统的SOC级系统,这些系统需要按照一些特定的协议进行交互。整个超异构系统呈现出分布式系统的特点。数据流驱动或指令流驱动。在传统的SOC中,CPU由指令流(程序)驱动,然后CPU充当一切的“主管”,进而驱动外围的GPU、其他加速模块、IO模块运行。在超异构多SOC系统中,由于系统复杂性的影响,指令流的设计模式很难“同步”不同系统之间的控制交互。整个交互实际上是由数据交互产生的。此外,由于要处理的数据带宽急剧增加,许多处理引擎由数据流而不是指令流驱动。在整个宏观系统中,可以理解为数据流驱动着整个系统的运行。超异构需要实现比传统基于GPU或DSA的异构计算10倍甚至100倍的性能提升,需要在整体上达到接近ASIC的极致性能,并保证整个系统接近于CPU软件可编程性的通用性。4.3软硬件一体化,超异构计算的必由之路由于云计算的发展,数据中心已经向超大规模发展,每个超大规模数据中心都有几万甚至几十万台服务器。超大规模数据中心的发展是云计算逐步走向软硬件一体化的根本动力。图15.软硬件一体化,CPU系统不断卸载运行在云服务器上的各种软件,可以看成是一个非常复杂的分层系统。由于CPU已经成为性能瓶颈,在宏观数据中心规模的加持下,IaaS层针对特定场景优化了部分服务,如图15所示。我们可以认为软硬件融合的过程其实就是不断卸载系统的过程。软硬件一体化:在不改变系统层次结构和组件交互的情况下,打破软硬件边界,通过系统级协同设计实现整体优化。传统的分层很清晰,下层硬件,上层软件;软硬件集成的分层块,每个任务模块是软件或硬件,或软硬件协作,都是可能的。软件中有硬件,硬件中有软件,软硬件合二为一。从宏观上看,上层越高,软件组件越灵活,下层越低,硬件组件越固定。庞大的规模和特定的场景服务,使得云计算的底层工作负载逐渐稳定,逐渐卸载到硬件上(被动趋势)。软硬件融合架构让“硬件”更灵活、更强大,从而可以将更多层次化的功能加速转移到“硬件”上(主动抢占)。图16.基于CASH架构超异构实现的DPU。通常,我们将DPU视为CPU的任务卸载加速。这种思路依然没有摆脱以CPU为中心的架构设计的“桎梏”。更本质上,如图16所示,基于CASH架构(CASH,ConvergedArchitectureofSoftwareandHardware,软硬件融合架构)的DPU是一个性能强大、功能完备、超异构计算的算力平台。本平台包含硬件加速部分,完成底层基础设施层的加速处理;它还包括用于应用层处理的CPU和GPU来完成应用层处理。独立的CPU和GPU可以看作是DPU的延伸。只有当集成的CPU/GPU不能满足处理需求时,才可以作为一个独立的计算平台来增强整个系统的功能。图17.软硬件融合技术是各种复杂计算场景的基础。软硬件融合技术旨在应对各种计算能力要求最高、系统规模最大、成本最敏感、灵活性要求最高的云计算数据中心场景。复杂的挑战,逐渐形成了技术理念和一套完整的技术体系。基于软硬件一体化的超异构混合计算,专注于计算能力需求1-2个数量级的复杂场景。面向未来,自动驾驶、5G/6G核心网、边缘计算等场景对算力的需求将更加强烈。面对这么多复杂的系统场景,软硬件一体化也会有更多的用武之地。如图17所示,从云计算中抽象出软硬件融合,进而指导云计算、自动驾驶等复杂系统场景的芯片和系统设计。总结:软硬件一体化的超异构计算需要满足以下标准:性能。单位晶体管资源的性能水平接近ASIC,整体性能需要是GPGPU和DSA的10-100倍或以上。一般的灵活性。在保证极致性能的基础上,还要保证其可编程性达到接近CPU软件的水平。并为开发者提供一个友好的编程平台。开放和开源。CPU有x86、ARM、RISC-v三种主流架构平台,而DSA则是各公司定义的完全不兼容的架构。在超异构时代,在软件定义的加持下,要想真正实现不同架构、不同软件生态之间的“互联互通”,必然需要一个开放、标准化的架构定义。下面的图18显示了每个平台的计算能力和多功能性的摘要。图18.CPU、GPU、DSA和CASH计算平台的比较