微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么RISC V中的程序计数器应加4而不是加0或2

如何解决为什么RISC V中的程序计数器应加4而不是加0或2

为什么RISC V架构中的PC与PC + 4而不是PC + 2或PC + 1连接。我认为这取决于指令存储器(IMEM)的存储单元的宽度。如果宽度为16位,则需要加载两个相邻地址以填充32位指令;如果宽度为32位,则仅需要加载一个地址即可获取完整指令。

解决方法

RISC-V处理字节地址中的所有内容(从the ISA manual的第19页开始:“ RV32I提供了一个32位的用户地址空间,该地址是字节寻址的,并且是低端的”)。因此,当使用字节地址时,将PC递增4是合理的,因为每个RV32指令都是4字节。

当我们说RISC-V使PC递增4时,这意味着对于32位RISC-V指令的任何给定字节地址X,下一条指令将从内存中的地址{ {1}}。 (请注意,使用16位/ 2字节的压缩指令时,PC会增加2)。

IMEM读取宽度为16位意味着需要从IMEM进行2次读取才能获得完整指令,而IMEM读取宽度为32位意味着需要从IMEM进行1次读取即可获得完整指令。但是这些是实现方面的考虑因素,而不是ISA方面的考虑因素–您可以假设使用两种IMEM类型来实现符合ISA的RISC-V处理器。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。