2010-11-09 78 views
6

alt text關於馮·諾依曼Arcitechture的圖有些疑惑

嗯,我無法理解馮·諾依曼架構[維基百科收錄],甚至不能確定它是否是正確的上面的圖。我有一些明顯的疑問 -

ALU如何與內存通信?這不應該是CU的工作嗎?

累加器是ALU的一部分嗎?

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

回答

8

從IAS計算機的diagram(它應該與EDVAC非常相似,馮·諾伊曼寫的計算機)來看,控制單元提供地址(寄存器MAR)並用諸如AS,R/W *。另一方面,ALU連接到數據總線(寄存器MDR):它從內存中接收數據並存儲結果。該圖還顯示ALU收到指令並將它們轉發給CU(寄存器IBR)。

例如,假設控制單元剛剛取得指令ADD $1234。然後,處理過程如下:

  1. CU把$1234到地址總線上,並啓動一個讀週期
  2. 操作數由ALU(寄存器MDR)接收,並與儲液器中加入(註冊AC)
  3. 的加法結果最終存儲在累加器中。

問題的答案:

  1. ALU從存儲器中接收數據,執行操作和存回的結果。當時所有數據都存儲在內存中(沒有通用寄存器),因此將MDR放入ALU是合理的,這意味着ALU應該連接到數據總線。
  2. IAS計算機的設計方式是將一個ALU輸入和ALU輸出硬連線到累加器。因此將累加器放置在ALU中是合乎邏輯的。
  3. 累加器被認爲是存儲中間結果的地方,因爲具有多個內存操作數的指令更難實現。

最後,我相信這個討論純屬歷史。沒有特別的理由傾向於將MDR與ALU而不是CU相關聯。馮諾依曼正是在寫一篇關於EDVAC的文章時碰巧這樣想。爲了使故事完整,維基百科說EDVAC實際上是由Eckert和Mauchly設計的,而馮諾依曼只是做了諮詢和寫作。

3

累加器是暫時存儲算術運算結果的寄存器。它比直接使用主存更快。由於它存儲算術結果,因此成爲ALU的一部分是有意義的。

控制單元就像一個協調器,告訴其他組件做這件事和那件事。但它沒有提供如何去做的方法,所以這就是爲什麼ALU需要與內存進行直接通信的原因。

1

好吧,ALU在做某事的時候改變了標誌寄存器,這就是爲什麼它與存儲器連接(標誌不在CU和ALU中,因爲這些是唯一顯示的組件)。累加器存儲臨時等待ALU處理的數據。它直接連接到ALU,因爲這個寄存器被認爲支持它的計算,就像ecx寄存器與計數器電路連接一樣。當然可以添加ecx,edx但速度較慢。由於在CPU中實現所需的額外電路並且最近(相對)存檔,所以選擇源寄存器和目標寄存器非常困難。這張圖片相當陳舊(ssegvic是對的!),因爲它表明輸入/輸出只能使用累加器。 在我看來,這是更清晰:

的ALU連接在內部總線,但這並不意味着它會與連接到它的一切通信。最後一件事:尋找更好的圖像我注意到,ALU並不總是與內存相連,其中一些內存僅與CU連接。