RISC-V开放架构设计之道
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 全书总览

本书假设你在RISC-V之前已了解过其他指令集;否则,请阅读我们编写的基于RISC-V的体系结构入门书籍(Patterson et al.2021)。

第2章介绍RV32I,已冻结的基础整数指令集,它是RISC-V的核心。第3章阐述第2章尚未介绍的其余RISC-V汇编语言,包括调用约定和一些用于链接的精妙技巧。汇编语言包括所有真正的RISC-V指令和一些RISC-V之外的有用指令。这些伪指令是真实指令的巧妙变体,可在避免ISA复杂化的同时简化汇编语言程序的开发。

其后三章阐述RISC-V的标准扩展,它们与RV32I统称为RV32G(G代表general)。

• 第4章:乘法和除法指令(RV32M)

• 第5章:浮点指令(RV32F和RV32D)

• 第6章:原子指令(RV32A)

参考卡也被称为绿卡,这源于20世纪60年代单页ISA总览纸板的背景颜色阴影。考虑到辨认度,我们采用白色背景,而非延续历史的绿色。

本书扉页前面的RISC-V“参考卡”是书中所有RISC-V指令(RV32G、RV64G和RV32/64V)的精简总览。

第7章介绍可选的压缩扩展RV32C,它是RISC-V优雅性的一个绝佳示例。通过把16位指令限制为现有32位RV32G指令的短版本,其实现开销几乎为零。汇编器可选择指令长度,使RV32C对汇编语言程序员和编译器透明。将16位RV32C指令转换成32位RV32G指令的硬件译码器只需400个门,即使在最简单的RISC-V处理器中也只占很小的比例。

第8章介绍向量扩展RV32V。与ARM-32、MIPS-32和x86-32中众多枚举式的单指令多数据(Single Instruction Mul-tiple Data,SIMD)指令相比,向量指令是ISA优雅性的另一个示例。实际上,图1.2中所示的数百条添加到x86-32的指令都是SIMD指令。此外,还有数以百计的SIMD指令即将问世。RV32V甚至比大多数向量ISA更简单,因为它通过向量寄存器指定数据类型和长度,而不是将二者嵌入操作码。RV32V也许是从基于SIMD的传统ISA转到RISC-V最令人信服的原因。

第9章介绍RV64G,RISC-V的64位地址版本。正如该章节所述,RISC-V架构师只需拓宽寄存器,并加入若干字(word)、双字(doubleword)或长字(long)版本的RV32G指令,即可将地址从32位扩展为64位。

第10章介绍系统指令,说明RISC-V如何处理分页以及机器、用户和监管特权模式。

第11章简要介绍RISC-V国际基金会目前正在考虑添加的其他扩展。

简洁

然后是本书最长的部分,附录A,按字母表顺序排列的指令集汇总。它用不到50页的篇幅涵盖了完整的RISC-V ISA,包括上文提到的所有扩展和所有伪指令,这是RISC-V简洁性的证明。

附录B展示了一些常见的汇编语言操作,以及这些操作在RV32I、ARM-32、x86-32中对应的指令。此附录包含三张图,随后是一个简单的C程序及其在三种ISA下的编译结果。编写此附录主要有两个目的:首先,对于已熟悉ARM-32或x86-32的读者,将RISC-V指令对应到他们熟悉的ISA中,是另一种有效的学习方法;其次,帮助程序员把已有旧的ISA汇编语言程序翻译到RISC-V。

本书最后部分是索引。