計(jì)算機(jī)體系

馮諾依曼體系
  • 特點(diǎn):
  1. 必須有一個(gè)存儲(chǔ)器
  2. 必須有一個(gè)控制器
  3. 必須有一個(gè)運(yùn)算器,用于完成算術(shù)運(yùn)算和邏輯運(yùn)算
  4. 必須有輸入和輸出設(shè)備,用于進(jìn)行人機(jī)通信
  • 要點(diǎn)

這種體系只有一個(gè)存儲(chǔ)器,所有指令地址和數(shù)據(jù)地址統(tǒng)一,且統(tǒng)一的存放于存儲(chǔ)器中。

  • 模型
馮諾依曼體系.png
哈佛結(jié)構(gòu)
  • 特點(diǎn)
  1. 使用兩個(gè)獨(dú)立的存儲(chǔ)模塊,分別存儲(chǔ)指令和數(shù)據(jù),每個(gè)存儲(chǔ)模塊都不允許指令和數(shù)據(jù)并存。
  2. 使用獨(dú)立的兩條總線,分別作為CPU與每個(gè)存儲(chǔ)器之間的專(zhuān)用通信路徑,而這兩條總線之間毫無(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)確定訪問(wèn)哪個(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):

  1. 指令區(qū)和data區(qū)獨(dú)立,這樣memory利用率不高,特別是程序頻繁變動(dòng)的情況下。
  2. bus多成本高。
總結(jié):

馮諾依曼體系比較適合作為PC這樣的多任務(wù)多軟件的CPU,而哈弗結(jié)構(gòu)比較適合任務(wù)單調(diào)但需要高速率執(zhí)行的CPU。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容