被西方人譽(yù)為“計算機(jī)之父”的美籍匈牙利科學(xué)家、 數(shù)學(xué)家 馮 · 諾依曼 于 1945 年發(fā)表了一個全新的 " 存儲程序通用電子計算機(jī)方案 "— EDVAC 。 EDVAC 方案提出了著名的“ 馮·諾依曼體系結(jié)構(gòu)”理論:
(1) 采用二進(jìn)制形式表示數(shù)據(jù)和指令
在存儲程序的計算機(jī)中,數(shù)據(jù)和指令都是以二進(jìn)制形式存儲在存儲器中的。從存儲器存儲的內(nèi)容來看兩者并無區(qū)別.都是由0和1組成的代碼序列,只是各自約定的含義不同而已。計算機(jī)在讀取指令時,把從計算機(jī)讀到的信息看作是指令;而在讀取數(shù)據(jù)時,把從計算機(jī)讀到的信息看作是操作數(shù)。數(shù)據(jù)和指令在軟件編制中就已加以區(qū)分,所以正常情況下兩者不會產(chǎn)生混亂。有時我們也把存儲在存儲器中的數(shù)據(jù)和指令統(tǒng)稱為數(shù)據(jù),因為程序信息本身也可以作為被處理的對象,進(jìn)行加工處理,例如對照程序進(jìn)行編譯,就是將源程序當(dāng)作被加工處理的對象。
(2) 采用存儲程序方式
這是馮·諾依曼思想的核心內(nèi)容。如前所述,它意味著事先編制程序,事先將程序(包含指令和數(shù)據(jù))存入主存儲器中,計算機(jī)在運行程序時就能自動地、連續(xù)地從存儲器中依次取出指令且執(zhí)行。這是計算機(jī)能高速自動運行的基礎(chǔ)。計算機(jī)的工作體現(xiàn)為執(zhí)行程序,計算機(jī)功能的擴(kuò)展在很大程度上也體現(xiàn)為所存儲程序的擴(kuò)展。計算機(jī)的許多具體工作方式也是由此派生的。
馮·諾依曼機(jī)的這種工作方式,可稱為控制流(指令流)驅(qū)動方式。即按照指令的執(zhí)行序列,依次讀取指令,然后根據(jù)指令所含的控制信息,調(diào)用數(shù)據(jù)進(jìn)行處理。因此在執(zhí)行程序的過程中,始終以控制信息流為驅(qū)動工作的因素,而數(shù)據(jù)信息流則是被動地被調(diào)用處理。為了控制指令序列的執(zhí)行順序,設(shè)置一個程序(指令)計數(shù)器PC(Program Counter),讓它存放當(dāng)前指令所在的存儲單元的地址。如果程序現(xiàn)在是順序執(zhí)行的,每取出一條指令后PC內(nèi)容加l,指示下一條指令該從何處取得。如果程序?qū)⑥D(zhuǎn)移到某處,就將轉(zhuǎn)移的目標(biāo)地址送入PC,以便按新地址讀取后繼指令。所以,PC就像一個指針,一直指示著程序的執(zhí)行進(jìn)程,也就是指示控制流的形成。雖然程序與數(shù)據(jù)都采用二進(jìn)制代碼,仍可按照PC的內(nèi)容作為地址讀取指令,再按照指令給出的操作數(shù)地址去讀取數(shù)據(jù)。由于多數(shù)情況下程序是順序執(zhí)行的,所以大多數(shù)指令需要依次地緊挨著存放,除了個別即將使用的數(shù)據(jù)可以緊挨著指令存放外、一般將指令和數(shù)據(jù)分別存放在該程序區(qū)的不同區(qū)域內(nèi)。
(3) 由運算器、存儲器、控制器、輸入設(shè)備和輸出設(shè)備五大部件組成計算機(jī)系統(tǒng),并規(guī)定了這五部分的基本功能。
上述這些概念奠定了現(xiàn)代計算機(jī)的基本結(jié)構(gòu)思想,到目前為止,絕大多數(shù)計算機(jī)仍沿用這一體制,即馮·諾依曼型計算機(jī)體制。