RISC-V 架构则放弃使用“一次读多个寄存器指令”和“一次写多个寄存器指令”。如果
有的场合比较介意
“保存现场”和“恢复现场”的指令条数,那么可以使用公用的程序库(专门用千保存和恢复现场)来进行,这样就可以省掉在每个子函数调用的过程中都放置数目不等的“保存现场”和“恢复现场”的指令。因为放弃“一次读多个寄存器指令”和“一次写多个寄存器指令”可以大幅简化CPU
的硬件设计,对于低功耗小面积的
CPU
可以选择非常简单的电路进行实现;而高性能超标量处理器由于硬件动态调度能力很强,可以有强大的分支预测电路保证
CPU
能够快速地跳转执行,从而可以选择使用公用的程序库(专门用千保存和恢复现场)的方式减少代码量,同时达到高性能。
无条件
码执
行
RISC-V 架构则放弃使用这种带“条件码”指令的方式,对于任何的条件判断都使用普
通的带条件分支跳转指令。此选择再次印证了
RISC-V 追求硬件简单的哲学,因为放弃带“条
件码
”指令的方式可以大幅简化CPU
的硬件设计,对于低功耗小面积的
CPU
可以选择非常
简单的电路进行实现,而高性能超标量处理器由于硬件动态调度能力很强,可以有强大的分
支预测电路保证
CPU 能够快速地跳转执行达到高性能。
无分支延
迟
槽
分支延迟槽就是指在每一条分支指令后面紧跟的一条或者若干条指令不受分支跳转的影响,不管分支是否跳转,这后面的几条指令都一定会被执行
。
RISC-V 架构则放弃了分支延迟槽,再次印证了
RISC-V
力图简化硬件的哲学,因为现代的高性能处理器的分支预测算法精度已经非常高,可以有强大的分支预测电路保证
CPU
能够准确地预测跳转执行达到高性能。而对千低功耗、小面积的
CPU,
由于无须支持分支延迟槽,硬件得到极大简化,也能进一步减少功耗和提高时序。
零开
销
硬件循
环
很多
RISC 架构还支持零开销硬件循环
CZero Overhead Hardware Loop) 指令,其思想
是通过硬件的直接参与,设置某些循环次数寄存器
(Loop Count), 然后可以让程序自动地
进行循环,每一次循环则循环次数寄存器自动减
1, 这样持续循环直到循环次数寄存器的值
变成
O, 则退出循环。
之所以提出发明这种硬件协助的零开销循环是因为在软件代码中的
for 循环
(for i=O;
i