2

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

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

我知道ALU不存储值,而是接收它,并被指示简单地执行逻辑部分,但Register可以存储和执行通用目的?

如果后者为真,那么何时使用ALU,以及何时使用通用寄存器?

+0

有寄存器的几种形式,它们做“算术”,例如http://en.wikipedia.org/wiki/Shift_register - 但我怀疑这是你在找什么。 –

+0

有趣的,我会研究这个,谢谢你SK-Logic – user3129884

回答

0

寄存器不做算术运算。现代内核有几个“执行单元”或“功能单元”,而不是“ALU”。一个合理的经验法则是放弃任何在主流CPU中使用ALU的文本(在线或硬拷贝)。在嵌入式系统中,“ALU”仍然有意义,因为嵌入式系统中μC实际上可能有一个ALU,否则它本质上是一个时代错误。如果你看到它,通常它会告诉你的是,材料严重过时。

3

寄存器不能算术。 “登记册”只是一个可以坚持价值的地方的术语。您可以对存储在寄存器中的进行算术运算,并将结果保存回寄存器。这种算法可以通过“ALU”完成,它是处理器进行数字计算的部分的通用术语。

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

+0

非常感谢你,我相信这是我的困惑起源于哪里。 “几乎所有的计算机,加载存储体系结构,或者不是,将数据从较大的存储器加载到寄存器中用于算术运算”,但我看到它们的含义是这些值由ALU组件测试,而不是实际的寄存器。 但是,注册存储什么样的数据?我知道状态,但通用目的是什么? – user3129884

+0

这句话只是说大多数计算机不直接在批量存储器中的值上操作。相反,它们将内存中的各个值加载到寄存器中,并在其中进行操作。然后结果从寄存器存回内存。 – TypeIA

+0

“通用寄存器”只是表示寄存器没有特别的意义,您可以在其中输入任意值并对其进行操作。你可以把它们想象成程序中的局部变量。 – TypeIA

1

尽管寄存器正确地说不算算术,但是可以构建既存储数字又存储数字的电路,并且当设置了特定输入线时,可以增加该数量。人们可以将其解释为一个执行算术(数量非常有限)的寄存器。碰巧,在通用CPU中通常不会使用这样的电路(除了作为程序计数器),但是这样的电路可以用于非常简单的数字控制器。

[注:在历史上,第一个这样的电路是从真空管制造和使用在盖革计数器计数放射性衰变事件多少发生在很短的时间]