编者按
软件热点层出不穷,并且快速迭代;CPU性能瓶颈,摩尔定律失效;图灵奖获得者John Hennessy和David Patterson在2017年提出了“计算机体系结构的黄金年代”,给出的解决方案是特定领域架构DSA。
如今,“黄金年代”时间已经过半,我们再对这一时期的体系结构发展进行分析、总结和展望:
1 “体系结构的黄金年代”成色不足
软件热点层出不穷,从以前的云计算、大数据、AI到后来的区块链、5G/6G、自动驾驶、元宇宙等,几乎每2年左右时间,就会有一个全新的技术应用出现。并且,已有的技术应用,仍在快速地演进和迭代。比如,2012-2018年6年时间里,人们对于算力的需求增长了超过 30万倍;也就说,AI算力大约每3.5个月翻一倍。
2017年,图灵奖获得者John Hennessy和David Patterson提出“计算机体系结构的黄金年代”,并指出,由于目前通用计算的性能瓶颈,需要针对特定应用场景开发针对性优化的架构,他们给出的解决方案是DSA(Domain Specific Architecture)。
通过CPU+(集成或独立的)GPU/FPGA/DSA处理器,把软件业务通过异构计算加速,如网络、存储、虚拟化、安全、数据库、视频图像、深度学习等场景。但目前,最大的问题在于,这些领域的加速,从CPU计算的整体,变成了异构计算的一个个各自为战的“孤岛”。
从目前主要的几个领域DSA(成功或不成功)的案例,来进行分析:
除此之外,还需要考虑最终场景落地的问题。站在最终落地场景和解决方案的视角:
因此,最终的落地场景需要的一定是综合的并且相对通用的解决方案;并且,还需要在通用的基础上尽可能地提升性能降低成本。
各种独立DSA,使得系统越来越碎片化,这跟互联网云和边缘计算、云网边端融合等宏观综合宏场景的发展趋势是背道而驰的。
在系统复杂度较低的时候,ASIC的极致性能和效率,是非常合适的。但随着系统复杂度的上升,ASIC的劣势逐渐就暴露出来了:
DSA可以在ASIC级别,一定程度上实现功能和业务逻辑的可编程,实现性能和部分灵活性的兼顾,并且显著改善ASIC的上述各种问题和挑战。因此,DSA逐渐成为目前领域加速的主流解决方案。
例如,网络DSA的发展。SDN之前,网络芯片的主流实现是ASIC;SDN发展的第一步,通过Openflow实现了控制面可编程;第二步,通过P4实现了数据面的可编程,并且拥有了支持P4可编程的DSA:Barefoot的PISA架构和Tofino芯片。
系统是由分层分块的各个组件组成的,这些组件大体上分为三类:
如上表格所示,每一个处理器引擎类型都有其优势之处,也都有其劣势之处:
一方面,复杂系统都存在一个显著的规律“二八定律”,也即是说,系统的大约80%的计算量属于基础设施层,属于适合DSA加速的部分;另一方面,DSA能够覆盖足够大的一个领域,并且其一定程度的可编程能力,可以满足系统的基础设施层特定领域任务对灵活性的要求。
DSA架构的处理器(引擎)就可以在满足系统灵活性要求的情况下,实现最极致的性能,以及最极致的性价比。
我们再从整个系统角度分析,可以通俗地将系统要进行的工作处理当做一个塔防游戏:
总之,DSA架构处理器必然是整个系统中的算力中坚。
应用层DSA最典型案例,非AI芯片莫属。
AI领域对算力的极致需求,以及行业巨头谷歌发布的全球第一款DSA架构处理器TPU,瞬间引爆了AI芯片的全行业大潮。
但5年左右时间过去了,即使是谷歌具有从芯片、框架、生态到服务的全链条的全球顶尖技术,以及几乎全球第一的行业号召力,整个TPU体系仍然难算成功。谷歌的AI框架,目前在逐渐地往GPU迁移,可以说,AI平台目前的趋势是:从DSA往GPU回调。
其他的DSA架构的AI芯片,落地的场景和数量更少。
本质原因也很简单:AI DSA芯片提供的灵活性跟上层AI算法所需的灵活性要求,相差甚大。我们把这个表述更加泛化一些:DSA芯片提供的灵活性比较低,而应用层算法对灵活性的要求比较高,两者相差巨大。
系统是分层分块的系统,一般来说:越底层越确定,越适合DSA架构处理;越上层越不确定,越适合CPU这样的通用处理器处理;而性能敏感的应用层算法,比较适合于GPU及同指令复杂度级别架构(例如Graphcore IPU)的处理器。
AI芯片未来要想落地,需要芯片和应用算法的相向而行:
我们的IT设备和系统,通常是经过如下四个演进的阶段,逐渐走向云网边端大融合:
云网边端融合的时代,所有的服务器和设备的计算、网络、存储等资源都统统连成了唯一的一个巨大的资源池,可以非常方便的共享各种各样的资源,软件可以非常方便的部署在任何位置,并且可以非常方便的自适应迁移。
然而,DSA的做法,却跟这一切是背道而驰的:
DSA作为“体系结构黄金年代”的重要理念和解决方案,意味着“百花齐放,百家争鸣”,也意味着计算的架构越来越多,越来越碎片化,越来越难以整合成一个整体,越来越一盘散沙。从技术发展的角度,必然需要走过DSA这样的阶段。但随着各项技术的成熟,必然会逐步走向收敛:通用的、融合的、综合的处理器,通过更少的架构,实现覆盖更多的用户、更多的场景、更多的迭代。
如果不考虑性能劣势的话,CPU是最好的处理器。其通过最基础的加减乘除指令,实现了软件和硬件的解耦。硬件工程师可以不用关心具体场景,只关心处理器的微架构和实现;软件工程师不关心硬件细节,只关心自己的软件编程,基于这些基础的指令集,构建起了软件庞大的生态体系。
GPGPU,依然是成功的。GPGPU相比DSA的优势:
体系结构最根本的矛盾是什么?简单地说,就是性能和灵活性的矛盾,是两者如何平衡甚至兼顾的问题。通常情况下,两者是反比关系,提升一个,另一个会降低。体系结构的优化和创新,本质的,就是在一个要素不变的基础上,尽可能地提升另一要素。
DSA在ASIC基础上,提升了一些灵活性,这是其价值所在。但与此同时,也引入了一些问题。在整个系统中,如果只需要一个特定领域的DSA加速卡,并且不需要GPU等其他加速卡的话,那么整个系统是典型的CPU+DSA的异构计算系统,问题还不突出。
实际的云和边缘场景,是很多场景叠加在一起的综合性场景,不仅仅需要AI加速,还需要虚拟化加速、网络加速、存储加速、安全加速、数据库加速、视频图形处理加速等等。如果每一个领域加速都需要一个物理的加速卡的话:
站在DSA局部的视角,DSA带来了性能的显著提升,并且还确保了一定程度的灵活性。但站在整个系统角度,额外增加的各个DSA之间的数据交互(类似系统解构微服务化之后急速增加的内网东西向流量)是需要CPU来处理的,这使得CPU的性能瓶颈问题变得更加严峻。
DPU目前已经成为行业一个重要的处理器类型,DPU跟智能网卡最大的区别在于:智能网卡是单领域的加速卡,而DPU是多领域加速的集成平台。DPU的出现,说明了,计算机体系结构在从DSA的分离向融合转变:
不考虑物理上多芯片协同的情况下,我们只考虑计算架构。计算架构从串行到并行,从同构到异构,接下来会持续进化到超异构:
系统变得越来越庞大,系统可以分解成很多个子系统,子系统的规模已经达到传统单系统的规模。于是系统变成了宏系统,子系统变成了系统。
软硬件协同是研究单个系统软硬件如何划分、解耦以及再协同的,根据系统的特点,选择CPU、GPU、DSA等硬件处理器类型,如果是DSA等需要开发的硬件,则需要仔细考虑软硬件的工作划分和交互的接口。
软硬件融合是研究宏系统的软硬件“协同”的,每一个系统都是不同层次的软硬件协同,这些系统间还需要确定任务划分、数据交互和工作协同,从而在整个宏系统层次,呈现出:“软件中有硬件,硬件中有软件,软硬件深度地融合在一起”。
x86架构主要在PC和数据中心领域;ARM架构主要在移动领域,目前也在向PC和服务器领域拓展;加州大学伯克利分校开发了RISC-V,RISC-V已成为行业标准的开放ISA。理想情况,如果形成RISC-V的开放生态,没有了跨平台的损耗和风险,大家可以把精力专注于CPU微架构及上层软件的创新。
RISC-V的优势体现在:
如果说CPU选择开放的RISC-v是“选择”(因为还有x86和ARM可以选)的话,那么在未来的超异构计算时代,开放则是“不得不选的唯一选项”。
当一个平台需要支持的处理器类型和架构越来越多,势必意味着在其上运行程序越来越困难,处理器资源利用越来越低,构建生态的难度越来越高。这样,我们就需要:
(全文完)