
嗯,我不能理解上面从维基百科引用的冯诺依曼体系结构图,甚至不确定它是否正确。我有一些明显的疑虑-
ALU如何与内存通信?那不应该是CU的工作吗?
累加器如何成为ALU的一部分?
那么,累加器的工作到底是什么呢?
发布于 2010-11-16 06:37:20
从IAS计算机的diagram (应该非常类似于von Neumann写到的计算机EDVAC )判断,控制单元提供地址(寄存器MAR),并用诸如R/W*的信号控制总线事务。另一方面,ALU连接到数据总线(寄存器MDR):它从内存接收数据并存储结果。该图还显示ALU接收指令并将其转发到CU (寄存器IBR)。
例如,假设控制单元刚刚获取了指令ADD $1234。则处理过程如下进行:
$1234放到地址总线上,并启动一个读周期您的问题的答案:
最后,我相信这个讨论纯粹是历史的。将MDR与ALU而不是CU关联没有特别的原因。只是von Neumann在写一篇关于EDVAC的论文时碰巧有这样的想法。为了使故事完整,维基百科说EDVAC实际上是由Eckert和Mauchly设计的,而von Neumann只做咨询和写作。
发布于 2010-11-10 00:14:28
累加器是寄存器,其中暂时存储算术运算的结果。它比直接使用主存更快。因为它存储算术结果,所以作为ALU的一部分是有意义的。
控制单元就像一个协调器,告诉其他组件这样做或那样做。但是它没有提供方法,所以这就是为什么ALU需要直接与存储器通信的原因。
发布于 2010-12-01 23:15:05
当执行某些操作时,ALU会更改标志寄存器,这就是它与内存连接的原因(标志既不在CU中,也不在ALU中,因为它们是唯一显示的组件)。并且累加器存储暂时等待ALU处理的数据。它直接连接到ALU,因为该寄存器被认为支持其计算,就像ecx寄存器与计数器电路连接一样。当然,也可以添加ecx和edx,但速度较慢。选择源和目标寄存器是非常困难的,因为需要在CPU中实现额外的电路,并且它最近(相对地)存档。这张图片太老了(ssegvic是对的!)因为它表明只有使用累加器才能输入/输出。在我看来,这一点更清楚:

ALU连接在内部总线上,但这并不意味着它将与连接到它的所有设备通信。最后一件事:在寻找更好的图像时,我注意到ALU并不总是与内存相连,其中一些只与CU相连。
https://stackoverflow.com/questions/4135746
复制相似问题