xor是ALU可以做的最快的操作吗?

时间:2012-10-05 06:30:28

标签: assembly cpu xor boolean-logic

xor是ALU在一个字节上可以做的最快的操作吗?我的教授说这是因为没有什么比检查两件事情是否相同更简单。这是考虑xor的正确方法,如果操作数不同则返回1,如果它们相同则返回0吗?

3 个答案:

答案 0 :(得分:6)

这完全取决于CPU的工作方式。实际上,现代芯片上的ALU操作都是一个时钟周期 - 但即便是这种说法也过于笼统,因为通常有不止一种算术方法。

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

在大多数体系结构中,ALU不仅返回一个值,它们还修改标志:overflow(进位),零等。如果其他指令依赖于这些标志,则执行算术运算所需的时间可能会改变,尤其是有条件参与。查看手册。

此外,就延迟而言,“快速”与每秒操作的“快速”不同。 XOR可能需要一个时钟周期才能在ALU中执行,但需要另一个时钟周期,直到结果可用于另一条指令,标志或其他方式。即使这样,乱序执行也可以使似乎就像结果立即可用一样,但这是因为芯片正在为了让自己忙碌而随意移动。

答案 1 :(得分:5)

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

答案 2 :(得分:1)

我怀疑论证; ALU实施了多项业务。首先,它显然取决于实际的CPU,其次它取决于整体CPU架构(加载存储等)。

然而,我引用了Wikipedia

,这是一个看似合理的论点
  

在某些计算机体系结构中,通过将寄存器与其自身进行对齐来存储寄存器(将xor-ed与它们自身始终为零)而不是加载和存储零值,这样更有效。

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