代码之家  ›  专栏  ›  技术社区  ›  Shubham

关于冯·诺依曼弧图的一些质疑

  •  6
  • Shubham  · 技术社区  · 15 年前

    alt text

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

    蓄能器是铝的一部分吗?

    3 回复  |  直到 15 年前
        1
  •  8
  •   ssegvic    13 年前

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

    ADD $1234 . 然后处理进行如下:

    1. 特写看跌期权 $1234
    2. 操作数由ALU(寄存器MDR)接收,并与累加器(寄存器AC)相加
    3. 加法的结果最终存储在累加器中。

    回答您的问题:

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

    最后,我认为这次讨论纯粹是历史性的。没有特别的理由更愿意将MDR与ALU而不是CU相关联。只是冯·诺依曼在写一篇关于艾德瓦茨的论文时碰巧这么想。为了使故事完整,维基百科说EDVAC实际上是由Eckert和Mauchly设计的,而von Neumann只做咨询和写作。

        2
  •  3
  •   Liviu Mandras    15 年前

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

        3
  •  1
  •   BlackBear    15 年前

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

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

    推荐文章