RISC-V体系结构编程与实践(第2版)
上QQ阅读APP看书,第一时间看更新

1.1 RISC-V介绍

RISC是Reduced Instruction Set Computer的缩写,中文意思是“精简指令集计算机”,而RISC-V源自美国加利福尼亚大学伯克利分校,其中V表示第5代,因为在此之前加利福尼亚大学伯克利分校已经完成了4代RISC体系结构的设计。

早在2010年,加利福尼亚大学伯克利分校的研究人员在对比市面上所有的RISC体系结构后发现,指令集越来越复杂和臃肿,而且授权费很高,于是他们打算自行设计一套全新的开源指令集。

2015年,RISC-V基金会成立,旨在维护指令集以及体系结构规范的标准化和完整性。此外,他们还成立了SiFive公司,以推动RISC-V商业化落地。

RISC-V基金会吸引了全球高校、学术机构以及芯片设计、软件开发等领域的商业公司加入,负责维护RISC-V指令集标准规范以及各种体系结构和扩展特性的规范文档的审阅与发布。

1.1.1 RISC-V指令集优点

作为一个后起之秀,RISC-V指令集在设计时充分借鉴了其他商业化指令的优点,并且吸取了它们的经验和教训。RISC-V指令集具有如下优点。

设计简洁。RISC-V指令集和基础体系结构的设计都相当简洁,特别是RISC-V的指令集文档和基础体系结构设计文档一共才几百页,而一些商业RISC芯片的文档有上万页。

模块化。RISC-V指令集采用模块化设计思想。它具有一个最小的指令集,这个指令集可以完整地实现一个软件栈,然后通过模块化的方式实现其他扩展功能的指令,如浮点数乘法和除法指令、矢量指令等。模块化的RISC-V体系结构使用户能够灵活选择不同的模块组合,以适应不同的应用场景,从嵌入式设备到服务器都可以使用RISC-V体系结构进行设计。

开源。RISC-V指令集采用BSD开源协议授权。使用RISC-V指令集进行教学、学术研究,甚至是商业化都不需要支付授权费。

具有丰富的软件生态。目前大部分开源软件都支持RISC-V指令集,包括Linux内核、GCC(GNU Compiler Collection, GNU编辑器套件)等。

1.1.2 RISC-V指令集扩展

RISC-V针对32位处理器的最小指令集是RV32I,表示32位基础整型指令集。它大约包含40条指令,可以在32位处理器上实现一个完整的软件栈。RV32I是RISC-V指令集中固定不变的最小指令集。RISC-V针对64位处理器的最小指令集是RV64I,表示64位基础整型指令集。RV64I在RV32I的基础上添加了对字(word)、双字(double word)和长整型(long)版本指令的支持,并且将所有寄存器都扩展到64位。本章主要介绍RV64I指令集。本书把32位处理器使用的指令集简称为RV32指令集,把64位处理器使用的指令集简称为RV64指令集

在RV32I和RV64I的基础上,RISC-V指令集还支持模块化扩展,以支持更多特性,RISC-V扩展指令集如表1.1所示。

表1.1 RISC-V扩展指令集

芯片设计人员可以根据项目需求和成本选择不同的扩展指令集,以适应不同的应用场景。RISC-V提供了一个稳定的指令集组合,称为RV32G/RV64G。其中,G表示IMAFD,实现基础整型指令集、整型乘法和除法扩展指令集、原子操作指令集以及单精度浮点数和双精度浮点数扩展指令集。

1.1.3 RISC-V商业化发展

一个全新的指令集要蓬勃发展需要上游与下游公司都参与进来。为了验证和推广RISC-V,RISC-V创始人成立了SiFive公司,为RISC-V的商业化推广起到了示范作用。除了开源基于RISC-V的CPU(Central Processing Unit,中央处理器)及SoC(System on Chip,单片系统)实现,SiFive还提供基于RISC-V体系结构的商业化处理器IP、开发工具和芯片解决方案等。

国内也有许多大公司和初创公司加入RISC-V芯片设计的队伍。此外,国内的一些研究机构(如中国科学院计算技术研究所的香山处理器团队)还发布了开源的香山处理器。