今年我们看到很多芯片领域出现的“新现象”,也有不少会让你“陷入沉思”的时刻。对我个人来说,苹果M1可能是冲击最大的一个。我从04年开始做手机SoC,08年开始接触ARM,断断续续做到16年。在苹果M1之前,我从来没想过基于ARM的架构可能在性能上超越X86。
当然,M1并不是传统意义上的CPU,而是一颗SoC,所以直接的比较也许并不完全公平。但如果从应用程序的角度来看,运行速度加快,功耗降低,都是实实在在的。
对M1的分析很多,细看下来,大部分架构优化的思路和获得的结果也都是非常自然的(可能也有一些我们不知道的苹果黑科技)。
但为什么苹果之前没人这么做,或者说做不到呢?
问题的关键在于苹果掌握了完整生态和供应链,在有充分的技术积累和丰厚利润之后,可以做更多的“纵向优化”。
这个事件本身还不只是技术上的胜利,未来会给整个产业带来深远的影响。当然,从这句话的限定词来看,能成功复制者可能寥寥无几。后面的新闻说微软也打算给Surface自研芯片来看,不知是不是有戏。(我双十一买了台Surface(i5),之后就看到M1)。
之前的文章对芯片架构和技术趋势有不少讨论,“通用”到“专用”,“同构”到“异构”,“先进工艺”到“先进封装”,“分而治之”到“跨边界优化”。
为什么会有这些趋势,简单说就是被逼的,一方面摩尔定律放缓和Dark Silicon问题,另一方面特定算力需求激增。一句话,要求高了,只有精耕细作了。但问题是,即使这些趋势大家都认可,具体该怎么做呢?真没那么简单。
先说说异构和专用的问题。我们可以看看已经“精耕细作”了很多年的手机芯片。手机SoC是非常典型的异构系统,包括大量的专用处理器,发展到今天,已经极为复杂。
下图是我随便找的一个高通手机芯片的框图,大家可以看一看,除了CPU,GPU,各种DSP和硬件加速器,可以说把异构做到极致了。
source: anandtech
为什么手机的主处理器在智能手机刚出现的时候就SoC的形式?也是被手机尺寸,功耗,成本这些限制给逼的,不可能照搬桌面PC独立CPU的架构。这种架构的优势是将整个系统都放在一颗芯片上,而不仅仅是通用的CPU。
其中很多硬件模块都是根据特定功能需求定制的,比如通信基带,ISP,Connectivity,多媒体,语音,定位,可能是基于DSP,也可以是更专用的硬件加速器。这其实也就是我们今天常说的Domain-Specific的概念。
另一方面,模块间的通信是在片上解决,效率要高很多。这种SoC/DSA架构的优势是硬件PPA可以极致优化;缺点除了架构复杂度和不同类型硬件的优化之外,异构编程和软件优化也会比较困难。
先不看苹果,由于安卓系统的出现,独立的手机芯片厂商可以把精力集中在底层,反正这些DSP和硬件加速器一般也不开放,都是芯片厂商自己来优化相关软件(常说的firmware)。
这样的架构和生态已经发展了十几年,现存已经不多的独立手机芯片厂商已经很有经验。即便如此,芯片厂商提供的一些新算法的加速库往往还不能令人满意,也从侧面说明了异构专用架构软件优化的难度。
再看苹果,其技术上的优势,很大程度得益于在“封闭”的系统(操作系统也是自己的),有可能实现“纵向优化”。在技术上的优势转化为巨大的利润之后,苹果的芯片就进入良性循环。
实际上,在苹果开始自研芯片之后,可以说整个半导体供应链,从Foundry到EDA/IP都是按照苹果新机发布的节奏在进步。积累到今天,苹果已经具备了挑战传统桌面系统架构的能力。
对于传统的桌面和数据中心处理器,简单的说“不思进取”也不是很公平,CPU本身还是芯片技术的高峰。在它能做到的范围内(主要是硬件),工艺演进,封装演进,架构优化,硬件性能继续提升还是可以预期的。
但它多年形成的生态特征(包括历史包袱)和苹果(还包括其他一些巨头)这样的“封闭”生态大不相同,苹果们能做到的事情它还真做不到。
讨论到这里,我们也不难看出,未来在技术上的优化,传统的分而治之的策略已经越来越困难(或者并不经济),打破边界有可能会实现“降维打击”的效果。
虽然好处显而易见,但成功与否的决定因素可能不在技术,而是背后掌控生态和供应链的能力。另一方面,抛开技术原因,越来越复杂的竞争关系,也是推动产业链重新整合的动力。
今年,我们看到Nvidia收购ARM,AMD收购Xilinx,Intel推oneAPI,其实都是这方面的尝试。对于芯片厂商来说,尽量在自己的核心领域实现生态的“垄断”是最高目标。
但是,对于复杂芯片来说,构建软件生态可能要比设计或实现出芯片本身更为复杂。特别是在一些专用领域,单芯片硬件架构趋向简化,但软件栈的实现和产品化挑战很大。
因此,从目前整体状况来看,相对传统芯片公司,科技巨头在软件和系统生态上具有先天的优势的。
我之前分析过Google情况,有很多芯片厂商很难做的事情,在Google自己的生态里面相对容易(其实是和苹果M1的情况类似)。还有一个例子是这篇文章里JAX这个研究性框架可以很好的发挥TPU的性能。未来我们应该能看到更多由科技巨头发起的发自系统需求的跨层次优化。
回顾历史,分而治之(分层优化)是计算机系统和通信系统这样的复杂系统几十年快速发展的关键,未来实现彻底扁平或端到端的优化是不太可能的(这个超越人类能力的问题可能得留给AI),但找到更合理的分层或分块方式是完全有可能的。
比如,我们看到深度学习框架和编译器领域就有很多尝试,一方面打破传统的图和算子的层次进行统一优化是一个广泛关注的路径;另一方面,通过多层IR和编译工具来更合理的实现“分而治之”也很有前景。
苹果M1的例子再次给我们证明了现在确实是“架构的黄金时代”,芯片,软件,系统都还有很多优化空间。重新思考非常必要,甚至“重新设计轮子”有可能是非常合理且有效的选择。
最后说两句“先进封装”的问题。“Chiplet”是今年的热词,历史更久且更准确的技术词汇应该是异构集成(Heterogeneous Integration),有兴趣的朋友可以看看HIR(Heterogeneous Integration Roadmap),有这个领域非常完整的分析和预测。
总的来说,这个技术趋势是比较清晰明确的,而且第一阶段的Chiplet形态(比如HBM)在技术上已经比较成熟,除了成本比较高,在很多高端芯片上已经使用。而且这个技术涉及的供应链比较简单,可以说是花钱就可以解决的问题。
当然,这个方向还是有很多技术挑战的,最终是要走向Monolithic 3D(如下图)。
source: ERI summit 2020
另外一个和异构集成关系很大的是光互联,这两件事要是解决了,芯片和系统架构可能发生产生根本性的变化。