X86 "将死"?RISC-V 正当立
“采罢百花成芯后,为谁辛苦为谁甜”。
2020年全球芯片的市场规模约为1500亿美元,虽然桌面与移动终端市场方面的增长乏力,不过以物联网和云数据中心为代表的新兴领域迅速接棒形成行业新的增长极,因此整体而言,芯片行业依旧蓬勃发展。而且芯片的撬动能力强,行业的上游是以 EDA 为代表的工业软件,下游则辐射工业制造、云计算等规模破万亿美元的巨大 IT 市场,小小的芯片竟能支撑起上下游十几个产业链的运转,堪称是数字经济时代的绝对支柱。
目前在经济学界也开始有声音指出算力比 GDP 等传统经济指标更能反应一个国家的经济水平,而芯片作为数字经济的核心底座,历来是科技产业的必争高地。正因如此我们看到去年年中,国家正式将数据中心、智能计算中心等算力基础设施明确纳入新型基础设施范围,定入国家战略。
同时,去年以来围绕芯片领域接连不断的并购布局,也印证了云计算与物联网正在成为行业的第二增长极,去年底英伟达宣布以 400 亿美元的价格从软银手中收购 Arm,补强自己在 CPU 方面的短板,以 CPU+GPU 的方式正式进军云数据中心;10 月初,英特尔剥离 NAND 存储业务,以 90 亿美元的价格卖给了 SK 海力士,将其重心聚焦于数据中心和 PC 业务;最近 AMD 收购 Xilinx,同样是希望通过资本手段谋求增长,向未来空间更大的数据中心投入更多资源。这几项并购案有整合有切割,但总体上看芯片行业的三巨头英特尔、英伟达和AMD 的目标都非常明确,即自身在云数据中心领域的竞争力。
另外一个增长极物联网领域,RISC-V 凭借其开放开源而且零授权费用的优势,迅速在低功耗,低延时的嵌入式 IoT 方面崭露头角,尤其值得一提的是从去年开始中国厂商拥抱 RISC-V 的动作频频,比如紫光展锐推出了采用 RISC-V 处理器的 TWS 真无线蓝牙耳机芯片—春藤 5882,国内实时操作系统的领导者RT-Thread 也开始在其官方 IDE 中加入了对于 RISC-V 芯片的支持。
根据 Semico Research 的预测,到 2025 年,市场有 624 亿个 RISC-V CPU 核心售出。将在物联网领域形成与 ARM 分庭抗礼的新力量,可以说 RISC-V 未来可期,在中国发展前景更加广阔。
指令集 CPU 的灵魂
“本似云烟易散尽,过眼回眸恼多愁”。几十年前的程序员应该怎么也不会想到现在的汇编语言除了在操作系统内核、黑客入侵等少数领域还有应用以外,在其它场景几乎用者廖廖,甚至在编程语言前百强的榜单中都找不到汇编的位置。
要知道在上世纪七、八十年代,程序员的几乎只能使用汇编语言进行编程,像严援朝、求伯君等大神级的人物,都是汇编语言的顶尖高手,那个时代的程序员既不是面向过程也不是面向对象编程,而是面向指令集编程。
在计算机中,让 CPU 执行某种运算、处理功能的命令称为指令,是计算机运行的最小的功能单位。指令集是指芯片全部指令的集合,是计算机系统能提供的全部功能体现。而在芯片设计师设计一款芯片时首先要考虑芯片所能提供的功能,并按此需求设计指令集,然后按指令集中的每条指令在硬件电路上实现。
目前指令集的含义已经不单单是指令本身的集合了,还包括了指令格式、寻址方式和数据形式。所以,各计算机执行的指令系统不仅决定了机器所要求的能力,而且也决定了指令的格式和机器的结构。从另一个角度上讲,一种指令格式也需要具有与之相对应的指令集。为此,设计指令集时,要充分指令格式、类型及寻址等多个方面的因素,如果说芯片是计算机的核心,那么指令集就是芯片的核心,指令集与机器的硬件结构密切相关,因此功能齐全、通用性强的指令集,对于计算机系统来说至关重要。
与现在的程序员可以随便选用各种 Java、Python、Go 等高级语言不同,在四十几年以前,计算机系统的内存、存储、CPU 等等资源都非常匮乏,甚至连 C 语言相对汇编付出 5% 左右的性能代价都很难被人们接受,因此当时的指令集往往倾向于提供复杂的功能,这也是复杂指令集(CISC)流派出现的根本原因,因此 CISC 能够帮助那个年代汇编语言的程序员以更少的代码,完成更多的工作。
不过当时那个时代也是摩尔定律绝对支配的时代,芯片在性能、功能等各个方面都在快速提升,存储的价格也在快速下降,高级语言在性能及存储空间上的那一点点代价也就可以忽略了,因此 Pascal、Basic、C 等高级语言逐渐流行,这使得程序员编程的模式由直接面向指令集编程,变成了面向编译器编程,编译器再面向指令集编程。
指令集开始成为广大程序员不需要再特别关注的隐秘角落,而 X86 这种 CISC 风格的指令集,其所提供的很多指令编译器很少用到,甚至部分 X86 的指令,连编译器的开发人员都不知道如何使用,这样的大背景使指令集瘦身成了大势所趋,这也是简单指令集(RISC)发展壮大的背景。
RISC vs CISC,成熟是变得复杂还是返璞归真
机器指令往往需要完成复杂的操作。我们知道从本质上讲,一切计算操作都可以用加法来进行拟合,比如乘法是几个数连加,除法是若干数连减,因此从这个角度而言,一条复杂指令完全可以通过若干条简单指令的组合来完成相应功能。
RISC 的逻辑是大道至简,因为有 20% 的指令被调用 80%,把能精简的指令全部精简掉,只保留核心功能这样无论对芯片设计人员,还是编译器的开发者来说都降低了负担。而且由于精简,以 ARM 和 RISC-V 为代表的 RISC 风格指令集芯片往往会非常省电,这也是 ARM 快速占领移动市场的关键所在,尤其是在 ARM 的大小核设计是他们在移动市场致胜的法宝,其中大核专门针对性能优化,小核专门针对功耗优化,可谓忙时用大核干得欢,闲时用小核省电爽。
CISC 的理念是 20% 的复杂指令会消耗 CPU 80% 的处理时间。因此在以 X86 代表的 RISC 风格指令集就专门设置了 SSE(Stream SIMD Extentions)数据流单指令多数据扩展,从奔腾三代开始英特尔的 CPU 提供了 8 个 128 位的寄存器进行 SIMD 操作。
我们知道目前主流的 CPU 都是 64 位的,也就是 CPU 每次都只能处理对于 64 位长的数据,并得到一个 64 位长的结果,比 64 位更长的数据只能通过多条指令的组合来处理,而 SSE 的扩展恰恰就是给 64 位的 CPU 增加了 128 位长的寄存器,使 CPU 可以一次性处理 128 位长的数据,并得到 128 位长的结果,从而大幅提高双精度数据的处理效率,这对于科学计算的提升巨大,因此我们看到很多用于科学计算的软件包底层都是使用 C 语言内联嵌入 SSE 汇编指令的代码进行性能优化,并取得极好的效果。
不过这几十年来的相爱相杀,目前 RISC 与 CISC 之间的界限已经不再那么泾渭分明了,比如目前英特尔就尝试将 X86 指令集中的复杂指令转换成为微操作(UOPS),从而融合 RISC 的思想精髓,而包括 RISC-V 及 ARM 在内的 RISC 也开始引入协处理器,专门处理浮点或者 FPGA 的运算需求。
而且我们知道一条 CPU 指令基本分为取指(FI)、译码(DI)、计算操作数地址(CO)、取操作数(FO)、执行指令(EI)、写操作数(WO)等几个并行处理的过程段。如果 CPU 能同时对六条指令进行加工,将大大加快程序的执行速度,而想获得高的流水线并行度,就涉及到指令预测与乱序发射等技术,而在这方面无论是 RISC 还是 CISC 所使用的技术方案几乎都是相同的。可以说目前指令集之间除了 IP 授权体系不同以外,具体的实现方式已经走向融合,而 RISC-V 凭借其免费的 IP 授权体系,肯定能在未来闯出一片天空。
苹果自研 M1 芯片:巨头就是要玩“芯”跳
历史不会重演,但总押韵。此前在桌面及云计算领域一直是 CISC 阵营的 AMD 与英特尔的对台戏,但是苹果自研 M1 芯片的出现,使战役的天平向 RISC 方向倾斜。
上世纪末软件行业微软 Windows 与封闭的苹果 Macantoshi 之间的大战,似乎又在半导体芯片行业再度上演。苹果 M1 作为一款以 ARM 为核心的 RISC 处理器的代表,在片内集成了 CPU、GUP、协处理器与内存,一经发布便在各大性能排行榜上形成了碾压之势,不过 M1 是一款封闭式的芯片,其具体细节并不对外公开,想让 M1 运行 Linux 都要很费一番周折。
读到这里相信不少读者也不禁要问为什么苹果这样的手机厂商非要入局自造芯片呢?之前苹果的灵魂人物乔布斯其实是技术出身,而现任 CEO 库克则是供应链方面的专家。目前成熟稳定的供应链才是苹果苹果安身立命的根本所在。
虽然整个世界都更加敬仰乔布斯式的天才,对于乔永远走在创新前沿的精神无比期待,更热切的盼望颠覆性的产品出现。但是对于苹果这样一家已经是庞然大物的企业来说,供应链的稳定才是基业常青的关键,体量越大的公司越要求稳。如果由于供应链出现问题,严重波及产品的量产和产能,后续多米诺骨牌效应所带来的一系列损失,这是地让企业元气大伤,甚至难以承受。
那么如何能让供应链稳定且可控呢?
苹果给出的答案就是把供应链牢牢抓在自己手上。
库克当家之后,苹果继续对供应链的稳定进行改进。这些努力包括:让不同的产品尽可能使用兼容组件,要求供应商在苹果组装厂附近建厂生产,投资了最先进的企业资源规划系统等等。
在这样一连串的组合拳之下,苹果的库存周期从数以月计缩短到了数天,也让苹果电脑的生产周期大幅度缩短,甚至击败了被称为业界标杆的戴尔公司。这些改变不仅降低了产品的生产成本,可以留下更多利润外,还能保证苹果产品的市场供给。苹果销量庞大,但发布会后仍然鲜见缺货,这一优势大大增加产品竞争力。
了解了这些背景,就会觉得苹果选择自研电脑芯片是一件十分合乎逻辑的事情。因为自研芯片,可以使产品的升级迭代更加稳定,目前 iPhone 的新品发布日期多年来集中在 9 月底,根据笔者的统计近十年来这个发布日前后最多相差 5 天,其研发节奏和生产、发布节奏都可以完全掌控在自己手中。苹果的清单里,没有核心供应商,苹果发新品不用看任何其它公司的脸色,而 M1 的推出有望将 Mac 系列打造成跟 iPhone 系列一样可以稳定发布的优秀产品。
因此我们可以看到华为同样也选择了自研处理器的道路,其 Mate 系列新品发布一般都在秋季,前后最多浮动一个月左右,这样的品控能力已经足够优秀。做为对比我们看到之前由于数字旗舰系列的处理器非常依赖高通,小米的发布新品发布实际取决于高通芯片的发布及供货次序,有时候为了首发某代处理器,还需要在备货不充裕的情况下开发布会抢首发,经常被消费者批评是“耍猴”。
为了摆脱这一现状,后来小米也发起了澎湃系列芯片的研发。除了华为、小米之外,OPPO 也在去年年初启动了“马里亚纳计划”,将于未来 3 年投入 500 亿元进行芯片研发。
可以说未来消费终端厂商涉猎芯片势必成为趋势,而 RISC-V 凭借其在物联网领域的良好表现,和开源可控的授权方式,会与这些深耕工业制造的厂商不谋而合,未来必将擦出火花。
RISC-V 在中国
与苹果 M1 芯片的研发截然相反的是,以 RISC-V 为代表的 RISC 指令集走的是完全开源与开放的路径。
RISC-V(“RISC-FIVE”)加州大学伯克利分校的图灵奖得主 David A. Patterson 教授一手创建。与 Linux 的理念类似,RISC-V 的建设之初的目标就是可以免费地用于所有的设备中——RISC-V 允许任何人设计、制造和销售 RISC-V 芯片和软件。
开源:RISC-V 使用 BSD 开源协议,企业完全自由免费使用,同时也容许企业添加自有指令集拓展而不必开源其基于 RISC-V 的设计拓展。因此 RISC-V 是芯片厂商快速提升站在巨人肩膀上的途径。
无缝对接 Linux:正如前文所说目前除了部分编译器及操作系统内核引导代码还在用汇编语言外,一般的程序员已经接触不到指令集了,他们只需要面向 POSIX(统一操作系统编程接口)进行编程即可。
因此与 Linux 的全面兼容将使得 RISC-V 迎来一波争取生态级应用的机会。开发者可以非常方便将运行于 Linux 和 UNIX 系统的应用移植到 RISC-V 平台。这将使 RISC-V 的芯片逐渐主流化。
模块化设计:RISC-V 以模块化的方式组织在一起。用户能够灵活选择不同的模块组合,来实现自己定制化设备的需要,比如针对于小面积低功耗嵌入式场景,用户可以选择 RV32IC 组合的指令集,仅使用 Machine Mode(机器模式);而高性能应用操作系统场景则可以选择譬如 RV32IMFDC 的指令集,选择 Machine Mode(机器模式)与 User Mode(用户模式)两种模式。这使 RISC-V 的芯片的应用范围可以非常广泛。
最近一名 13 岁少年独立在五天内完成 RISC-V 的芯片设计,成为火爆一时的新闻。这其实也从侧面反应了 RISC-V 的开源策略所蕴含的力量,随着 RISC-V 吸引 Linux 社区的目光,并进入 Linux 主流的支持列表,相信开放的 RISC-V 会是未来的方向,即将迎来辉煌。
面向未来,对于当下的国内 IT 企业尤其是行业领军大厂来说,以芯片为首的硬件自研是道必须要迈过去的坎,更是想打造出极致产品的必经之路。除了 RISC-V 之外,国内的芯片厂商龙芯也买断了 RISC 另一个重要的 MIPS 版权同时推出 Loongarch 芯片指令集,并独创了指令翻译技术,兼容其它平台应用。我们看到 Loongarch 也借鉴了很多 RISC 的设计思想,愿在业界的共同努力下 RISC-V 能够协助中国芯一飞冲天。
☞新的一年,这7个“菜鸟坑”千万别再踩了!
☞开源不等于免费!谷歌如何通过安卓开源成为移动时代霸主?| 涛滔不绝