馮·諾依曼結構
馮·諾依曼結構
馮·諾依曼結構也稱普林斯頓結構,是一種將程序指令存儲器和數據存儲器合併在一起的存儲器結構。程序指令存儲地址和數據存儲地址指向同一個存儲器的不同物理位置,因此程序指令和數據的寬度相同,如英特爾公司的8086中央處理器的程序指令和數據都是16位寬。
數學家馮·諾依曼提出了計算機製造的三個基本原則,即採用二進位邏輯、程序存儲執行以及計算機由五個部分組成(運算器、控制器、存儲器、輸入設備、輸出設備),這套理論被稱為馮·諾依曼體系結構。
在計算機誕生之前,人們在計算的精度和數量上出現了瓶頸,對於計算機這樣的機器的需求就十分強烈,馮·諾依曼的邏輯和計算機思想指導他設計並製造出歷史上的第一台通用電子計算機。他的計算機理論主要受自身數學基礎影響,且具有高度數學化、邏輯化特徵,對於該理論,他自己一般會叫作“計算機的邏輯理論”。而他的計算機存儲程序的思想,則是他的另一偉大創新,通過內部存儲器安放存儲程序,成功解決了當時計算機存儲容量太小,運算速度過慢的問題。
馮·諾依曼結構
(1)將電路、邏輯兩種設計進行分離,給計算機建立創造最佳條件;
(2)將個人神經系統、計算機結合在一起,提出全新理念,即生物計算機。
即便ENIAC機是通過當時美國乃至全球頂尖技術實現的,但它採用臨時存儲,將運算器確定成根本,故而缺點較多,比如存儲空間有限、程序無法存儲等,且運行速度較慢,具有先天不合理性。馮·諾依曼以此為前提制定以下優化方案:
(1)用二進位進行運算,大大加快了計算機速度。
(2)存儲程序,也就是通過計算機內部存儲器保存運算程序。
馮·諾依曼結構
現代計算機發展所遵循的基本結構形式始終是馮·諾依曼機結構。這種結構特點是“程序存儲,共享數據,順序執行”,需要CPU從存儲器取出指令和數據進行相應的計算。主要特點有:
(1)單處理機結構,機器以運算器為中心。
(2)採用程序存儲思想。
(3)指令和數據一樣可以參與運算。
(4)數據以二進位表示。
(5)將軟體和硬體完全分離。
(6)指令由操作碼和操作數組成。
(7)指令順序執行。
CPU與共享存儲器間的信息交換的速度成為影響系統性能的主要因素,而信息交換速度的提高又受制於存儲元件的速度、存儲器的性能和結構等諸多條件。
傳統馮·諾依曼計算機體系結構的存儲程序方式造成了系統對存儲器的依賴,CPU訪問存儲器的速度制約了系統運行的速度。集成電路IC晶元的技術水平決定了存儲器及其他硬體的性能。為了提高硬體的性能,以英特爾公司為代表的晶元製造企業在集成電路生產方面做出了極大的努力,且獲得了巨大的技術成果。現在每隔18個月IC的集成度翻一倍,性能也提升一倍,產品價格降低一半,這就是所謂的“摩爾定律”。這個規律已經持續了40多年,估計還將延續若干年。然而,電子產品面臨的二個基本限制是客觀存在的:光的速度和材料的原子特性。首先,信息傳播的速度最終將取決於電子流動的速度,電子信號在元件和導線里流動會產生時間延遲,頻率過高會造成信號畸變,所以元件的速度不可能無限的提高直至達到光速。第二,計算機的電子信號存儲在以硅晶體材料為代表晶體管上,集成度的提高在於晶體管變小,但是晶體管不可能小於一個硅原子的體積。隨著半導體技術逐漸逼近硅工藝尺寸極限,摩爾定律原導出的規律將不再適用。
對馮·諾依曼計算機體系結構缺陷的分析:
(1)指令和徠數據存儲在同一個存儲器中,形成系統對存儲器的過分依賴。如果儲存器件的發展受阻,系統的發展也將受阻。
(2)指令在存儲器中按其執行順序存放,由指令計數器PC指明要執行的指令所在的單元地址。然後取出指令執行操作任務。所以指令的執行是串列。影響了系統執行的速度。
(3)存儲器是按地址訪問的線性編址,按順序排列的地址訪問,利於存儲和執行的機器語言指令,適用於作數值計算。但是高級語言表示的存儲器則是一組有名字的變數,按名字調用變數,不按地址訪問。機器語言同高級語言在語義上存在很大的間隔,稱之為馮·諾依曼語義間隔。消除語義間隔成了計算機發展面臨的一大難題。
(4)馮·諾依曼體系結構計算機是為算術和邏輯運算而誕生的,目前在數值處理方面已經到達較高的速度和精度,而非數值處理應用領域發展緩慢,需要在體系結構方面有重大的突破。
(5)傳統的馮·諾依曼型結構屬於控制驅動方式。它是執行指令代碼對數值代碼進行處理,只要指令明確,輸入數據準確,啟動程序后自動運行而且結果是預期的。一旦指令和數據有錯誤,機器不會主動修改指令並完善程序。而人類生活中有許多信息是模糊的,事件的發生、發展和結果是不能預期的,現代計算機的智能是無法應對如此複雜任務的。
哈佛結構的計算機分為三大部件:(1)CPU;(2)程序存儲器;(3)數據存儲器。它的特點是將程序指令和數據分開存儲,由於數據存儲器與程序存儲器採用不同的匯流排,因而較大的提高了存儲器的帶寬,使之數字信號處理性能更加優越。
哈佛結構是一種將程序指令存儲和數據存儲分開的存儲器結構。中央處理器首先到程序指令存儲器中讀取程序指令內容,解碼后得到數據地址,再到相應的數據存儲器中讀取數據,並進行下一步的操作(通常是執行)。程序指令存儲和數據存儲分開,可以使指令和數據有不同的數據寬度,如Microchip公司的PIC16晶元的程序指令是14位寬度,而數據是8位寬度。
為避免將程序和指令共同存儲在存儲器中,並共用同一條匯流排,使得CPU和內存的信息流訪問存取成為系統的瓶頸,人們設計了哈佛結構,原則是將程序和指令分別存儲在不同的存儲器中,分別訪問。如此設計克服了數據流傳輸瓶頸,提高了運算速度,但結構複雜,對外圍設備的連接與處理要求高,不適合外圍存儲器的擴展,實現成本高,所以哈佛結構未能得到大範圍的應用。但是作為馮式存儲程序的改良手段,哈佛結構在CPU內的高速緩存Cache中得到了應用。通過設置指令緩存和數據緩存,指令和數據分開讀取,提高了數據交換速度,極大克服了計算機的數據瓶頸。通過增加處理器數量,中央處理單元從最初的單核向雙核、四核的方向發展,在馮氏計算機的簡單結構下,增加處理器數量,也極大提高了計算機的運算性能。存儲程序的方式使得計算機擅長數值處理而限制了其在非數值處理方面的發展。
哈佛結構處理器有兩個明顯的特點:使用兩個獨立的存儲器模塊,分別存儲指令和數據,每個存儲模塊都不允許指令和數據並存;使用獨立的兩條匯流排,分別作為CPU與每個存儲器之間的專用通信路徑,而這兩條匯流排之間毫無關聯。
改進的哈佛結構,其結構特點為:以便實現并行處理;具有一條獨立的地址匯流排和一條獨立的數據匯流排,利用公用地址匯流排訪問兩個存儲模塊(程序存儲模塊和數據存儲模塊),公用數據匯流排則被用來完成程序存儲模塊或數據存儲模塊與CPU之間的數據傳輸。
馮·諾依曼理論的要點是:數字計算機的數制採用二進位;計算機應該按照程序順序執行。人們把馮諾依曼的這個理論稱為馮諾依曼體系結構。從ENIAC到當前最先進的計算機都採用的是馮諾依曼體系結構。所以馮諾依曼是當之無愧的數字計算機之父。
根據馮諾依曼體系結構構成的計算機,必須具有如下功能:把需要的程序和數據送至計算機中;必須具有長期記憶程序、數據、中間結果及最終運算結果的能力;能夠完成各種算術、邏輯運算和數據傳送等數據加工處理的能力;能夠根據需要控制程序走向,並能根據指令控制機器的各部件協調操作;能夠按照要求將處理結果輸出給用戶。
哈佛結構是為了高速數據處理而採用的,因為可以同時讀取指令和數據(分開存儲的)。大大提高了數據吞吐率,缺點是結構複雜。通用微機指令和數據是混合存儲的,結構上簡單,成本低。假設是哈佛結構:你就得在電腦安裝兩塊硬碟,一塊裝程序,一塊裝數據,內存裝兩根,一根儲存指令,一根存儲數據……
是什麼結構要看匯流排結構的。51單片機雖然數據指令存儲區是分開的,但匯流排是分時復用的,所以頂多算改進型的哈佛結構。ARM9雖然是哈佛結構,但是之前的版本也還是馮·諾依曼結構。早期的X86能迅速佔有市場,一條很重要的原因,正是靠了馮·諾依曼這種實現簡單,成本低的匯流排結構。處理器雖然外部匯流排上看是諾依曼結構的,但是由於內部CACHE的存在,因此實際上內部來看已經算是改進型哈佛結構的了。
馮·諾依曼結構開啟了計算機系統結構發展的先河,但是因為其集中、順序的的控制而成為性能提高的瓶頸,因此各國科學家仍然在探索各種非馮·諾依曼結構,比如,數據流計算機,函數式編程語言計算機等都是較為著名的非馮·諾依曼結構。
近幾年來人們努力謀求突破傳統馮·諾依曼體制的局限,各類非諾依曼化計算機的研究如雨後春筍蓬勃發展,主要表現在以下四個方面:
(1)對傳統馮·諾依曼機進行改良,如傳統體系計算機只有一個處理部件是串列執行的,改成多處理部件形成流水處理,依靠時間上的重疊提高處理效率。
(2)由多個處理器構成系統,形成多指令流多數據流支持并行演演算法結構。這方面的研究目前已經取得一些成功。
(3)否定馮·諾依曼機的控制流驅動方式。設計數據流驅動工作方式的數據流計算機,只要數據已經準備好,有關的指令就可并行地執行。這是真正非諾依曼化的計算機,這樣的研究還在進行中,已獲得階段性的成果,如神經計算機。
(4)徹底跳出電子的範疇,以其它物質作為信息載體和執行部件,如光子、生物分子、量子等。眾多科學家正為進行這些前瞻性的研究。