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