You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
8.7 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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它生得晚了可是如果把它当作领域专用架构DSADomain Specific Architecture这种模块化的设计非常有价值而且它是先立标准、开源开放这样碎片化的生态累积起来更灵活更高效反而更有机会做大。
但是我想说生态始终还是要统一的,要有人掌握灵活和标准之间的平衡,否则软件投资无法得到保障,最终还是一盘散沙。
最后我用一张1992年微处理器论坛的老照片作为结尾。指令集并不算一个特别有技术难度的项目1960年代IBM的每台计算机都有自己的指令集和工具。1992年那张图上也是有满满的指令集。都说我们芯片这行做公司容易死但其实图里的公司还是剩下了大半而指令集就剩下两个了。
![](https://static001.geekbang.org/resource/image/91/52/91c7b0c54cffe9aa085034843d2b6452.jpg?wh=2200x5850)
计算机指令集的发展,是“长坡滚雪球”,要有核心,不能碎,或者说生态不能分裂,还要持续稳定地不停地滚动,即保持演进,与时俱进。当然还要这个“坡”够长够大,才有后期的如雪山压顶之势,拿到容量够大的核心市场。
最后,我还想聊聊一些题外话,我不知道你在看网上一些信息的时候会不会完全相信别人说的,我是不会。我们现在看到的一些文章,有相当一部分是某些公司宣传部门写的通稿,并不能直接代表真实情况。因此,一般我在阅读的时候,是会先看一下文章来源和作者背景的。我也是普通人,在一些理解上也会加我自己的想法,因此你可以再从开篇词里了解一下我,再确定给我加什么样的纠偏系数。
关于指令集,你可以畅所欲言,聊聊你知道的内容,欢迎在评论区和我交流。