保存在存儲器中的內(nèi)容可以是程序,也可以是數(shù)據(jù)。程序是ARM處理器可以運行的指令代碼,數(shù)據(jù)是指令在運行中用到的操作數(shù)或者變量。
1、程序存儲
ARM處理器支持兩種指令,一種是ARM匯編指令,一種是Thumb匯編指令。ARM匯編指令是32位長,即每條ARM匯編指令都是由四個字節(jié)的存儲空間保存,所以ARM處理器在執(zhí)行地址a的ARM匯編指令時,會從地址a + 4取下一條指令。Thumb匯編指令是16位長,即每條Thumb匯編指令都是由兩個字節(jié)的存儲空間保存,所以ARM處理器在執(zhí)行地址a的Thumb匯編指令時,會從地址a + 2取下一條指令。
ARM處理器可以執(zhí)行兩種格式的指令,運行不同格式的匯編指令在執(zhí)行和取指方面有很大不同。為了區(qū)分,ARM內(nèi)核可以工作在兩種工作狀態(tài)下。
ARM狀態(tài) 此時執(zhí)行32位字對齊的ARM匯編指令。在這種狀態(tài)下,ARM處理器對指令的存儲、讀取或者執(zhí)行都是以一個字(即32位)為基本單位;
THUMB狀態(tài) 此時執(zhí)行16位半字對齊的Thumb匯編指令。在這種狀態(tài)下,ARM處理器對指令的存儲、讀取或者執(zhí)行都是以一個半字(即16位)為基本單位;
l 這兩種工作狀態(tài)可以轉(zhuǎn)換,但轉(zhuǎn)換不影響處理器狀態(tài)和寄存器的內(nèi)容。
2、數(shù)據(jù)存儲
ARM處理器對數(shù)據(jù)操作(讀或?qū)?支持三種數(shù)據(jù)長度:字節(jié)(8位)、半字(16位)、字(32位)。假設(shè)在地址為0x0000~0x0004的內(nèi)存空間保存了如圖1所示的數(shù)據(jù),下面我們以三種數(shù)據(jù)長度從內(nèi)存空間讀取數(shù)據(jù)。(假設(shè)數(shù)據(jù)的存儲格式是小端存儲格式)
圖1 內(nèi)存空間的內(nèi)容
字節(jié):從地址0x0000處取一個字節(jié)數(shù)據(jù),則取出來的內(nèi)容為12;從地址0x0001處取一個字節(jié)數(shù)據(jù),則取出來的內(nèi)容為34;
半字:從地址0x0000處取一個半字?jǐn)?shù)據(jù),則取出來的內(nèi)容為3412;從地址0x0001處取一個半字?jǐn)?shù)據(jù),則取出來的內(nèi)容為5634;
字:從地址0x0000處取一個字?jǐn)?shù)據(jù),則取出來的內(nèi)容為78563412;從地址0x0001處取一個字?jǐn)?shù)據(jù),則取出來的內(nèi)容為9A785634。
需要注意的是,ARM處理器在對數(shù)據(jù)操作時要邊界對齊,要找到正確的地址。在對16位數(shù)據(jù)操作時,地址數(shù)據(jù)末位(0)應(yīng)該為0,在對32位數(shù)據(jù)操作時,地址數(shù)據(jù)末兩位(1:0)應(yīng)該都為0。比如上面對字進(jìn)行操作時,ARM處理器不允許從地址0x0001處讀取一個字內(nèi)容出來。
現(xiàn)在常用的ARM版本中,都不支持非對齊字的傳輸(ARMv3、ARMv4、ARMv5)。在ARMv6中,開始支持非對齊字的傳輸。
3、“馮·諾依曼”體系結(jié)構(gòu)和“哈佛”體系結(jié)構(gòu)
說到ARM程序與數(shù)據(jù)存儲,應(yīng)該講一下“馮·諾依曼”體系結(jié)構(gòu)和“哈佛”體系結(jié)構(gòu)。因為ARM7系列采用馮·諾依曼體系結(jié)構(gòu),而ARM9~ARM11采用哈佛體系機(jī)構(gòu)。兩種結(jié)構(gòu)描述如下:
“馮·諾依曼”體系結(jié)構(gòu)
20世紀(jì)30年代中期,德國科學(xué)家馮諾依曼大膽的提出,拋棄十進(jìn)制,采用二進(jìn)制作為數(shù)字計算機(jī)的數(shù)制基礎(chǔ)。同時,他還說預(yù)先編制計算程序,然后由計算機(jī)來按照人們事前制定的計算順序來執(zhí)行數(shù)值計算工作。
馮諾依曼理論的要點是:數(shù)字計算機(jī)的數(shù)制采用二進(jìn)制;計算機(jī)應(yīng)該按照程序順序執(zhí)行。
其主要內(nèi)容是:
計算機(jī)由控制器、運算器、存儲器、輸入設(shè)備、輸出設(shè)備五大部分組成。
程序和數(shù)據(jù)以二進(jìn)制代碼形式不加區(qū)別地存放在存儲器中,存放位置由地址確定。
控制器根據(jù)存放在存儲器中地指令序列(程序)進(jìn)行工作,并由一個程序計數(shù)器控制指令地執(zhí)行。控制器具有判斷能力,能根據(jù)計算結(jié)果選擇不同的工作流程。
“哈佛”體系結(jié)構(gòu)
數(shù)字信號處理一般需要較大的運算量和較高的運算速度,為了提高數(shù)據(jù)吞吐量,在數(shù)字信號處理器中大多采用哈佛結(jié)構(gòu)。
哈佛結(jié)構(gòu)特點如下:
使用兩個獨立的存儲器模塊,分別存儲指令和數(shù)據(jù),每個存儲模塊都不允許指令和數(shù)據(jù)并存,以便實現(xiàn)并行處理;
具有一條獨立的地址總線和一條獨立的數(shù)據(jù)總線,利用公用地址總線訪問兩個存儲模塊(程序存儲模塊和數(shù)據(jù)存儲模塊),公用數(shù)據(jù)總線則被用來完成程序存儲模塊或數(shù)據(jù)存儲模塊與CPU之間的數(shù)據(jù)傳輸;
兩種結(jié)構(gòu)區(qū)別
在典型情況下,完成一條指令需要3個步驟,即:取指令、指令譯碼和執(zhí)行指令。從指令流的定時關(guān)系也可看出馮.諾曼結(jié)構(gòu)與哈佛結(jié)構(gòu)處理方式的差別。
舉一個最簡單的對存儲器進(jìn)行讀寫操作的指令,指令1至指令3均為存、取數(shù)指令,對馮.諾曼結(jié)構(gòu)處理器,由于取指令和存取數(shù)據(jù)要從同一個存儲空間存取,經(jīng)由同一總線傳輸,因而它們無法重疊執(zhí)行,只有一個完成后再進(jìn)行下一個。
如果采用哈佛結(jié)構(gòu)處理以上同樣的3條存取數(shù)指令,如下圖所示,由于取指令和存取數(shù)據(jù)分別經(jīng)由不同的存儲空間和不同的總線,使得各條指令可以重疊執(zhí)行,這樣,也就克服了數(shù)據(jù)流傳輸?shù)钠款i,提高了運算速度。
上一篇:【ARM裸板】Nor Flash基礎(chǔ)知識與編程示例
下一篇:基于ARM的嵌入式最小系統(tǒng)的架構(gòu)研究
推薦閱讀
史海拾趣
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 人形機(jī)器人馬拉松背后的思考,兆易創(chuàng)新如何賦能機(jī)器人產(chǎn)業(yè)
- 一種基于STM32的智能柜控制器設(shè)計
- 小型傾轉(zhuǎn)旋翼機(jī)的無刷直流電機(jī)驅(qū)動器設(shè)計
- 超高速攝影機(jī)電控系統(tǒng)設(shè)計
- 基于GPS自動授時的無線智能控制器的設(shè)計
- 基于PTR2000的無線氣象信息采集系統(tǒng)設(shè)計
- Microchip推出MEC175xB系列器件,為嵌入式控制器引入硬件 抗量子攻擊能力
- 無人飛行器機(jī)載穩(wěn)定云臺控制系統(tǒng)的設(shè)計
- 匠芯創(chuàng)推出面向具身智能高性能實時處理器M7000
- 意法半導(dǎo)體與高通合作開發(fā)的Wi-Fi/藍(lán)牙模塊交鑰匙方案正式量產(chǎn)及重要應(yīng)用案例成功落地
- 超逸達(dá)攜手培風(fēng)圖南為先進(jìn)工藝提供高效、精準(zhǔn)的RC提取
- Wi-Fi 8:開啟極高可靠性 (UHR) 連接的新紀(jì)元
- Proximus Global旗下公司BICS推出eSIM Hub,簡化全球企業(yè)物聯(lián)網(wǎng)部署
- 高階智駕輔助系統(tǒng)下沉!12.98萬的車標(biāo)配城市NOA
- 深港攜手,車聯(lián)網(wǎng)協(xié)同進(jìn)化揭秘,兩地打出了哪些組合拳?
- Matter-over-Thread 智能鎖借助 Nordic 無線連接實現(xiàn)智能家居生態(tài)系統(tǒng)的互操作性
- XENSIV第四代磁傳感器支持最高達(dá)到ASIL B級要求的汽車功能安全應(yīng)用
- 藍(lán)牙核心規(guī)范6.1正式發(fā)布,隱私性和能效實現(xiàn)新提升
- 車輛區(qū)域控制架構(gòu)關(guān)鍵技術(shù)——趨勢篇
- 秀創(chuàng)意!免費試用LPC1114F 進(jìn)行中...
- 搶先體驗!免費試用LM3S8962 評估套件!(10.13~11.30)
- Microchip喊你探索dsPIC33A 芯片,70份好禮等你贏!
- 有獎直播 | 羅徹斯特電子為您細(xì)說:半導(dǎo)體停產(chǎn)后的挑戰(zhàn)與解決方案
- 直播已結(jié)束【英飛凌智能門鎖解決方案】
- TI 工業(yè)知識挑戰(zhàn)賽開啟,一起爭霸前20強(qiáng),贏取屬于你的榮耀!
- 參加RT-Thread軟件包賽,贏取RoboMaster等豐厚獎品!
- 有獎直播:當(dāng)AI遇見仿真,會有什么樣的電子行業(yè)革新之路?
- 免費申請|ATmega4809 Curiosity Nano
- 【我提問,你回答】你敢參與不?
- 臨界模式混合光伏微型逆變器的特性分析
- 廣州華星、安世半導(dǎo)體、廈門天馬等95個項目動態(tài)概況
- IC概念股本周漲跌幅一覽:力合微漲23.6%居首,國科微跌8.36%
- STM32F4與STM32F1的區(qū)別
- 張忠謀:大陸半導(dǎo)體進(jìn)步快仍落后臺積至少5年 今日完美謝幕
- MSP430系列單片機(jī):G2553循跡
- 官網(wǎng)中MSP430G2553數(shù)據(jù)表及用戶指南的簡單了解
- 單片機(jī) 如何給MSP430開發(fā)板下載程序 并做一個串口實驗
- 關(guān)于MSP430的精準(zhǔn)延時__delay_cycles的分析
- STM32F429——GPIO