繁体   English   中英

RV64 带 RV32 指令支持

[英]RV64 with RV32 instructions support

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

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

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

  3. 在规范中,第 9 章第 55 页指令列出了操作码,说 RV64 是除 RV32 之外的,所以在 RV64 位实现中我还需要支持 RV32I 吗?

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM