当前位置 : 主页 > 网络安全 > 测试自动化 >

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

来源:互联网 收集:自由互联 发布时间:2021-06-22
在MIPS ISA中,有一个零寄存器($r0),它总是给出零值.这允许处理器: 产生要丢弃的结果的任何指令都可以将其目标指向该寄存器 成为0的来源 据说这在source中提高了CPU的速度.它如何提高性
在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处理器通常也不是这样.>如果某些操作可以避免读取寄存器,则它们可能更易于管道化.如果使用显式零寄存器,则操作数将为零的事实在指令解码阶段是已知的,而不是稍后在寄存器提取阶段中.因此,可以跳过寄存器读取阶段.>同样,显式丢弃结果的能力避免了对寄存器写入阶段的需要.>当已知其操作数之一为零时,或者已知结果被丢弃时,某些操作可能会生成更简单的微码.>显式零寄存器会对编译器的优化器造成一些压力,因为它不需要对寄存器赋值小心(不需要识别不会导致读或写停顿的寄存器).

网友评论