天天看點

馮·諾伊曼結構和哈佛結構

馮·諾伊曼結構和哈佛結構

馮·諾伊曼結構

馮·諾伊曼結構,也稱普林斯頓結構,是一種将程式指令存儲器和資料存儲器合并在一起的存儲器結構。程式指令存儲位址和資料存儲位址指向同一個存儲器的不同 實體位置,是以程式指令和資料的寬度相同,如英特爾公司的8086中央處理器的程式指令和資料都是16位寬。

  目前使用馮·諾伊曼結構的中央處理器和微控制器有很多。除了上面提到的英特爾公司的8086,英特爾公司的其他中央處理器、ARM的ARM7、MIPS公司的MIPS處理器也采用了馮·諾伊曼結構。

1945年,馮·諾依曼首先提出了“存儲程式”的概念和二進制原理,後來,人們把利用這種概念和原理設計的電子計算機系統統稱為“馮·諾曼型結構”計算機。馮·諾曼結構的處理器使用同一個存儲器,經由同一個總線傳輸。

  

馮·諾曼結構處理器具有以下幾個特點:必須有一個存儲器;必須有一個控制器;必須有一個運算器,用于完成算術運算和邏輯運算;必須有輸入和輸出裝置,用于 進行人機通信。馮·諾依曼的主要貢獻就是提出并實作了“存儲程式”的概念。由于指令和資料都是二進制碼,指令和操作數的位址又密切相關,是以,當初選擇這 種結構是自然的。但是,這種指令和資料共享同一總線的結構,使得資訊流的傳輸成為限制計算機性能的瓶頸,影響了資料處理速度的提高。

  

在典型情況下,完成一條指令需要3個步驟,即:取指令、指令譯碼和執行指令。從指令流的定時關系也可看出馮·諾依曼結構與哈佛結構處理方式的差别。舉一個 最簡單的對存儲器進行讀寫操作的指令,指令1至指令3均為存、取數指令,對馮·諾曼結構處理器,由于取指令和存取資料要從同一個存儲空間存取,經由同一總 線傳輸,因而它們無法重疊執行,隻有一個完成後再進行下一個。

哈佛結構

  哈佛結構是一種将程式指令存儲和資料存儲分開的存儲器結構。中央處理器首先到程式指令存儲器中讀取程式指令内 容,解碼後得到資料位址,再到相應的資料存儲器中讀取資料,并進行下一步的操作(通常是執行)。程式指令存儲和資料存儲分開,可以使指令和資料有不同的數 據寬度,如Microchip公司的PIC16晶片的程式指令是14位寬度,而資料是8位寬度。

  哈佛結構的微處理器通常具有較高的執行效率。其程式指令和資料指令分開組織和存儲的,執行時可以預先讀取下一條指令。目前使用哈佛結構的中央處理器和 微控制器有很多,除了上面提到的Microchip公司的PIC系列晶片,還有摩托羅拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的 AVR系列和安謀公司的ARM9、ARM10和ARM11。

  哈佛結構是指程式和資料空間獨立的體系結構,目的是為了減輕程式運作時的訪存瓶頸。

  例如最常見的卷積運算中, 一條指令同時取兩個操作數, 在流水線處理時, 同時還有一個取指操作, 如果程式和資料通過一條總線通路, 取指和取數必會産生沖突,而這對大運算量的循環的執行效率是很不利的。哈佛結構能基本上解決取指和取數的沖突問題。而對另一個操作數的通路,就隻能采用 Enhanced哈佛結構了,例如像TI那樣,資料區再split,并多一組總線。或向AD那樣,采用指令cache,指令區可存放一部分資料。

在DSP算法中,最大量的工作之一是與存儲器交換資訊,這其中包括作為輸入信号的采樣資料、濾波器系數和程式指令。例如,如果将儲存在存儲器中的2個數相乘,就需要從存儲器中取3個二進制數,即2個要乘的數和1個描述如何去做的程式指令。目前DSP内部一般采用的是哈佛結構,它在片内至少有4套總線:程式 的資料總線,程式的位址總線,資料的資料總線和資料的位址總線。這種分離的程式總線和資料總線,可允許同時擷取指令字(來自程式存儲器)和操作數(來自數 據存儲器),而互不幹擾。這意味着在一個機器周期内可以同時準備好指令和操作數。有的DSP晶片内部還包含有其他總線,如DMA總線等,可實作單周期内完 成更多的工作。這種多總線結構就好像在DSP内部架起了四通八達的高速公路,保障運算單元及時地取到需要的資料,提高運算速度。是以,對DSP來說,内部 總線是個資源,總線越多,可以完成的功能就越複雜。超級哈佛結構(super Harvard architecture,縮寫為SHARC),它在哈佛結構上增加了指令cache(緩存)和專用的I/O控制器。

哈佛結構處理器有兩個明顯的特點:使用兩個獨立的存儲器子產品,分别存儲指令和資料,每個存儲子產品都不允許指令和資料并存;使用獨立的兩條總線,分别作為CPU與每個存儲器之間的專用通信路徑,而這兩條總線之間毫無關聯。

改進的哈佛結構,其結構特點為:使用兩個獨立的存儲器子產品,分别存儲指令和資料,每個存儲子產品都不允許指令和資料并存,以便實作并行處理;具有一條獨立的 位址總線和一條獨立的資料總線,利用公用位址總線通路兩個存儲子產品(程式存儲子產品和資料存儲子產品),公用資料總線則被用來完成程式存儲子產品或資料存儲子產品 與CPU之間的資料傳輸。

馮·諾依曼理論的要點是:數字計算機的數制采用二進制;計算機應該按照程式順序執行。人們把馮諾依曼的這個理論稱為馮諾依曼體系結構。從ENIAC到目前最先進的計算機都采用的是馮諾依曼體系結構。是以馮諾依曼是當之無愧的數字計算機之父。

根據馮諾依曼體系結構構成的計算機,必須具有如下功能:把需要的程式和資料送至計算機中;必須具有長期記憶程式、資料、中間結果及最終運算結果的能力;能 夠完成各種算術、邏輯運算和資料傳送等資料加工處理的能力;能夠根據需要控制程式走向,并能根據指令控制機器的各部件協調操作;能夠按照要求将處理結果輸 出給使用者。

哈佛結構是為了高速資料處理而采用的,因為可以同時讀取指令和資料(分開存儲的)。大大提高了資料吞吐率,缺點是結構複雜。通用微機指令和資料是混合存儲 的,結構上簡單,成本低。假設是哈佛結構:你就得在電腦安裝兩塊硬碟,一塊裝程式,一塊裝資料,記憶體裝兩根,一根儲存指令,一根存儲資料……

是什麼結構要看總線結構的。51單片機雖然資料指令存儲區是分開的,但總線是分時複用得,是以頂多算改進型的哈佛結構。ARM9雖然是哈佛結構,但是之前 的版本也還是馮·諾依曼結構。早期的X86能迅速占有市場,一條很重要的原因,正是靠了馮·諾依曼這種實作簡單,成本低的總線結構。現在的處理器雖然外部 總線上看是諾依曼結構的,但是由于内部CACHE的存在,是以實際上内部來看已經算是改進型哈佛結構的了。至于優缺點,哈佛結構就是複雜,對外圍裝置的連 接與處理要求高,十分不适合外圍存儲器的擴充。是以早期通用CPU難以采用這種結構。而單片機,由于内部內建了所需的存儲器,是以采用哈佛結構也未嘗不 可。現在的處理器,依托CACHE的存在,已經很好的将二者統一起來了。

繼續閱讀