RSIC-V指令集架构

1. 指令类型

有关指令执行参考链接:https://blog.csdn.net/qq_39815222/article/details/106969845

  • 存储器访问指令

l型和s型指令是RISCV架构专门用来访问存储器的指令,其他任何指令均无法访问存储器。load/store指令是让寄存器和存储器进行数据交换,虽然不存在运算,但是都会经过完整的数据通路(包括运算器)。

  1. RISCV架构推荐使用地址对齐的存储器读写操作,但也支持地址非对齐的操作。
  2. RISCV仅支持小端模式的memory读写
  3. RISCV读写存储器不支持自增或自减模式。
  4. 指令执行中控制器的作用:(以sw为例)
    1)在当前时钟下的PC值建立后,PC值被存入指令存储器和加法单元。加法单元得到PC+4;同时从指令存储器中取出的指令机器码,根据机器码中的寄存器编号直接访问寄存器文件,其中指令中立即数字段送给立即数生成单元,指令的机器码送给控制器
    2)控制器获得机器码后根据指令格式进行译码,产生控制信号,其中PC选择信号PCSel为0,立即数编码选择信号ImmSel为S(表明为Store指令),控制立即数生成单元生成S型立即数编码,由于sw指令没有写回寄存器的操作,所以写使能端信号RegWEn为0,写回选择信号WBSel也为*,表示不影响结果;sw不涉及操作数的比较,因此对分支比较器的控制信号BrUn和比较结果信号BrLT、BrEq都无作用;B操作数选择信号Bsel为1,选择立即数生成单元输出的立即数值接入ALU的B操作数端口,A操作数选择信号Asel为0,选择寄存器文件输出的DataA接入ALU的A操作端口;ALU的控制信号ALUSel为add,控制ALU输出加法运算结果,作为数据存储器的访问地址值;数据存储器读写控制信号MemRW=write,表示写使能有效;使接入存储器输入数据段的寄存器文件原寄存器2的内容保存到存储器中。
    3)最后下一时钟上升沿到来时,将更新的PC+4值写入到PC寄存器,同时原寄存器2的内容写入到数据存储器中。
  5. RSIC-V指令集架构
  6.  
  • 算术指令
  • 子程序调用指令
    子函数调用可分为保存现场和恢复现场,RISCV调用则较为简洁,它使用公用的程序库(专门用来保存和恢复现场),省去了保存和恢复的诸多指令。
  1. 保存现场
    进入子程序后要用store指令,将当前上下文(通用寄存器等的值)保存到系统存储器的堆栈区(后入先出)
  2. 恢复现场
    退出子程序时,用load指令将之前保存的上下文从系统存储器的堆栈区读出来

2. 指令编码格式

  • RISC-V本身就是模块化的指令集,可以灵活的进行组合,具有相当多的可配置型。

例如某处理器核支持 RV64GC(RV64IMAFDC) 模块化指令集:

64位:64位地址空间,即通用寄存器宽度为64位
I:基本整数指令子集,支持32个通用整数寄存器
M:支持整数乘法与除法指令
A:支持存储器原子操作指令和Load-Reserved / Store-Conditional指令
F:支持单精度浮点指令
D:支持双精度浮点指令
C:支持编码长度为16位的压缩指令,提高代码密度
Machine Mode Only:只支持机器模式

  • 单指令格式
    由于是RSIC架构,指令关于原寄存器和目的寄存器的编码格式固定。

例如某RSIC-V指令存储器中add指令内容为:
RSIC-V指令集架构

3. RISC-V寻址空间划分

  1. 数据和指令寻址空间
    例如64位的RISC-V架构,指令和数据寻址空间为2的32次方。
  2. CSR寻址空间
    专用的12为地址编码空间。

4. RISC-V寄存器文件

寄存器文件又称为寄存器堆,是CPU中多个寄存器组成的阵列,RSIC-V寄存器文件主要包含通用寄存器组、控制状态寄存器和一些特殊寄存器

  1. 通用寄存器组
    如果指令集定义为I,则包含32个通用寄存器,分别用x0-x31表示
    若定义为E(嵌入式架构),则包含16个通用整数寄存器,仅支持32位,,分别用x0-x15表示
    若定义为F/D(单精度/双精度),则另外增加32个独立的通用浮点寄存器,分别用f0-f31表示
  2. 控制状态寄存器(CSR)
    用于配置和记录一些运行的状态,CSR是Core内的寄存器,使用专门的12位地址编码空间。
  3. 程序计数器(PC)
    PC是指令存放在存储器中的地址位置。可以反映在某些通用寄存器或特殊寄存器中。但在RSIC-V架构中,程序要读取PC值,只能通过某些指令间接获得,如AUIPC指令。

5. RSIC-V工作模式

  1. 机器模式
    必选项,另外两种可选,通常为简单的嵌入式系统
  2. 监督模式
    若支持该模式,另外两种须均支持,该模式下可以实现类似Unix的操作系统
  3. 用户模式
    此类系统实现用户和机器模式的区分,从而实现资源保护