哈佛結(jié)構(gòu)是一種將程序指令存儲和數(shù)據(jù)存儲分開的存儲結(jié)構(gòu),是一種并行體系結(jié)構(gòu)。
哈佛結(jié)構(gòu)的主要特點是將程序、數(shù)據(jù)存儲在不同的存儲空間中,即程序存儲器和數(shù)據(jù)存儲器是兩個獨立的存儲器,每個存儲器獨立編輯、獨立訪問。哈佛結(jié)構(gòu)的計算機由CPU、程序存儲器和數(shù)據(jù)存儲器組成,程序存儲器和數(shù)據(jù)存儲器采用不同的總線,從而提供了較大的存儲器帶寬,使數(shù)據(jù)的移動和交換更加方便,尤其提供了較高的數(shù)字信號性能。
簡介
與兩個存儲器相對應(yīng)的是系統(tǒng)的4條總線:程序和數(shù)據(jù)的數(shù)據(jù)總線與地址總線。這種分離的程序總線和數(shù)據(jù)總線可允許在一個機器周期內(nèi)同時獲得指令字(來自程序存儲器)和操作數(shù)(來自數(shù)據(jù)存儲器),從而提高了執(zhí)行速度,提高了數(shù)據(jù)的吞吐率。又由于程序和數(shù)據(jù)存儲在兩個分開的物理空間中,因此取址和執(zhí)行能完全重疊。中央處理器首先到程序指令存儲器中讀取程序指令內(nèi)容,解碼后得到數(shù)據(jù)地址,再到相應(yīng)的數(shù)據(jù)存儲器中讀取數(shù)據(jù),并進行下一步的操作(通常是執(zhí)行)。程序指令存儲和數(shù)據(jù)存儲分開,可以使指令和數(shù)據(jù)有不同的數(shù)據(jù)寬度。
哈佛結(jié)構(gòu)的計算機由CPU、程序存儲器和數(shù)據(jù)存儲器組成,程序存儲器和數(shù)據(jù)存儲器采用不同的總線,從而提供了較大的存儲器帶寬,使數(shù)據(jù)的移動和交換更加方便,尤其提供了較高的數(shù)字信號處理性能。
有關(guān)
哈佛結(jié)構(gòu)的微處理器通常具有較高的執(zhí)行效率。其程序指令和數(shù)據(jù)指令分開組織和存儲的,執(zhí)行時可以預(yù)先讀取下一條指令。
哈佛結(jié)構(gòu)是指程序和數(shù)據(jù)空間獨立的體系結(jié)構(gòu),目的是為了減輕程序運行時的訪存瓶頸。
例如最常見的卷積運算中,一條指令同時取兩個操作數(shù),在流水線處理時,同時還有一個取址操作,如果程序和數(shù)據(jù)通過同一條總線訪問,取址和取數(shù)必會產(chǎn)生沖突,而這對大運算量的循環(huán)的執(zhí)行效率是很不利的。
哈佛結(jié)構(gòu)能基本上解決取址和取數(shù)的沖突問題。而對另一個操作數(shù)的訪問,就只能采用Enhanced 哈佛結(jié)構(gòu)了,例如像TI那樣,數(shù)據(jù)區(qū)再split,并多一組總線?;蛳駻D 那樣,采用指令cache,指令區(qū)可存放一部分數(shù)據(jù)。
比較
哈佛結(jié)構(gòu)與馮·諾依曼結(jié)構(gòu)處理器相比,處理器有兩個明顯的特點:使用兩個獨立的存儲器模塊,分別存儲指令和數(shù)據(jù),每個存儲模塊都不允許指令和數(shù)據(jù)并存;使用獨立的兩條總線,分別作為CPU與每個存儲器之間的專用通信路徑,而這兩條總線之間毫無關(guān)聯(lián)。
改進的哈佛結(jié)構(gòu),其結(jié)構(gòu)特點為:
使用兩個獨立的存儲器模塊,分別存儲指令和數(shù)據(jù),每個存儲模塊都不允許指令和數(shù)據(jù)并存,以便實現(xiàn)并行處理;具有一條獨立的地址總線和一條獨立的數(shù)據(jù)總線,利用公用地址總線訪問兩個存儲模塊(程序存儲模塊和數(shù)據(jù)存儲模塊),公用數(shù)據(jù)總線則被用來完成程序存儲模塊或數(shù)據(jù)存儲模塊與CPU之間的數(shù)據(jù)傳輸;兩條總線由程序存儲器和數(shù)據(jù)存儲器分時共用。
參考資料 >
非馮諾依曼結(jié)構(gòu)—哈弗結(jié)構(gòu).電子科技博物館.2024-03-07