馮諾曼結(jié)構(gòu)與哈佛結(jié)構(gòu)的區(qū)別_第1頁
馮諾曼結(jié)構(gòu)與哈佛結(jié)構(gòu)的區(qū)別_第2頁
馮諾曼結(jié)構(gòu)與哈佛結(jié)構(gòu)的區(qū)別_第3頁
馮諾曼結(jié)構(gòu)與哈佛結(jié)構(gòu)的區(qū)別_第4頁
馮諾曼結(jié)構(gòu)與哈佛結(jié)構(gòu)的區(qū)別_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、哈佛結(jié)構(gòu)與馮·諾伊曼結(jié)構(gòu)哈佛結(jié)構(gòu)是一種將程序指令存儲(chǔ)和數(shù)據(jù)存儲(chǔ)分開的存儲(chǔ)器結(jié)構(gòu)。中央處理器首先到程序指令存儲(chǔ)器中讀取程序指令內(nèi)容,解碼后得到數(shù)據(jù)地址,再到相應(yīng)的數(shù)據(jù)存儲(chǔ)器中讀取數(shù)據(jù),并進(jìn)行下一步的操作(通常是執(zhí)行)。程序指令存儲(chǔ)和數(shù)據(jù)存儲(chǔ)分開,可以使指令和數(shù)據(jù)有不同的數(shù)據(jù)寬度,如Microchip公司的PIC16芯片的程序指令是14位寬度,而數(shù)據(jù)是8位寬度。哈佛結(jié)構(gòu)的微處理器通常具有較高的執(zhí)行效率。其程序指令和數(shù)據(jù)指令分開組織和存儲(chǔ)的,執(zhí)行時(shí)可以預(yù)先讀取下一條指令。目前使用哈佛結(jié)構(gòu)的中央處理器和微控制器有很多,除了上面提到的Microchip公司的PIC系列芯片,還有摩托羅拉公司的M

2、C68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和安謀公司的ARM9、ARM10和ARM11。馮·諾伊曼結(jié)構(gòu),也稱普林斯頓結(jié)構(gòu),是一種將程序指令存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器合并在一起的存儲(chǔ)器結(jié)構(gòu)。程序指令存儲(chǔ)地址和數(shù)據(jù)存儲(chǔ)地址指向同一個(gè)存儲(chǔ)器的不同物理位置,因此程序指令和數(shù)據(jù)的寬度相同,如英特爾公司的8086中央處理器的程序指令和數(shù)據(jù)都是16位寬。目前使用馮·諾伊曼結(jié)構(gòu)的中央處理器和微控制器有很多。除了上面提到的英特爾公司的8086,英特爾公司的其他中央處理器、安謀公司的ARM7、MIPS公司的MIPS處理器也采用了馮·諾伊曼結(jié)構(gòu)。哈佛結(jié)構(gòu)和常見的馮諾依曼結(jié)

3、構(gòu)區(qū)別在于地址空間和數(shù)據(jù)空間分開與否。馮諾依曼結(jié)構(gòu)數(shù)據(jù)空間和地址空間不分開,哈佛結(jié)構(gòu)數(shù)據(jù)空間和地址空間是分開的。一般DSP都是采用改進(jìn)型哈佛結(jié)構(gòu),就是分開的數(shù)據(jù)空間和地址空間都不只是一條,而是有多條,這根據(jù)不同的生產(chǎn)廠商的DSP芯片有所不同。 在對(duì)外尋址方面從邏輯上來說也是一樣,因?yàn)橥獠恳_的原因,一般來說都是通過相應(yīng)的 空間選取來實(shí)現(xiàn)的。本質(zhì)上是同樣的道理。MCS-51單片機(jī)有著嵌入式處理器經(jīng)典的體系結(jié)構(gòu),這種體系結(jié)構(gòu)在當(dāng)前嵌入式處理器的高端ARM系列上仍然在延續(xù),這就是哈佛結(jié)構(gòu)。相對(duì)于大名鼎鼎的馮·諾依曼結(jié)構(gòu),哈佛結(jié)構(gòu)的知名度顯然遜色許多,但在嵌入式應(yīng)用領(lǐng)域,哈佛結(jié)構(gòu)卻擁有著絕對(duì)

4、的優(yōu)勢(shì)。哈佛結(jié)構(gòu)與馮·諾依曼結(jié)構(gòu)的最大區(qū)別在于馮·諾依曼結(jié)構(gòu)的計(jì)算機(jī)采用代碼與數(shù)據(jù)的統(tǒng)一編址,而哈佛結(jié)構(gòu)是獨(dú)立編址的,代碼空間與數(shù)據(jù)空間完全分開。在通用計(jì)算機(jī)系統(tǒng)中,應(yīng)用軟件的多樣性使得計(jì)算機(jī)要不斷地變化所執(zhí)行的代碼的內(nèi)容,并且頻繁地對(duì)數(shù)據(jù)與代碼占有的存儲(chǔ)器進(jìn)行重新分配,這種情況下,馮·諾依曼結(jié)構(gòu)占有絕對(duì)優(yōu)勢(shì),因?yàn)榻y(tǒng)一編址可以最大限度地利用資源,而哈佛結(jié)構(gòu)的計(jì)算機(jī)若應(yīng)用于這種情形下則會(huì)對(duì)存儲(chǔ)器資源產(chǎn)生理論上最大可達(dá)50%的浪費(fèi),這顯然是不合理的。 但是在嵌入式應(yīng)用中,系統(tǒng)要執(zhí)行的任務(wù)相對(duì)單一,程序一般是固化在硬件里。當(dāng)然這時(shí)使用馮·諾依曼結(jié)構(gòu)也完全可以,

5、代碼區(qū)和數(shù)據(jù)區(qū)在編譯時(shí)一次性分配好了而已,但是其靈活性得不到體現(xiàn),所以現(xiàn)在大量的單片機(jī)也還在沿用馮·諾依曼結(jié)構(gòu),如TI的MSP430系列、Freescale的HCS08系列等。那是為什么說哈佛結(jié)構(gòu)有優(yōu)勢(shì)呢?嵌入式計(jì)算機(jī)在工作時(shí)與通用計(jì)算機(jī)有著一些區(qū)別:嵌入式計(jì)算機(jī)在工作期間的絕大部分時(shí)間是無人值守的,而通用計(jì)算機(jī)工作期間一般是有人操作的;嵌入式計(jì)算機(jī)的故障可能會(huì)導(dǎo)致災(zāi)難性的后果,而通用計(jì)算機(jī)一般就是死死機(jī),重新啟動(dòng)即可。這兩點(diǎn)決定了對(duì)嵌入式計(jì)算機(jī)的一個(gè)基本要求:可靠性。使用馮·諾依曼結(jié)構(gòu)的計(jì)算機(jī),程序空間不封閉,期程序空間的數(shù)據(jù)在運(yùn)行期理論上可以被修改,此外程序一旦跑飛也有

6、可能運(yùn)行到數(shù)據(jù)區(qū)。雖然都是一些不常見的特殊情況下,但是看看哈佛結(jié)構(gòu)德計(jì)算機(jī)在這些情況下是怎樣的:基于哈佛結(jié)構(gòu)的處理器入MCS-51,不需要可以對(duì)代碼段進(jìn)行寫操作的指令,所以不會(huì)有代碼區(qū)被改寫的問題;程序只能在封閉的代碼區(qū)中運(yùn)行,不可能跑到數(shù)據(jù)區(qū),這也是跑飛的幾率減少并且跑飛后的行為有規(guī)律(數(shù)據(jù)區(qū)的數(shù)據(jù)是不斷變化的而代碼區(qū)是不變的)。所以,相對(duì)于馮·諾依曼結(jié)構(gòu),哈佛結(jié)構(gòu)更加適合于那些程序固化、任務(wù)相對(duì)簡(jiǎn)單的控制系統(tǒng)。馮.諾曼結(jié)構(gòu)    1945年,馮.諾曼首先提出了“存儲(chǔ)程序”的概念和二進(jìn)制原理,后來,人們把利用這種概念和原理設(shè)計(jì)的電子計(jì)算機(jī)系統(tǒng)統(tǒng)稱為“馮

7、.諾曼型結(jié)構(gòu)”計(jì)算機(jī)。馮.諾曼結(jié)構(gòu)的處理器使用同一個(gè)存儲(chǔ)器,經(jīng)由同一個(gè)總線傳輸,如下圖所示:圖  馮.諾曼結(jié)構(gòu)    馮.諾曼結(jié)構(gòu)處理器具有以下幾個(gè)特點(diǎn):· 必須有一個(gè)存儲(chǔ)器; · 必須有一個(gè)控制器; · 必須有一個(gè)運(yùn)算器,用于完成算術(shù)運(yùn)算和邏輯運(yùn)算; · 必須有輸入和輸出設(shè)備,用于進(jìn)行人機(jī)通信。     馮.諾曼的主要貢獻(xiàn)就是提出并實(shí)現(xiàn)了“存儲(chǔ)程序”的概念。由于指令和數(shù)據(jù)都是二進(jìn)制碼,指令和操作數(shù)的地址又密切相關(guān),因此,當(dāng)初選擇這種結(jié)構(gòu)是自然的。但是,這種指令和數(shù)據(jù)共享同一總線的結(jié)構(gòu)

8、,使得信息流的傳輸成為限制計(jì)算機(jī)性能的瓶頸,影響了數(shù)據(jù)處理速度的提高。       在典型情況下,完成一條指令需要3個(gè)步驟,即:取指令、指令譯碼和執(zhí)行指令。從指令流的定時(shí)關(guān)系也可看出馮.諾曼結(jié)構(gòu)與哈佛結(jié)構(gòu)處理方式的差別。舉一個(gè)最簡(jiǎn)單的對(duì)存儲(chǔ)器進(jìn)行讀寫操作的指令,如下圖所示,指令1至指令3均為存、取數(shù)指令,對(duì)馮.諾曼結(jié)構(gòu)處理器,由于取指令和存取數(shù)據(jù)要從同一個(gè)存儲(chǔ)空間存取,經(jīng)由同一總線傳輸,因而它們無法重疊執(zhí)行,只有一個(gè)完成后再進(jìn)行下一個(gè)。圖  馮.諾曼結(jié)構(gòu)處理器指令流的定時(shí)關(guān)系示意圖哈佛結(jié)構(gòu)    數(shù)字信號(hào)處理一般需

9、要較大的運(yùn)算量和較高的運(yùn)算速度,為了提高數(shù)據(jù)吞吐量,在數(shù)字信號(hào)處理器中大多采用哈佛結(jié)構(gòu),如下圖所示:圖  哈佛結(jié)構(gòu)與馮.諾曼結(jié)構(gòu)處理器比較,哈佛結(jié)構(gòu)處理器有兩個(gè)明顯的特點(diǎn):· 使用兩個(gè)獨(dú)立的存儲(chǔ)器模塊,分別存儲(chǔ)指令和數(shù)據(jù),每個(gè)存儲(chǔ)模塊都不允許指令和數(shù)據(jù)并存; · 使用獨(dú)立的兩條總線,分別作為CPU與每個(gè)存儲(chǔ)器之間的專用通信路徑,而這兩條總線之間毫無關(guān)聯(lián)。     后來,又提出了改進(jìn)的哈佛結(jié)構(gòu),如下圖所示:圖   改進(jìn)型哈佛結(jié)構(gòu)其結(jié)構(gòu)特點(diǎn)為: · 使用兩個(gè)獨(dú)立的存儲(chǔ)器模塊,分別存儲(chǔ)指令和數(shù)據(jù),每個(gè)存儲(chǔ)模塊都

10、不允許指令和數(shù)據(jù)并存,以便實(shí)現(xiàn)并行處理; · 具有一條獨(dú)立的地址總線和一條獨(dú)立的數(shù)據(jù)總線,利用公用地址總線訪問兩個(gè)存儲(chǔ)模塊(程序存儲(chǔ)模塊和數(shù)據(jù)存儲(chǔ)模塊),公用數(shù)據(jù)總線則被用來完成程序存儲(chǔ)模塊或數(shù)據(jù)存儲(chǔ)模塊與CPU之間的數(shù)據(jù)傳輸; · 兩條總線由程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分時(shí)共用。     在典型情況下,完成一條指令需要3個(gè)步驟,即:取指令、指令譯碼和執(zhí)行指令。從指令流的定時(shí)關(guān)系也可看出馮.諾曼結(jié)構(gòu)與哈佛結(jié)構(gòu)處理方式的差別。舉一個(gè)最簡(jiǎn)單的對(duì)存儲(chǔ)器進(jìn)行讀寫操作的指令,如下圖所示,指令1至指令3均為存、取數(shù)指令,對(duì)馮.諾曼結(jié)構(gòu)處理器,由于取指令和存取數(shù)據(jù)要從同一個(gè)存儲(chǔ)空間存取,經(jīng)由同一總線傳輸,因而它們無法重疊執(zhí)行,只有一個(gè)完成后再進(jìn)行下一個(gè)。圖  馮.諾曼結(jié)構(gòu)處理器指令流的定時(shí)關(guān)系示意圖    如果采用哈佛結(jié)構(gòu)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論