编者按
最近一直思考:何谓“大芯片”?大芯片的标准是什么?CPU、GPU、AI、DPU以及HPU等各种超大规模的大芯片,其底层逻辑到底是什么?
于是有了这篇文章的思考,抛砖引玉,与大家讨论。
这样,我们对大芯片就可以有一个最直观的标准:
大芯片,需要把很多传统软件层次的能力在硬件层次进行支持。如可编程性、扩展性、适应性、软件跨平台和高可用等。
上图是在计算机(服务器)上运行的系统的功能层次划分,大体上分为两个层次:
如果整个系统对性能的要求不高,CPU可以胜任。那么最好的做法就是,不管是基础设施层还是应用层可加速部分和不可加速部分,统统都放在CPU中完成。
然而,由于基于CPU的摩尔定律失效,CPU逐渐无法胜任系统的所有计算任务,引发了连锁反应。所以才有了上面图中的三个分类,以及针对性的各种硬件加速平台。
不管如何优化改进,CPU作为最核心的处理引擎(可能是独立CPU芯片,也可能是嵌入式CPU Core),依然扮演着最核心的作用。
未来,CPU主要负责应用层不可加速部分的计算以及整个系统的控制和管理。虽然CPU最终不是计算的主力,但它依然是管理和控制的核心。
GPU比较适合应用层的弹性加速,一方面因为GPGPU的通用计算能力,在场景覆盖和性能提升方面很好的达到了平衡。再加上CUDA等开发框架/生态的加持,使得GPU成为应用层可加速部分当之无愧的主力运行平台。
DPU定位基础设施层的(加速)处理,如虚拟化、网络、存储、安全以及IaaS服务融入等。DPU需要很多ASIC/DSA层次的加速引擎,以及嵌入式CPU的协同,来更好的做好基础设施层的工作,以此来更好的支撑CPU和GPU的上层工作。
DPU可以说是整个系统中的“老黄牛”,做的是最辛苦最艰难的事情,但其价值体现却低于CPU和GPU。目前DPU面临的困境主要体现在:
AI芯片,也称为AI-DSA,和GPU处于同一位置,一般来说,在小小的服务器物理空间里,加速卡通常只有一种类型,也即AI和GPU是互斥的关系,大家共同竞争同一个物理卡槽。
CPU+xPU的异构计算通常分为三类:
AI-DSA虽然用途很广,并且性能敏感,但云、边缘以及自动驾驶等超级终端场景,是更加综合性的场景,AI是计算加速的领域之一,因此,独立的AI芯片其落地规模必然是远少于GPU这种更加灵活弹性的计算平台的,也更少于CPU和DPU的落地场景规模。
HPU是超异构处理器(Hyper-heterogeneous Processing Unit),把CPU、GPU和DPU的功能再集成在一起,是一个功能综合的融合芯片:
超异构计算需要创新的架构:需要明确的是,HPU不能是简单的CPU、GPU和DPU三者集成,而是要重新优化整个系统的数据交互,让交互更加充分并且高效(更高的带宽,更低的延迟等)。
云计算IaaS层有基础的四大类服务:
以数据为中心,靠数据流动驱动计算:
一切系统的运行都是以计算为基础的,系统的运行可以简单归结为输入、计算,然后输出。不管是狭义的计算,或者是虚拟化、网络、存储、安全等,都可以归结到广义计算的范畴。
一切皆计算(或一切皆为计算)!
宏观总算力 = 性能 x 数量(规模) x 利用率。
算力是由性能、规模、利用率三部分共同组成的,相辅相成,缺一不可:
性能、规模、利用率,宏观微观,牵一发而动全身。管中窥豹终有偏,既要考虑多种因素协同设计,更要宏观的统筹算力问题。
性能和灵活性是大芯片中最核心的矛盾:
CASH(软硬件融合架构),是我们定义的一种超异构计算架构,通过多种处理引擎混合协作,实现“团队作战,优势互补”,以此达到性能和灵活性的兼顾。
有一个非常经典的问题:终端非常流行SOC,但为什么数据中心服务器却依然是CPU打天下?
越是复杂的场景,对系统灵活性的要求越高。CPU作为云计算场景的主力计算平台有其合理性,主要体现在四个方面:
在性能满足要求的情况下,CPU当仁不让的就成了数据中心计算平台的最佳选择。
可惜的是,目前,CPU的性能无法满足要求了。在CPU性能不满足要求的情况下,就需要创新的硬件来进行性能加速。如何在整个系统保持跟传统CPU接近的通用性、灵活性、可编程性、易用性的约束条件下,实现性能显著提升,成为了重要的挑战。
我们之前都讲过,性能和单位指令的复杂度是正相关的。指令越简单,性能相对越低;指令越复杂,性能相对越好。但指令简单,我们就可以随心所欲组合各种各样的场景的应用程序;而指令越复杂,引擎所能覆盖的领域和场景就会越来越小。
如上图所示:
CPU软件,是通过基础的指令组合出来所需要的业务逻辑;而为了提升性能,硬件加速本质上是将业务逻辑固化成硬件电路。而将业务逻辑固化成电路,虽然提升了性能,但会约束芯片本身的场景覆盖。目前,很多算力芯片的设计陷入了一个怪圈:越优化性能,场景覆盖越狭窄;场景覆盖越狭窄,芯片出货量越低;芯片出货量低,无法覆盖芯片的一次性研发成本,商业逻辑不成立,后续的持续研发难以为继。
以AI为典型场景,目前AI芯片落地难的本质:很多AI芯片特别强调深度理解算法,然后把算法融入到芯片中。但受限于AI类算法多种多样,并且算法都在快速的迭代。这导致AI芯片一直无法大规模落地,芯片数以亿计的研发成本难以摊薄。因此,从目前来看,AI芯片在商业逻辑上无法成立。
AI芯片已经榨干了目前芯片所能达到的性能极限;未来,L4/L5级别的自动驾驶芯片需要算力十倍百倍的提升;而要想达到元宇宙所需的良好体验,则需要算力千倍万倍的提升。如何在确保芯片的场景覆盖如CPU一样通用全面,并且还能够十倍百倍甚至千倍万倍的快速性能提升,是大算力芯片需要直面的挑战。
业务的横向差异指的是不同客户之间相近业务的细节差异性;而纵向差异指的是单个用户业务的长期迭代的差异性。
不同用户的业务存在差异,即使同一大公司内部,不同的团队对相同场景的业务需求也是不完全一致的。并且,即使同一客户,受限于软件的快速更新迭代,其业务逻辑更新也会很快,显著的快于硬件芯片的更新迭代(软件迭代通常在3-6个月,而芯片迭代则是2-3年,还要考虑芯片4-5年的生命周期)。
针对横向和纵向的差异性,目前行业有几种显著的做法:
在先进工艺的设计成本方面,知名半导体研究机构Semiengingeering统计了不同工艺下芯片所需费用(费用包括了):16nm节点则需要1亿美元;7nm节点需要2.97亿美元;到了5nm节点,费用高达5.42亿美元;3nm节点的研发费用,预计将接近10亿美元。
就意味着,大芯片需要足够通用,足够大范围落地,才能在商业逻辑上成立。做一个基本的估算:在数据中心场景,则需要50万以上的销售量,才能有效摊薄研发成本。在数据中心领域,这个门槛非常高。
性能和灵活性是一对矛盾,很多性能优化的芯片设计方案,显著的提升性能的同时,也显著的降低了芯片的通用性、灵活性和易用性,同时降低了芯片的场景和用户覆盖。从而导致芯片落地规模很小。
芯片落地规模小,单芯片再高的性能,都相当于无源之水,没有了意义。
因此,一个综合性的芯片平台,需要考虑芯片性能提升的同时,也要考虑如何提高芯片的宏观规模落地:需要考虑芯片的场景覆盖;需要考虑芯片的用户覆盖;需要考虑芯片的功能横向和纵向的差异性覆盖。
只有兼顾了性能和更多用户和场景覆盖,才能实现大芯片的规模化部署,才能显著的提升宏观算力。
算力需要池化,并且,算力不仅仅是数据中心基于x86 CPU的算力池化,算力池化,需要:
云网边端融合,就是把所有的算力资源整合到一起,真正实现跨云网边端自适应的软件运行。挑战在于,如何构建统一的开放的硬件平台和系统堆栈。
大芯片一定需要平台化,一定需要开发框架并形成开发生态。而框架和生态门槛高,且需要长期积累,对小公司来说是一件非常难的事情。
RISC-v CPU已经如火如荼,很多公司,特别是一些初创小公司,大家都非常认可RISC-v的开源开放的理念和价值,众人拾柴火焰高,大家共同推动RISC-v开放生态的蓬勃发展。
未来,计算进一步走向异构和超异构计算,架构和平台越来越多,此时,开源开放已经不是可选项,而是成为必选项。因为,如果不是开源开放,那就会导致算力资源完全的碎片化,何谈算力池化,何谈云网边端融合。
开源开放,是大芯片平台和生态建设的必然选择。
站在芯片厂家视角,给客户提供芯片以及配套的驱动软件,然后有SDK等开发工具包,用户基于此开发自己的应用程序,这样就万事大吉。但站在用户的视角,问题可不是这样。用户的软件应用和硬件平台是完全脱离的。
我们以VM计算机虚拟化为例。用户的VM需要在不同的硬件平台上能够实时热迁移,这样就对硬件平台的一致性就有了要求。通常,硬件一致性是通过虚拟化来完成的,虚拟化给上层的VM抽象出标准的硬件平台,使得VM可以跨不同架构的硬件服务器运行。随着CPU性能的瓶颈,虚拟化相关堆栈逐渐下沉到了硬件加速,这样,就需要把硬件接口直接暴露给业务VM,那么就需要硬件架构/接口原生支持一致性。
硬件架构/接口原生支持一致性,换个表述,就是不同厂家的芯片平台提供的是相同的架构和接口,使得软件可以方便的跨不同厂家的硬件平台迁移。如果某个厂家提供的是私有架构/接口的硬件平台,那么用户就会对平台形成强依赖关系,并且如果选择的个性化平台越多,使得用户自己的数据中心变成割裂的各自不同的资源池碎片,这样云的整个运营管理变得非常的复杂和困难。
(正文完)