普林斯頓結(jié)構(gòu) VS 哈佛結(jié)構(gòu)
1. 馮·諾依曼結(jié)構(gòu)
馮·諾依曼結(jié)構(gòu),又稱為普林斯頓體系結(jié)構(gòu),是一種將程序指令存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器合并在一起的存儲(chǔ)器結(jié)構(gòu)。取指令和取操作數(shù)都在同一總線上,通過(guò)分時(shí)復(fù)用的方式進(jìn)行;缺點(diǎn)是在高速運(yùn)行時(shí),不能達(dá)到同時(shí)取指令和取操作數(shù),從而形成了傳輸過(guò)程的瓶頸。由于程序指令存儲(chǔ)地址和數(shù)據(jù)存儲(chǔ)地址指向同一個(gè)存儲(chǔ)器的不同物理位置,因此程序指令和數(shù)據(jù)的寬度相同,如英特爾公司的8086中央處理器的程序指令和數(shù)據(jù)都是16位寬。
目前使用馮·諾依曼結(jié)構(gòu)的CPU和微控制器有很多。其中包括英特爾公司的8086及其他CPU,TI的MSP430處理器,ARM公司的ARM7,MIPS公司的MIPS處理器。
2. 哈佛結(jié)構(gòu)
哈佛結(jié)構(gòu)是一種將程序指令存儲(chǔ)和數(shù)據(jù)存儲(chǔ)分開(kāi)的存儲(chǔ)器結(jié)構(gòu),它的主要特點(diǎn)是將程序和數(shù)據(jù)存儲(chǔ)在不同的存儲(chǔ)空間中,即程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器是兩個(gè)獨(dú)立的存儲(chǔ)器,每個(gè)存儲(chǔ)器獨(dú)立編址、獨(dú)立訪問(wèn),目的是為了減輕程序運(yùn)行時(shí)的訪存瓶頸。
如圖,哈佛結(jié)構(gòu)的計(jì)算機(jī)由CPU、程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器組成,程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器采用不同的總線,從而提供了較大的存儲(chǔ)器帶寬,使數(shù)據(jù)的移動(dòng)和交換更加方便,尤其提供了較高的數(shù)字信號(hào)處理性能。
目前使用哈佛結(jié)構(gòu)的中央處理器和微控制器有很多,除了上面提到的Microchip公司的PIC系列芯片,還有摩托羅拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和安謀公司的ARM9、ARM10和ARM11。
3. 總結(jié)
隨著CPU設(shè)計(jì)的發(fā)展,流水線的增加,指令和數(shù)據(jù)的互斥讀取影響CPU指令執(zhí)行的scale程度。哈佛結(jié)構(gòu)中數(shù)據(jù)存儲(chǔ)器與程序代碼存儲(chǔ)器分開(kāi),各自有自己的數(shù)據(jù)總線與地址總線,取操作數(shù)與取指令能同時(shí)進(jìn)行。但這是需要CPU提供大量的數(shù)據(jù)線,因而很少使用哈佛結(jié)構(gòu)作為CPU外部構(gòu)架來(lái)使用。對(duì)于CPU內(nèi)部,通過(guò)使用不同的數(shù)據(jù)和指令cache,可以有效的提高指令執(zhí)行的效率,因而目前大部分計(jì)算機(jī)體系都是在CPU內(nèi)部的使用哈佛結(jié)構(gòu),在CPU外部使用馮·諾依曼結(jié)構(gòu)。
原文鏈接:http://blog.csdn.net/skywalker_leo/article/details/7819463