# 17|拓展阅读:聊聊 ARM 与 RISC-V 你好,我是邵巍。 我们在正式开始这一讲之前,先回顾一下前面的课程,为什么Intel会做行业第一?因为它有掌握成本结构的IDM模式,有符合摩尔定律的Tick-Tock策略,这些都对。但除此之外,还有一个非常重要的因素,那就是Intel掌握了x86指令集。 想想为什么AMD能与Intel常年竞争?AMD甚至在濒临破产的边缘,连总部大楼都卖了还能起死回生,重新来个AMD YES?就是因为AMD和Intel分享了x86的指令集。 我们前面讲硬件的内容偏多,这一讲,我们就聊聊指令集。其实如果要把指令集讲清楚,估计能开设一个新的专栏,这里我把它作为拓展阅读,就简单聊聊ARM和RISC-V这两个在业内比较有话题性的指令集吧。 先来说说定义,什么叫指令集呢?业界泰斗、ACM和IEEE两院院士、2017年图灵奖得主、RISC-V基金会的董事会副主席David Patterson给了非常通俗易懂的定义:**软件通过一个专业词汇上称为指令集的东西和硬件讲话**。换句话说,指令集是软硬件之间沟通的桥梁。如果在晶体管、集成电路和摩尔定律之外,再给一个重点概念,那就是指令集了。 可能你平时看新闻,看到ISA、架构、指令集这些词都混在一起用,觉得有些疑惑,其实ISA=指令集=架构,都是一个意思。而实现了一个指令集的CPU叫微架构。 我给你举个例子,ARMv8,这是一个指令集,也是一个架构版本。ARM的Cortex-A72处理器,就是一个实现了ARMv8指令集的具体CPU,是一个微架构。ARM的Cortex-A72是一个支持ARMv8指令集的CPU IP,就是一堆RTL代码。瑞芯微的RK3399芯片就是一个集成了2个Cortex- A72之后的芯片,是一个物理体,这个芯片支持ARMv8指令集。凡是支持ARMv8的软件,都可以在RK3399上运行。 当我们说ARM的时候,我们不太关注这个拥有6000员工,总部在英国但被软银收购后已经成为一家日本公司的企业故事,或者是在网上可以公开看到的那本5000多页的 [ARMv8指令集手册](https://developer.arm.com/documentation/ddi0487/ga)。我们更多提到的是硬件侧高通的骁龙、联发科的天玑、华为的麒麟、三星的Galaxy、AWS的Graviton、苹果的全家桶,和软件侧的Android、iOS、Red Hat、Ubuntu、SUSE、麒麟OS,等等,它们都在ARM的生态系统里。 我们关注的是整个ARM生态系统。 类似的,我们在说x86的时候,也不仅仅指的是Intel和AMD,还有在x86生态系统里的微软、Linux、Oracle、SAP等等。但是x86,并不是一个公开授权的指令集,虽然并不仅仅有Intel和AMD两家,但是**对于新入****局****者来说,做x86指令集的机会几乎微乎其微**。相对来说,**ARM和RISC-V都是开放授权的指令集**。ARM是商业授权指令集,RISC-V是开源的指令集。至于CPU核,也就是微架构,两家都是商业授权模式,就是要付费的。 2017年,以微处理器分析闻名的行业分析公司Linley Group在一次RISC-V会议上做开场主题演讲时展示过一页最受欢迎的指令集,如果按照支持不同指令集的CPU个数来看,ARM是最多的,从饼图上看,这是压倒性的优势。但是如果按照营收来算,x86因为高单价(ASP,平均销售价格)是最赚钱的指令集。也就是说目前这两个最流行的指令集,一个赚了钱场,一个赚了人场。 ![](https://static001.geekbang.org/resource/image/45/0f/45dbed49392735143ebe756ba667720f.jpg?wh=4216x2235) 当年Intel推出x86指令集的时候,已是万人大厂,还拿下了PC这个关键市场,而彼时微软才刚刚创立,不足10人,因此这是一个先建硬件再建软件的历程。而ARM是靠着自己的灵活授权模式,搭着当年德州仪器的大船杀入到手机市场,并在功能机年代拿下手机这个关键市场的。然后先有诺基亚的手机操作系统塞班,然后再有的Android。 在移动互联网时代,ARM也是运气好,Intel没有答应苹果的定制要求,因此苹果就选了ARM这个现成的CPU IP,也采用了既有的指令集,再搭建iOS系统。因此ARM 赶上的是硬件统一,软件分裂,然后对齐到硬件上的过程。 那么开始于2010年的RISC-V呢?我推荐你读一下中国科学院计算技术研究所包云岗老师的解读和介绍。包老师团队翻译了RISC-V手册,副标题是“[一本开源指令集的指南](http://riscvbook.com/chinese/RISC-V-Reader-Chinese-v2p1.pdf) ”。 在这里我就简单从我的角度聊聊RISC-V。 RISC-V诞生于美国UC Berkeley大学,最初是个开放为教学服务的指令集。但RISC-V因为有着精简、高效、低能耗、模块化、可拓展、免费开放、无历史负累低效指令等优势,很快就出圈了,因此RISC-V团队在认识到它的价值之后,就决定将之推出市场进行商业化探索。 RISC-V架构秉承简单的设计哲学,完全抛弃历史包袱,从轻上路,借助计算机体系结构,经过多年的发展已经成为比较成熟的技术。RISC-V基础指令集则只有40多条,加上其他的模块化扩展指令总共几十条指令。RISC-V的规范文档仅有145页,而“特权架构文档”这样重要的内容,篇幅也仅为91页。 如果说ARM借助IP授权的商业模式,降低了CPU设计难度,让信息技术世界进入泛处理器时代,那么RISC-V就是以免费开放的开源指令集模式,降低了CPU IP的设计门槛,让芯片行业进入到一个满是CPU IP的时代。RISC-V目前已经有200多家成员,你可以看这张大厂logo云集图片,这张图来自RISC-V基金会。 ![](https://static001.geekbang.org/resource/image/f5/d4/f53f3c901800a082f0f9cf7562a437d4.png?wh=2314x1272) 不过所有的技术或者商业模式优势,最终还是要转化成商业成功。目前所有参与RISC-V的企业,其实还是小公司居多,或者是大公司的小项目有涉及,还没有特别赚钱的。那什么算是商业成功呢?依据我的经验以及总结ARM成功的历史,我列了三条RISC-V作为指令集的成功标志: 1. 最新工艺的SoC量产 2. 有软件支持的里程碑 3. 支持杀手级应用或者说核心市场的25%市场份额 我觉得达到任意一个即可,当然最终肯定都会有,但是成功的起点是拿下其中之一。 学习到这里,你如果对RISC-V仍然感兴趣,我建议你去读一下John Hennessy 和 David Patterson 这两位图灵奖获得者,在 2019 年发表的文章[《计算机架构的新黄金时代》](https://cacm.acm.org/magazines/2019/2/234352-a-new-golden-age-for-computer-architecture/fulltext)(中文版可以看[这里](https://zhuanlan.zhihu.com/p/47019709)),你可能会对RISC-V有一个全新的认识。如果把它当通用CPU,它生得晚了,可是如果把它当作领域专用架构DSA(Domain Specific Architecture),这种模块化的设计,非常有价值,而且它是先立标准、开源开放,这样碎片化的生态累积起来更灵活更高效,反而更有机会做大。 但是我想说生态始终还是要统一的,要有人掌握灵活和标准之间的平衡,否则软件投资无法得到保障,最终还是一盘散沙。 最后,我用一张1992年微处理器论坛的老照片作为结尾。指令集并不算一个特别有技术难度的项目,1960年代,IBM的每台计算机都有自己的指令集和工具。1992年,那张图上也是有满满的指令集。都说我们芯片这行做公司容易死,但其实图里的公司,还是剩下了大半,而指令集就剩下两个了。 ![](https://static001.geekbang.org/resource/image/91/52/91c7b0c54cffe9aa085034843d2b6452.jpg?wh=2200x5850) 计算机指令集的发展,是“长坡滚雪球”,要有核心,不能碎,或者说生态不能分裂,还要持续稳定地不停地滚动,即保持演进,与时俱进。当然还要这个“坡”够长够大,才有后期的如雪山压顶之势,拿到容量够大的核心市场。 最后,我还想聊聊一些题外话,我不知道你在看网上一些信息的时候会不会完全相信别人说的,我是不会。我们现在看到的一些文章,有相当一部分是某些公司宣传部门写的通稿,并不能直接代表真实情况。因此,一般我在阅读的时候,是会先看一下文章来源和作者背景的。我也是普通人,在一些理解上也会加我自己的想法,因此你可以再从开篇词里了解一下我,再确定给我加什么样的纠偏系数。 关于指令集,你可以畅所欲言,聊聊你知道的内容,欢迎在评论区和我交流。