1. 程式人生 > >馮·諾依曼結構

馮·諾依曼結構

1945 年 6 月 30 日, 約翰 · 馮 · 諾依曼與戈德斯坦等人聯名發表著名的 101 頁報告:「First Draft of a Report on the EDVAC 」(EDVAC 報告書的第一份草案;EDVAC:Electronic Discrete Variable Automatic Computer, 電子資料計算機)

 

1946年7-8月間, 約翰 · 馮 · 諾依曼等人又提出了一個更加完善的設計報告「Preliminary Discussion of the the Logical Design of an Electronic Computing Instrument」(電子計算機邏輯設計初探)。 

 

報告指出:

(1)計算機應採用二進位制, 不但資料採用二進位制, 程式指令也採用二進位制;

(2)計算機由5部分構成: 運算器、 控制器、 儲存器、 輸入和輸出裝置;

(3)程式由指令組成並和資料一起存放在儲存器中, 機器按程式指定的邏輯順序, 把指令從儲存器中讀出來並逐條執行, 從而自動完成程式描述的處理工作, 即「儲存程式」思想。

 

馮·諾伊曼結構

 

這裡我們不談論前兩點,只談談由第三點“儲存程式”思想衍生出的結構: 馮 · 諾依曼結構, 即「將程式指令和資料儲存在一起」的儲存器結構, 也可稱之為普林斯頓結構(可能是隻以他的名字命名較為不公, 所以也有人以約翰 · 馮· 諾依曼曾任教的大學普林斯頓來命名該結構)。 下面是個人對馮 · 諾依曼結構的理解。

首先,馮·諾伊曼結構的本質是「儲存器結構, 什麼是儲存器(Memory)? 現代的儲存器種類很多, 個人認為馮 · 諾依曼結構當中的儲存器指的是我們現在說的 RAM(Random Access Memory,隨機讀取儲存器), 暫時可以理解為是 PC 中的記憶體(條), 而不是指硬碟等儲存器(如有不同看法,歡迎發表), 理解這一點很重要。
其次, 什麼是程式指令和資料? 程式指令本質就是控制計算機進行相關運算的一些二進位制「編碼」(在馮·諾依曼機中指的是二進位制碼),但是這些「編碼」是人為事先定義、計算機可「理解」的。那麼資料呢?資料就是人為輸入和程式指令被執行後產生的「編碼」, 計算機不可「理解」。馮 · 諾依曼之所以將這兩者都儲存在 RAM 中,就是因為它們本質上都是「編碼」。但是這兩者之間還有一個重要的區別: 程式指令在執行時是不可變的, 而資料則是可變的。 所以我們可以認為程式指令的目的實際上就是為了產生資料和改變資料。 這意味著將程式指令和資料放在同一塊儲存器上可能造成程式指令的不穩定(即程式指令在執行時容易被改寫, 這也是為什麼 PC 機上程式容易出現崩潰的部分原因)。
最後, CPU 和儲存器之間通過什麼進行溝通? 我們知道馮 · 諾依曼機的 CPU 需要從 RAM 中讀寫資料, 取指令、 翻譯指令、 執行指令。 後兩者 CPU 可獨立完成, 前兩者 CPU 則需要通過系統匯流排與 RAM 進行溝通。 系統匯流排分為地址匯流排, 資料匯流排和控制匯流排, 分別用於傳輸地址訊號、 資料訊號和控制訊號(但要注意這幾種匯流排不一定是獨立的,比如資料匯流排可能會承擔地址匯流排的功能), 由於將指令和資料放在一起,馮 · 諾依曼結構是比較節省匯流排資源的。
---------------------
作者:Kilento
來源:CSDN
原文:https://blog.csdn.net/u012867916/article/details/54619131
版權宣告:本文為博主原創文章,轉載請附上博文連結!