【问题标题】:Can Registers inside a CPU do ArithmeticsCPU内部的寄存器可以做算术吗
【发布时间】:2014-01-11 19:29:09
【问题描述】:

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

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

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

如果后者为真,那么什么时候使用 ALU,什么时候使用通用寄存器?

【问题讨论】:

  • 有几种形式的寄存器可以做“算术”,例如,en.wikipedia.org/wiki/Shift_register - 但我怀疑这就是你要找的。​​span>
  • 有趣,我会研究一下,谢谢 SK-Logic

标签: cpu computer-science cpu-registers computer-architecture


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 非常感谢,我相信这是我的困惑的根源。 “几乎所有计算机,无论是否加载存储架构,都将数据从更大的内存加载到用于算术的寄存器中”,但我明白他们的意思是这些值是由 ALU 组件而不是实际寄存器测试的.但是,Register 存储什么样的数据?我知道 Status,但一般用途意味着什么?
      • 那句话只是说大多数计算机不直接对大容量内存中的值进行操作。相反,它们将单个值从内存加载到寄存器中,然后在寄存器中对其进行操作。然后将结果从寄存器存储回内存。
      • “通用寄存器”仅表示没有特殊意义的寄存器,您可以在其中放置任意值并对其进行操作。你可以把它们想象成程序中的局部变量。
      猜你喜欢
      • 1970-01-01
      • 2011-12-31
      • 2019-07-03
      • 2018-12-08
      • 2019-02-17
      • 1970-01-01
      • 2015-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多