現代的CPU基本上歸為馮諾伊曼結構(也成普林斯頓結構)和哈佛結構,
馮洛伊曼結構就是我們所說的X86架構,而哈佛結構就是ARM架構,一個廣泛用于桌面端(臺式/筆記本/服務器/作業站等),一個雄踞移動領域,我們的手持設備(平板\手機用的大多就是他了),
01、馮·諾依曼體系
馮·諾依曼體系結構圖如下

?
馮·諾依曼體系的特點:
A、資料與指令都存盤在同一存盤區中,取指令與取資料利用同一資料總線,
B、被早期大多數計算機所采用,
C、ARM7——馮諾依曼體系結構簡單,但速度較慢,取指不能同時取資料
馮·諾依曼結構也稱普林斯頓結構,是一種將程式指令存盤器和資料存盤器合并在一起的存盤器結構,程式指令存盤地址和資料存盤地址指向同一個存盤器的不同物理位置,因此程式指令和資料的寬度相同,如英特爾公司的8086中央處理器的程式指令和資料都是16位寬,
馮.諾依曼結構處理器具有以下幾個特點:
1:必須有一個存盤器;
2:必須有一個控制器;
3:必須有一個運算器,用于完成算術運算和邏輯運算;
4:必須有輸入設備和輸出設備,用于進行人機通信,另外,程式和資料統一存盤并在程式控制下自動作業,
馮·諾依曼結構:
英特爾公司的8086,
英特爾公司的其他中央處理器,
ARM的ARM7,
MIPS公司的MIPS處理器,
02、哈佛體系
哈佛體系結構圖

?
結構特點:
A、程式存盤器與資料存盤器分開.
B、提供了較大的存盤器帶寬,各自有自己的總線,
C、適合于數字信號處理.
D、大多數DSP都是哈佛結構.
E、ARM9是哈佛結構,取指和取數在同一周期進行,提高速度,改進哈佛體系結構分成三個存盤區:程式、資料、程式和資料共用,
哈佛結構是一種存盤器并行體系結構,主要特點是將程式和資料存盤在不同的存盤空間中,即程式存盤器和資料存盤器是兩個獨立的存盤器,每個存盤器獨立編址、獨立訪問,程式指令存盤和資料存盤分開,可以使指令和資料有不同的資料寬度,
哈佛結構能基本上解決取指和取數的沖突問題.而對另一個運算元的訪問,就只能采用Enhanced哈佛結構了,例如像TI那樣,資料區再split,并多一組總線.或向AD那樣,采用指令cache,指令區可存放一部分資料.,
哈佛結構:
1、ARM(除arm7)
2、大部分DSP
哈佛體系架構有個致命的弱點在動態加載程式上面,想象我們從外存中讀取一段程式然后加載到RAM,這個程式是在資料記憶體當中的,我們需要一種機制將資料記憶體再傳輸到程式記憶體當中去,這反而增加了設備復雜度,
對于多任務作業系統來說,管理程式記憶體是一件非常重要的事情,而且僅僅是保護模式下的頁面映射等等機制就已經足夠復雜了,如果還要求將程式和資料分開管理,復雜度就太高了,這種時候馮諾依曼體系結構就有非常大的優勢了,
03、arm和哈佛、馮·諾依曼的關系
哈佛架構是針對cpu從cache中取指而言,指令和資料在主存中并未分開,但在加載到cache中的時候被分離為指令和資料兩份存盤空間,cpu可以同時從cache取到指令和資料.
所以arm系統CPU(除arm7)對外表現為馮.諾伊曼架構,對內則表現為哈佛架構,
04、實際芯片制造
實際上,絕大多數現代計算機使用的是所謂的“ModifiedHarvard Architecture”,指令和資料共享同一個address space,但快取是分開的,可以說是兩種架構的一種折中吧,
在現實世界中很少有非常純粹的概念,特別是在實際的應用里,教科書里的大多是理想化的模型,便于掌握某個概念的重點和本質,但實際中很難達到這種理想化的狀態,
哈佛結構和馮諾依曼結構主要區別在是否區分指令與資料,在教科書里這是兩種截然不同的做法,
但實際上在記憶體里,指令和資料是在一起的,而在CPU內的快取中,還是會區分指令快取和資料快取,最終執行的時候,指令和資料是從兩個不同的地方出來的,你可以理解為在CPU外部,采用的是馮諾依曼模型,而在CPU內部用的是哈佛結構,
大部分的DSP都沒有快取,因而直接就是哈佛結構,
哈佛結構設計復雜,但效率高,馮諾依曼結構則比較簡單,但也比較慢,CPU廠商為了提高處理速度,在CPU內增加了高速快取,也基于同樣的目的,區分了指令快取和資料快取,有時為了解決現實問題,究竟是什么主義真的沒那么重要,因而個人認為爭論到底是哪種結構意義不大,
點擊查看本文所在的專輯,STM32F207教程
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/281565.html
標籤:嵌入式
上一篇:Openssh
