【问题标题】:RV64 with RV32 instructions supportRV64 与 RV32 指令支持
【发布时间】:2017-02-14 11:31:53
【问题描述】:

在阅读 RISC-V 2.1 版规范时,我发现在第 4 章中提到 RV64 应与 RV32 一起阅读。基于此以下是我的疑问。

  1. RISC-V 64 位是否可以运行 32 位操作码?

  2. 在规范中,第 9 章,第 54 页的指令与操作码一起列出,这些操作码是否也属于 64 位。

  3. 在规范中,第 9 章,第 55 页的指令与操作码一起列出,说 RV64 是 RV32 的补充,所以在 RV64 位实现中我是否还需要支持 RV32I?

【问题讨论】:

    标签: riscv


    【解决方案1】:

    RV64I 是 RV32I 的超集,但 SLLISRLISRAI 除外。对于这些指令,shamt 字段增加了一位。在 RV32I 中,所有指令都对 32 位数据进行操作。相同的指令将对 RV64I 上的 64 位数据进行操作。对于低 32 位的操作,附加指令包含在 RV​​64I 中。

    为 RV32I 编译的程序可以在 RV64I 机器上运行。它将运行而不会产生非法指令异常,但结果很可能是错误的。因此,为 RV32I 编译的程序只能在 RV32I 机器上正常运行,而为 RV64I 编译的程序只能在 RV64I 机器上运行。

    对于包含混合二进制文件的程序,如引导加载程序、内核或固件,misa 寄存器在高位对寄存器宽度进行编码,因此可以通过跳转和左移跳转到正确的二进制文件。请参阅第 15 页的特权规范

    实现可以同时支持 RV32I 和 RV64I,但这需要系统软件的支持。

    【讨论】:

      猜你喜欢
      • 2022-01-15
      • 1970-01-01
      • 2011-07-11
      • 2015-07-10
      • 2017-08-24
      • 1970-01-01
      • 2018-08-15
      • 1970-01-01
      • 2021-04-22
      相关资源
      最近更新 更多