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