编者按
2009年,NVIDIA黄教主发表了影响深远的论断:“NVIDIA是一家软件公司”。这个时期的NVIDIA,已经开始把资源聚焦在GPGPU(GPU是图像加速卡;GPGPU是并行计算平台,既可以做图形加速,还可以做其他并行计算加速),以及支撑GPGPU发展的CUDA之上。随着AI等性能敏感场景的大规模爆发,NVIDIA市值超过了Intel等一众竞争对手,迎来了辉煌的NVIDIA时代。
之后,更多的芯片公司,为了让自己的芯片被客户更好更方便地使用,逐渐把更多的资源聚焦在框架等软件能力方面。芯片公司,逐渐地变成了软件公司。
如今,芯片行业面临新的挑战:众多互联网客户开始自研芯片。其本质原因是传统芯片公司的创新不足,没有合适的产品满足互联网客户的业务发展需要。
未来,芯片公司仅仅把自己变成软件公司还不够,需要进一步的自我革新,从软件公司变成互联网公司,比客户更懂客户:能够深层次理解用户的需求和痛点,能够提供显著竞争优势的性能价格比,能够满足客户功能差异化和快速业务迭代,能够支撑用户业务和价值的快速创新。
传统芯片公司的传统思路是这样的:设计性能、成本、功耗都非常均衡的芯片,再配套相关的驱动和开发工具包,更好的则有开发库和框架,甚至提供达到Turnkey级别的参考设计方案。
一般来说,能做到这样的芯片公司已经足够优秀。但世易时移,只达到这些要求,还远远不够。因为这样的方案是静态的、局部的、短期的;缺乏动态的、宏观的、长期的解决方案。
CPU是最通用的处理器:CPU指令是最基础的加减乘除,我们可以用这些指令最基本的指令组合出任何我们想要的程序和软件。但随着性能需求的不断上升,我们不得不通过硬件加速的方式不断地提升性能。
硬件加速的单位计算可以当做是一条非常复杂的宏指令。硬件加速的劣势在于,由于单位计算的复杂度,导致硬件所能支持的系统灵活性急剧下降。
比如,AI处理器,为了更好地支持张量计算,提供了很强大的张量计算能力。但一方面受限于算法模型的多种多样,另一方面受限于不同AI处理器架构的多种多样(甚至出现同一家公司三代芯片架构均不相同的情况,这里的架构指的是加速器呈现给Host CPU的接口架构,不是具体实现的微架构),很难快速把AI模型高效的映射到特定架构的AI处理器,从而导致性能效率不高,开发效率低等易用性问题。
这些问题导致AI处理器面对的场景规模受限,场景的生命周期受限,从而导致芯片难以大规模落地,芯片的价值难以发挥。
CPU是通用的解决方案,适合于几乎所有场景;GPGPU是并行计算,适合于若干个常见的领域加速场景;DSA,只适合于某个特定领域;ASIC,只适合于某个特定场景。从CPU到ASIC,覆盖的场景越来越小,覆盖场景的生命周期越来越短。
我们提供芯片A帮助客户解决问题a,提供芯片B帮助客户解决问题b,依此类推。但这样会产生有很多问题:
在手机等终端上,软件依附于硬件而存在。在提供硬件的基础上,提供相关的驱动及其他相关的开发和参考设计即可。不需要关注不同架构芯片的跨平台问题。而在云计算、边缘计算甚至一些超级智慧终端(如自动驾驶芯片NVIDIA Thor等)上,软件实体和硬件实体是完全独立的,软件实体可以运行在不同的硬件平台;反过来,硬件实体也可以支持不同的软件实体运行。因此,软件跨平台成为非常重要的能力需求。
在软件虚拟化时代,可以通过虚拟化技术屏蔽硬件接口/架构差异性,可以实现软件从一个硬件迁移到另一个硬件。而在硬件虚拟化时代,软硬件的接口直接暴露给VM/容器等虚拟化实体,以及越来越多的异构计算引擎的加入,为了继续支持软件可迁移,越来越需要考虑硬件架构的问题。硬件架构一致性问题,更加凸显!
芯片设计不再是一家公司考虑一个型号一个架构的问题,而是更多的要思考“和主流生态兼容,和别人的芯片架构兼容,并且高效、标准、开放,甚至还能持续演进”的问题。
之前有篇文章:亚马逊AWS自研芯片深度分析,详细分析了AWS的自研芯片之路。
目前,几乎所有有实力的互联网公司都在自研芯片,有很多文章对这些信息进行梳理,这里就不再赘述。
互联网及云计算公司的业务场景非常复杂,其与硬件相关的特点主要表现在:
总之,云计算等宏观复杂场景,具有很多超出个体硬件的很多高级的特征,这需要硬件平台能够支持足够的系统灵活性,来满足系统的当前和未来各种需要。
云计算等复杂计算场景,对灵活性的要求大于对性能的要求。在性能满足要求的情况下,CPU是最合适的云计算平台。如今,CPU的性能逐渐瓶颈,不得不硬件加速来提升性能。
这也就是目前的矛盾之所在:一方面,芯片需要跟具体客户的具体业务深度结合来实现业务的硬件加速;另一方面,芯片却要适配不同客户的业务功能差异性,以及业务逻辑的长期快速迭代。行业里目前主要有如下一些形式来应对这些挑战。
方式一,针对场景,提供(自认为)最优的业务加速方案给客户。
存在的问题是:
方式二,供应商跟客户深度合作,做满足客户需求的产品。大客户自研芯片,也可以算到跟客户深度合作这一类(内部客户也是客户)。
这样做的优势是:
劣势可能是:
那么,是否还存在第三种解决方案?
方式三:做平台化产品,客户通过编程实现所需求的功能。
平台的可编程能力,是可以非常轻松做到的。但如何确保ASIC级别极致性能的同时,依然由用户掌控一切,由用户编程决定业务逻辑,则是一个有挑战性的话题。
如果能够做到:足够性能价格比(数量级提升的极致性能,更便宜的价格)、足够通用(覆盖更多客户的更多场景)、足够灵活(能够覆盖客户长期的、快速的业务逻辑演进)、足够易用(兼容已有开发环境和业务逻辑,客户平滑迁移,没有太多学习成本,没有平台依赖),实现“用户软件定义一切,平台硬件加速一切”的目标,则是未来大家都需要面临和解决的挑战。
从短期来看,当一个行业出现变革的时候,客户比供应商更早感受到“痛苦”,也更需要更多的底层创新来驱动自身业务的竞争力提升。但从更长期的视角来看,情况却并不一定如此。
互联网行业,目前有很多客户开始自研芯片,这是一个重要的趋势。很多人认为,互联网公司为了构建自己的护城河,开始构建一套“封闭”体系。而我们更多的是认为:随着互联网云和边缘计算的发展,上层的软件业务对底层硬件要求越来越高。而传统的芯片公司,虽然有一些先进的技术,但局限于闭门造车,这些技术并没有为客户带来新的更大的价值,反而在一些方面,约束了客户的价值发挥。这些矛盾,逼迫着一些有实力自研的用户,不得不“自己动手,丰衣足食”,开始了自研之路。
那么,“想喝牛奶,真的一定要自己养牛吗?”用户的本质诉求到底是什么?这里我们深入分析一下:
如果存在通用的芯片方案,能够满足上述这些需求,用户不会产生平台依赖,不对用户自身业务的核心竞争力构成威胁,并且功能更加强大,性能更加强劲,价格更具有显著优势,客户还需要自研吗?
回想互联网巨头自研芯片这件事情,更多的感受是,行业和技术都在巨变:云计算、边缘计算出现后,系统的规模数量级膨胀。能深刻理解这些系统需求的莫过于互联网公司,而芯片公司对系统的把握,就有点捉襟见肘。
但从更宏观、更长期以及发展的视角看,整个全球产业是国际化大分工的,每个地区每个公司,都做自己最擅长的事情。最经典的例子,莫过于台积电。台积电之前,设计和制造是一体的,典型的企业是Intel、AMD和TI。台积电创造性地只做foundry,不做设计,从此后才有了Fabless。记得在十多年前的时候,Intel仍如日中天,很多人羡慕Intel这种能从设计到工艺的全流程优化,所以做的产品性能成本是别人无法达到的。而如今,在台积电、三星等的竞争下,Intel自己的设计和制造成了相互拖累。而台积电所构筑的核心竞争优势,使得众多TOP级的Fabless根本就不会去想着自建制造工厂,或者说不是不想而是不能。
人类发展的过程,就是从“男耕女织”到“手工作坊”,再到流水线的“工业化大生产”,再到现在的“全球化大分工”。从更宏大更长期的视角看,随着时间推移,很多技术会沉淀,云计算这样的互联网底层技术也不例外。
当然,底层的芯片公司,需要不断地自我革新,才能真正帮助客户,成就客户,也成就自己。
我们简单定义一下三个层次的系统分类:
复杂系统场景如云计算、边缘计算和超级终端场景:需要支持操作系统和虚拟化,包括虚机、容器等不同层次虚拟化;需要支持资源切分;需要支持系统、资源和性能隔离;需要支持软件跨硬件平台,包括硬件接口抽象和热迁移等。
从系统的角度看:
系统的规模相比以往提高了多个数量级,变成了更加复杂的宏系统:
系统规模越来越多,系统的技术体系发生巨变,系统的架构在不断重构,芯片公司/团队也需要自我升级:
(全文完)
◉ 点击访问网址,观看“软硬件融合”直播回放:
https://aijishu.com/l/1110000000344055。