RISC-V架构
1.篇幅短,指令少
目前的“RISC-V 架构文档”分为“指令集文档”和“特权架构文挡”。RISC-V指令总共只有几十条常用指令。
“指令集文档” 的篇幅为 10 多页,而“特权架构文档”的篇幅也仅为 100 左右。熟悉体系结构的工程师 仅需一两天便可将其通读,虽然RISC-V 的架构文档还在不断地丰富,但是相比x86 的架构文档与ARM 的架构文档,RISC-V 的篇幅可以说是极其短小精悍。
2.模块化
这种模块化是x86与ARM架构所不具备的以ARM的架构为例ARM的架构分为A、R和M,共3个系列,分别针对应用操作系统(Application)、实时(Real-Time)和嵌入式(Embedded)3 个领域,彼此之间并不兼容。但是模块化的 RISC-V 架构能够使得用户灵活地选择不同的模块进行组合,以满足不同的应用场景,可以说是“老少咸宜”。例如针对小面积、低功耗的嵌入式场景,用户可以选择 RV32IC 组合的指令集,仅使用机器模式(Machine Mode);而针对高性能应用操作系统场景,则可以选择例如 RV32IMFDC 的指令集,使用机器模式(Machine Mode)与用户模式(User Mode)两种模式。
以上模块的一个特定组合IMAFD ,也被称为“通用”组合,用英文字母G表示。因此RV32G即为RV32IMAFD ,同理RV64G 表示 RV64IMAFD。
RISC-V 架构支持 32 位或者 64 位的架构, 32 位架构由 RV32 表示,其每个通用寄存器的宽度为 32 比特;64 位架构由 RV64 表示 其每个通用寄存器的宽度为 64 比特。
通过以上的模块化指令集,能够选择不同的组合来满足不同的应用。例如,追求小面积、 低功耗的嵌入式场景可以选择使用 RV32EC 架构;而大型的 64 位架构则可以选择 RV64G。
RISC-V 架构的整数通用寄存器组,包含 32 (I 架构)或者 16 (E 架构)通用整数寄存器,其中整数寄存器被预留为常数0。 其他 31 (I 架构)或者 15 (E 架构) 为普通的通用整数寄存器。 如果使用浮点模块 F 或者 D,则需要另外一个独立的浮点寄存器组,包含 32 个通用 浮点寄存器。如果仅使用F模块的浮点指令子集,则每个通用浮点寄存器的宽度为 32 比特; 如果使用了D模块的浮点指令子集,则每个通用浮点寄存器的宽度为 64 比特 。
3.规整的指令编码格式
得益于后发优势和总结了多年来处理器发展的经验, RISC-V 的指令集编码非常规整,指令所需的通用寄存器的索引 (lndex) 都被放在固定的位置,因此指令译码器(Instruction Decoder )可以非常便捷地译码出寄存器索引,然后读取通用寄存器组(Register File,Regfile)。