VERDVANA'S BLOG Verdvana

RISC-V处理器设计之架构


封面

1 前言

        就像设计PCB要读datasheet那样,设计芯片也要看它的相关文档:


2 RISC-V架构简介

2.1 模块化的指令集

        RISC-V架构与其他成熟架构不同的是,它是模块化的架构。也就是不仅短小精悍,其不同的部分还能以模块化的方式组合在一起来满足不同需求。这使得RISC-V指令数目仅有40多条,算上模块化扩展的指令也不算很多。

        RISC-V基本指令集(I):

基本指令集 指令数 描述
RV32I 47 支持32位地址空间与整数指令,支持32个通用整数寄存器
RV32E 47 RV32I的子集,仅支持16个通用整数寄存器
RV64I 59 支持64位地址空间与整数指令,以及一部分32位的整数指令
RV128I 71 支持128位地址空间与整数指令及一部分64位和32位的指令

        RISC-V基本指令集扩展指令集(M/A/F/D/C):

扩展指令集 指令数 描述
M 8 整数乘法与除法
A 11 储存器原子操作指令和Load-Reserved/Store-Conditional指令
F 26 单精度(32bit)浮点指令
D 26 双精度(64bit)浮点指令,必须支持F扩展指令集
C 46 压缩指令,指令长度为16bit

        以上模块的一个特定组合“IMAFDC”也称为“通用组合”,用“G”表示。例:

  • RV32G:RV32IMAFD
  • RV64G:RV64IMAFD

        为了提高代码密度,RSIC-V还提供了可选的“压缩”指令子集,用“C”表示。压缩指令的编码长度为16bit,而非普通的非压缩指令的编码长度32bit。

2.2 可配置的通用寄存器组

        通用寄存器的宽度与地址空间宽度相等(32bit、64bit)。

        整数通用寄存器组包含32个(I架构)或16个(E架构)整数通用寄存器,其中整数寄存器x0是为常数0预留的,其他的31个或15个为普通的整数通用寄存器。

        如果使用浮点模块(F或D),


        告辞。

[img1]: