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