馮諾依曼體系結構、哈佛體系結構與改進型哈佛結構之間的區別
1、馮·諾依曼結構
馮·諾依曼結構又稱作普林斯頓體系結構(Princetionarchitecture)。
1945年,馮·諾依曼首先提出了“存儲程序”的概念和二進制原理,后來,人們把利用這種概念和原理設計的電子計算機系統統稱為“馮·諾依曼型結構”計算機。馮·諾依曼結構的處理器使用同一個存儲器,經由同一個總線傳輸。
馮·諾依曼結構處理器具有以下幾個特點:
- 必須有一個存儲器;
- 必須有一個控制器;
- 必須有一個運算器,用于完成算術運算和邏輯運算;
- 必須有輸入和輸出設備,用于進行人機通信。
馮·諾依曼的主要貢獻就是提出并實現了“存儲程序”的概念。由于指令和數據都是二進制碼,指令和操作數的地址又密切相關,因此,當初選擇這種結構是自然的。但是,這種指令和數據共享同一總線的結構,使得信息流的傳輸成為限制計算機性能的瓶頸,影響了數據處理速度的提高。
在典型情況下,完成一條指令需要3個步驟,即:取指令、指令譯碼和執行指令。從指令流的定時關系也可看出馮·諾依曼結構與哈佛結構處理方式的差別。舉一個最簡單的對存儲器進行讀寫操作的指令,指令1至指令3均為存、取數指令,對馮·諾依曼結構處理器,由于取指令和存取數據要從同一個存儲空間存取,經由同一總線傳輸,因而它們無法重疊執行,只有一個完成后再進行下一個。
arm7系列的CPU有很多款,其中部分CPU沒有內部cache的,比如arm7TDMI,就是純粹的馮·諾依曼結構,其他有內部cache且數據和指令的cache分離的cpu則使用了哈弗結構。
2、哈佛結構
哈佛結構是一種將程序指令存儲和數據存儲分開的存儲器結構,如圖1所示。中央處理器首先到程序指令存儲器中讀取程序指令內容,解碼后得到數據地址,再到相應的數據存儲器中讀取數據,并進行下一步的操作(通常是執行)。程序指令存儲和數據存儲分開,可以使指令和數據有不同的數據寬度,如Microchip公司的PIC16芯片的程序指令是14位寬度,而數據是8位寬度。
圖1 哈佛體系結構框圖
哈佛結構的微處理器通常具有較高的執行效率。其程序指令和數據指令分開組織和存儲的,執行時可以預先讀取下一條指令。
目前使用哈佛結構的中央處理器和微控制器有很多,除了Microchip公司的PIC系列芯片,還有摩托羅拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和ARM公司的ARM9、ARM10和ARM11。
哈佛結構是指程序和數據空間獨立的體系結構, 目的是為了減輕程序運行時的訪存瓶頸。
例如最常見的卷積運算中, 一條指令同時取兩個操作數, 在流水線處理時, 同時還有一個取指操作, 如果程序和數據通過一條總線訪問, 取指和取數必會產生沖突, 而這對大運算量的循環的執行效率是很不利的。
哈佛結構能基本上解決取指和取數的沖突問題。
而對另一個操作數的訪問, 就只能采用Enhanced哈佛結構了, 例如像TI那樣,數據區再split, 并多一組總線。 或向AD那樣,采用指令cache, 指令區可存放一部分數據。
在典型情況下,完成一條指令需要3個步驟,即:取指令、指令譯碼和執行指令。從指令流的定時關系也可看出馮·諾依曼結構與哈佛結構處理方式的差別。舉一個最簡單的對存儲器進行讀寫操作的指令,指令1至指令3均為存、取數指令,對馮·諾依曼結構處理器,由于取指令和存取數據要從同一個存儲空間存取,經由同一總線傳輸,因而它們無法重疊執行,只有一個完成后再進行下一個。
如果采用哈佛結構處理以上同樣的3條存取數指令,由于取指令和存取數據分別經由不同的存儲空間和不同的總線,使得各條指令可以重疊執行,這樣,也就克服了數據流傳輸的瓶頸,提高了運算速度。
3、馮·諾依曼體系和哈佛總線體系的區別
二者的區別就是程序空間和數據空間是否是一體的。馮·諾依曼結構數據空間和地址空間不分開,哈佛結構數據空間和地址空間是分開的。
早期的微處理器大多采用馮·諾依曼結構,典型代表是Intel公司的X86微處理器。取指和取操作數都在同一總線上,通過分時服用的方式進行的。缺點是在高速運行時,不能達到同時取指令和取操作數,從而形成了傳輸過程的瓶頸。
哈佛總線技術應用是以DSP和ARM為代表的。采用哈佛總線體系結構的芯片內部程序空間和數據空間是分開的,這就允許同時取指和取操作數,從而大大提高了運算能力。
DSP芯片硬件結構有馮·諾依曼結構和哈佛結構,兩者區別是地址空間和數據空間分開與否。一般DSP都是采用改進型哈佛結構,就是分開的數據空間和地址空間都不只是一條,而是有多條,這根據不同的生產廠商的DSP芯片有所不同。在對外尋址方面從邏輯上來說也是一樣,因為外部引腳的原因,一般來說都是通過相應的空間選取來實現的。本質上是同樣的道理。
4.改進型的哈佛結構與哈佛體系結構差別
與馮.諾曼結構處理器比較,哈佛結構處理器有兩個明顯的特點:
(1).使用兩個獨立的存儲器模塊,分別存儲指令和數據,每個存儲模塊都不允許指令和數據并存;
(2).使用獨立的兩條總線,分別作為CPU與每個存儲器之間的專用通信路徑,而這兩條總線之間毫無關聯。
后來,又提出了改進的哈佛結構,其結構特點為:
(1).使用兩個獨立的存儲器模塊,分別存儲指令和數據,每個存儲模塊都不允許指令和數據并存;
(2).具有一條獨立的地址總線和一條獨立的數據總線,利用公用地址總線訪問兩個存儲模塊(程序存儲模塊和數據存儲模塊),公用數據總線則被用來完成程序存儲模塊或數據存儲模塊與CPU之間的數據傳輸;
(3).兩條總線由程序存儲器和數據存儲器分時共用。
5.總結
體系結構與采用的獨立與否的總線無關,與指令空間和數據空間的分開獨立與否有關。51單片機雖然數據指令存儲區是分開的,但總線是分時復用的,所以屬于改進型的哈佛結構。ARM9雖然是哈佛結構,但是之前的版本(例如ARM7)也還是馮·諾依曼結構。早期的X86能迅速占有市場,一條很重要的原因,正是靠了馮·諾依曼這種實現簡單,成本低的總線結構。現在的處理器雖然外部總線上看是諾依曼結構的,但是由于內部CACHE的存在,因此實際上內部來看已經 類似 改進型哈佛結構的了。至于優缺點,哈佛結構就是復雜,對外圍設備的連接與處理要求高,十分不適合外圍存儲器的擴展。所以早期通用CPU難以采用這種結構。而單片機,由于內部集成了所需的存儲器,所以采用哈佛結構也未嘗不可。現在的處理器,依托CACHE的存在,已經很好的將二者統一起來了。
- 相關閱讀:
- 馮·諾依曼結構與哈佛結構
- 嵌入式系統開發
聲明:本站部分內容根據互聯網資料整理而成,若侵犯您的權益,請聯系我們,我們會盡快處理。