RISC-V架构特点对于取指的简化
1:指令长度编码放在低位
- 得益于后发优势和多年来处理器发展的教训,所有RISC-V处理器的指令长度指示码都放在了低位,可以方便取指逻辑在取指过程中以最快的速度译码出当前指令的长度,极大地简化了硬件的设计
- 另外,16位压缩指令子集是可选的,假设处理器仅支持32位的而不支持16位的,甚至可以把后两位忽略不存储,因为肯定固定为(11),从而减少了6.25%的指令缓存
- RISC-V不同指令长度的后几位定义如下图所示,不过除了32位和16位,其他的指令长度格式并不常用

2:简单的分支跳转指令
- 无条件直接分支跳转指令,jal(跳转和链接)指令,用于进入子程序调用,同时将子程序的返回地址存在jal指令的目标寄存器(连接寄存器,link register)。
- 无条件间接分支跳转指令,jalr(jump and link-register)指令,用于子程序返回指令,通过将jal指令(跳转进入子程序)保存的连接寄存器地址,作为jalr指令的基地址寄存器,则可以从子程序返回。
- 带条件分支跳转指令,共有六条,他有两个操作数,先进性比较,之后在跳转,与其它RISC架构不同的是,RISC-V架构把比较和跳转两个操作放在一个指令中完成,减少了指令的条数,使他在硬件上更加简单。
3:取消了分支延时槽命令
4:提供明确的静态分支预测依据
固定地预测为向后跳转的分支指令为需要跳转,在RISC-V架构中明确规定,编辑器生成的代码应该尽量优

本文探讨了RISC-V架构如何简化取指令过程,包括将指令长度编码置于低位以加速译码,使用jal和jalr指令进行直接和间接跳转,取消分支延时槽,提供静态分支预测依据,以及利用RAS(返回地址堆栈)优化分支跳转预测。同时介绍了蜂鸟E200处理器的具体取指实现。
最低0.47元/天 解锁文章
6206

被折叠的 条评论
为什么被折叠?



