您的位置:首页 > 其它

[转帖]开源芯片与RISC-V

2021-01-17 20:43 681 查看

开源芯片与RISC-V

https://zhuanlan.zhihu.com/p/136654185

 

我们处在芯片开源的时代

开源软件使得软件行业焕发勃勃生机,像Linux内核这种超大型项目得以在全世界工程师的共同努力下不断开发和维护,全人类能够共享开源软件带来的成果。而芯片尤其是处理器领域因其研发周期长、成本高等特点,一直以来似乎都是封闭和保守的代名词,很难让人与之将“开源”、“快速迭代”等词语联系在一起。

当下,芯片行业也面临自身的危机。一方面,摩尔定律的终结,使得行业享受了三四十年的制程红利即将耗尽;另一方面芯片行业也急缺优秀人才,没有足够的劳动和智慧创造出更多更好的芯片。

2010年夏天诞生的RISC-V指令集,为芯片领域吹来了开源之风;虽然RISC-V不是第一个开源指令集,但是它足够优秀、足够幸运,在时代背景下快速成为学术界和产业界的掌上明珠。随后芯片领域的开源如同星火燎原之势遍地开花:2011年10月,RISC-V的官方Demo——用Chisel编写的SoC生成器Rocket-Chip开始开发,包含了顺序执行的Rocket和乱序执行的Boom两种处理器核可选;此后国外多家公司均发布了开源或闭源的RISC-V处理器核,最著名的则是SiFive的Freedom系列;而国内的RISC-V处理器从2017年开始流行,业界知名的有芯来科技的蜂鸟处理器系列和阿里巴巴平头哥RV处理器系列,其中平头哥玄铁C910处理器是当前性能最高的RISC-V处理器,它支持16核,单核性能达到7.1 Coremark/MHz,主频达到2.5GHz;而跟随着RISC-V这股开源之风,其它传统指令集的开源行动也纷至沓来,2018年12月MIPS宣布开源;2019年8月PowerPC宣布开源(大家还记得2005年以前苹果电脑、任天堂的Wii和Wii U吗,它们都是用PPC架构处理器)。

然而芯片设计是一个从上游到下游很长的产业链,光指令集、处理器核的开源是不足以支撑整个产业的。整个产业实现由传统的开发方式转变为互联网行业一样的敏捷开发、快速迭代,需要的是全方位的开源,包括EDA工具的共享(也许业界成熟的EDA产品无法开源/免费使用,但可以把共享经济扩展到EDA领域)、工具脚本的开源、GDSII的开源等,最终实现在开源项目的巨人肩膀上,3-5人即可完成一款芯片从前端到后端的整个开发流程。

RISC-V的优势

开篇部分展望了开源芯片未来可能的趋势,这一节还是将目光聚焦到当下已经趋近成熟的RISC-V指令集上,我们来看看究竟是RISC-V的哪些优势使其能够成为时代的弄潮儿。

开放带来无限商业可能

RISC-V在开源时采用BSD协议,它允许用户自由地使用、修改源代码,也可以将修改后的代码作为开源或者专有软件再发布,因此对于商业公司来说非常友好,可以在RISC-V基础上构建自己的闭源项目,开发自己的收费产品,建立自己的商业模式;由于BSD协议允许用户修改源代码,许多商业公司可以就自己的需求对RISC-V进行修改。

相比而言之前有一些开源指令集使用GPL协议,它不允许修改后和衍生的代码做为闭源的商业软件发布和销售,因此对于商业公司来说无法满足自己的商业需求,限制了其在业界的发展前景。

简洁与灵活丰富其生命力

RISC-V的基础指令(即必须实现的指令)只有四十余条,包括了最基础的算术逻辑指令、控制转移指令、访存指令、CSR(控制状态寄存器)操作指令等,降低了编译器开发和处理器微架构实现的入门门槛。在如此简洁的基础指令之上,RISC-V提供了丰富的扩展指令,这些扩展指令以模块的形式提供,编译器和微架构可以灵活地进行选择。这些扩展模块包括了整数乘除法的“M”模块,原子操作的“A”模块,浮点操作的“F”、“D”和“Q”模块(分别对应单精度浮点数、双精度浮点数和四精度浮点数)等。具体指令说明可见RISC-V官网文档

最值得注意的是,为了适应嵌入式环境有限指令空间的情况,RISC-V的标准中还包括了压缩指令的“C”标准扩展,“C”标准扩展的所有指令均为16位,同时这些指令还能与32位指令混合使用,在保证功能的同时可以最大程度上节约代码空间。

在编码规则上,RISC-V将所有的操作码安排在32位指令的最低7位,其中最后两位标志着该指令的长度(是否为RVC压缩指令),其余五位的安排也很规整,很容易通过操作码判断指令,而且操作码还给自定义指令预留了空间。下图为RISC-V基本指令的操作数编码,其中custom为自定义指令可使用的空间。

RISC-V的指令格式主要有四种(见下图),所有的元素(如opcode, rd, fucnt3, rs1, rs2)要么不存在,要么出现在指令的固定位置;数据寻址模式只有两种,这样的设计使得处理器译码逻辑非常简单。正是这种无处不在的简洁设计,使得RISC-V能够在众多“大佬”级指令集中脱颖而出,成为体系结构领域的新星。

模块化的扩展设计和简洁统一的编码规则给RISC-V带来的另一个优势就是它容易进行自定义指令扩展,这使得用户可以根据自己需要(比如自行设计的加速器控制指令、缓存管理指令等)设计出符合RISC-V要求的指令,并且很容易在硬件译码单元、软件编译器上进行修改和扩展,使得RISC-V处理器非常适合用于领域专用处理器的控制器。

除此之外,RISC-V的另一个思想是指令集和微架构松耦合,使得微架构设计上的自由度更大。一个突出例子是RISC-V取消了像MIPS和SPARC等RISC架构上历史悠久等分支延迟槽设计。分支延迟槽在曾经分支预测技术不发达的时候对于解决流水线冲突停顿的问题是一个好的设计,但随着RISC架构越来越多地趋向于多发射、长流水线的设计,分支延迟槽带来的收益越来越小;而分支预测技术也逐渐趋于成熟,其存在的必要性进一步减弱。因此RISC-V不再要求微架构和软件安排分支延迟槽,给具体的处理器实现留出更多的操作空间。

出身名门 众星捧月

RISC-V诞生于UC Berkely的体系结构研究室(UCB-BAR),其开山鼻祖Krste Asanović是体系结构领域的大佬级人物,给RISC-V的发展奠定了先天优势。RISC-V基金会成立后,迅速吸引了包括谷歌、华为、高通、阿里巴巴等国内外众多知名企业的加入,产业界和学术界的有机结合使得RISC-V能够聚集更多技术和资本,结合全世界优秀工程师的智慧开发指令集本身和整个生态系统。

RISC-V的生态系统

到目前为止,RISC-V已经构建了操作系统-编译器-指令集-处理器-SoC设计的整套生态系统,在嵌入式尤其是IoT领域将大有可为。RISC-V的软件生态可详见RISC-V Software Ecosystem Overview,本节将简要介绍几个有名和重要的项目。

C/C++编译器、C/C++标准库

C语言作为最低级的高级语言,必定是所有指令集都必须首先开发的编程语言(汇编语言除外)。而早在2014年BAR就开始了GNU工具链的RISC-V移植工作,即现在广泛使用的riscv-gnu-toolchian项目,到目前为止RISC-V的GNU工具链(包括C/C++编译器和标准库,支持ELF/Newlib和Linux两种模式)中GCC/G++已经升级到9.2.0版本。

RISC-V的LLVM移植工作虽然比GNU工具链起步晚一些,但是大量商业公司和科研机构都在开发自己的LLVM项目,值得关注的有SiFive的riscv-llvm、中科院软件所PLCT实验室的支持RISC-V V(向量)扩展的LLVM工具链 rvv-llvm和PLCT为平头哥玄铁C910开发的LLVM工具链c910-llvm

指令集仿真器

Spike是最早的RISC-V模拟器,包含在riscv-isa-sim中,它可以在没有处理器的情况下模拟一个或多个RISC-V的硬件线程。除了基本指令集外它还支持了官方文档中的F,A,M,D,Q,C等多个模块的扩展指令,它甚至还可以自行添加自定义指令用于模拟和仿真。

QEMU是一个支持跨平台虚拟化的虚拟机,有User Mode和System Mode两种配置方式。其中QEMU在System Mode配置下模拟出整个计算机,可以在QEMU之上运行一个操作系统(如Linux);而在User Mode模式下可以运行指定指令集平台的程序。 RISC-V的QEMU原本在(riscv-qemu)[https://github.com/riscv/riscv-qemu]项目中管理,但2019年已经移到QEMU的官方仓库中(详见QEMU官方Wiki中的RISC-V平台文档),成为QEMU官方支持的指令集。

其他语言的编译器和运行时库

除了C/C++外,已经有许多高级语言支持RISC-V指令集,包括JVM(如Maxine VM),GolangRust等热门语言。这些高级语言的加入给RISC-V的IoT开发提供了更多可能。

启动程序

启动程序(BootLoader)是计算机系统运行时首先执行的代码,对于操作系统的移植起到基石作用。目前最常用的RISC-V BootLoader是BBL,即Berkeley BootLoader。而著名的多平台嵌入式启动程序Das U-Boot也官方支持了RISC-V.

操作系统

操作系统内核的移植相对来说是工作量比较大的,但只有能运行操作系统才能使RISC-V平台发挥更大的价值。Linux内核Buildroot均已官方支持RISC-V。而FedoraDebian等主流Linux发行版的支持使得RISC-V的Linux生态逐步由蹒跚学步走向强壮全能。

而在实时操作系统上,同样有众多成员接纳了RISC-V,如大名鼎鼎的FreeRTOSOpenWrt以及华为的IoT操作系统LiteOS

总结:面对开源芯片时代,我们能做些什么

开源芯片是中国芯片产业实现弯道超车的良机,而RISC-V是目前普遍公认的有前景的开源指令集。 我觉得中国的芯片产业可以以RISC-V为起点和契机,发展出多种的开源芯片商业模式,尤其是通过较大企业和科研院所的底层支持,降低芯片设计的门槛,助力小微企业实现芯片的快速设计和快速迭代。最终使中国的芯片设计行业能够遍地开花、蓬勃发展。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: