1

xorALU 可以对一个字节进行最快的操作吗?我的教授说这是因为没有比检查两件事是否相同更简单的了。如果操作数不同且相同,xor这是返回的正确方法吗?10

4

3 回答 3

6

这一切都取决于你的 CPU 是如何工作的。在实践中,现代芯片上的 ALU 操作都是一个时钟周期——但即使是这种说法也过于笼统,因为通常有不止一种方法可以进行算术运算。

SIMD 功能允许您在每个时钟周期处理多个数据,从而提高吞吐量。某些架构上的某些指令(如 x86's LEA)允许您将多个算术运算组合成一条指令,该指令再次在单个时钟周期内执行,从而在某些方面更快。

在大多数架构上,ALU 不仅返回一个值,它们还修改标志:溢出(进位)、零等。如果其他指令依赖于这些标志,则执行算术运算所需的时间可能会改变,尤其是在有条件的情况下涉及。检查手册。

此外,延迟方面的“快速”与每秒操作方面的“快速”不同。XOR 可能需要一个时钟周期才能在 ALU 中执行,但需要另一个时钟周期,直到结果可用于另一条指令、标志或其他内容。即便如此,乱序执行也可能使结果看起来立即可用,但那是因为芯片会在你的指令周围洗牌以保持自己忙碌。

于 2012-10-05T06:38:35.673 回答
5

实际上 NAND 和 NOR 是最简单的二进制操作,因为它们的 CMOS 实现(粗略地说它们的门数很少)。NOT 当然是最简单的操作,因为它所做的只是反转位。然而,就实际 CPU 而言,即使是加/减操作也可能只需要一个周期。

于 2012-10-05T06:32:26.193 回答
1

我怀疑这种论点;ALU 实现了几个操作。首先,它显然取决于实际的 CPU,其次它取决于整个 CPU 架构(Load-store 等)。

然而,我从Wikipedia引用了一个似是而非的论点:

在某些计算机体系结构上,通过将寄存器与自身进行异或(与自身异或的位始终为零)而不是加载和存储值零,将零存储在寄存器中更有效。

这是因为不需要额外的操作数。

于 2012-10-05T06:36:29.833 回答