计算机体系结构——RSIC-V指令集——存储器访存指令load/store

该指令是RISCV指令集专门用来访问存储器的指令,其他任何指令均无法访问存储器。

一般load采用RSIC-V中I型指令格式,store采用S型指令格式。有效字节地址是通过将寄存器rs1与符号扩展的12位偏移量相加而获得的。Load指令将存储器中的一个值加载到寄存器rd中。 Store指令将寄存器rs2中的值保存到存储器中。load/store指令是让寄存器和存储器进行数据交换,虽然不存在运算,但是也会经过完整的数据通路。

  • 举例说明指令执行过程:

例如sw rs2, imm(rs1)   
即为将rs2寄存器中存放的值保存到rs1寄存器值加上立即数imm值得到的相加结果的内存地址的内存单元

  1. 在当前时钟下的PC值建立后,PC值被存入指令存储器和加法单元。加法单元得到PC+4;
  2. 根据当前PC值从指令存储器中(Icache)取出指令机器码,根据机器码中的寄存器编号直接访问寄存器文件,其中指令中立即数字段送给立即数生成单元,指令的机器码送给控制器
  3. 控制器获得机器码后根据指令编码格式进行译码,产生控制信号,其中
    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的内容保存到存储器中。
  4. 最后下一时钟上升沿到来时,将更新的PC+4值写入到PC寄存器,同时原寄存器2的内容写入到数据存储器中。

计算机体系结构——RSIC-V指令集——存储器访存指令load/store_第1张图片

 

 

 

 

 

 

 

 

你可能感兴趣的:(计算机结构)