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