RISCV instr 第31-40章
第34章
RISC-V项目的一个目标是将其用作稳定的软件开发目标。为此,我们将基本ISA (RV32I或RV64I)与选定的标准扩展(IMAFD、Zicsr、Zifencei)的组合定义为“通用”ISA,并使用指令集扩展的IMAFDZicsr_Zifencei组合的缩写G。本章介绍RV32G和RV64G的操作码映射和指令集清单。
表70展示了RVG的主要操作码。设置了3个或更多低位的主操作码用于大于32位的指令长度。标记为保留的操作码应该避免用于自定义指令集扩展,因为它们可能被未来的标准扩展使用。标记为custom-0和custom-1的主要操作码将被未来的标准扩展避免,并建议由基本32位指令格式中的自定义指令集扩展使用。标记为custom-2/rv128和custom-3/rv128的操作码是保留给rv128将来使用的,但将被避免用于标准扩展,因此也可以用于RV32和RV64的自定义指令集扩展。
我们认为RV32G和RV64G为广泛的通用计算提供了简单而完整的指令集。可以添加第26章中描述的可选压缩指令集(形成RV32GC和RV64GC),以提高性能、代码大小和能效,但会增加一些硬件复杂度。
当我们从IMAFDC转向进一步的指令集扩展时,添加的指令往往更具有领域特异性,只对有限的一类应用程序提供好处,例如多媒体或安全。与大多数商业ISA不同,RISC-V ISA设计清楚地将基本ISA和广泛适用的标准扩展从这些更专业的补充中分离出来。第35章更广泛地讨论了如何向RISC-V ISA添加扩展。