编者按最近一直思考:何谓“大芯片”?大芯片的标准是什么?CPU、GPU、AI、DPU以及HPU等各种超大规模的大芯片,其底层逻辑到底是什么?于是有了这篇文章的思考,抛砖引玉,与大家讨论。

 

1 什么是大芯片?

 

1.1 依据操作系统标准来划分

 

 

这样,我们对大芯片就可以有一个最直观的标准:

需要支持操作系统和虚拟化(虚拟化包括虚机、容器、函数等不同层次虚拟化);

需要支持虚拟化资源切分;

需要支持系统、资源和性能隔离;

需要支持软件跨硬件平台,包括硬件接口抽象和热迁移等。

 

大芯片,需要把很多传统软件层次的能力在硬件层次进行支持。如可编程性、扩展性、适应性、软件跨平台和高可用等。

 

1.2 各类引擎/处理器的作用

 

 

上图是在计算机(服务器)上运行的系统的功能层次划分,大体上分为两个层次:

支撑应用的基础设施层,比如网络、存储、虚拟化、文件系统、数据库等;

应用层。应用层也可以再划分。很多应用性能敏感,需要通过硬件加速。因此,可以把应用再划分为两部分:

‍应用可加速部分,相比基础设施,应用可加速部分的更新变化会更大,因此需要一些相对灵活弹性的加速平台,如GPU、FPGA等,而ASIC等则不是很合适。

应用不可加速部分,应用多种多样,应用本身还会经常性的优化更新,因此只适合CPU这样的足够通用灵活的运行平台。

 

‍CPU

如果整个系统对性能的要求不高,CPU可以胜任。那么最好的做法就是,不管是基础设施层还是应用层可加速部分和不可加速部分,统统都放在CPU中完成。

 

然而,由于基于CPU的摩尔定律失效,CPU逐渐无法胜任系统的所有计算任务,引发了连锁反应。所以才有了上面图中的三个分类,以及针对性的各种硬件加速平台。

 

不管如何优化改进,CPU作为最核心的处理引擎(可能是独立CPU芯片,也可能是嵌入式CPU Core),依然扮演着最核心的作用。

 

未来,CPU主要负责应用层不可加速部分的计算以及整个系统的控制和管理。虽然CPU最终不是计算的主力,但它依然是管理和控制的核心。

 

GPU

GPU比较适合应用层的弹性加速,一方面因为GPGPU的通用计算能力,在场景覆盖和性能提升方面很好的达到了平衡。再加上CUDA等开发框架/生态的加持,使得GPU成为应用层可加速部分当之无愧的主力运行平台。

 

DPU

DPU定位基础设施层的(加速)处理,如虚拟化、网络、存储、安全以及IaaS服务融入等。DPU需要很多ASIC/DSA层次的加速引擎,以及嵌入式CPU的协同,来更好的做好基础设施层的工作,以此来更好的支撑CPU和GPU的上层工作。

 

DPU可以说是整个系统中的“老黄牛”,做的是最辛苦最艰难的事情,但其价值体现却低于CPU和GPU。目前DPU面临的困境主要体现在:

 

做的事情非常复杂。受性能需求的约束,需要把业务逻辑变成电路,DPU的开发其难度和工作量(相比CPU和GPU)非常的高。

其价值又相对较低。DPU通常定位成CPU的助手,负责卸载CPU的一些繁重的相对价值含量低的工作。因此,其价值定位低于CPU和GPU。

被动协同。DPU需要协同CPU和GPU的工作,但这些协同通常是被动的。DPU具体落地需要CPU和GPU的“参与”,这使得DPU具有非常大的落地门槛。

客户需求差异性和业务迭代,需要DPU尽可能的贴近用户需求,把用户的深层次需求融入到芯片。但这样做,会导致场景碎片化,DPU能覆盖的场景偏小。而大芯片的研发成本又非常的高,场景覆盖不足以撑起一颗芯片的商业化落地。

 

AI芯片

 

AI芯片,也称为AI-DSA,和GPU处于同一位置,一般来说,在小小的服务器物理空间里,加速卡通常只有一种类型,也即AI和GPU是互斥的关系,大家共同竞争同一个物理卡槽。

 

CPU+xPU的异构计算通常分为三类:CPU+GPU、CPU+FPGA和CPU+DSA。

 

如果对通用性要求高,对覆盖场景要求高,则通常选择GPU。比如AI训练场景,虽然GPU并不是效率最高的平台,但目前AI训练算法更新迭代很快,比较适合GPU这样的平台,而不是AI-DSA。

 

如果对性能要求高,并且算法相对确定,则比较适合DSA架构,比如一些编解码的VPU。以及AI推理场景。

 

FPGA则介于两者之间。

 

AI-DSA虽然用途很广,并且性能敏感,但云、边缘以及自动驾驶等超级终端场景,是更加综合性的场景,AI是计算加速的领域之一,因此,独立的AI芯片其落地规模必然是远少于GPU这种更加灵活弹性的计算平台的,也更少于CPU和DPU的落地场景规模。

 

HPU

 

HPU是超异构处理器(Hyper-heterogeneous Processing Unit),把CPU、GPU和DPU的功能再集成在一起,是一个功能综合的融合芯片:

 

Chiplet封装技术的成熟,使得多种架构混合的超异构计算成为可能,为超异构处理器HPU提供了很好的工艺和封装基础。

 

包括企业服务器、边缘服务器以及存储服务器等诸多场景,占到整个服务器规模的90%左右,这类服务器场景相对轻量的计算,集成的单芯片足够。

 

云计算的业务服务器,是绝对重量的场景,需要CPU、GPU和DPU三类独立芯片组成大系统。这类场景只占服务器规模的10%左右。

 

超异构计算需要创新的架构:需要明确的是,HPU不能是简单的CPU、GPU和DPU三者集成,而是要重新优化整个系统的数据交互,让交互更加充分并且高效(更高的带宽,更低的延迟等)。

 

2 大芯片的底层逻辑

 

2.1 各种各样的领域和场景,本质都是计算

 

云计算IaaS层有基础的四大类服务:

首先是计算。这里的计算是狭义的计算,通常指的是我们提供给用户的计算环境或平台,而网络、存储安全等则是用户不可见的计算。

 

一个个的计算机通过网络连接在一起的大系统,计算的节点是计算机(或服务器),网络的节点也是计算机。计算和网络,通常是界限分明的。但各自走向瓶颈之后发现,可以通过计算的方式解决网络的问题(许多网络设备和系统在逐渐云化);计算,也越来越多的需要网络设备的参与,网络设备也成为计算集群的一部分。

 

在万物互联的大系统里,存储,其实都可以看做是临时并持久的存储。比方说内存(memory),在计算机某个任务运行的时候它的内存数据和程序是持久的,当关机的时候它又是临时的角色。也包括本地存储(local Storage),他在服务器上来说是持久的,但在跟整个数据中心分布式存储来说,他又是本地的暂存。存储,是计算的输入、输出,以及中间结果的暂存。

 

安全,贯穿计算、网络、存储的方方面面,可以认为,安全是一个环境和机制,在约束着计算、网络和存储的方方面面。

 

而虚拟化,则是整个架构的组织方式,把这四大件的软硬件更好组织起来的方式,来灵活的、方便的为大家提供各种计算、网络、存储和安全服务。

 

以数据为中心,靠数据流动驱动计算:但不能把数据为中心的计算封装到网络数据流中,因为计算依然需要暴露给用户,用户掌控一切;以数据为中心的计算,依然要把数据流驱动的计算暴露给上层的用户应用,为了更好的性能,需要做到“软件定义一切,硬件加速一切”。

 

一切系统的运行都是以计算为基础的,系统的运行可以简单归结为输入、计算,然后输出。不管是狭义的计算,或者是虚拟化、网络、存储、安全等,都可以归结到广义计算的范畴。

 

一切皆计算(或一切皆为计算)!

 

2.2 宏观算力由性能、规模和利用率组成

 

宏观总算力 = 性能 x 数量(规模) x 利用率。

 

算力是由性能、规模、利用率三部分共同组成的,相辅相成,缺一不可:

 

有的算力芯片,可能可以做到性能狂飙,但较少考虑芯片的通用性易用性,然后芯片销量不高落地规模小,那就无法做到宏观算力的真正提升。

有的算力提升方案,重在规模投入,摊大饼有一定作用,但不是解决未来算力需求数量级提升的根本。

有的解决方案,通过各种资源池化和跨不同的边界算力共享,来提升算力利用率,但改变不了目前算力芯片性能瓶颈的本质。

性能、规模、利用率,宏观微观,牵一发而动全身。管中窥豹终有偏,既要考虑多种因素协同设计,更要宏观的统筹算力问题。

 

2.3 核心矛盾:性能和灵活性

 

 

性能和灵活性是大芯片中最核心的矛盾:

CPU灵活性很好但性能较差,在数据中心场景,如果性能满足,通常的服务器主力计算芯片,仍然是CPU。很不幸的是,CPU到了性能瓶颈。

 

GPU,能够兼顾好性能和灵活性,在很多异构计算场景得到广泛应用。

 

ASIC受限于其非常低的灵活性,在数据中心等复杂计算场景,完全不可用。

 

DSA虽然灵活性相比ASIC有所提升,但仍然无法满足应用加速对灵活性的要求,例如AI训练场景,DSA落地就存在困境,这一场景目前还主要是GPU的天下。但DSA相比ASIC有所提升的灵活性,比较好满足一些基础设施层的算法加速,如网络DSA场景和一些AI推理场景。

 

CASH(软硬件融合架构),是我们定义的一种超异构计算架构,通过多种处理引擎混合协作,实现“团队作战,优势互补”,以此达到性能和灵活性的兼顾。

 

3 大芯片面临的共同挑战

 

3.1 挑战一:复杂大系统,对灵活性的要求高于对性能的要求

 

有一个非常经典的问题:终端非常流行SOC,但为什么数据中心服务器却依然是CPU打天下?

 

越是复杂的场景,对系统灵活性的要求越高。CPU作为云计算场景的主力计算平台有其合理性,主要体现在四个方面:

 

硬件的灵活性。软件应用迭代很快,支持软件运行的硬件处理引擎要能够很好地支持这些迭代。CPU因为其灵活的基础指令编程的特点,是最适合云计算的处理引擎。

 

硬件的通用性。云计算厂家购买硬件服务器,很难预测这些硬件服务器会运行哪类工作任务,最好的办法是采用完全通用的服务器。CPU由于其绝对的通用性,成为云计算场景最优的选择。

 

硬件的利用率。云计算的基础技术是虚拟化,通过虚拟化把资源切分,实现资源共享,以此提高资源利用并降低成本。只有CPU能够实现非常友好的硬件级别的虚拟化支持,从而实现更高的资源利用率。而其他硬件加速平台,(相对的)资源利用率很难做到很高,这就约束了其性能优势。

 

硬件的一致性。在云计算数据中心,软件和硬件是需要相互脱离的。同一个软件实体会在不同的硬件实体迁移,同样的同一个硬件实体也需要运行不同的软件实体。这对硬件平台的一致性提出了很高的要求。

 

在性能满足要求的情况下,CPU当仁不让的就成了数据中心计算平台的最佳选择。

 

可惜的是,目前,CPU的性能无法满足要求了。在CPU性能不满足要求的情况下,就需要创新的硬件来进行性能加速。如何在整个系统保持跟传统CPU接近的通用性、灵活性、可编程性、易用性的约束条件下,实现性能显著提升,成为了重要的挑战。

 

3.2 挑战二:如何数量级的提升综合性能?

 

我们之前都讲过,性能和单位指令的复杂度是正相关的。指令越简单,性能相对越低;指令越复杂,性能相对越好。但指令简单,我们就可以随心所欲组合各种各样的场景的应用程序;而指令越复杂,引擎所能覆盖的领域和场景就会越来越小。

 

如上图所示:

CPU性能最差,但几乎可以覆盖所有的计算场景,是最通用的处理器;

 

DSA覆盖某个特定领域,性能可以做到很好。但覆盖的领域如果算法更新迭代快或者领域的范围较小不足以支撑大算力芯片的大范围落地的话,这样的DSA芯片在商业上就很难成立。

 

GPU介于两者之间。

 

CPU软件,是通过基础的指令组合出来所需要的业务逻辑;而为了提升性能,硬件加速本质上是将业务逻辑固化成硬件电路。而将业务逻辑固化成电路,虽然提升了性能,但会约束芯片本身的场景覆盖。目前,很多算力芯片的设计陷入了一个怪圈:越优化性能,场景覆盖越狭窄;场景覆盖越狭窄,芯片出货量越低;芯片出货量低,无法覆盖芯片的一次性研发成本,商业逻辑不成立,后续的持续研发难以为继。

 

以AI为典型场景,目前AI芯片落地难的本质:很多AI芯片特别强调深度理解算法,然后把算法融入到芯片中。但受限于AI类算法多种多样,并且算法都在快速的迭代。这导致AI芯片一直无法大规模落地,芯片数以亿计的研发成本难以摊薄。因此,从目前来看,AI芯片在商业逻辑上无法成立。

 

AI芯片已经榨干了目前芯片所能达到的性能极限;未来,L4/L5级别的自动驾驶芯片需要算力十倍百倍的提升;而要想达到元宇宙所需的良好体验,则需要算力千倍万倍的提升。如何在确保芯片的场景覆盖如CPU一样通用全面,并且还能够十倍百倍甚至千倍万倍的快速性能提升,是大算力芯片需要直面的挑战。

 

3.3 挑战三:业务的横向和纵向差异性

 

业务的横向差异指的是不同客户之间相近业务的细节差异性;而纵向差异指的是单个用户业务的长期迭代的差异性。

 

不同用户的业务存在差异,即使同一大公司内部,不同的团队对相同场景的业务需求也是不完全一致的。并且,即使同一客户,受限于软件的快速更新迭代,其业务逻辑更新也会很快,显著的快于硬件芯片的更新迭代(软件迭代通常在3-6个月,而芯片迭代则是2-3年,还要考虑芯片4-5年的生命周期)。

 

针对横向和纵向的差异性,目前行业有几种显著的做法:

 

一些芯片大厂,针对自身对场景的理解,提供自认为最优的业务逻辑加速方案给到用户。但站在用户的视角,这样会丧失自身的差异性和创造性。用户需要修改自身的业务逻辑,这个风险也非常的高;并且,会对芯片公司形成强依赖关系。

 

一些大客户。针对自身差异化场景,自研芯片。可以满足自身差异化的竞争能力,但大用户内部也是由许多不同的小团队组成,不同团队业务场景仍然存在差异性;并且,单个业务纵向的长期迭代差异依然是需要考虑的。定制芯片在商业上是可行的,但需要考虑技术层面的通用芯片设计。

 

第三方通用的解决方案。“授人以鱼,不如授人以渔”,通过通用的设计,确保在每个领域,都能够实现一定程度上的软硬件解耦。芯片公司提供“通用”的硬件平台,让用户通过编程的方式实现业务差异化,“让用户掌控一切”。

 

3.4 挑战四:芯片的一次性成本过高

 

 

在先进工艺的设计成本方面,知名半导体研究机构Semiengingeering统计了不同工艺下芯片所需费用(费用包括了):16nm节点则需要1亿美元;7nm节点需要2.97亿美元;到了5nm节点,费用高达5.42亿美元;3nm节点的研发费用,预计将接近10亿美元。

 

就意味着,大芯片需要足够通用,足够大范围落地,才能在商业逻辑上成立。做一个基本的估算:在数据中心场景,则需要50万以上的销售量,才能有效摊薄研发成本。在数据中心领域,这个门槛非常高。

 

3.5 挑战五:宏观算力要求芯片能够支撑大规模部署

 

性能和灵活性是一对矛盾,很多性能优化的芯片设计方案,显著的提升性能的同时,也显著的降低了芯片的通用性、灵活性和易用性,同时降低了芯片的场景和用户覆盖。从而导致芯片落地规模很小。

 

芯片落地规模小,单芯片再高的性能,都相当于无源之水,没有了意义。

 

因此,一个综合性的芯片平台,需要考虑芯片性能提升的同时,也要考虑如何提高芯片的宏观规模落地:需要考虑芯片的场景覆盖;需要考虑芯片的用户覆盖;需要考虑芯片的功能横向和纵向的差异性覆盖。

 

只有兼顾了性能和更多用户和场景覆盖,才能实现大芯片的规模化部署,才能显著的提升宏观算力。

 

3.6 挑战六:计算平台的融合

 

 

算力需要池化,并且,算力不仅仅是数据中心基于x86 CPU的算力池化,算力池化,需要:

算力需要跨不同的CPU架构,比如能够把x86、ARM、RISCv等主流架构的算力整合到一个算力池;

算力需要跨不同类型的处理引擎。比如把CPU、GPU、FPGA、DSA的算力整合到一个算力池;

算力还需要跨不同厂家的硬件平台,算力需要把不同Vendor提供的算力资源都能够整合到一个算力池;

算力需要跨不同位置,算力可以部署云、边、端甚至网络,可以把这些算力整合到一个算力池。

 

云网边端融合,就是把所有的算力资源整合到一起,真正实现跨云网边端自适应的软件运行。挑战在于,如何构建统一的开放的硬件平台和系统堆栈。

 

3.7 挑战七:生态建设的门槛

 

大芯片一定需要平台化,一定需要开发框架并形成开发生态。而框架和生态门槛高,且需要长期积累,对小公司来说是一件非常难的事情。

 

RISC-v CPU已经如火如荼,很多公司,特别是一些初创小公司,大家都非常认可RISC-v的开源开放的理念和价值,众人拾柴火焰高,大家共同推动RISC-v开放生态的蓬勃发展。

 

未来,计算进一步走向异构和超异构计算,架构和平台越来越多,此时,开源开放已经不是可选项,而是成为必选项。因为,如果不是开源开放,那就会导致算力资源完全的碎片化,何谈算力池化,何谈云网边端融合。

 

开源开放,是大芯片平台和生态建设的必然选择。

 

3.8 挑战八:(用户视角)宏观跨平台的挑战,没有平台依赖

 

站在芯片厂家视角,给客户提供芯片以及配套的驱动软件,然后有SDK等开发工具包,用户基于此开发自己的应用程序,这样就万事大吉。但站在用户的视角,问题可不是这样。用户的软件应用和硬件平台是完全脱离的。

 

我们以VM计算机虚拟化为例。用户的VM需要在不同的硬件平台上能够实时热迁移,这样就对硬件平台的一致性就有了要求。通常,硬件一致性是通过虚拟化来完成的,虚拟化给上层的VM抽象出标准的硬件平台,使得VM可以跨不同架构的硬件服务器运行。随着CPU性能的瓶颈,虚拟化相关堆栈逐渐下沉到了硬件加速,这样,就需要把硬件接口直接暴露给业务VM,那么就需要硬件架构/接口原生支持一致性。

 

硬件架构/接口原生支持一致性,换个表述,就是不同厂家的芯片平台提供的是相同的架构和接口,使得软件可以方便的跨不同厂家的硬件平台迁移。如果某个厂家提供的是私有架构/接口的硬件平台,那么用户就会对平台形成强依赖关系,并且如果选择的个性化平台越多,使得用户自己的数据中心变成割裂的各自不同的资源池碎片,这样云的整个运营管理变得非常的复杂和困难。