馮諾依曼體系
- 特點(diǎn):
- 必須有一個(gè)存儲(chǔ)器
- 必須有一個(gè)控制器
- 必須有一個(gè)運(yùn)算器爽锥,用于完成算術(shù)運(yùn)算和邏輯運(yùn)算
- 必須有輸入和輸出設(shè)備,用于進(jìn)行人機(jī)通信
- 要點(diǎn)
這種體系只有一個(gè)存儲(chǔ)器畔柔,所有指令地址和數(shù)據(jù)地址統(tǒng)一氯夷,且統(tǒng)一的存放于存儲(chǔ)器中。
- 模型
馮諾依曼體系.png
哈佛結(jié)構(gòu)
- 特點(diǎn)
- 使用兩個(gè)獨(dú)立的存儲(chǔ)模塊靶擦,分別存儲(chǔ)指令和數(shù)據(jù)腮考,每個(gè)存儲(chǔ)模塊都不允許指令和數(shù)據(jù)并存擎淤。
- 使用獨(dú)立的兩條總線,分別作為CPU與每個(gè)存儲(chǔ)器之間的專用通信路徑秸仙,而這兩條總線之間毫無(wú)關(guān)聯(lián)嘴拢。
- 模型
哈佛結(jié)構(gòu).png
哈佛結(jié)構(gòu)與馮諾依曼結(jié)構(gòu)的區(qū)別:
哈佛結(jié)構(gòu)的指令地址與數(shù)據(jù)地址是獨(dú)立的,而馮諾依曼結(jié)構(gòu)是統(tǒng)一的寂纪。根源是兩者的bus總線不同引起的席吴。
例子:
馮諾依曼結(jié)構(gòu)下:addr 0x0000就只對(duì)應(yīng)指令區(qū),數(shù)據(jù)區(qū)在地址區(qū)后面
哈佛下捞蛋,addr 0x0000 有兩個(gè)孝冒,一個(gè)對(duì)應(yīng)指令memory,一個(gè)對(duì)應(yīng)data memory拟杉,看走的是哪條bus庄涡,來(lái)確定訪問哪個(gè)空間。
馮諾依曼結(jié)構(gòu)的優(yōu)缺點(diǎn):
- 優(yōu)點(diǎn):
a. data區(qū)和指令區(qū)公用memory搬设,方便data區(qū)與指令區(qū)靈活調(diào)整穴店,如果程序切換頻繁,可以提高memory利用率拿穴。
b. bus及控制相對(duì)簡(jiǎn)單泣洞,成本低。
- 缺點(diǎn):
同一條bus分時(shí)復(fù)用默色,讀取指令時(shí)注定不能操作data球凰,這樣不能走流水線,假設(shè)一條指令需要:取指腿宰,譯碼呕诉,執(zhí)行;那么只能是前一條的執(zhí)行后吃度,下一條才能取指甩挫。這樣影響cpu效率。
哈佛結(jié)構(gòu)的優(yōu)缺點(diǎn):
優(yōu)點(diǎn):
執(zhí)行指令效率高规肴,采取流水線捶闸。即前一條指令譯碼的時(shí)候,第二條取指拖刃;執(zhí)行的時(shí)候删壮,第二條譯碼,第三條取指兑牡。這樣執(zhí)行一條指令只需要一個(gè)clock央碟。當(dāng)然這種預(yù)取指只是對(duì)指令順序執(zhí)行時(shí)效果比較好,如果指令總是跳來(lái)跳去,那也是徒勞的亿虽。
缺點(diǎn):
- 指令區(qū)和data區(qū)獨(dú)立菱涤,這樣memory利用率不高,特別是程序頻繁變動(dòng)的情況下洛勉。
- bus多成本高粘秆。
總結(jié):
馮諾依曼體系比較適合作為PC這樣的多任務(wù)多軟件的CPU,而哈弗結(jié)構(gòu)比較適合任務(wù)單調(diào)但需要高速率執(zhí)行的CPU收毫。