嗯,我無法理解馮·諾依曼架構[維基百科收錄],甚至不能確定它是否是正確的上面的圖。我有一些明顯的疑問 -
ALU如何與內存通信?這不應該是CU的工作嗎?
累加器是ALU的一部分嗎?
而且,累加器的工作究竟是什麼?
嗯,我無法理解馮·諾依曼架構[維基百科收錄],甚至不能確定它是否是正確的上面的圖。我有一些明顯的疑問 -
ALU如何與內存通信?這不應該是CU的工作嗎?
累加器是ALU的一部分嗎?
而且,累加器的工作究竟是什麼?
從IAS計算機的diagram(它應該與EDVAC非常相似,馮·諾伊曼寫的計算機)來看,控制單元提供地址(寄存器MAR)並用諸如AS,R/W *。另一方面,ALU連接到數據總線(寄存器MDR):它從內存中接收數據並存儲結果。該圖還顯示ALU收到指令並將它們轉發給CU(寄存器IBR)。
例如,假設控制單元剛剛取得指令ADD $1234
。然後,處理過程如下:
$1234
到地址總線上,並啓動一個讀週期問題的答案:
最後,我相信這個討論純屬歷史。沒有特別的理由傾向於將MDR與ALU而不是CU相關聯。馮諾依曼正是在寫一篇關於EDVAC的文章時碰巧這樣想。爲了使故事完整,維基百科說EDVAC實際上是由Eckert和Mauchly設計的,而馮諾依曼只是做了諮詢和寫作。
累加器是暫時存儲算術運算結果的寄存器。它比直接使用主存更快。由於它存儲算術結果,因此成爲ALU的一部分是有意義的。
控制單元就像一個協調器,告訴其他組件做這件事和那件事。但它沒有提供如何去做的方法,所以這就是爲什麼ALU需要與內存進行直接通信的原因。
好吧,ALU在做某事的時候改變了標誌寄存器,這就是爲什麼它與存儲器連接(標誌不在CU和ALU中,因爲這些是唯一顯示的組件)。累加器存儲臨時等待ALU處理的數據。它直接連接到ALU,因爲這個寄存器被認爲支持它的計算,就像ecx寄存器與計數器電路連接一樣。當然可以添加ecx,edx但速度較慢。由於在CPU中實現所需的額外電路並且最近(相對)存檔,所以選擇源寄存器和目標寄存器非常困難。這張圖片相當陳舊(ssegvic是對的!),因爲它表明輸入/輸出只能使用累加器。 在我看來,這是更清晰:
的ALU連接在內部總線,但這並不意味着它會與連接到它的一切通信。最後一件事:尋找更好的圖像我注意到,ALU並不總是與內存相連,其中一些內存僅與CU連接。