保存在存儲器中的內容可以是程序,也可以是數據。程序是ARM處理器可以運行的指令代碼,數據是指令在運行中用到的操作數或者變量。
1、程序存儲
ARM處理器支持兩種指令,一種是ARM匯編指令,一種是Thumb匯編指令。ARM匯編指令是32位長,即每條ARM匯編指令都是由四個字節的存儲空間保存,所以ARM處理器在執行地址a的ARM匯編指令時,會從地址a + 4取下一條指令。Thumb匯編指令是16位長,即每條Thumb匯編指令都是由兩個字節的存儲空間保存,所以ARM處理器在執行地址a的Thumb匯編指令時,會從地址a + 2取下一條指令。
ARM處理器可以執行兩種格式的指令,運行不同格式的匯編指令在執行和取指方面有很大不同。為了區分,ARM內核可以工作在兩種工作狀態下。
lARM狀態 此時執行32位字對齊的ARM匯編指令。在這種狀態下,ARM處理器對指令的存儲、讀取或者執行都是以一個字(即32位)為基本單位;
lTHUMB狀態 此時執行16位半字對齊的Thumb匯編指令。在這種狀態下,ARM處理器對指令的存儲、讀取或者執行都是以一個半字(即16位)為基本單位;
l這兩種工作狀態可以轉換,但轉換不影響處理器狀態和寄存器的內容。
2、數據存儲
ARM處理器對數據操作(讀或寫)支持三種數據長度:字節(8位)、半字(16位)、字(32位)。假設在地址為0x0000~0x0004的內存空間保存了如圖1所示的數據,下面我們以三種數據長度從內存空間讀取數據。(假設數據的存儲格式是小端存儲格式)
圖1 內存空間的內容
l字節:從地址0x0000處取一個字節數據,則取出來的內容為12;從地址0x0001處取一個字節數據,則取出來的內容為34;
l半字:從地址0x0000處取一個半字數據,則取出來的內容為3412;從地址0x0001處取一個半字數據,則取出來的內容為5634;
l字:從地址0x0000處取一個字數據,則取出來的內容為78563412;從地址0x0001處取一個字數據,則取出來的內容為9A785634。
需要注意的是,ARM處理器在對數據操作時要邊界對齊,要找到正確的地址。在對16位數據操作時,地址數據末位(0)應該為0,在對32位數據操作時,地址數據末兩位(1:0)應該都為0。比如上面對字進行操作時,ARM處理器不允許從地址0x0001處讀取一個字內容出來。
現在常用的ARM版本中,都不支持非對齊字的傳輸(ARMv3、ARMv4、ARMv5)。在ARMv6中,開始支持非對齊字的傳輸。
3、“馮·諾依曼”體系結構和“哈佛”體系結構
說到ARM程序與數據存儲,應該講一下“馮·諾依曼”體系結構和“哈佛”體系結構。因為ARM7系列采用馮·諾依曼體系結構,而ARM9~ARM11采用哈佛體系機構。兩種結構描述如下:
“馮·諾依曼”體系結構
20世紀30年代中期,德國科學家馮諾依曼大膽的提出,拋棄十進制,采用二進制作為數字計算機的數制基礎。同時,他還說預先編制計算程序,然后由計算機來按照人們事前制定的計算順序來執行數值計算工作。
馮諾依曼理論的要點是:數字計算機的數制采用二進制;計算機應該按照程序順序執行。
其主要內容是:
l計算機由控制器、運算器、存儲器、輸入設備、輸出設備五大部分組成。
l程序和數據以二進制代碼形式不加區別地存放在存儲器中,存放位置由地址確定。
l控制器根據存放在存儲器中地指令序列(程序)進行工作,并由一個程序計數器控制指令地執行。控制器具有判斷能力,能根據計算結果選擇不同的工作流程。
“哈佛”體系結構
數字信號處理一般需要較大的運算量和較高的運算速度,為了提高數據吞吐量,在數字信號處理器中大多采用哈佛結構。
哈佛結構特點如下:
l使用兩個獨立的存儲器模塊,分別存儲指令和數據,每個存儲模塊都不允許指令和數據并存,以便實現并行處理;
l具有一條獨立的地址總線和一條獨立的數據總線,利用公用地址總線訪問兩個存儲模塊(程序存儲模塊和數據存儲模塊),公用數據總線則被用來完成程序存儲模塊或數據存儲模塊與CPU之間的數據傳輸;
兩種結構區別
在典型情況下,完成一條指令需要3個步驟,即:取指令、指令譯碼和執行指令。從指令流的定時關系也可看出馮.諾曼結構與哈佛結構處理方式的差別。
舉一個最簡單的對存儲器進行讀寫操作的指令,指令1至指令3均為存、取數指令,對馮.諾曼結構處理器,由于取指令和存取數據要從同一個存儲空間存取,經由同一總線傳輸,因而它們無法重疊執行,只有一個完成后再進行下一個。
如果采用哈佛結構處理以上同樣的3條存取數指令,如下圖所示,由于取指令和存取數據分別經由不同的存儲空間和不同的總線,使得各條指令可以重疊執行,這樣,也就克服了數據流傳輸的瓶頸,提高了運算速度。
-
ARM
+關注
關注
134文章
9307瀏覽量
375007 -
ARM處理器
+關注
關注
6文章
361瀏覽量
42439
原文標題:ARM處理器的程序與數據存儲(馮·諾依曼與哈佛結構區別)
文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
評論