現(xiàn)代的CPU基本上歸為馮諾伊曼結(jié)構(gòu)(也成普林斯頓結(jié)構(gòu))和哈佛結(jié)構(gòu)。
馮洛伊曼結(jié)構(gòu)就是我們所說的X86架構(gòu),而哈佛結(jié)構(gòu)就是ARM架構(gòu)。一個廣泛用于桌面端(臺式/筆記本/服務(wù)器/工作站等),一個雄踞移動領(lǐng)域,我們的手持設(shè)備(平板手機用的大多就是他了)。
01馮·諾依曼體系
馮·諾依曼體系結(jié)構(gòu)圖如下
馮·諾依曼體系的特點:
A、數(shù)據(jù)與指令都存儲在同一存儲區(qū)中,取指令與取數(shù)據(jù)利用同一數(shù)據(jù)總線。
B、被早期大多數(shù)計算機所采用。
C、ARM7——馮諾依曼體系結(jié)構(gòu)簡單,但速度較慢。取指不能同時取數(shù)據(jù)
馮·諾依曼結(jié)構(gòu)也稱普林斯頓結(jié)構(gòu),是一種將程序指令存儲器和數(shù)據(jù)存儲器合并在一起的存儲器結(jié)構(gòu)。程序指令存儲地址和數(shù)據(jù)存儲地址指向同一個存儲器的不同物理位置,因此程序指令和數(shù)據(jù)的寬度相同,如英特爾公司的8086中央處理器的程序指令和數(shù)據(jù)都是16位寬。
馮。諾依曼結(jié)構(gòu)處理器具有以下幾個特點:
1:必須有一個存儲器;
2:必須有一個控制器;3:必須有一個運算器,用于完成算術(shù)運算和邏輯運算;4:必須有輸入設(shè)備和輸出設(shè)備,用于進行人機通信。另外,程序和數(shù)據(jù)統(tǒng)一存儲并在程序控制下自動工作。馮·諾依曼結(jié)構(gòu):英特爾公司的8086。英特爾公司的其他中央處理器。ARM的ARM7。MIPS公司的MIPS處理器。
02哈佛體系
哈佛體系結(jié)構(gòu)圖
結(jié)構(gòu)特點:
A、程序存儲器與數(shù)據(jù)存儲器分開。
B、提供了較大的存儲器帶寬,各自有自己的總線。
C、適合于數(shù)字信號處理。
D、大多數(shù)DSP都是哈佛結(jié)構(gòu)。
E、ARM9是哈佛結(jié)構(gòu),取指和取數(shù)在同一周期進行,提高速度,改進哈佛體系結(jié)構(gòu)分成三個存儲區(qū):程序、數(shù)據(jù)、程序和數(shù)據(jù)共用。
哈佛結(jié)構(gòu)是一種存儲器并行體系結(jié)構(gòu),主要特點是將程序和數(shù)據(jù)存儲在不同的存儲空間中,即程序存儲器和數(shù)據(jù)存儲器是兩個獨立的存儲器,每個存儲器獨立編址、獨立訪問。程序指令存儲和數(shù)據(jù)存儲分開,可以使指令和數(shù)據(jù)有不同的數(shù)據(jù)寬度。
哈佛結(jié)構(gòu)能基本上解決取指和取數(shù)的沖突問題。而對另一個操作數(shù)的訪問,就只能采用Enhanced哈佛結(jié)構(gòu)了,例如像TI那樣,數(shù)據(jù)區(qū)再split,并多一組總線。或向AD那樣,采用指令cache,指令區(qū)可存放一部分數(shù)據(jù)。。
哈佛結(jié)構(gòu):
1、ARM(除arm7)
2、大部分DSP
哈佛體系架構(gòu)有個致命的弱點在動態(tài)加載程序上面,想象我們從外存中讀取一段程序然后加載到RAM,這個程序是在數(shù)據(jù)內(nèi)存當中的,我們需要一種機制將數(shù)據(jù)內(nèi)存再傳輸?shù)匠绦騼?nèi)存當中去,這反而增加了設(shè)備復(fù)雜度。
對于多任務(wù)操作系統(tǒng)來說,管理程序內(nèi)存是一件非常重要的事情,而且僅僅是保護模式下的頁面映射等等機制就已經(jīng)足夠復(fù)雜了,如果還要求將程序和數(shù)據(jù)分開管理,復(fù)雜度就太高了。這種時候馮諾依曼體系結(jié)構(gòu)就有非常大的優(yōu)勢了。
03arm和哈佛、馮·諾依曼的關(guān)系
哈佛架構(gòu)是針對cpu從cache中取指而言,指令和數(shù)據(jù)在主存中并未分開,但在加載到cache中的時候被分離為指令和數(shù)據(jù)兩份存儲空間,cpu可以同時從cache取到指令和數(shù)據(jù)。
所以arm系統(tǒng)CPU(除arm7)對外表現(xiàn)為馮。諾伊曼架構(gòu),對內(nèi)則表現(xiàn)為哈佛架構(gòu)。
04實際芯片制造
實際上,絕大多數(shù)現(xiàn)代計算機使用的是所謂的“ModifiedHarvard Architecture”,指令和數(shù)據(jù)共享同一個address space,但緩存是分開的??梢哉f是兩種架構(gòu)的一種折中吧。
在現(xiàn)實世界中很少有非常純粹的概念,特別是在實際的應(yīng)用里。教科書里的大多是理想化的模型,便于掌握某個概念的重點和本質(zhì),但實際中很難達到這種理想化的狀態(tài)。
哈佛結(jié)構(gòu)和馮諾依曼結(jié)構(gòu)主要區(qū)別在是否區(qū)分指令與數(shù)據(jù)。在教科書里這是兩種截然不同的做法。
但實際上在內(nèi)存里,指令和數(shù)據(jù)是在一起的。而在CPU內(nèi)的緩存中,還是會區(qū)分指令緩存和數(shù)據(jù)緩存,最終執(zhí)行的時候,指令和數(shù)據(jù)是從兩個不同的地方出來的。你可以理解為在CPU外部,采用的是馮諾依曼模型,而在CPU內(nèi)部用的是哈佛結(jié)構(gòu)。
大部分的DSP都沒有緩存,因而直接就是哈佛結(jié)構(gòu)。
哈佛結(jié)構(gòu)設(shè)計復(fù)雜,但效率高。馮諾依曼結(jié)構(gòu)則比較簡單,但也比較慢。CPU廠商為了提高處理速度,在CPU內(nèi)增加了高速緩存。也基于同樣的目的,區(qū)分了指令緩存和數(shù)據(jù)緩存。有時為了解決現(xiàn)實問題,究竟是什么主義真的沒那么重要。因而個人認為爭論到底是哪種結(jié)構(gòu)意義不大。
編輯:lyn
-
cpu
+關(guān)注
關(guān)注
68文章
10854瀏覽量
211570 -
ARM架構(gòu)
+關(guān)注
關(guān)注
14文章
177瀏覽量
36303 -
X86架構(gòu)
+關(guān)注
關(guān)注
8文章
45瀏覽量
23648
原文標題:STM32屬于哈佛結(jié)構(gòu)還是馮諾依曼結(jié)構(gòu)?
文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論