编者按
软件热点层出不穷,并且快速迭代;CPU性能瓶颈,摩尔定律失效;图灵奖获得者John Hennessy和David Patterson在2017年提出了“计算机体系结构的黄金年代”,给出的解决方案是特定领域架构DSA。
如今,“黄金年代”时间已经过半,我们再对这一时期的体系结构发展进行分析、总结和展望:
- DSA成功吗?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(成功或不成功)的案例,来进行分析:
- AI DSA。谷歌的TPU,是第一款真正意义上的DSA芯片。很多AI芯片的架构也是类似思路下的产物,都是期望在ASIC级别性能的基础上实现一定程度的可编程能力。但不幸的是,AI场景仍属于应用层次:应用算法迭代迅速,并且种类繁多;这导致AI DSA的落地并不算很成功。本质原因是:DSA架构的灵活性无法达到应用层算法对灵活性的要求。
- 存算一体。存算一体是一个非常宽泛的概念,包括近存计算、存内计算等,甚至存内计算还可以分为内存储计算和内存执行计算。不管是聚焦AI或其他领域,严格来说,存算一体是一种微架构及实现的技术;在系统架构层次,存算一体属于DSA的范畴。存算一体也必须要面对DSA的核心问题:芯片架构灵活性和领域算法灵活性的匹配问题。
- 网络DSA。Intel通过PISA架构的网络DSA实现了ASIC级别性能的基础上的软件可编程,可实现绝大部分网络协议和功能的编程。网络DSA是DSA理念下比较成功的案例。本质的原因是,网络任务属于基础设施层工作,其灵活性要求相对不高。因此可以总结:DSA架构的灵活性可以满足基础设施层任务对灵活性的要求。
除此之外,还需要考虑最终场景落地的问题。站在最终落地场景和解决方案的视角:
- 客户不可能只需要一个DSA,客户需要的是综合性的解决方案,DSA实现的只是客户场景的一小部分。
- 并且,在云和边缘数据中心,当CSP投入数以亿计资金,上架数以万计物理服务器的时候,它并不知道具体的某台服务器最终会售卖给哪个用户,这个用户到底会在服务器上面跑什么应用。并且,未来,这个用户的服务器资源回收之后再卖个下一个用户,下一个用户又用来干什么,也是不知道的。
因此,最终的落地场景需要的一定是综合的并且相对通用的解决方案;并且,还需要在通用的基础上尽可能地提升性能降低成本。
各种独立DSA,使得系统越来越碎片化,这跟互联网云和边缘计算、云网边端融合等宏观综合宏场景的发展趋势是背道而驰的。
2 DSA的价值所在
2.1 相比ASIC,DSA具有一定的灵活性优势
在系统复杂度较低的时候,ASIC的极致性能和效率,是非常合适的。但随着系统复杂度的上升,ASIC的劣势逐渐就暴露出来了:
- ASIC的迭代跟系统迭代不匹配。复杂系统的变化要远高于简单系统,而ASIC是紧耦合的设计,没法随着系统功能和业务逻辑的快速变化而变化。随着系统复杂度的进一步上升,ASIC和系统的灵活性冲突会愈演愈烈。
- ASIC性能效率不一定最高。ASIC功能确定,为了覆盖更多的场景,势必需要功能超集。但随着系统功能的增多,以及每个用户能使用到的功能比例相对减小,功能超集反而拖累了ASIC的性能和资源效率。
- ASIC硬件开发难度大。硬件开发的难度远大于软件,ASIC由于系统紧耦合的缘故,需要把业务逻辑都细化到硬件电路设计中去,这反而显著地增加硬件开发的难度。
- ASIC难以大规模。因为上述ASIC硬件开发的难度,这反过来使得ASIC设计很难做到非常大的规模,而这就约束了其可以支撑的系统规模大小。
- 完全硬件ASIC,用户对功能和业务逻辑没有太多话语权。用户只是“User”,而不是“Developer”,ASIC会约束用户的业务创新。
DSA可以在ASIC级别,一定程度上实现功能和业务逻辑的可编程,实现性能和部分灵活性的兼顾,并且显著改善ASIC的上述各种问题和挑战。因此,DSA逐渐成为目前领域加速的主流解决方案。
例如,网络DSA的发展。SDN之前,网络芯片的主流实现是ASIC;SDN发展的第一步,通过Openflow实现了控制面可编程;第二步,通过P4实现了数据面的可编程,并且拥有了支持P4可编程的DSA:Barefoot的PISA架构和Tofino芯片。
2.2 DSA比较适合基础实施层加速
系统是由分层分块的各个组件组成的,这些组件大体上分为三类:
- 基础设施层。底层的业务逻辑相对最稳定。
- 应用层。由于硬件平台运行具体哪些应用的不确定性,以及应用的快速升级迭代等,使得应用层的变化是最快的。
- 应用层可加速部分。应用层可抽离出来的一些性能敏感的算法,其灵活性介于基础设施层和应用之间,变化相对适中。
如上表格所示,每一个处理器引擎类型都有其优势之处,也都有其劣势之处:
- CPU灵活性最好,目前数据中心由于对灵活性的要求很高,因此服务器主要还是以CPU处理器为主。但CPU的性能是相对最低的。
- GPGPU相比CPU提升了性能,灵活性虽然有了一些降低,但依然能够满足很多场景的要求。比如AI算法和应用性能敏感,并且更新换代很快,就比较适合GPGPU架构。
- ASIC由于其最低的灵活性,导致在云和边缘等复杂系统中没有用武之地。
- DSA是ASIC的回调,增加了一些灵活性。实践证明:DSA不适合变化较快对灵活性要求较高的应用级的场景,如AI加速场景;DSA适合变化较慢灵活性要求较低的场景,如网络加速场景。
2.3 DSA,是算力的主力支撑
一方面,复杂系统都存在一个显著的规律“二八定律”,也即是说,系统的大约80%的计算量属于基础设施层,属于适合DSA加速的部分;另一方面,DSA能够覆盖足够大的一个领域,并且其一定程度的可编程能力,可以满足系统的基础设施层特定领域任务对灵活性的要求。
DSA架构的处理器(引擎)就可以在满足系统灵活性要求的情况下,实现最极致的性能,以及最极致的性价比。
我们再从整个系统角度分析,可以通俗地将系统要进行的工作处理当做一个塔防游戏:
- 依据系统的“二八定律”,在一个系统里,DSA完成80%计算量,GPU完成16%计算量,CPU兜底完成4%计算量。
- 软硬件融合技术,可以让硬件的功能更加强大,具有一些通常软件才有的特征和能力,从而进一步提高系统硬件加速的比例。这样,DSA可以完成90%的计算量,而留给CPU和GPU的只有剩下的10%。
总之,DSA架构处理器必然是整个系统中的算力中坚。
3 DSA的不足之处
3.1 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芯片未来要想落地,需要芯片和应用算法的相向而行:
- 芯片增加更多的灵活性能力(典型案例:Tenstorrent Wormhole,在提升灵活性的同时,提供极致的系统可扩展性);
- 随着时间推移,AI算法的灵活性降低,逐渐的沉淀成基础设施层任务。
3.2 DSA使得系统越来越碎片化,跟云网边端融合的大趋势背道而驰
我们的IT设备和系统,通常是经过如下四个演进的阶段,逐渐走向云网边端大融合:
- 第一个阶段,孤岛。所有的设备是独立的,没有联网,也就没有云网边端的说法。
- 第二个阶段,互联。也就是我们的互联网,把设备连到一起,设备和设备之间可以通信。
- 第三个阶段,协同。通常的C/S架构就是典型的协同,这个时候,有了云边端的划分,谁更擅长于干什么事情就分配什么事情,大家协同着一起把整个系统的事情做好。
- 第四个阶段,融合。协同某种程度上代表着静态,随着时间的发展,可能初始任务划分不一定能适应系统的发展;而融合代表着动态以及更多的自适应性。服务拆分成微服务,客户端拆分成瘦客户端和微服务。这些微服务可以完全自适应的运行在云端、网端、边缘端或者终端,或者各个位置端可能都有。
云网边端融合的时代,所有的服务器和设备的计算、网络、存储等资源都统统连成了唯一的一个巨大的资源池,可以非常方便的共享各种各样的资源,软件可以非常方便的部署在任何位置,并且可以非常方便的自适应迁移。
然而,DSA的做法,却跟这一切是背道而驰的:
- 首先,一个领域DSA芯片,就意味着架构上的一个孤岛。
- 其次,即使同一领域,也有不同公司的不同架构实现。这些不同架构处理器的算力,很难被整合到宏观大算力池里。
DSA作为“体系结构黄金年代”的重要理念和解决方案,意味着“百花齐放,百家争鸣”,也意味着计算的架构越来越多,越来越碎片化,越来越难以整合成一个整体,越来越一盘散沙。从技术发展的角度,必然需要走过DSA这样的阶段。但随着各项技术的成熟,必然会逐步走向收敛:通用的、融合的、综合的处理器,通过更少的架构,实现覆盖更多的用户、更多的场景、更多的迭代。
3.3 DSA没有解决体系结构的根本矛盾
如果不考虑性能劣势的话,CPU是最好的处理器。其通过最基础的加减乘除指令,实现了软件和硬件的解耦。硬件工程师可以不用关心具体场景,只关心处理器的微架构和实现;软件工程师不关心硬件细节,只关心自己的软件编程,基于这些基础的指令集,构建起了软件庞大的生态体系。
GPGPU,依然是成功的。GPGPU相比DSA的优势:
- GPGPU可以覆盖很多个领域,而DSA只能覆盖一个。在芯片一次性成本越来越高的今天,覆盖更多领域意味着更多的产品销量以及更低的成本(大芯片成本中一次性均摊成本占比很高)。
- NVIDIA GPGPU以及CUDA构建起完整的生态,而DSA架构则趋向碎片化,构建生态的难度很大。
- 热点应用意味着最丰厚的价值。GPGPU的性能和灵活性均衡使其能很好地满足目前很多热点应用的性能和灵活性要求;而DSA则难以满足热点应用所需的灵活性(因为热点应用必然快速迭代)。
体系结构最根本的矛盾是什么?简单地说,就是性能和灵活性的矛盾,是两者如何平衡甚至兼顾的问题。通常情况下,两者是反比关系,提升一个,另一个会降低。体系结构的优化和创新,本质的,就是在一个要素不变的基础上,尽可能地提升另一要素。
DSA在ASIC基础上,提升了一些灵活性,这是其价值所在。但与此同时,也引入了一些问题。在整个系统中,如果只需要一个特定领域的DSA加速卡,并且不需要GPU等其他加速卡的话,那么整个系统是典型的CPU+DSA的异构计算系统,问题还不突出。
实际的云和边缘场景,是很多场景叠加在一起的综合性场景,不仅仅需要AI加速,还需要虚拟化加速、网络加速、存储加速、安全加速、数据库加速、视频图形处理加速等等。如果每一个领域加速都需要一个物理的加速卡的话:
- 首先服务器的物理空间和接口,就无法满足这么多张卡的使用。
- 此外这些卡之间的交互又是一笔额外的代价,在CPU性能捉襟见肘的今天,CPU根本无法承担DSA之间的数据交互处理。
站在DSA局部的视角,DSA带来了性能的显著提升,并且还确保了一定程度的灵活性。但站在整个系统角度,额外增加的各个DSA之间的数据交互(类似系统解构微服务化之后急速增加的内网东西向流量)是需要CPU来处理的,这使得CPU的性能瓶颈问题变得更加严峻。
4 黄金年代之后,体系结构何去何从?
4.1 从分离到融合
DPU目前已经成为行业一个重要的处理器类型,DPU跟智能网卡最大的区别在于:智能网卡是单领域的加速卡,而DPU是多领域加速的集成平台。DPU的出现,说明了,计算机体系结构在从DSA的分离向融合转变:
- 第一阶段,CPU单一通用计算平台;
- 第二阶段,从合到分,CPU+GPU/DSA的异构计算平台;
- 第三阶段,从分到合的起点,以DPU为中心的异构计算平台;
- 第四阶段,从分到合,众多异构整合重构的、更高效的超异构融合计算平台。
4.2 从单异构到超异构
不考虑物理上多芯片协同的情况下,我们只考虑计算架构。计算架构从串行到并行,从同构到异构,接下来会持续进化到超异构:
- 第一阶段,串行计算。单核CPU和ASIC等都属于串行计算。
- 第二阶段,同构并行计算。CPU多核并行属于同构并行计算。
- 第三阶段,异构并行计算。CPU+GPU、CPU+DSA以及SOC等属于异构并行计算。
- 未来,将走向第四阶段,超异构并行阶段。把众多的CPU+GPU+DSAs“有机”整合起来,形成超异构。
4.3 从软硬件协同到软硬件融合
系统变得越来越庞大,系统可以分解成很多个子系统,子系统的规模已经达到传统单系统的规模。于是系统变成了宏系统,子系统变成了系统。
软硬件协同是研究单个系统软硬件如何划分、解耦以及再协同的,根据系统的特点,选择CPU、GPU、DSA等硬件处理器类型,如果是DSA等需要开发的硬件,则需要仔细考虑软硬件的工作划分和交互的接口。
软硬件融合是研究宏系统的软硬件“协同”的,每一个系统都是不同层次的软硬件协同,这些系统间还需要确定任务划分、数据交互和工作协同,从而在整个宏系统层次,呈现出:“软件中有硬件,硬件中有软件,软硬件深度地融合在一起”。
4.4 从开放到更开放
x86架构主要在PC和数据中心领域;ARM架构主要在移动领域,目前也在向PC和服务器领域拓展;加州大学伯克利分校开发了RISC-V,RISC-V已成为行业标准的开放ISA。理想情况,如果形成RISC-V的开放生态,没有了跨平台的损耗和风险,大家可以把精力专注于CPU微架构及上层软件的创新。
RISC-V的优势体现在:
- 免费。指令集架构免费获取,不需要授权,没有商业上掣肘。
- 开放性。任何厂家都可以设计自己的RISC-v CPU,共建一套开放的生态,共荣共生。
- 标准化。最关键的价值。RISC-v的开放性,使得其生态会更加强大;RISC-v如果变成主流架构,就没有了跨平台成本。
- 简洁高效。没有历史包袱,ISA更高效。
如果说CPU选择开放的RISC-v是“选择”(因为还有x86和ARM可以选)的话,那么在未来的超异构计算时代,开放则是“不得不选的唯一选项”。
当一个平台需要支持的处理器类型和架构越来越多,势必意味着在其上运行程序越来越困难,处理器资源利用越来越低,构建生态的难度越来越高。这样,我们就需要:
- 一方面,需要从硬件定义软件,逐步转向软件定义硬件。并且,软件需要原生支持硬件加速。
- 另外,一定需要构建高效的、标准的、开放的生态体系(尽可能减少各种类型架构的数量,让架构的数量逐渐收敛)。
- 最后,还需要开放的、不同类型架构处理器(引擎)的,以及跨同类型处理器的不同架构的应用开发框架。
(全文完)
来源:软硬件融合
微信公众号:
相关文章推荐
更多软硬件技术干货请关注软硬件融合专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。