突破冯诺依曼原理的计算机,冯诺依曼计算机的基本原理
馮·諾伊曼結(jié)構(gòu)(英語:Von Neumann architecture),也稱馮·諾伊曼模型(Von Neumann model)或普林斯頓結(jié)構(gòu)(Princeton architecture),是一種將程序指令存儲器和數(shù)據(jù)存儲器合并在一起的電腦設(shè)計概念結(jié)構(gòu)。本詞描述的是一種實現(xiàn)通用圖靈機的計算設(shè)備,以及一種相對于并行計算的序列式結(jié)構(gòu)參考模型(referential model)。
本結(jié)構(gòu)隱約指導(dǎo)了將存儲設(shè)備與中央處理器分開的概念,因此依本結(jié)構(gòu)設(shè)計出的計算機又稱存儲程序計算機。
歷史
最早的計算機器僅內(nèi)含固定用途的程序?,F(xiàn)代的某些計算機依然維持這樣的設(shè)計方式,通常是為了簡化或教育目的。例如一個計算器僅有固定的數(shù)學計算程序,它不能拿來當作文字處理軟件,更不能拿來玩游戲。若想要改變此機器的程序,你必須更改線路、更改結(jié)構(gòu)甚至重新設(shè)計此機器。當然最早的計算機并沒有設(shè)計的那么可編程。當時所謂的“重寫程序”很可能指的是紙筆設(shè)計程序步驟,接著制訂工程細節(jié),再施工將機器的電路配線或結(jié)構(gòu)改變。而存儲程序型電腦的概念改變了這一切。借由創(chuàng)造一組指令集結(jié)構(gòu),并將所謂的運算轉(zhuǎn)化成一串程序指令的運行細節(jié),讓此機器更有彈性。借著將指令當成一種特別類型的靜態(tài)數(shù)據(jù),一臺存儲程序型電腦可輕易改變其程序,并在程控下改變其運算內(nèi)容。馮·諾伊曼結(jié)構(gòu)與存儲程序型電腦是互相通用的名詞,其用法將于下述。而哈佛結(jié)構(gòu)則是一種將程序數(shù)據(jù)與普通數(shù)據(jù)分開存儲的設(shè)計概念,但是它并未完全突破馮.諾伊曼架構(gòu)。
存儲程序型概念也可讓程序運行時自我修改程序的運算內(nèi)容。本概念的設(shè)計動機之一就是可讓程序自行增加內(nèi)容或改變程序指令的存儲器位置,因為早期的設(shè)計都要用戶手動修改。但隨著變址寄存器與間接位置訪問變成硬件結(jié)構(gòu)的必備機制后,本功能就不如以往重要了。而程序自我修改這項特色也被現(xiàn)代程序設(shè)計所棄揚,因為它會造成理解與調(diào)試的難度,且現(xiàn)代中央處理器的管線與緩存機制會讓此功能效率降低。
從整體而言,將指令當成數(shù)據(jù)的概念使得匯編語言、編譯器與其他自動編程工具得以實現(xiàn);可以用這些“自動編程的程序”,以人類較易理解的方式編寫程序[1];從局部來看,強調(diào)I/O的機器,例如Bitblt,想要修改畫面上的圖樣,以往是認為若沒有客制化硬件就辦不到。但之后顯示這些功能可以借由“運行中編譯”技術(shù)而有效達到。
此結(jié)構(gòu)當然有所缺陷,除了下列將述的馮·諾伊曼瓶頸之外,修改程序很可能是非常具傷害性的,無論無意或設(shè)計錯誤。在一個簡單的存儲程序型電腦上,一個設(shè)計不良的程序可能會傷害自己、其他程序甚或是操作系統(tǒng),導(dǎo)致死機。緩存溢出就是一個典型例子。而創(chuàng)造或更改其他程序的能力也導(dǎo)致了惡意軟件的出現(xiàn)。利用緩存溢出,一個惡意程序可以覆蓋調(diào)用堆棧(Call stack)并改寫代碼,并且修改其他程序文件以造成連鎖破壞。存儲器保護機制及其他形式的訪問控制可以保護意外或惡意的代碼更動。
第一次提出及實現(xiàn)
馮·諾伊曼結(jié)構(gòu)這個詞出自約翰·馮·諾伊曼的論文:First Draft of a Report on the EDVAC[2],于1945年6月30日。馮·諾依曼由于在曼哈頓工程中需要大量的運算,從而使用了當時最先進的兩臺計算機Mark I和ENIAC,在使用Mark I和ENIAC的過程中,他意識到了存儲程序的重要性,從而提出了存儲程序邏輯架構(gòu)。雖然馮·諾伊曼的概念非常新穎,但馮·諾伊曼結(jié)構(gòu)這個詞,對馮·諾伊曼的合作伙伴、時人甚至先輩都不公平。
一份康拉德·楚澤提出的專利應(yīng)用就已在1936年點出這類概念。而存儲程序型電腦的概念早在馮·諾伊曼知曉ENIAC的存在前就已在賓州大學的摩爾電機學院流傳了。此構(gòu)想的確實創(chuàng)立者永遠是個謎。
赫曼·魯寇夫(Herman Lukoff)相信是艾克特創(chuàng)建此概念。
毛奇利(Mauchly)與艾克特(Eckert)在1943年于他們建造ENIAC時寫下關(guān)于存儲程序的概念,另外,ENIAC項目管理員布萊德(Grist Brainerd)在1943年12月為ENIAC做的進度
總結(jié)
以上是生活随笔為你收集整理的突破冯诺依曼原理的计算机,冯诺依曼计算机的基本原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Robo 3T的安装与使用教程
- 下一篇: 平均成绩计算机控件,计算机技术基础(第十