(MIPS) 是否有一些汇编指令比其他指令更快?
(MIPS) are some assembly instructions faster than others?
某些裸 MIPS 指令是否比其他指令更快?引起我兴趣的问题是将寄存器乘以 2 的幂。
让我们假设 $t0 有一个不会溢出的数字。如果我想将该寄存器乘以 8,两者之间是否存在任何可量化的性能差异:
一个 3 位 sll:
sll $t0, $t0,3
使用 mul 命令(假设 $t8 的值为 8):
mul $t0, $t0,$t8
或者使用 mult 命令?
mult $t0, $t0,$t8
每个示例都由一条指令组成,但我不知道一个是否比另一个更快。直觉让我认为 mul 比 mult 快,因为没有将无关的位存储到 HI 中(正确吗?)
或者,有谁知道关于汇编中的单个指令速度(MIPS 或其他)的任何 articles/webpages?我想不同的指令由不同的 circuitry/hardware 组成,并且每条指令的执行时间不同,但我似乎无法在网上找到任何关于此的资源。
我是 MIPS/assembly 的新手,所以请原谅我没有 运行 计时示例(或者在我上面的示例中可能使用了不正确的语法)。
面向程序员的 MIPS32TM 架构
第二卷:MIPS32TM 指令集,
mul / mult instrutions'
:
Programming Notes:
In some processors the integer multiply operation may proceed asynchronously and allow other CPU instructions to
execute before it is complete. An attempt to read LO or HI before the results are written interlocks until the results are
ready. Asynchronous execution does not affect the program result, but offers an opportunity for performance
improvement by scheduling the multiply so that other instructions can execute in parallel.
Programs that require overflow detection must check for it explicitly.
Where the size of the operands are known, software should place the shorter operand in GPR rt. This may reduce the
latency of the instruction on those processors which implement data-dependent instruction latencies.
所以是的,乘以任意数是 MIPS 中为数不多的比其他指令需要更多周期的事情之一。
手册指定的方式 mul
,这是可能的因为它被实现为 mult
然后 mflo
,在这种情况下 mul
和 mult
显然具有完全相同的时序特性。
它可能也确实是一个单独的指令,在这种情况下它可能更快(可能避免计算高半部分至少是电源原因),但我怀疑很少有硬件实现这样做。
multiply/divide 单元是 MIPS 体系结构较差的方面之一。
某些裸 MIPS 指令是否比其他指令更快?引起我兴趣的问题是将寄存器乘以 2 的幂。
让我们假设 $t0 有一个不会溢出的数字。如果我想将该寄存器乘以 8,两者之间是否存在任何可量化的性能差异:
一个 3 位 sll:
sll $t0, $t0,3
使用 mul 命令(假设 $t8 的值为 8):
mul $t0, $t0,$t8
或者使用 mult 命令?
mult $t0, $t0,$t8
每个示例都由一条指令组成,但我不知道一个是否比另一个更快。直觉让我认为 mul 比 mult 快,因为没有将无关的位存储到 HI 中(正确吗?)
或者,有谁知道关于汇编中的单个指令速度(MIPS 或其他)的任何 articles/webpages?我想不同的指令由不同的 circuitry/hardware 组成,并且每条指令的执行时间不同,但我似乎无法在网上找到任何关于此的资源。
我是 MIPS/assembly 的新手,所以请原谅我没有 运行 计时示例(或者在我上面的示例中可能使用了不正确的语法)。
面向程序员的 MIPS32TM 架构
第二卷:MIPS32TM 指令集,
mul / mult instrutions'
:
Programming Notes:
In some processors the integer multiply operation may proceed asynchronously and allow other CPU instructions to
execute before it is complete. An attempt to read LO or HI before the results are written interlocks until the results are
ready. Asynchronous execution does not affect the program result, but offers an opportunity for performance
improvement by scheduling the multiply so that other instructions can execute in parallel.
Programs that require overflow detection must check for it explicitly.
Where the size of the operands are known, software should place the shorter operand in GPR rt. This may reduce the
latency of the instruction on those processors which implement data-dependent instruction latencies.
所以是的,乘以任意数是 MIPS 中为数不多的比其他指令需要更多周期的事情之一。
手册指定的方式 mul
,这是可能的因为它被实现为 mult
然后 mflo
,在这种情况下 mul
和 mult
显然具有完全相同的时序特性。
它可能也确实是一个单独的指令,在这种情况下它可能更快(可能避免计算高半部分至少是电源原因),但我怀疑很少有硬件实现这样做。
multiply/divide 单元是 MIPS 体系结构较差的方面之一。