第2章 ARM處理器基礎(chǔ)_第1頁(yè)
第2章 ARM處理器基礎(chǔ)_第2頁(yè)
第2章 ARM處理器基礎(chǔ)_第3頁(yè)
第2章 ARM處理器基礎(chǔ)_第4頁(yè)
第2章 ARM處理器基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩94頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、嵌入式系統(tǒng)與應(yīng)用 第第2 2章章 ARM ARM處理器基礎(chǔ)處理器基礎(chǔ)2022-7-222022-7-2嵌入式系統(tǒng)與應(yīng)用 教學(xué)要點(diǎn)1. ARM簡(jiǎn)介簡(jiǎn)介2. ARM處理器的分類處理器的分類3. 流水線(流水線(pipeline)4. 模式(模式(model)和寄存器)和寄存器5. 異常和異常向量表異常和異常向量表6. 存儲(chǔ)和存儲(chǔ)和I/O7. AHBA總線總線8. ARM指令系統(tǒng)指令系統(tǒng)32022-7-2嵌入式系統(tǒng)與應(yīng)用 1 ARM1 ARM簡(jiǎn)介簡(jiǎn)介42022-7-2嵌入式系統(tǒng)與應(yīng)用 1.1 ARM公司和公司和ARM處理器處理器1)ARM是一個(gè)是一個(gè)CPU內(nèi)核。內(nèi)核。ARM公司自己并不生產(chǎn)或銷售芯片

2、,公司自己并不生產(chǎn)或銷售芯片,它采用技術(shù)授權(quán)模式,通過(guò)出售芯片技術(shù)授權(quán),收取授權(quán)費(fèi)和它采用技術(shù)授權(quán)模式,通過(guò)出售芯片技術(shù)授權(quán),收取授權(quán)費(fèi)和技術(shù)轉(zhuǎn)讓費(fèi)。技術(shù)轉(zhuǎn)讓費(fèi)。2)基于)基于ARM內(nèi)核的處理器是目前消費(fèi)類電內(nèi)核的處理器是目前消費(fèi)類電子市場(chǎng)中占有量第一的處理器,尤其是子市場(chǎng)中占有量第一的處理器,尤其是手機(jī)行業(yè)。手機(jī)行業(yè)。3)ARM是是“Advanced RISC Machine”的縮寫,最早的的縮寫,最早的ARM處理器誕生于處理器誕生于80年代的英國(guó)。年代的英國(guó)。52022-7-2嵌入式系統(tǒng)與應(yīng)用 知識(shí)產(chǎn)權(quán):產(chǎn)品、規(guī)劃和路線圖知識(shí)產(chǎn)權(quán):產(chǎn)品、規(guī)劃和路線圖qCPUs從從ARMv4T 到到ARMv

3、6 結(jié)構(gòu)體系結(jié)構(gòu)體系qARM 系統(tǒng)級(jí)系統(tǒng)級(jí) IP 和設(shè)計(jì)方法和設(shè)計(jì)方法AMBAReference methodologiesq軟件軟件 IPMedia engines - Move, Swerve 3D q先進(jìn)技術(shù)先進(jìn)技術(shù) Java, security, multiprocessorq軟件開(kāi)發(fā)工具軟件開(kāi)發(fā)工具RealView - 開(kāi)發(fā)工具和平臺(tái)開(kāi)發(fā)工具和平臺(tái)62022-7-2嵌入式系統(tǒng)與應(yīng)用 ARM處理器的使用量處理器的使用量ARM 200372022-7-2嵌入式系統(tǒng)與應(yīng)用 1.2 ARM處理器的特點(diǎn)處理器的特點(diǎn)q支持支持CACHE和和MMUq馮馮諾依曼體系結(jié)構(gòu)諾依曼體系結(jié)構(gòu)/哈佛體系結(jié)構(gòu)哈

4、佛體系結(jié)構(gòu)qRISC指令集指令集固定的固定的32位指令位指令Load/Store體系結(jié)構(gòu)體系結(jié)構(gòu)大多數(shù)指令單周期完成大多數(shù)指令單周期完成q流水線執(zhí)行流水線執(zhí)行qThumbDSPjazeller功能擴(kuò)展功能擴(kuò)展q低功耗低功耗82022-7-2嵌入式系統(tǒng)與應(yīng)用 支持支持CACHE和和MMUq為什么采用高速緩存(為什么采用高速緩存(Cache)?)?微處理器的時(shí)鐘頻率比內(nèi)存速度提高快得多,高速緩微處理器的時(shí)鐘頻率比內(nèi)存速度提高快得多,高速緩存可以提高內(nèi)存的平均性能。存可以提高內(nèi)存的平均性能。q高速緩存的工作原理:高速緩存的工作原理:高速緩存是一種小型、快速的存儲(chǔ)器,它保存部分主高速緩存是一種小型、快

5、速的存儲(chǔ)器,它保存部分主存內(nèi)容的拷貝。存內(nèi)容的拷貝。 CPU高速緩存控制器CACHE主存數(shù)據(jù)高速數(shù)據(jù)地址寫緩沖器塊數(shù)據(jù)92022-7-2嵌入式系統(tǒng)與應(yīng)用 qMMU(Memory Management Unit)虛實(shí)地址變換虛實(shí)地址變換內(nèi)存地址訪問(wèn)保護(hù)內(nèi)存地址訪問(wèn)保護(hù)支持支持CACHE和和MMU102022-7-2嵌入式系統(tǒng)與應(yīng)用 指令寄存器指令寄存器控制器控制器數(shù)據(jù)通道數(shù)據(jù)通道輸入輸入輸出輸出中央處理器中央處理器存儲(chǔ)器存儲(chǔ)器程序程序指令指令0指令指令1指令指令2指令指令3指令指令4數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)0數(shù)據(jù)數(shù)據(jù)1數(shù)據(jù)數(shù)據(jù)2ARM7 馮馮諾依曼體系結(jié)構(gòu)模型諾依曼體系結(jié)構(gòu)模型112022-7-2嵌入式

6、系統(tǒng)與應(yīng)用 1)數(shù)據(jù)與指令都存儲(chǔ)在同一存儲(chǔ)區(qū)中,取指令與取數(shù)據(jù)利)數(shù)據(jù)與指令都存儲(chǔ)在同一存儲(chǔ)區(qū)中,取指令與取數(shù)據(jù)利用同一數(shù)據(jù)總線。用同一數(shù)據(jù)總線。2)被早期大多數(shù)計(jì)算機(jī)所采用)被早期大多數(shù)計(jì)算機(jī)所采用3)ARM7馮諾依曼體系馮諾依曼體系結(jié)構(gòu)簡(jiǎn)單,但速度較慢。取指不能同時(shí)取數(shù)據(jù)。結(jié)構(gòu)簡(jiǎn)單,但速度較慢。取指不能同時(shí)取數(shù)據(jù)。馮馮諾依曼體系結(jié)構(gòu)模型諾依曼體系結(jié)構(gòu)模型122022-7-2嵌入式系統(tǒng)與應(yīng)用 指令寄存器指令寄存器控制器控制器數(shù)據(jù)通道數(shù)據(jù)通道輸入輸入輸出輸出中央處理器中央處理器程序存儲(chǔ)器程序存儲(chǔ)器指令指令0指令指令1指令指令2數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)數(shù)據(jù)0數(shù)據(jù)數(shù)據(jù)1數(shù)據(jù)數(shù)據(jù)2地址地址指令指令地

7、址地址數(shù)據(jù)數(shù)據(jù)ARM9 +哈佛體系結(jié)構(gòu)模型哈佛體系結(jié)構(gòu)模型132022-7-2嵌入式系統(tǒng)與應(yīng)用 1)程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器分開(kāi))程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器分開(kāi)2)提供了較大的存儲(chǔ)器帶寬,各自有自己的總線)提供了較大的存儲(chǔ)器帶寬,各自有自己的總線3)適合于數(shù)字信號(hào)處理)適合于數(shù)字信號(hào)處理4)大多數(shù))大多數(shù)DSP都是哈佛結(jié)構(gòu)都是哈佛結(jié)構(gòu)5)ARM9是哈佛結(jié)構(gòu)是哈佛結(jié)構(gòu)取指和取數(shù)在同一周期進(jìn)行,提高速度。取指和取數(shù)在同一周期進(jìn)行,提高速度。哈佛體系結(jié)構(gòu)模型哈佛體系結(jié)構(gòu)模型142022-7-2嵌入式系統(tǒng)與應(yīng)用 RISC與與CISCq RISC和和CISC是目前設(shè)計(jì)制造微處理器的兩種典型技術(shù),雖然它們都是目

8、前設(shè)計(jì)制造微處理器的兩種典型技術(shù),雖然它們都是試圖在體系結(jié)構(gòu)、操作運(yùn)行、軟件硬件、編譯時(shí)間和運(yùn)行時(shí)間等諸是試圖在體系結(jié)構(gòu)、操作運(yùn)行、軟件硬件、編譯時(shí)間和運(yùn)行時(shí)間等諸多因素中做出某種平衡,以求達(dá)到高效的目的,但采用的方法不同,多因素中做出某種平衡,以求達(dá)到高效的目的,但采用的方法不同,因此,在很多方面差異很大,它們主要有:因此,在很多方面差異很大,它們主要有:q CISC:復(fù)雜指令集(:復(fù)雜指令集(Complex Instruction Set Computer) 具有大量的指令和尋址方式具有大量的指令和尋址方式 8/2原則:原則:80%的程序只使用的程序只使用20%的指令的指令 大多數(shù)程序只使

9、用少量的指令就能夠運(yùn)行大多數(shù)程序只使用少量的指令就能夠運(yùn)行 CISC CPU 包含有豐富的單元電路,因而功能強(qiáng)、面積大、功耗大包含有豐富的單元電路,因而功能強(qiáng)、面積大、功耗大q RISC:精簡(jiǎn)指令集(:精簡(jiǎn)指令集(Reduced Instruction Set Computer) 在通道中只包含最有用的指令在通道中只包含最有用的指令 確保數(shù)據(jù)通道快速執(zhí)行每一條指令確保數(shù)據(jù)通道快速執(zhí)行每一條指令 使使CPU硬件結(jié)構(gòu)設(shè)計(jì)變得更為簡(jiǎn)單硬件結(jié)構(gòu)設(shè)計(jì)變得更為簡(jiǎn)單 RISC CPU包含較少的單元電路,因而面積小、功耗低包含較少的單元電路,因而面積小、功耗低152022-7-2嵌入式系統(tǒng)與應(yīng)用 RISC與與

10、CISCqCISCIFIDREGALUMEM開(kāi)始退出IFIDALUMEMREG微操作通道開(kāi)始退出單通數(shù)據(jù)通道qRISC162022-7-2嵌入式系統(tǒng)與應(yīng)用 流水線操作流水線操作q流水線技術(shù):幾個(gè)指令可以并行執(zhí)行流水線技術(shù):幾個(gè)指令可以并行執(zhí)行提高了提高了CPU的運(yùn)行效率的運(yùn)行效率內(nèi)部信息流要求通暢流動(dòng)內(nèi)部信息流要求通暢流動(dòng)譯碼取指執(zhí)行add譯碼取指執(zhí)行sub譯碼取指執(zhí)行cmp時(shí)間AddSubCmp172022-7-2嵌入式系統(tǒng)與應(yīng)用 ARM RISC體系結(jié)構(gòu)體系結(jié)構(gòu)182022-7-2嵌入式系統(tǒng)與應(yīng)用 1.4 命名的含義命名的含義標(biāo)志標(biāo)志含義含義說(shuō)明說(shuō)明T支持支持Thumb指令集指令集Thum

11、b指令集版本指令集版本1:ARMv4TThumb指令集版本指令集版本2:ARMv5TThumb-2:ARMv6TD片上調(diào)試片上調(diào)試M支持長(zhǎng)乘法支持長(zhǎng)乘法32位乘位乘32位得到位得到64位,位,32位的乘加得到位的乘加得到64位位IEmbedded ICEEDSP指令指令增加了增加了DSP算法處理器指令:算法處理器指令:16位乘加指令,飽和的位乘加指令,飽和的帶符號(hào)數(shù)的加減法,雙字?jǐn)?shù)據(jù)操作,帶符號(hào)數(shù)的加減法,雙字?jǐn)?shù)據(jù)操作,cache預(yù)取指令預(yù)取指令JJava加速器加速器Jazelle提高提高java代碼的運(yùn)行速度代碼的運(yùn)行速度S可綜合可綜合提供提供VHDL或或Verilog語(yǔ)言設(shè)計(jì)文件語(yǔ)言設(shè)計(jì)文

12、件192022-7-2嵌入式系統(tǒng)與應(yīng)用 ARM processors nameFamily number 7: ARM7 9: ARM910: ARM1011: ARM11Memory system 2: Cache, MMU, Process ID 4: Cache, MPU 6: Write buffer, no cacheMemory size 0: Cache size (4-128KB) 2: Reduced cache size 6: TCMSynthesizableExtensions E: DSP extension J: Jazelle extension T: Thumb

13、support202022-7-2嵌入式系統(tǒng)與應(yīng)用 2 ARM2 ARM處理器的分類處理器的分類q基于處理器內(nèi)核的分類基于處理器內(nèi)核的分類ARM7T,ARM7E,ARM9,ARM9E,ARM10T,ARM10E,ARM11q基于指令集體系結(jié)構(gòu)的分類基于指令集體系結(jié)構(gòu)的分類v4T,v5T,v5TE,v5TEJ,v6212022-7-2嵌入式系統(tǒng)與應(yīng)用 2.1 ARM Core(ARM核)核)q 處理器核處理器核/整數(shù)核整數(shù)核(Processor Core/Integer Core):ARM7TDMI, ARM9TDMI, ARM9E-S, ARM10TDMI,ARM10E等。等。q ARM CP

14、U核核(ARM CPU Cores):ARM710T/720T/740T, ARM920T/940T, ARM946E-S, ARM966E-S, ARM1020E等。等。q 基于基于ARM Core CPU的應(yīng)用處理器,比如:的應(yīng)用處理器,比如:Intel的的PXA25x,Philip的的lpc22xx系列,系列, Samsung的的S3C44B0等。等。222022-7-2嵌入式系統(tǒng)與應(yīng)用 ARM7T和和ARM7E FamilyUnified Cache內(nèi)存管理內(nèi)存管理流水線級(jí)別流水線級(jí)別ThumbDSPJazelleARM7TDMI無(wú)無(wú)無(wú)無(wú)3有有無(wú)無(wú)無(wú)無(wú)ARM7TDMI-S無(wú)無(wú)無(wú)無(wú)3有有

15、無(wú)無(wú)無(wú)無(wú)ARM710T/720T8kMMU3有有無(wú)無(wú)無(wú)無(wú)ARM740T8k或或4kProtection Unit3有有無(wú)無(wú)無(wú)無(wú)ARM7EJ-S無(wú)無(wú)無(wú)無(wú)3有有有有有有232022-7-2嵌入式系統(tǒng)與應(yīng)用 ARM7系列的升級(jí)系列的升級(jí)Embedded Trace Macrocell- ETM242022-7-2嵌入式系統(tǒng)與應(yīng)用 ARM9 FamilyCache內(nèi)存管理內(nèi)存管理流水線流水線級(jí)別級(jí)別ThumbDSPJazelleARM9TDMI無(wú)無(wú)無(wú)無(wú)5有有無(wú)無(wú)無(wú)無(wú)ARM920T16K/16kMMU5有有無(wú)無(wú)無(wú)無(wú)ARM922T8k/8kMMU5有有無(wú)無(wú)無(wú)無(wú)ARM940T4k/4kProtection

16、Unit5有有無(wú)無(wú)無(wú)無(wú)252022-7-2嵌入式系統(tǒng)與應(yīng)用 ARM9系列的升級(jí)系列的升級(jí)262022-7-2嵌入式系統(tǒng)與應(yīng)用 ARM9E FamilyCache內(nèi)存管理內(nèi)存管理流水線級(jí)別流水線級(jí)別ThumbDSPJazelleARM9E-S無(wú)無(wú)無(wú)無(wú)5有有有有無(wú)無(wú)ARM946E-S4k-1M/4k-1MProtection Unit5有有有有無(wú)無(wú)ARM966E-S無(wú)無(wú)無(wú)無(wú)5有有有有無(wú)無(wú)ARM968E-S無(wú)無(wú)無(wú)無(wú)5有有有有無(wú)無(wú)ARM9EJ-S無(wú)無(wú)無(wú)無(wú)5/6有有有有有有ARM926EJ-S14k-128k/4k-128kMMU5/6有有有有有有272022-7-2嵌入式系統(tǒng)與應(yīng)用 ARM9E系列的升

17、級(jí)系列的升級(jí)ARM926EJ-SARM946E-SARM966E-S282022-7-2嵌入式系統(tǒng)與應(yīng)用 ARM10E和和ARM10T FamilyARM10EJ-S無(wú)無(wú)無(wú)無(wú)6有有有有有有ARM1026EJ-S0,4-128k/0,4-128kMMU6有有有有有有Cache內(nèi)存內(nèi)存管理管理流水線流水線級(jí)別級(jí)別ThumbDSPJazelleARM10E無(wú)無(wú)無(wú)無(wú)6有有有有無(wú)無(wú)ARM1020E32k/32kMMU6有有有有無(wú)無(wú)ARM1022E16k/16kMMU6有有有有無(wú)無(wú)ARM10TDMI無(wú)無(wú)無(wú)無(wú)6有有無(wú)無(wú)無(wú)無(wú)ARM1020T32k/32kMMU6有有無(wú)無(wú)無(wú)無(wú)292022-7-2嵌入式系統(tǒng)與應(yīng)用

18、 ARM11 FamilyCache內(nèi)存內(nèi)存管理管理流水線流水線級(jí)別級(jí)別ThumbDSPJazelle浮點(diǎn)運(yùn)算浮點(diǎn)運(yùn)算ARM1136J-S4-64kMMU8有有有有有有無(wú)無(wú)ARM1136JF-S4-64kMMU8有有有有有有有有ARM1156T2-S可配置可配置9Thumb-2有有無(wú)無(wú)無(wú)無(wú)ARM1156T2F-S可配置可配置9Thumb-2有有無(wú)無(wú)有有302022-7-2嵌入式系統(tǒng)與應(yīng)用 StrongARM和和XScaleq SA-1110 (基于(基于StrongARM)內(nèi)核內(nèi)核SA-116k I-Cache + 8k D-CacheI-MMU + D-MMUq PXA25x/26x/27x

19、 IXP2400(基于基于XScale)內(nèi)核內(nèi)核XScale7/8級(jí)流水線級(jí)流水線32k I-Cache + 32k D-CacheI-MMU + D-MMU312022-7-2嵌入式系統(tǒng)與應(yīng)用 2.2 指令集體系結(jié)構(gòu)(指令集體系結(jié)構(gòu)(ISA)ThumbDSPJazelleMediaTrustZoneThumb-2v4StrongARMv4T*ARM7T, ARM9v5T*ARM10T,XScalev5TE*ARM9E, ARM10Ev5TEJ*ARM7EJ,ARM9EJ, ARM10EJv6*ARM1136J(F)-Sv6Z*v6T2*ARM1156T2(F)-S注:v5T支持的Thumb是

20、對(duì)v4T中的Thumb的擴(kuò)展322022-7-2嵌入式系統(tǒng)與應(yīng)用 指令集體系結(jié)構(gòu)指令集體系結(jié)構(gòu)332022-7-2嵌入式系統(tǒng)與應(yīng)用 q流水線方式是把一個(gè)重復(fù)的過(guò)程分解為若干個(gè)子過(guò)程,流水線方式是把一個(gè)重復(fù)的過(guò)程分解為若干個(gè)子過(guò)程,每個(gè)子過(guò)程可以與其他子過(guò)程同時(shí)進(jìn)行。由于這種工每個(gè)子過(guò)程可以與其他子過(guò)程同時(shí)進(jìn)行。由于這種工作方式與工廠中的生產(chǎn)流水線十分相似,因此,把它作方式與工廠中的生產(chǎn)流水線十分相似,因此,把它稱為流水線工作方式。稱為流水線工作方式。3 3 流水線流水線342022-7-2嵌入式系統(tǒng)與應(yīng)用 3.1 ARM7的流水線的流水線指令流水線的目的是提高執(zhí)行速度。指令流水線的目的是提高執(zhí)

21、行速度。PC指向的是預(yù)取指令,指向的是預(yù)取指令,因此如果直接讀取因此如果直接讀取PC值,得到的是值,得到的是“當(dāng)前指令地址當(dāng)前指令地址+8”從內(nèi)存中取指令指令譯碼執(zhí)行指令/讀寫REG352022-7-2嵌入式系統(tǒng)與應(yīng)用 q 指令流水線的目的是提高執(zhí)行速度。指令流水線的目的是提高執(zhí)行速度。PC指向的是預(yù)取指指向的是預(yù)取指令,因此如果直接讀取令,因此如果直接讀取PC值,得到的是并不是當(dāng)前正在值,得到的是并不是當(dāng)前正在執(zhí)行的指令地址。執(zhí)行的指令地址。q CUP中的一條指令的執(zhí)行可以分若干個(gè)階段:中的一條指令的執(zhí)行可以分若干個(gè)階段: 1.取指,從存儲(chǔ)器中取出指令(取指,從存儲(chǔ)器中取出指令(fetch)

22、 2.譯碼,指令譯碼(譯碼,指令譯碼(dec) 3.取操作數(shù),假定操作數(shù)從寄存器組中?。ㄈ〔僮鲾?shù),假定操作數(shù)從寄存器組中?。╮eg) 4.執(zhí)行運(yùn)算(執(zhí)行運(yùn)算(ALU) 5.存儲(chǔ)器訪問(wèn)(存儲(chǔ)器訪問(wèn)(mem) 6.結(jié)果寫回寄存器(結(jié)果寫回寄存器(res)q 各個(gè)階段的操作相對(duì)都是獨(dú)立的。因此,可以采用流水線各個(gè)階段的操作相對(duì)都是獨(dú)立的。因此,可以采用流水線的重疊技術(shù),可以大大提高系統(tǒng)的性能。的重疊技術(shù),可以大大提高系統(tǒng)的性能。指令流水線362022-7-2嵌入式系統(tǒng)與應(yīng)用 ARM7TDMI Processor Coreq 馮馮諾依曼諾依曼 架構(gòu)架構(gòu)q 三級(jí)流水線三級(jí)流水線q 快速中斷響應(yīng)快速中斷響

23、應(yīng)q 性能指標(biāo)性能指標(biāo): 0.9 Dhrystone MIPs/MHzq Embedded ICE-RT 調(diào)試邏輯調(diào)試邏輯q No memory managementq No cacheq CPI = 1.9 q 使用最廣泛的使用最廣泛的 32位嵌入式內(nèi)核位嵌入式內(nèi)核q 主要應(yīng)用領(lǐng)域主要應(yīng)用領(lǐng)域: 個(gè)人音頻設(shè)備 手機(jī)和移動(dòng)通信終端 Modems, xDSL, Cable Modems ATM and Ethernet 網(wǎng)絡(luò)設(shè)備 打印機(jī) 數(shù)碼相機(jī) PDA 機(jī)頂盒372022-7-2嵌入式系統(tǒng)與應(yīng)用 q ARM7 內(nèi)核使用內(nèi)核使用 3 級(jí)流水線,以提高指令流傳遞給處理器級(jí)流水線,以提高指令流傳遞給

24、處理器的速度,的速度,使得某些操作達(dá)到并行處理的效果,比單純的使得某些操作達(dá)到并行處理的效果,比單純的串行處理要好。串行處理要好。q PC 指向處于指令讀取級(jí)的指令地址,而不是處于執(zhí)行級(jí)指向處于指令讀取級(jí)的指令地址,而不是處于執(zhí)行級(jí)的指令地址。的指令地址。FETCHDECODEEXECUTE從存儲(chǔ)器讀取指令從存儲(chǔ)器讀取指令譯碼譯碼讀寄存器讀寄存器移位和算術(shù)邏輯運(yùn)算移位和算術(shù)邏輯運(yùn)算寫寄存器寫寄存器PCPCPC - 4PC-2PC - 8PC - 4ARMThumb指令流水線382022-7-2嵌入式系統(tǒng)與應(yīng)用 q本例中本例中 6 個(gè)時(shí)鐘周期內(nèi)一共完成了個(gè)時(shí)鐘周期內(nèi)一共完成了 6 條指令條指令q

25、全部對(duì)寄存器進(jìn)行操作全部對(duì)寄存器進(jìn)行操作 (單周期執(zhí)行)(單周期執(zhí)行)q指令周期數(shù)指令周期數(shù) (CPI) = 1 OperationCycle 1 2 3 45 6 ADD SUB MOV AND ORR EOR CMP RSBFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteDecodeExecuteFetchDecodeFetchFetch優(yōu)秀的流水線結(jié)構(gòu)優(yōu)秀的流水線結(jié)構(gòu)392022-7-2嵌入式系統(tǒng)與應(yīng)用 q本例中本例中 6 個(gè)時(shí)鐘周期內(nèi)一共完成了個(gè)時(shí)鐘周期內(nèi)

26、一共完成了 4 條指令條指令 q指令周期數(shù)指令周期數(shù)(CPI) = 1.5 Cycle Operation12 3 4 5 6 ADD SUB LDR MOV AND ORRFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteDataWritebackFetchDecodeExecuteFetchDecodeFetch流水線執(zhí)行舉例:流水線執(zhí)行舉例:LDR402022-7-2嵌入式系統(tǒng)與應(yīng)用 ARM9TDMIq5 級(jí)流水線級(jí)流水線q性能改進(jìn)性能改進(jìn)提升提升 CPI 至至 1.5提高時(shí)鐘頻率提高時(shí)鐘頻率412022-7-2嵌入式系統(tǒng)與應(yīng)用

27、ARM9TDMI 流水線流水線InstructionFetch Shift + ALUMemoryAccessRegWriteRegReadRegDecodeFETCHDECODEEXECUTEMEMORYWRITEARM9TDMIARM or ThumbInst DecodeReg SelectRegReadShiftALURegWriteThumbARMdecompressARM decodeInstructionFetchFETCHDECODEEXECUTEARM7TDMI422022-7-2嵌入式系統(tǒng)與應(yīng)用 CycleOperationADD R1, R1, R2SUB R3, R4,

28、 R1ORR R8, R3, R4AND R6, R3, R1EOR R3, R1, R212345678LDRR4, R79FDEFDEWFDEWFDEWFDWEFDEWF - FetchD - DecodeE - ExecuteI - InterlockM - Memory W Write-backILDR 內(nèi)部周期內(nèi)部周期q 本例中本例中 7 個(gè)時(shí)鐘周期完成個(gè)時(shí)鐘周期完成 6 條指令,條指令, CPI 等于等于 1.2q Interlock: LDR 后面的指令馬上要用到后面的指令馬上要用到LDR 的結(jié)果寄存器,的結(jié)果寄存器,導(dǎo)致插入一個(gè)內(nèi)部周期導(dǎo)致插入一個(gè)內(nèi)部周期WIM432022-7

29、-2嵌入式系統(tǒng)與應(yīng)用 3.2 更多級(jí)的流水線更多級(jí)的流水線qARM10采用了采用了6級(jí)流水線,但是處于兼容考慮,級(jí)流水線,但是處于兼容考慮,直接讀取直接讀取PC值依然等于值依然等于“當(dāng)前指令地址當(dāng)前指令地址+8”。442022-7-2嵌入式系統(tǒng)與應(yīng)用 3.3 流水線對(duì)程序的影響流水線對(duì)程序的影響lr = lr & 15;lr = pc + lr * 4; cpsr=spsr;pc = lr; andlr, lr, #15ldrlr, pc, lr, lsl #2movs pc, lr.LCtab_irq:.word _irq_usr 0 x0.word _irq_invalid 0 x

30、1.word _irq_invalid 0 x2.word _irq_svc 0 x3.word _irq_invalid 0 x4.word _irq_invalid 0 xf452022-7-2嵌入式系統(tǒng)與應(yīng)用 3.4 指令預(yù)取和自修改代碼指令預(yù)取和自修改代碼q流水線使得流水線使得CPU在執(zhí)行當(dāng)前指令的同時(shí),從存儲(chǔ)在執(zhí)行當(dāng)前指令的同時(shí),從存儲(chǔ)器中預(yù)取其后若干條指令。器中預(yù)取其后若干條指令。q預(yù)取的指令不一定得到執(zhí)行。比如發(fā)生跳轉(zhuǎn)或中預(yù)取的指令不一定得到執(zhí)行。比如發(fā)生跳轉(zhuǎn)或中斷。斷。q自修改代碼指的是代碼在執(zhí)行過(guò)程中可能修改自自修改代碼指的是代碼在執(zhí)行過(guò)程中可能修改自身。被修改的指令可能和預(yù)

31、取得指令不同,從而身。被修改的指令可能和預(yù)取得指令不同,從而產(chǎn)生錯(cuò)誤。產(chǎn)生錯(cuò)誤。462022-7-2嵌入式系統(tǒng)與應(yīng)用 q 相鄰指令執(zhí)行的數(shù)據(jù)相關(guān)性會(huì)產(chǎn)生指令執(zhí)行的停頓相鄰指令執(zhí)行的數(shù)據(jù)相關(guān)性會(huì)產(chǎn)生指令執(zhí)行的停頓(stall),嚴(yán)重的會(huì)產(chǎn)生數(shù)據(jù)災(zāi)難(),嚴(yán)重的會(huì)產(chǎn)生數(shù)據(jù)災(zāi)難(hazards)。如圖所示,)。如圖所示,第第2條指令的條指令的reg操作需要第操作需要第1條指令執(zhí)行的結(jié)果(條指令執(zhí)行的結(jié)果(res),),因此,第因此,第2條指令在執(zhí)行時(shí),不得不產(chǎn)生停頓。條指令在執(zhí)行時(shí),不得不產(chǎn)生停頓。fetch decreg ALU mem res1fetch decreg ALU mem res2t

32、imestallinstruction472022-7-2嵌入式系統(tǒng)與應(yīng)用 q 另外碰到分支類指令,那么,會(huì)使后面緊接該條指令的幾另外碰到分支類指令,那么,會(huì)使后面緊接該條指令的幾條指令的執(zhí)行都會(huì)無(wú)效,如圖所示。條指令的執(zhí)行都會(huì)無(wú)效,如圖所示。 fetch decregALU memres1 (branch)fetch decregALU mem resfetch decregALU memres23timeinstructionfetchdecregALU mem resfetch decregALU mem res45 (branch target)482022-7-2嵌入式系統(tǒng)與應(yīng)用 4

33、 4 模式和寄存器模式和寄存器q模式分類模式分類qARM處理器的寄存器處理器的寄存器q狀態(tài)寄存器狀態(tài)寄存器q異常和異常向量表異常和異常向量表492022-7-2嵌入式系統(tǒng)與應(yīng)用 4.1 模式分類模式分類qARM 一共有一共有 7 種執(zhí)行模式種執(zhí)行模式:User: 非特權(quán)級(jí)模式,多數(shù)應(yīng)用程序使用的模式非特權(quán)級(jí)模式,多數(shù)應(yīng)用程序使用的模式FIQ: 進(jìn)入快速中斷響應(yīng)時(shí)進(jìn)入快速中斷響應(yīng)時(shí)IRQ: 進(jìn)入一般中斷響應(yīng)時(shí)進(jìn)入一般中斷響應(yīng)時(shí)Supervisor: 復(fù)位后的缺省模式,或進(jìn)入軟件中斷響應(yīng)時(shí)復(fù)位后的缺省模式,或進(jìn)入軟件中斷響應(yīng)時(shí)Abort: 遇到存儲(chǔ)器訪問(wèn)出錯(cuò)時(shí)遇到存儲(chǔ)器訪問(wèn)出錯(cuò)時(shí)Undef: 遇到

34、未定義指令時(shí)遇到未定義指令時(shí)System: 特權(quán)級(jí)的特權(quán)級(jí)的User模式模式502022-7-2嵌入式系統(tǒng)與應(yīng)用 4.2 ARM處理器的寄存器處理器的寄存器q ARM 一共有一共有 37個(gè)個(gè)32位的寄存器位的寄存器 1 個(gè)個(gè)PC寄存器寄存器 1 個(gè)個(gè)CPSR(當(dāng)前狀態(tài)寄存器)(當(dāng)前狀態(tài)寄存器) 5 個(gè)個(gè)SPSR(狀態(tài)保留寄存器)(狀態(tài)保留寄存器) 30 個(gè)通用寄存器個(gè)通用寄存器q 當(dāng)前的處理器模式?jīng)Q定了可以訪問(wèn)到的寄存器組,以下是對(duì)當(dāng)前的處理器模式?jīng)Q定了可以訪問(wèn)到的寄存器組,以下是對(duì)所有模式都有的寄存器所有模式都有的寄存器 一組特定的一組特定的 r0-r12 寄存器寄存器 一個(gè)特定的一個(gè)特定的

35、 r13 (堆棧指針堆棧指針, sp) 和和 r14 (連接寄存器連接寄存器, lr) PC寄存器寄存器 r15 當(dāng)前狀態(tài)寄存器當(dāng)前狀態(tài)寄存器 cpsrq 特權(quán)模式(特權(quán)模式(System 模式除外)獨(dú)有的模式除外)獨(dú)有的 特定的特定的 spsr (狀態(tài)保留寄存器)(狀態(tài)保留寄存器)512022-7-2嵌入式系統(tǒng)與應(yīng)用 ARM處理器的寄存器處理器的寄存器User/SystemSupervisorAbortUndefinedInterruptFIQR0R0R0R0R0R0R1R1R1R1R1R1R2R2R2R2R2R2R3R3R3R3R3R3R4R4R4R4R4R4R5R5R5R5R5R5R6R

36、6R6R6R6R6R7R7R7R7R7R7R8R8R8R8R8R8_FIQR9R9R9R9R9R9_FIQR10R10R10R10R10R10_FIQR11R11R11R11R11R11_FIQR12R12R12R12R12R12_FIQR13R13_SVCR13_ABORT R13_UNDEFR13_IRQR13_FIQR14R14_SVCR14_ABORTR14_UNDEFR14_IRQR14_FIQPCPCPCPCPCPC CPSRCPSRCPSRCPSRCPSRCPSR SPSR_SVCSPSR_ABORTSPSR_UNDEFSPSR_IRQSPSR_FIQ522022-7-2嵌入式系

37、統(tǒng)與應(yīng)用 寄存器組織寄存器組織Usermoder0-r7,r15,andcpsrr8r9r10r11r12r13 (sp)r14 (lr)spsrFIQr8r9r10r11r12r13 (sp)r14 (lr)r15 (pc)cpsrr0r1r2r3r4r5r6r7Userr13 (sp)r14 (lr)spsrIRQUsermoder0-r12,r15,andcpsrr13 (sp)r14 (lr)spsrUndefUsermoder0-r12,r15,andcpsrr13 (sp)r14 (lr)spsrSVCUsermoder0-r12,r15,andcpsrr13 (sp)r14 (l

38、r)spsrAbortUsermoder0-r12,r15,andcpsrThumb stateLow registersThumb stateHigh registersNote: System mode uses the User mode register set 532022-7-2嵌入式系統(tǒng)與應(yīng)用 ARM處理器的寄存器處理器的寄存器qr0 r12:通用寄存器。當(dāng):通用寄存器。當(dāng)C和匯編互相調(diào)用時(shí),和匯編互相調(diào)用時(shí),r0 r3用來(lái)傳遞函數(shù)參數(shù),可記為用來(lái)傳遞函數(shù)參數(shù),可記為a0 a3qr13:用于各工作態(tài)的堆棧寄存器:用于各工作態(tài)的堆棧寄存器 (sp)qr14:用來(lái)保護(hù)程序返回地址的鏈

39、接寄存器:用來(lái)保護(hù)程序返回地址的鏈接寄存器 ( lr )qr15:程序計(jì)數(shù)器(:程序計(jì)數(shù)器(pc)qr8_FIQ r12_FIQ:允許快速中斷處理允許快速中斷處理qr8_User r12_User:除了:除了FIQ外各模式公用外各模式公用q除了除了User和和System模式外,各種模式都有自己模式外,各種模式都有自己獨(dú)立的獨(dú)立的r13和和r14542022-7-2嵌入式系統(tǒng)與應(yīng)用 4.3 狀態(tài)寄存器狀態(tài)寄存器q 條件標(biāo)識(shí)位條件標(biāo)識(shí)位 N = 結(jié)果為負(fù)結(jié)果為負(fù) Z = 結(jié)果為零結(jié)果為零 C = 進(jìn)位進(jìn)位 V = 溢出溢出q Q 標(biāo)識(shí)位標(biāo)識(shí)位 只在只在 5TE/J 系列中有效系列中有效 指示指示

40、sticky overflow的發(fā)生的發(fā)生q J 標(biāo)識(shí)位標(biāo)識(shí)位 僅在僅在 5TEJ 系列中有效系列中有效 J = 1: 處理器處于處理器處于 Jazelle 狀態(tài)狀態(tài)q 中斷使能位中斷使能位 I = 1: 禁止禁止 IRQ. F = 1: 禁止禁止 FIQ.q T 標(biāo)識(shí)位標(biāo)識(shí)位 只在只在 xT 系列內(nèi)核中有效系列內(nèi)核中有效 T = 0: 處理器處于處理器處于 ARM 狀態(tài)狀態(tài) T = 1: 處理器處于處理器處于 Thumb 狀態(tài)狀態(tài)q 模式位模式位 指示當(dāng)前處理器模式指示當(dāng)前處理器模式2731N Z C V Q2867I F T mode162381554024fsxc U n d e f i

41、 n e dJ552022-7-2嵌入式系統(tǒng)與應(yīng)用 CPSR/SPSRM4:0模式模式Accessible Registers10000UserPC, R14 to R0, CPSR10001FIQPC, R14_FIQ to R8_FIQ, R7 to R0, CPSR, SPSR_FIQ10010IRQPC, R14_IRQ, R13_IRQ, R12 to R0, CPSR, SPSR_IRQ10011SVCPC, R14_SVC, R13_SVC, R12 to R0, CPSR, SPSR_SVC10111AbortPC, R14_ABORT, R13_ABORT, R12 to R

42、0, CPSR, SPSR_ABORT11011UndefPC, R14_UNDEF, R13_UNDEF, R12 to R0, CPSR, SPSR_UNDEF11111SystemPC, R14 to R0, CPSR (Architecture 4 only)562022-7-2嵌入式系統(tǒng)與應(yīng)用 PC寄存器寄存器 (r15)q當(dāng)處理器處于當(dāng)處理器處于 ARM 狀態(tài)時(shí)狀態(tài)時(shí):所有指令都是所有指令都是32位長(zhǎng)度位長(zhǎng)度所有指令存儲(chǔ)必須所有指令存儲(chǔ)必須 word 對(duì)齊對(duì)齊pc31:2 有效,有效, 1:0 未定義未定義q當(dāng)處理器處于當(dāng)處理器處于 Thumb 狀態(tài)時(shí)狀態(tài)時(shí):所有指令都是所有指令都

43、是16位長(zhǎng)度位長(zhǎng)度所有指令存儲(chǔ)必須所有指令存儲(chǔ)必須 halfword 對(duì)齊對(duì)齊pc31:1 位有效,位有效, 最低位未定義最低位未定義q當(dāng)處理器處于當(dāng)處理器處于 Jazelle 狀態(tài)時(shí)狀態(tài)時(shí):所有指令都是所有指令都是 8 位長(zhǎng)度位長(zhǎng)度處理器一次執(zhí)行處理器一次執(zhí)行 1 個(gè)個(gè)word的讀取指令獲得的讀取指令獲得 4 條條Java指令指令q注意在指令中訪問(wèn)注意在指令中訪問(wèn)PC寄存器的值寄存器的值不是當(dāng)前指令地址不是當(dāng)前指令地址572022-7-2嵌入式系統(tǒng)與應(yīng)用 5 5 異常和異常向量表異常和異常向量表q異常的產(chǎn)生異常的產(chǎn)生q異常優(yōu)先級(jí)異常優(yōu)先級(jí)q異常處理異常處理q異常返回指令異常返回指令58202

44、2-7-2嵌入式系統(tǒng)與應(yīng)用 5.1 異常的產(chǎn)生異常的產(chǎn)生q直接異常:軟件中斷,未定義指令(包括所要求直接異常:軟件中斷,未定義指令(包括所要求的協(xié)處理器不存在時(shí)的協(xié)處理器命令)和預(yù)取指的協(xié)處理器不存在時(shí)的協(xié)處理器命令)和預(yù)取指令令q間接異常:數(shù)據(jù)中止(在間接異常:數(shù)據(jù)中止(在Load和和Store數(shù)據(jù)訪問(wèn)時(shí)數(shù)據(jù)訪問(wèn)時(shí)的存儲(chǔ)器故障)的存儲(chǔ)器故障)q外部異常:復(fù)位,外部異常:復(fù)位,IRQ和和FIQ592022-7-2嵌入式系統(tǒng)與應(yīng)用 5.2 異常優(yōu)先級(jí)異常優(yōu)先級(jí)q異常在當(dāng)前指令執(zhí)行完成之后才被響應(yīng)異常在當(dāng)前指令執(zhí)行完成之后才被響應(yīng)q多個(gè)異??梢栽谕粫r(shí)間產(chǎn)生多個(gè)異??梢栽谕粫r(shí)間產(chǎn)生q 異常指定了

45、優(yōu)先級(jí)和固定的服務(wù)順序異常指定了優(yōu)先級(jí)和固定的服務(wù)順序:ResetData AbortFIQIRQPrefetch AbortSWIUndefined instruction602022-7-2嵌入式系統(tǒng)與應(yīng)用 Vector TableVector table can be at 0 xFFFF0000 on ARM720T and on ARM9/10 family devicesFIQIRQ(Reserved)Data AbortPrefetch AbortSoftware InterruptUndefined InstructionReset0 x1C0 x180 x140 x100 x

46、0C0 x080 x040 x005.3 異常處理異常處理q 當(dāng)異常產(chǎn)生時(shí)當(dāng)異常產(chǎn)生時(shí), ARM core:拷貝拷貝 CPSR 到到 SPSR_設(shè)置適當(dāng)?shù)脑O(shè)置適當(dāng)?shù)?CPSR 位:位: 改變處理器狀態(tài)進(jìn)入 ARM 狀態(tài) 改變處理器模式進(jìn)入相應(yīng)的異常模式 設(shè)置中斷禁止位禁止相應(yīng)中斷 保存返回地址到保存返回地址到 LR_設(shè)置設(shè)置 PC 到相應(yīng)的異常向量到相應(yīng)的異常向量q 返回時(shí)返回時(shí), 異常處理需要異常處理需要:從從 SPSR_恢復(fù)恢復(fù)CPSR從從LR_恢復(fù)恢復(fù)PC 這些操作只能在這些操作只能在 ARM 態(tài)執(zhí)行態(tài)執(zhí)行.612022-7-2嵌入式系統(tǒng)與應(yīng)用 622022-7-2嵌入式系統(tǒng)與應(yīng)用 q

47、從從SWI 和和 Undef異常返回異常返回MOVS pc,lrq 從從FIQ, IRQ 和預(yù)取異常和預(yù)取異常(Prefect Abort)返回返回SUBS pc,lr,#4q 從數(shù)據(jù)異常從數(shù)據(jù)異常(Data Abort)返回返回SUBS pc,lr,#8q 若若 LR 之前被壓棧,使用之前被壓棧,使用LDM“” LDMFD sp!,pc異常返回:異常返回:q 使用一數(shù)據(jù)處理指令:使用一數(shù)據(jù)處理指令: 相應(yīng)的指令取決于什么樣的異常相應(yīng)的指令取決于什么樣的異常 帶帶 S 位位 把把 PC 作為目標(biāo)寄存器作為目標(biāo)寄存器q 在特權(quán)模式下,這些操作不僅在特權(quán)模式下,這些操作不僅更新更新PC,而且拷貝,

48、而且拷貝SPSR到到CPSR5.4 異常返回指令異常返回指令632022-7-2嵌入式系統(tǒng)與應(yīng)用 q匯編指令中的匯編指令中的 和和 S 標(biāo)記可用于異常返回,恢復(fù)標(biāo)記可用于異常返回,恢復(fù)PC的同時(shí)恢復(fù)的同時(shí)恢復(fù)CPSR。q如果如果使用堆棧返回,預(yù)先保存在棧中的返回地址使用堆棧返回,預(yù)先保存在棧中的返回地址要求以做好調(diào)整。在異常返回時(shí)使用類似如下指要求以做好調(diào)整。在異常返回時(shí)使用類似如下指令:令:“l(fā)dmfd r13!, (r0-r3,pc)”1)“”后綴不允許在后綴不允許在usr和和svc模式下使用。模式下使用。2)如果用在)如果用在LDM指令中,且寄存器列表中含有指令中,且寄存器列表中含有PC

49、時(shí),時(shí),那么除了正常的多寄存器傳送外,將那么除了正常的多寄存器傳送外,將SPSR拷貝到拷貝到CPSR中。這一特點(diǎn)用于異常處理返回。中。這一特點(diǎn)用于異常處理返回。642022-7-2嵌入式系統(tǒng)與應(yīng)用 ARM or Thumb?Thumb / ARM 混合應(yīng)用程序ARM CodeARM CodeThumbCodeFIQIRQ(Reserved)Data AbortPrefetch AbortSoftware InterruptUndefined InstructionReset652022-7-2嵌入式系統(tǒng)與應(yīng)用 FIQ vs IRQqFIQ 和和 IRQ 提供了非?;镜膬?yōu)先級(jí)級(jí)別提供了非常基本

50、的優(yōu)先級(jí)級(jí)別。q在下邊兩種情況下,在下邊兩種情況下,F(xiàn)IQs有高于有高于IRQs的優(yōu)先級(jí)的優(yōu)先級(jí): 當(dāng)多個(gè)中斷產(chǎn)生時(shí),當(dāng)多個(gè)中斷產(chǎn)生時(shí),F(xiàn)IQ高于高于IRQ. 處理處理 FIQ時(shí)禁止時(shí)禁止 IRQs. IRQs 將不會(huì)被響應(yīng)直到 FIQ處理完成.qFIQs 的設(shè)計(jì)使中斷處理盡可能地快的設(shè)計(jì)使中斷處理盡可能地快. FIQ 向量位于中斷向量表的最末向量位于中斷向量表的最末. 為了使中斷處理程序可從中斷向量處連續(xù)執(zhí)行 FIQ 模式有模式有5個(gè)額外的私有寄存器個(gè)額外的私有寄存器 (r8-r12) 中斷處理必須保護(hù)其使用的非私有寄存器 可以有多個(gè)可以有多個(gè)FIQ中斷源中斷源,但是考慮到系統(tǒng)性能應(yīng)避免嵌套

51、。但是考慮到系統(tǒng)性能應(yīng)避免嵌套。662022-7-2嵌入式系統(tǒng)與應(yīng)用 6 ARM6 ARM的存儲(chǔ)和的存儲(chǔ)和I/OI/O空間空間q特點(diǎn)特點(diǎn)q大端和小端大端和小端q非對(duì)齊的存儲(chǔ)訪問(wèn)非對(duì)齊的存儲(chǔ)訪問(wèn)672022-7-2嵌入式系統(tǒng)與應(yīng)用 6.1 特點(diǎn)特點(diǎn)qARM體系同時(shí)支持大端體系同時(shí)支持大端/小端。小端。q32位地址線位地址線/數(shù)據(jù)線,支持如下數(shù)據(jù)類型:數(shù)據(jù)線,支持如下數(shù)據(jù)類型:字節(jié)(字節(jié)(byte)8 bits半字(半字(Half word)16 bits,半字必須對(duì)齊,半字必須對(duì)齊2字節(jié)邊界字節(jié)邊界字(字(Word)32 bits,字必須對(duì)齊,字必須對(duì)齊4字節(jié)邊界字節(jié)邊界qARM的的I/O空間采

52、用統(tǒng)一編址方式。空間采用統(tǒng)一編址方式。682022-7-2嵌入式系統(tǒng)與應(yīng)用 qARM 可以通過(guò)配置支持兩種可以通過(guò)配置支持兩種endianr0 = 0 x11223344STR r0, r1LDRB r2, r1r1 = 0 x100Memory3 2 1 0 0 1 2 3Byte Lane3124 2316 158 70112233443124 2316 158 70112233443124 2316 158 70112233443124 2316 158 70000000443124 2316 158 7000000011Little endianBig endianR2 = 0 x44

53、R2 = 0 x116.2 Endian Configuration/大端和小端大端和小端Little endian:Big endian692022-7-2嵌入式系統(tǒng)與應(yīng)用 6.3 非對(duì)齊的存儲(chǔ)訪問(wèn)非對(duì)齊的存儲(chǔ)訪問(wèn)q非對(duì)齊的取指非對(duì)齊的取指不可預(yù)知結(jié)果。不可預(yù)知結(jié)果。ARM狀態(tài):忽略低狀態(tài):忽略低2兩位;兩位;Thumb狀態(tài):忽略最低位。狀態(tài):忽略最低位。忽略由存儲(chǔ)器實(shí)現(xiàn)。忽略由存儲(chǔ)器實(shí)現(xiàn)。q非對(duì)齊的數(shù)據(jù)訪問(wèn)非對(duì)齊的數(shù)據(jù)訪問(wèn)執(zhí)行結(jié)果不可預(yù)知。執(zhí)行結(jié)果不可預(yù)知。忽略字單元地址的最低兩位;忽略半字單元地址的最忽略字單元地址的最低兩位;忽略半字單元地址的最低位。忽略可能由處理器或存儲(chǔ)器完成。低位。

54、忽略可能由處理器或存儲(chǔ)器完成。702022-7-2嵌入式系統(tǒng)與應(yīng)用 7 AMBA7 AMBA總線總線q 當(dāng)當(dāng)ARM核作為一個(gè)元件集成到復(fù)雜的系統(tǒng)芯片上時(shí),需要核作為一個(gè)元件集成到復(fù)雜的系統(tǒng)芯片上時(shí),需要某種接口和其它元件進(jìn)行通訊,這就是某種接口和其它元件進(jìn)行通訊,這就是AMBA總線??偩€。q ARM研發(fā)的研發(fā)的AMBA(Advanced Microcontroller Bus Architecture)提供一提供一種特殊的機(jī)制,可將種特殊的機(jī)制,可將RISC處理器集成在其它處理器集成在其它IP芯核和外設(shè)芯核和外設(shè)中,中,2.0版版AMBA標(biāo)準(zhǔn)定義了三組總線:標(biāo)準(zhǔn)定義了三組總線:AHB(AMBA

55、高性能總線高性能總線):用于高性能、高數(shù)據(jù)吞吐部:用于高性能、高數(shù)據(jù)吞吐部件,如件,如CPU、DMA、DSP之間的互連之間的互連 。ASB(AMBA系統(tǒng)總線系統(tǒng)總線):用來(lái)作處理器與外設(shè)之間的互:用來(lái)作處理器與外設(shè)之間的互連連 ,將被,將被AHB取代。取代。APB(AMBA外設(shè)總線外設(shè)總線):為系統(tǒng)的低速外部設(shè)備提供低:為系統(tǒng)的低速外部設(shè)備提供低功耗的簡(jiǎn)易互連。功耗的簡(jiǎn)易互連。 712022-7-2嵌入式系統(tǒng)與應(yīng)用 q 系統(tǒng)總線和外設(shè)總線之間的橋接器提供系統(tǒng)總線和外設(shè)總線之間的橋接器提供AHB/ASP部件與部件與APB部件間的訪問(wèn)代理與緩沖。部件間的訪問(wèn)代理與緩沖。ARM核片內(nèi)RAMDMA控制

56、器橋路UART定時(shí)器并口APBAHB/ASB外部總線接口測(cè)試接口控制722022-7-2嵌入式系統(tǒng)與應(yīng)用 q AHB用來(lái)研發(fā)寬帶寬處理器芯核的片上總線。用來(lái)研發(fā)寬帶寬處理器芯核的片上總線。q 應(yīng)用于高性能、高時(shí)鐘頻率的系統(tǒng)模塊,它構(gòu)成了高性能應(yīng)用于高性能、高時(shí)鐘頻率的系統(tǒng)模塊,它構(gòu)成了高性能的系統(tǒng)骨干總線(的系統(tǒng)骨干總線( back-bone bus )。它主要支持的特性是:)。它主要支持的特性是: 用于高性能、高數(shù)據(jù)吞吐部件,如用于高性能、高數(shù)據(jù)吞吐部件,如CPU、DMA、DSP之間數(shù)據(jù)突發(fā)之間數(shù)據(jù)突發(fā)傳輸(傳輸( burst transfer ) 數(shù)據(jù)分割傳輸(數(shù)據(jù)分割傳輸( split

57、transaction ) 流水線方式流水線方式 一個(gè)周期內(nèi)完成總線主設(shè)備(一個(gè)周期內(nèi)完成總線主設(shè)備(master)對(duì)總線控制權(quán)的交接)對(duì)總線控制權(quán)的交接 單時(shí)鐘沿操作單時(shí)鐘沿操作 內(nèi)部無(wú)三態(tài)實(shí)現(xiàn)內(nèi)部無(wú)三態(tài)實(shí)現(xiàn) 更寬的數(shù)據(jù)總線寬度(最低更寬的數(shù)據(jù)總線寬度(最低32位,最高可達(dá)位,最高可達(dá)1024位,但推薦不要超位,但推薦不要超過(guò)過(guò)256位)位)732022-7-2嵌入式系統(tǒng)與應(yīng)用 q 是第一代是第一代AMBA系統(tǒng)總線,同系統(tǒng)總線,同AHB相比,它數(shù)據(jù)寬度要小相比,它數(shù)據(jù)寬度要小一些,它支持的典型數(shù)據(jù)寬度為一些,它支持的典型數(shù)據(jù)寬度為8位、位、16位、位、32位。它的主位。它的主要特征如下:要特

58、征如下:流水線方式流水線方式數(shù)據(jù)突發(fā)傳送數(shù)據(jù)突發(fā)傳送多總線主設(shè)備多總線主設(shè)備內(nèi)部有三態(tài)實(shí)現(xiàn)內(nèi)部有三態(tài)實(shí)現(xiàn)742022-7-2嵌入式系統(tǒng)與應(yīng)用 q 是本地二級(jí)總線(是本地二級(jí)總線(local secondary bus ),通過(guò)橋和),通過(guò)橋和AHB/ASB相連。它主要是為了滿足不需要高能流水線接相連。它主要是為了滿足不需要高能流水線接口或不需要高帶寬接口的設(shè)備的互連??诨虿恍枰邘捊涌诘脑O(shè)備的互連。APB的總線信號(hào)經(jīng)的總線信號(hào)經(jīng)改進(jìn)后全和時(shí)鐘上升沿相關(guān),這種改進(jìn)的主要優(yōu)點(diǎn)如下:改進(jìn)后全和時(shí)鐘上升沿相關(guān),這種改進(jìn)的主要優(yōu)點(diǎn)如下:更易達(dá)到高頻率的操作更易達(dá)到高頻率的操作性能和時(shí)鐘的占空比無(wú)關(guān)性能

59、和時(shí)鐘的占空比無(wú)關(guān)單時(shí)鐘沿簡(jiǎn)化了單時(shí)鐘沿簡(jiǎn)化了更易與基于周期的仿真器集成更易與基于周期的仿真器集成APB 只有一個(gè)只有一個(gè)APB橋,它將來(lái)自橋,它將來(lái)自AHB/ASB的信號(hào)轉(zhuǎn)換的信號(hào)轉(zhuǎn)換為合適的形式以滿足掛在為合適的形式以滿足掛在APB上的設(shè)備的要求。橋要上的設(shè)備的要求。橋要責(zé)鎖存地址、數(shù)據(jù)以及控制信號(hào),同時(shí)要進(jìn)行二次譯責(zé)鎖存地址、數(shù)據(jù)以及控制信號(hào),同時(shí)要進(jìn)行二次譯碼以選擇相應(yīng)的碼以選擇相應(yīng)的APB設(shè)備設(shè)備752022-7-2嵌入式系統(tǒng)與應(yīng)用 762022-7-2嵌入式系統(tǒng)與應(yīng)用 q ARM指令集總體分為指令集總體分為6類指令類指令跳轉(zhuǎn)指令:跳轉(zhuǎn)指令:B和和BL數(shù)據(jù)處理指令:數(shù)據(jù)傳輸指令,算術(shù)

60、指令,邏輯指令,數(shù)據(jù)處理指令:數(shù)據(jù)傳輸指令,算術(shù)指令,邏輯指令,比較指令,乘法指令,前導(dǎo)零計(jì)數(shù)比較指令,乘法指令,前導(dǎo)零計(jì)數(shù)訪存指令:?jiǎn)螖?shù)據(jù)訪存指令,多數(shù)據(jù)訪存指令,信號(hào)量訪存指令:?jiǎn)螖?shù)據(jù)訪存指令,多數(shù)據(jù)訪存指令,信號(hào)量操作指令操作指令程序狀態(tài)訪問(wèn)指令:程序狀態(tài)訪問(wèn)指令:MRS和和MSR協(xié)處理器指令協(xié)處理器指令異常指令:異常指令:SWI和和BKPT8 ARM8 ARM指令系統(tǒng)指令系統(tǒng)772022-7-2嵌入式系統(tǒng)與應(yīng)用 q 所有指令都是所有指令都是32bitq 大多數(shù)指令都在單周期內(nèi)完成大多數(shù)指令都在單周期內(nèi)完成q 所有指令都可以條件執(zhí)行所有指令都可以條件執(zhí)行q load/store體系結(jié)構(gòu)體系結(jié)構(gòu)q 指令

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論