【问题标题】:Why isn't MIPS BLT instruction implemented in hardware?为什么 MIPS BLT 指令不在硬件中实现?
【发布时间】:2013-11-24 07:04:51
【问题描述】:

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

顺便说一下“计算机组织与设计”一书说:

注意 von Neumann 关于“设备”简单性的警告,MIPS 架构不包含分支小于,因为它太复杂,要么会延长时钟周期时间,要么每条指令需要额外的时钟周期,这两个更快的指令更有用。

但我仍然不知道为什么会发生这种情况。

【问题讨论】:

    标签: branch mips hardware cpu-architecture


    【解决方案1】:

    与零比较容易得多

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

    任何一种方式都比单位检查复杂得多,因此BLTZ 要快得多。同样,>= 0 也只需要 1 个符号位检查。 <= 0> 0 需要再次进行零检查,但这很简单。

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

    【讨论】:

    • 值得一提的是,原始 MIPS 分支条件是在解码阶段评估的,而不是执行阶段(因此只有 1 个分支延迟槽就足以隐藏前端气泡)。这就是全加器没有足够时间进行任意无符号或 2 的补码比较的原因。
    • (更正我之前的评论):MIPS 在执行阶段的前半部分中评估了分支条件。 How does MIPS I handle branching on the previous ALU instruction without stalling?。还有更严格的时间限制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    相关资源
    最近更新 更多