为什么 MIPS BLT 指令不在硬件中实现?

Ahm*_*osh 2 hardware branch mips cpu-architecture

我想问一下为什么该BLT指令不是 MIPS ISA 的一部分。相反,他们实际上使它成为汇编程序员的伪指令。从硬件实现的角度来看,我只是无法识别BLTBLTZ(这是 MIPS ISA 的一部分)之间的区别。

顺便说一下,《计算机组织与设计》这本书说:

注意到冯诺依曼关于“设备”简单性的警告,MIPS 架构不包括分支,因为它太复杂了,要么会延长时钟周期时间,要么每条指令需要额外的时钟周期,两条更快的指令是更有用。

但我仍然不知道为什么会发生这些。

phu*_*clv 5

与零进行比较要容易得多

因为小于零实际上只是一个符号位检查,而小于

  • 减再跳到基于结果的符号位,或
  • 一个词典比较输入值的二进制表示的

无论哪种方式都比单个位检查复杂得多,因此BLTZ速度要快得多。同样,>= 0也只需要1个符号位校验。<= 0> 0需要另一个零检查,但这相当微不足道。

事实上,架构支持在单个指令中直接在两个值之间进行跳转和比较并不常见,尽管大多数会基于与 0 相关的值进行跳转。 即使像 x86 这样的 CISC 架构也需要用户进行比较,然后跳

  • 值得一提的是,原始 MIPS 分支条件是在 Decode 阶段评估的,而不是 Exec(因此只有 1 个分支延迟槽就足以隐藏前端气泡)。这就是全加器没有足够时间进行任意无符号或 2 的补码比较的原因。 (3认同)