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