gpt4 book ai didi

mips - 零寄存器如何提高性能?

转载 作者:行者123 更新时间:2023-12-04 16:31:15 30 4
gpt4 key购买 nike

在 MIPS ISA 中,有一个零寄存器 ( $r0 ) 总是给出零值。这允许处理器:

  • 任何产生将被丢弃的结果的指令都可以将其目标定向到该寄存器
  • 成为0的源头

  • 据说在这个 source这提高了CPU的速度。它如何提高性能?不是所有ISA都采用这个零寄存器的原因是什么?

    $r0 is not general purpose. It is hardwired to 0. No matter what you do to this register, it always has a value of 0. You might wonder why such a register is needed in MIPS.

    The designers of MIPS used benchmarks (programs used to determine the performance of a CPU), which convinced them that having a register hardwired to 0 would improve the performance (speed) of the CPU as opposed to not having it. Not everyone agrees a register hardwired to 0 is essential, so not all ISAs have a zero register.

    最佳答案

    有几种可能的方法可以提高性能;目前尚不清楚哪些适用于该特定处理器,但我已按照从最可能到最不可能的顺序粗略地列出了它们。

  • 它避免了虚假的流水线停顿。如果没有明确的零寄存器,就需要取一个寄存器,将其清零,然后使用它的值。这意味着零使用操作取决于归零操作,并且(取决于流水线转发系统的强大程度)可能取决于归零寄存器的先前值。像 x86 这样的体系结构具有非常小的寄存器文件并且基本上将它们的寄存器虚拟化以防止其引起问题,具有非常强大的危害分析工具。 RISC 处理器通常并非如此。
  • 如果某些操作可以避免寄存器读取,则它们可能更易于流水线化。如果使用显式零寄存器,则在指令解码阶段而不是稍后在寄存器获取阶段知道操作数为零的事实。因此,可以跳过寄存器读取阶段。
  • 类似地,显式丢弃结果的能力避免了对寄存器写入阶段的需要。
  • 当某些操作的操作数之一已知为零时,或当已知结果被丢弃时,某些操作可能会生成更简单的微代码。
  • 显式零寄存器减轻了编译器优化器的压力,因为它不需要小心分配寄存器(无需识别不会导致读或写停顿的寄存器)。
  • 关于mips - 零寄存器如何提高性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24646101/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com