为什么 RISC V 架构中的 PC 连接的是 PC+4 而不是 PC+2 或 PC+1。我认为这取决于指令存储器(IMEM)的存储单元的宽度。如果宽度是 16 位,那么我们需要加载两个相邻的地址来填充 32 位指令,或者如果宽度是 32 位,我们只需要加载一个地址来获取完整的指令。
问问题
2323 次
1 回答
0
RISC-V 处理字节地址中的所有内容(来自ISA 手册的第 19 页:“RV32I 提供了一个 32 位用户地址空间,它是字节寻址和小端序的”)。因此,当使用字节地址时,将 PC 视为递增 4 是有意义的,因为每个 RV32 指令都是 4 个字节。
当我们说 RISC-V 将 PC 增加 4 时,这意味着对于X
32 位 RISC-V 指令的任何给定字节地址,下一条指令将从内存中的 address 开始X+4
。(请注意,当使用压缩指令时,即 16 位/2 字节,PC 会增加 2)。
16 位 IMEM 读取宽度意味着需要从 IMEM 读取 2 次才能获得完整指令,而 32 位 IMEM 读取宽度意味着只需从 IMEM 读取 1 次即可获得完整指令。但这些是实现方面的考虑,而不是 ISA 方面的考虑——您可以假设使用任一类型的 IMEM 实现符合 ISA 的 RISC-V 处理器。
于 2020-09-16T09:10:40.433 回答