【问题标题】:Why store instructions have their own format为什么商店指令有自己的格式
【发布时间】:2020-04-27 07:38:15
【问题描述】:

加载和存储指令对编码的要求相同:两个寄存器和一个 12 位立即数。然而,存储指令(sb、sh、sw)有一种专用格式,称为 S-type,而加载指令使用与 addi 指令相同的 I-type 格式。

我不明白为什么 load 和 stores 不共享指令格式,但 store 有一个专用的指令格式只为自己(S-type)。

【问题讨论】:

标签: riscv


【解决方案1】:

我相信这两种格式不同以简化解码。查看 I 和 S 指令的格式,您会看到:

I: |    imm[11:0]        |  rs1  |  funct3 | rd       | opcode |
S: |  imm[11:5]  |  rs2  |  rs1  |  funct3 | imm[4:0] | opcode |

Load 的rd 与需要rd 的所有其他指令在指令的位位置相同(I、R、U 和 UJ 格式都将rd 放在同一个位置)。相反,Store 指令没有目标寄存器,而是有一个地址寄存器和一个我们正在存储其值的寄存器,因此rd 所需的位被用作立即编码的一部分。

如果您自己尝试实现 RISC-V(在 FPGA、Logisim 或您选择的任何方式中),您会发现rd 总是在同一个地方是多么方便。

总结一下为什么 S 指令有一种独特的格式:它们是唯一一种指令,在像 RISC-V 这样的load/store 架构中,不修改寄存器的内容。其余的指令修改一个寄存器,所以需要一个rd

【讨论】:

    猜你喜欢
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 1970-01-01
    • 2013-01-30
    • 2014-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多