RISC-V RV32M 规范 v2.0:为什么不在 DIV 之前进行零检查?

RISC-V RV32M spec v2.0: Why not zero-check before DIV?

整数除法异常的评论建议在 DIV 之后添加一个分支来检查被零除的情况。由于所有除数都包含在寄存器中,因此在 DIV 之前检查除数似乎稍微更有效。为什么首先进行 DIV 很重要?

对于非超标量处理器,在发出 DIV 之前检查除数实际上会稍微有效一些。但是,很可能会发出 DIV 指令并需要相当长的时间才能完成,其结果可能是对未来指令的依赖性

在假设没有结构性危害的超标量处理器上,检查可能会在除法后的下一个周期发出,因此不会延迟其 issue/execution,并让与该除法相关的任何 dependencies/stalls 得到提前解决了一个周期。