首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于Von Neumann Arcitechture图的几点疑问

关于Von Neumann Arcitechture图的几点疑问
EN

Stack Overflow用户
提问于 2010-11-10 00:01:58
回答 3查看 2.2K关注 0票数 6

嗯,我不能理解上面从维基百科引用的冯诺依曼体系结构图,甚至不确定它是否正确。我有一些明显的疑虑-

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

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

那么,累加器的工作到底是什么呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-16 06:37:20

从IAS计算机的diagram (应该非常类似于von Neumann写到的计算机EDVAC )判断,控制单元提供地址(寄存器MAR),并用诸如R/W*的信号控制总线事务。另一方面,ALU连接到数据总线(寄存器MDR):它从内存接收数据并存储结果。该图还显示ALU接收指令并将其转发到CU (寄存器IBR)。

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

  1. CU将$1234放到地址总线上,并启动一个读周期
  2. 操作数被算术逻辑单元(寄存器MDR)接收,并与累加器(寄存器AC)
  3. 相加,相加的结果最终被存储到累加器中。

您的问题的答案:

  1. 算术逻辑单元接收来自存储器的数据,执行运算,并将结果存储回来。当时,所有数据都存储在内存中(没有通用寄存器),因此将MDR放入算术逻辑单元是合乎逻辑的,这意味着算术运算单元应该连接到数据总线。
  2. IAS计算机的设计方式是将算术运算单元的一个输入和算术运算单元的输出硬连线到累加器。因此,将累加器放在算术逻辑单元中是合乎逻辑的。
  3. 累加器被认为是存储中间结果的地方,因为具有多个内存操作数的指令更难实现。

最后,我相信这个讨论纯粹是历史的。将MDR与ALU而不是CU关联没有特别的原因。只是von Neumann在写一篇关于EDVAC的论文时碰巧有这样的想法。为了使故事完整,维基百科说EDVAC实际上是由Eckert和Mauchly设计的,而von Neumann只做咨询和写作。

票数 8
EN

Stack Overflow用户

发布于 2010-11-10 00:14:28

累加器是寄存器,其中暂时存储算术运算的结果。它比直接使用主存更快。因为它存储算术结果,所以作为ALU的一部分是有意义的。

控制单元就像一个协调器,告诉其他组件这样做或那样做。但是它没有提供方法,所以这就是为什么ALU需要直接与存储器通信的原因。

票数 3
EN

Stack Overflow用户

发布于 2010-12-01 23:15:05

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4135746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档