CPU内部的寄存器可以做算术吗?



我在许多详细的文章中读到,来自寄存器的数据被用作 ALU 添加两个 32 位整数的操作数,这只是 ALU 实际可以做的一小部分。

但是我也读过寄存器甚至可以做算术吗?两者之间的区别对我来说非常模糊,寄存器和实际的ALU组件之间的明显区别是什么?

我知道 ALU 不存储值,而是接收值,并被指示简单地做逻辑部分,但寄存器既可以存储又可以做通用的东西?

如果后者成立,那么何时使用ALU,何时使用通用寄存器?

寄存器不能做算术。"寄存器"只是一个术语,表示您可以在其中粘贴值。您可以对存储在寄存器中的进行算术运算,并将结果保存回寄存器中。此算术将由"ALU"完成,"ALU"是处理器中执行数字运算的部分的通用术语。

如果您仍然对阅读的特定内容感到困惑,请在此处引用或发布引用,有人可以尝试澄清。请注意,"寄存器"和"ALU"是非常通用的术语,在每个体系结构中的实现和使用方式不同。

虽然寄存器确实不做算术,但可以构造一个电路,既存储一个数字,又在设置特定输入行时递增该数字。 人们可以将其解释为执行(非常有限数量的)算术的寄存器。 碰巧的是,在通用CPU中通常不使用这种电路(除了作为程序计数器),但这种电路在非常简单的数字控制器中可能很有用。

[注意:从历史上看,第一个这样的电路是由真空管制成的,用于盖革计数器,以计算在短时间内发生了多少放射性衰变事件]

寄存器不做算术。现代内核有几个"执行单元"或"功能单元",而不是"ALU"。一个合理的经验法则是丢弃任何在主流 CPU 环境中以 ALU 说话的文本(在线或硬拷贝)。"ALU"在嵌入式系统中仍然有意义,其中μC实际上可能具有ALU,但除此之外,它本质上是不合时宜的。如果你看到它,通常它告诉你的是材料严重过时了。

最新更新