好吧,我无法理解上面的Von Neumann架构图[引自维基百科],甚至不确定它是否正确。我有一些明显的疑问 -
ALU如何与内存通信?这不应该是CU的工作吗?
累加器如何成为ALU的一部分?
而且,累加器的工作究竟是什么?
答案 0 :(得分:8)
从IAS计算机的diagram(应该与EDVAC非常相似,计算机冯·诺伊曼写过)中,控制单元提供地址(寄存器MAR)并使用AS等信号控制总线事务,R / W *。 另一方面,ALU连接到数据总线(寄存器MDR):它从存储器接收数据并存储结果。该图还显示ALU接收指令并将它们转发到CU(寄存器IBR)。
例如,假设控制单元刚刚获取了指令ADD $1234
。然后处理过程如下:
$1234
放入地址总线并启动读取周期您的问题的答案:
最后,我相信这个讨论纯粹是历史性的。没有特别的理由希望将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连接。