关于冯诺依曼建筑图的一些疑问

时间:2010-11-09 16:01:58

标签: cpu computer-architecture von-neumann

alt text

好吧,我无法理解上面的Von Neumann架构图[引自维基百科],甚至不确定它是否正确。我有一些明显的疑问 -

ALU如何与内存通信?这不应该是CU的工作吗?

累加器如何成为ALU的一部分?

而且,累加器的工作究竟是什么?

3 个答案:

答案 0 :(得分:8)

从IAS计算机的diagram(应该与EDVAC非常相似,计算机冯·诺伊曼写过)中,控制单元提供地址(寄存器MAR)并使用AS等信号控制总线事务,R / W *。 另一方面,ALU连接到数据总线(寄存器MDR):它从存储器接收数据并存储结果。该图还显示ALU接收指令并将它们转发到CU(寄存器IBR)。

例如,假设控制单元刚刚获取了指令ADD $1234。然后处理过程如下:

  1. CU将$1234放入地址总线并启动读取周期
  2. 操作数由ALU(寄存器MDR)接收并添加累加器(寄存器AC)
  3. 添加的结果最终存储在累加器中。
  4. 您的问题的答案:

    1. ALU从内存接收数据,执行操作并存储结果。当所有数据都存储在内存中时(没有通用寄存器),因此将MDR放入ALU是合乎逻辑的,这意味着ALU应该连接到数据总线。
    2. IAS计算机的设计方式是将一个ALU输入和ALU输出硬连线到累加器。因此,将累加器放在ALU中是合乎逻辑的。
    3. 累加器被设想为存储中间结果的地方,因为具有多个内存操作数的指令更难实现。
    4. 最后,我相信这个讨论纯粹是历史性的。没有特别的理由希望将MDR与ALU而不是CU相关联。当他正在撰写一篇关于EDVAC的论文时,冯·诺伊曼碰巧就这么想了。为了完成这个故事,维基百科说EDVAC实际上是由Eckert和Mauchly设计的,而von Neumann只是在咨询和写作。

答案 1 :(得分:3)

累加器是临时存储算术运算结果的寄存器。它比直接使用主存储器更快。由于它存储算术结果,因此成为ALU的一部分是有意义的。

控制单元就像一个协调员,告诉其他组件这样做。但它没有提供如何做到这一点的方法,所以这就是ALU需要与内存进行直接通信的原因。

答案 2 :(得分:1)

好吧,ALU在执行某些操作时更改了标志寄存器,这就是它与内存连接的原因(标志不在CU和ALU中,并且因为这些是显示的唯一组件..)。累加器存储暂时等待ALU处理它的数据。它直接连接到ALU,因为该寄存器被认为支持它的计算,就像ecx寄存器与计数器电路相连。当然可以添加ecx,edx但速度较慢。由于在CPU中实现所需的额外电路并且最近(相对)存档,因此选择源寄存器和目标寄存器非常困难。那个图像很老(ssegvic是对的!),因为它表明输入/输出只能使用累加器。 在我看来,这更清楚:

ALU连接在内部总线上,但这并不意味着它将与连接到它的所有内容进行通信。 最后一件事:寻找更好的图像我注意到ALU并不总是与内存连接,其中一些只与CU连接。

相关问题