我在许多详细的文章中读到,来自寄存器的数据被用作ALU的操作数,以添加两个32位整数,这只是ALU实际可以做的一小部分。
但是我也读过Register甚至可以做算术呢?两者之间的差异对我来说非常模糊,寄存器和实际ALU组件之间的明显区别是什么?
我知道ALU不存储值,而是接收它,并且被指示简单地执行逻辑部分,但是寄存器可以存储和执行通用的东西吗?
如果后者为真,那么何时使用ALU,何时使用通用寄存器?
答案 0 :(得分:3)
寄存器不能算术。 “注册”只是一个可以粘贴价值的地方的术语。您可以对存储在寄存器中的值进行算术运算,并将结果保存回寄存器中。这个算法将由“ALU”完成,这是执行数字运算的处理器部分的通用术语。
如果您仍然对您阅读的具体内容感到困惑,请在此处引用或发布引文,有人可以尝试澄清。请注意,“register”和“ALU”是非常通用的术语,在每个架构中都以不同的方式实现和使用。
答案 1 :(得分:1)
虽然正确地说寄存器确实不进行算术运算,但是可以构造一个既存储数字又可以设置特定输入线的电路来增加该数字。人们可以将其解释为执行(非常有限的)算术的寄存器。实际上,在通用CPU中通常没有这种电路的用途(除了可能作为程序计数器),但这种电路在非常简单的数字控制器中非常有用。
[注意:历史上,第一个这样的电路是由真空管制成的,并用于盖革计数器来计算在短时间内发生的放射性衰变事件的数量]
答案 2 :(得分:0)
寄存器不做算术。现代核心具有多个“执行单元”或“功能单元”而不是“ALU”。一个合理的经验法则是丢弃在主流CPU环境下以ALU表示的任何文本(在线或硬拷贝)。 “ALU”在嵌入式系统的环境中仍然是有意义的,其中μC实际上可能具有ALU,但是否则它实际上是不合时宜的。如果你看到它,通常它告诉你的是材料严重过时了。