开发者社区> 超努力的写代码> 正文

聊聊芯片技术趋势

简介: 今年我们看到很多芯片领域出现的“新现象”,也有不少会让你“陷入沉思”的时刻。对我个人来说,苹果M1可能是冲击最大的一个。我从04年开始做手机SoC,08年开始接触ARM,断断续续做到16年。在苹果M1之前,我从来没想过基于ARM的架构可能在性能上超越X86。
+关注继续查看

今年我们看到很多芯片领域出现的“新现象”,也有不少会让你“陷入沉思”的时刻。对我个人来说,苹果M1可能是冲击最大的一个。我从04年开始做手机SoC,08年开始接触ARM,断断续续做到16年。在苹果M1之前,我从来没想过基于ARM的架构可能在性能上超越X86。
当然,M1并不是传统意义上的CPU,而是一颗SoC,所以直接的比较也许并不完全公平。但如果从应用程序的角度来看,运行速度加快,功耗降低,都是实实在在的。
对M1的分析很多,细看下来,大部分架构优化的思路和获得的结果也都是非常自然的(可能也有一些我们不知道的苹果黑科技)。
48.jpg
但为什么苹果之前没人这么做,或者说做不到呢?


问题的关键在于苹果掌握了完整生态和供应链,在有充分的技术积累和丰厚利润之后,可以做更多的“纵向优化”
这个事件本身还不只是技术上的胜利,未来会给整个产业带来深远的影响。当然,从这句话的限定词来看,能成功复制者可能寥寥无几。后面的新闻说微软也打算给Surface自研芯片来看,不知是不是有戏。(我双十一买了台Surface(i5),之后就看到M1)。

49.jpgimage.gif


之前的文章对芯片架构和技术趋势有不少讨论,“通用”到“专用”,“同构”到“异构”,“先进工艺”到“先进封装”,“分而治之”到“跨边界优化”
为什么会有这些趋势,简单说就是被逼的,一方面摩尔定律放缓和Dark Silicon问题,另一方面特定算力需求激增。一句话,要求高了,只有精耕细作了。但问题是,即使这些趋势大家都认可,具体该怎么做呢?真没那么简单。

先说说异构和专用的问题。我们可以看看已经“精耕细作”了很多年的手机芯片。手机SoC是非常典型的异构系统,包括大量的专用处理器,发展到今天,已经极为复杂。
下图是我随便找的一个高通手机芯片的框图,大家可以看一看,除了CPU,GPU,各种DSP和硬件加速器,可以说把异构做到极致了。

50.jpgimage.gif

source: anandtech

为什么手机的主处理器在智能手机刚出现的时候就SoC的形式?也是被手机尺寸,功耗,成本这些限制给逼的,不可能照搬桌面PC独立CPU的架构。这种架构的优势是将整个系统都放在一颗芯片上,而不仅仅是通用的CPU。

其中很多硬件模块都是根据特定功能需求定制的,比如通信基带,ISP,Connectivity,多媒体,语音,定位,可能是基于DSP,也可以是更专用的硬件加速器。这其实也就是我们今天常说的Domain-Specific的概念
另一方面,模块间的通信是在片上解决,效率要高很多。这种SoC/DSA架构的优势是硬件PPA可以极致优化;缺点除了架构复杂度和不同类型硬件的优化之外,异构编程和软件优化也会比较困难。
51.jpg
先不看苹果,由于安卓系统的出现,独立的手机芯片厂商可以把精力集中在底层,反正这些DSP和硬件加速器一般也不开放,都是芯片厂商自己来优化相关软件(常说的firmware)。
这样的架构和生态已经发展了十几年,现存已经不多的独立手机芯片厂商已经很有经验。即便如此,芯片厂商提供的一些新算法的加速库往往还不能令人满意,也从侧面说明了异构专用架构软件优化的难度。

再看苹果,其技术上的优势,很大程度得益于在“封闭”的系统(操作系统也是自己的),有可能实现“纵向优化”。在技术上的优势转化为巨大的利润之后,苹果的芯片就进入良性循环。
52.jpg
实际上,在苹果开始自研芯片之后,可以说整个半导体供应链,从Foundry到EDA/IP都是按照苹果新机发布的节奏在进步。积累到今天,苹果已经具备了挑战传统桌面系统架构的能力。


对于传统的桌面和数据中心处理器,简单的说“不思进取”也不是很公平,CPU本身还是芯片技术的高峰。在它能做到的范围内(主要是硬件),工艺演进,封装演进,架构优化,硬件性能继续提升还是可以预期的。
但它多年形成的生态特征(包括历史包袱)和苹果(还包括其他一些巨头)这样的“封闭”生态大不相同,苹果们能做到的事情它还真做不到。


讨论到这里,我们也不难看出,未来在技术上的优化,传统的分而治之的策略已经越来越困难(或者并不经济),打破边界有可能会实现“降维打击”的效果
53.jpg
虽然好处显而易见,但成功与否的决定因素可能不在技术,而是背后掌控生态和供应链的能力。另一方面,抛开技术原因,越来越复杂的竞争关系,也是推动产业链重新整合的动力。

今年,我们看到Nvidia收购ARM,AMD收购Xilinx,Intel推oneAPI,其实都是这方面的尝试。对于芯片厂商来说,尽量在自己的核心领域实现生态的“垄断”是最高目标。
但是,对于复杂芯片来说,构建软件生态可能要比设计或实现出芯片本身更为复杂。特别是在一些专用领域,单芯片硬件架构趋向简化,但软件栈的实现和产品化挑战很大。
因此,从目前整体状况来看,相对传统芯片公司,科技巨头在软件和系统生态上具有先天的优势的。
image.gif54.jpg

我之前分析过Google情况,有很多芯片厂商很难做的事情,在Google自己的生态里面相对容易(其实是和苹果M1的情况类似)。还有一个例子是这篇文章里JAX这个研究性框架可以很好的发挥TPU的性能未来我们应该能看到更多由科技巨头发起的发自系统需求的跨层次优化。


回顾历史,分而治之(分层优化)是计算机系统和通信系统这样的复杂系统几十年快速发展的关键,未来实现彻底扁平或端到端的优化是不太可能的(这个超越人类能力的问题可能得留给AI),但找到更合理的分层或分块方式是完全有可能的。
比如,我们看到深度学习框架和编译器领域就有很多尝试,一方面打破传统的图和算子的层次进行统一优化是一个广泛关注的路径;另一方面,通过多层IR和编译工具来更合理的实现“分而治之”也很有前景。
苹果M1的例子再次给我们证明了现在确实是“架构的黄金时代”,芯片,软件,系统都还有很多优化空间。重新思考非常必要,甚至“重新设计轮子”有可能是非常合理且有效的选择。


最后说两句“先进封装”的问题。“Chiplet”是今年的热词,历史更久且更准确的技术词汇应该是异构集成(Heterogeneous Integration),有兴趣的朋友可以看看HIR(Heterogeneous Integration Roadmap),有这个领域非常完整的分析和预测。
总的来说,这个技术趋势是比较清晰明确的,而且第一阶段的Chiplet形态(比如HBM)在技术上已经比较成熟,除了成本比较高,在很多高端芯片上已经使用。而且这个技术涉及的供应链比较简单,可以说是花钱就可以解决的问题。
当然,这个方向还是有很多技术挑战的,最终是要走向Monolithic 3D(如下图)。

55.jpg

source: ERI summit 2020

另外一个和异构集成关系很大的是光互联,这两件事要是解决了,芯片和系统架构可能发生产生根本性的变化。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
17699 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
18106 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
11165 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
31897 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
13801 0
腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH=$JAVA_HOME/bin/:$PATH export CLASSPATH=.
12025 0
使用NAT网关轻松为单台云服务器设置多个公网IP
在应用中,有时会遇到用户询问如何使单台云服务器具备多个公网IP的问题。 具体如何操作呢,有了NAT网关这个也不是难题。
33543 0
1946
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载