ARM體系結(jié)構(gòu)與編程模型_第1頁
ARM體系結(jié)構(gòu)與編程模型_第2頁
ARM體系結(jié)構(gòu)與編程模型_第3頁
ARM體系結(jié)構(gòu)與編程模型_第4頁
ARM體系結(jié)構(gòu)與編程模型_第5頁
已閱讀5頁,還剩92頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、嵌入式系統(tǒng)及開發(fā)應用第二講ARM體系結(jié)構(gòu)Outline2、ARM體系結(jié)構(gòu)3、ARM編程模型工作狀態(tài)CPU工作模式寄存器組織異常內(nèi)存與IO1、嵌入式微處理器主流的嵌入式微處理器目前主流的嵌入式微處理器系列主要有ARM系列、MIPS系列、PowerPC系列、Super H系列和X86系列等。屬于這些系列的嵌入式微處理器產(chǎn)品很多,有上千種以上。Units (millions)Source: Andrew Allison, Inside The New Computer Industry, January 2001Embedded RISC Processor Shipments32位浪潮的到來Sou

2、rce: Semico Research Corp. and SIA/WSTSTotal MCU, by Sub-Category (excl. DSP) Total Embedded Control Market Shipments by Type 總共約26億個32位處理器付運,占總數(shù)96億的27%2005年ARM為17億個,約占32位總量的70%左右X86系列主要由AMD,Intel,NS,ST等公司提供,如:Am186/88、Elan520、嵌入式K6,386EX、STPC等。 主要應用在工業(yè)控制、通信等領域。 國內(nèi)由于對X86體系比較熟悉,得到廣泛應用,特別是嵌入式PC的應用非常廣泛

3、。MPC/PPC系列Motorola推出的MPC系列,如MPC8XX。IBM推出PPC系列,如PPC4XX。主要應用在通信、消費電子及工業(yè)控制、軍用裝備等領域。MPC/PPC系列IBM PowerPC 集成10/100Mbps以太網(wǎng)控制器、串行和并行端口、內(nèi)存控制器以及其它外設的高性能嵌入式處理器。Motorola MPC 高度綜合的SOC設備,它結(jié)合了PPC微處理器核心的功能、通信處理器和單硅成分內(nèi)的顯示控制器。這個設備可以在大量的電子應用中使用,特別是在低能源、便攜式、圖象捕捉和個人通信設備。技術(shù)0.25微米CMoS SA-12E282 Dhrystone 2.1 MIPS 200MHz3

4、75 Dhrystone 2.1 MIPS 266MHz200/100/66/50 MHz266/133/66/66 MHz晶體數(shù)量480萬電源消耗1.1瓦信號I/O300溫度范圍-40到80度電源供應2.5V (邏輯電路),3.3V (I/O),支持5V I/Os456-Ball,Enhanced PBGA (35mm x 35mm)性能頻率(CPU /SDRAM /PCI /EBC)封裝PowerPC 405 GP技術(shù)規(guī)格*Dhrystone是一個綜合性的基準測試程序,它是為了測試編譯器和CPU處理整數(shù)指令和控制功能的有效性,人為地選擇一些“典型指令綜合起來形成的測試程序。 ARM系列AR

5、M(Advanced RISC Machine)公司是一家專門從事芯片IP設計與授權(quán)業(yè)務的英國公司,其產(chǎn)品有ARM內(nèi)核以及各類外圍接口。ARM內(nèi)核是一種32位RISC微處理器,具有功耗低、性價比高、代碼密度高等三大特色。目前,90%的移動電話、大量的游戲機、手持PC和機頂盒等都已采用了ARM處理器,許多一流的芯片廠商都是ARM的授權(quán)用戶(Licensee),如Intel、Samsung、TI、Motorola、ST等,ARM已成為業(yè)界公認的嵌入式微處理器標準。ARM FamilyARM7 FamilyARM9 FamilyARM10 FamilyARM11 Family150DMIPS300

6、DMIPS500 DMIPS1000 DMIPSARM Cortex FamilyARM720TARM1136J ARM1176JZARM1026EARM920T/ARM922T ARM926EJCortex AApplication ProcessorARM7TDMIARM1156T2ARM1026EARM946ECortex REmbedded RT ControllerARM7TDMIARM966E ARM968ECortex MMicro-controllerARM Architecture當前的主流ARM處理器ARM7世界上最為廣泛使用的 CPU 之一100MHzARM9100-30

7、0MHz1.7B ARM Powred shipment in year of 2005, 31% is ARM9 based.ARM11 芯片已經(jīng)面世ARM11300-700+ MHzSIMD 指令擴展支持更豐富的多媒體應用40家授權(quán)芯片公司,一些已開始量產(chǎn)FOMA N902iFirst ARM11 based phoneOMAP2420i.MX31/i.MX31L目前最快的嵌入式處理器最快的處理器提供超過2000 DMIPS 的性能運行于 1GHz 頻率 (90nm or 65nm 制造工藝)功耗小于 300mWARM Cortex A8 Application ProcessorCort

8、ex-M3 實現(xiàn) $1 ARM芯片ARM Cortex ArchitectureThumb-2 ISA3 Stage Pipeline1.22 DMIPS/MHz 30% over ARM7TDMI33K gates 30% smaller than ARM7TDMILuminary Micro的Stellaris系列MCU產(chǎn)品售價僅1美元ARM Cortex-M3 微控制器內(nèi)核,專門針對MCU應用領域而設計,突出低成本、低功耗和高效率。領先嵌入式處理器技術(shù)發(fā)展討論多處理器技術(shù)單處理器技術(shù)的性能提升終有一天會遭遇瓶頸對嵌入式系統(tǒng)而言,尤其要考慮付出的代價把任務進行并行分解是理想的選擇ARM M

9、Pcore可以集成1-4個ARM11處理器關鍵是要提供給軟件開發(fā)者一個友好的編程界面64位處理器?哪兒是系統(tǒng)性能瓶頸?是需要64位地址還是64位數(shù)據(jù)?嵌入式系統(tǒng)比PC有更好的條件來解決系統(tǒng)性能和帶寬問題PC系統(tǒng)在主板上,擴展系統(tǒng)帶寬需要擴大每個組件的接口帶寬SoC只需擴展片內(nèi)總線,非常容易實現(xiàn)AMBA支持8-1024位總線寬度許多SoC設計以及ARM處理器內(nèi)部已經(jīng)使用64位數(shù)據(jù)總線如何選擇嵌入式微處理器微處理器內(nèi)核的選擇有無MMUOS的考慮系統(tǒng)的工作頻率芯片存儲器的容量片內(nèi)外設的考慮實際應用的要求接口時序Outline2、ARM體系結(jié)構(gòu)3、ARM編程模型工作狀態(tài)CPU工作模式寄存器組織異常內(nèi)存

10、與IO1、嵌入式微處理器圖2.1.1 ARM體系結(jié)構(gòu)方框圖ARM處理器的分類結(jié)構(gòu)體系版本(Architecture)ARM v4TARM v5TE ARM v6ARM Cortex (v7)Processor FamilyARM7 ARM9ARM10ARM11ARM Cortex按應用特征分類應用處理器 Application Processor實時控制處理器 Real-time Controller微控制器 Micro-controller特征:MMU, Cache 最快頻率、最高性能、合理功耗 特征:MPU, Cache 實時響應、合理性能、較低功耗 特征:no sub-memory sy

11、stem 一般性能、最低成本、極低功耗 ARM體系結(jié)構(gòu)的命名規(guī)則ARMXyzTDMIEJF-Sx系列y存儲管理/保護單元zCacheTThumb16位譯碼器DJTAG調(diào)試器M快速乘法器I嵌入式跟蹤宏單元E增強DSP指令JJazelleF向量浮點單元S可綜合版本,以源代碼形式提供的ARM核v4 v5TESA110v4TARM720TARM7TDMI-SARM920TARM940TARM922TARM966E-SARM946E-SARM1020Ev5TEJ / Jazellev6 / JazelleARM7EJ-SARM926EJ-SARM1026EJ-SARM11 Micro-Architect

12、ure Roadmap of ARM V4/V5/V6系列相應產(chǎn)品性能特點ARM7系列ARM7TDMI,ARM7TDMI-S,ARM720T,ARM7EJ三級流水性能:0.9MIPS/MHz, 可達到130MIPs (Dhrystone2.1) ARM9系列ARM920T, ARM922T 五級流水,性能:1.1MIPS/MHz,可達300 MIPS (Dhrystone 2.1),單32-bit AMBA bus接口,支持MMU ARM9E系列ARM926EJ-S, RM946E-S, ARM966E-S, ARM968E-S,ARM996HS 五級流水,支持DSP指令。性能:1.1MIPS

13、/MHz,可達300 MIPS (Dhrystone 2.1),高性能AHB, 軟核(soft IP) ARM10系列ARM1020E, ARM1022EARM1026EJ-S 6級流水支持分支預測(branch prediction),支持DSP指令。性能:1.35 MIPS/MHz,可達430+ Dhrystone 2.1 MIPS,可選支持高性能浮點操作,雙64位總線接口,內(nèi)部64位數(shù)據(jù)通路 系列相應產(chǎn)品性能特點ARM11 系列ARM11MPCore,ARM1136J(F)-S, ARM1156T2(F)-S,ARM1176JZ(F)-S 8級流水線(9級ARM1156T2(F)-S),

14、獨立的load-store和arithmetic流水線,支持分支預測和返回棧(Return Stack)。強大的ARMv6 指令集,支持DSP, SIMD (Single Instruction Multiple Data) 擴展,支持ARM TrustZone 、Thumb-2核心技術(shù)。740 Dhrystone 2.1 MIPS,低功耗0.6mW/MHz (0.13m, 1.2V) Cortex系列Cortex-A8, Cortex-M3,Cortex-R4 Cortex-A系列: 面向用于復雜OS和應用的應用處理器(applications processors),支持ARM, Thum

15、b and Thumb-2指令集。Cortex-R系列:面向嵌入式實時領域的嵌入式處理器,支持ARM, Thumb,和Thumb-2 指令集。Cortex-M系列:面向深嵌入式價格敏感的嵌入式處理器, 只支持Thumb-2指令集 SecurCore 系列SecurCore SC100,SecurCore SC200 用于Smart Card和Secure IC的32-bit解決方案。支持ARM和Thumb指令集,軟核。具有安全特征和低成本安全存儲保護單元 ARM V4ARMV4是目前支持的最老的架構(gòu),是基于32-bit地址空間的32-bit指令集。ARMv4除了支持ARMv3的指令外還擴展了:

16、支持halfword的存取支持byte和halfword的符號擴展讀支持Thumb指令提供Thumb和Normal狀態(tài)的轉(zhuǎn)換指令進一步的明確了會引起Undefined異常的指令 對以前的26bits體系結(jié)構(gòu)的CPU不再兼容 ARMv4TARMv4T增加了16-bit Thumb指令集,這樣使得編譯器能產(chǎn)生緊湊代碼(相對于32-bit代碼,內(nèi)存能節(jié)省到35%以上)并保持32-bit系統(tǒng)的好處。Thumb在處理器中仍然要擴展為標準的32位ARM指令來運行。用戶采用16位Thumb指令集最大的好處就是可以獲得更高的代碼密度和降低功耗。 ARM V5TE1999年推出ARMv5TE其增強了Thumb體

17、系,增強的Thumb體系增加了一個新的指令同時改進了Thumb/ARM相互作用、編譯能力和混合及匹配ARM與Thumb例程,以更好地平衡代碼空間和性能并在ARM ISA上擴展了增強的DSP指令集: 增強的DSP指令包括支持飽和算術(shù)(saturated arithmetic), 并且針對Audio DSP應用提高了70%性能。E擴展表示在通用的CPU上提供DSP能力。 ARMv5TEJ2000年推出ARMv5TEJ,增加了Jazelle擴展以支持Java加速技術(shù)。Jazelle技術(shù)比僅僅基于軟件的JVM性能提高近8倍的性能減少了80的功耗。 ARMv62001年推出ARMv6,它在許多方面做了改

18、進如內(nèi)存系統(tǒng)、異常處理和較好地支持多處理器。SIMD擴展使得廣大的軟件應用如Video和Audio codec的性能提高了4倍。Thumb-2和TrustZone 技術(shù)也用于ARMv6中。ARMv6第一個實現(xiàn)是2002年春推出的ARM1136J(F)-STM處理器,2003年又推出了ARM1156T2(F)-S和ARM1176JZ(F)-S處理器。ARMv7ARMv7定義了3種不同的處理器配置(processor profiles): Profile A是面向復雜、基于虛擬內(nèi)存的OS和應用的Profile R是針對實時系統(tǒng)的Profile M是針對低成本應用的優(yōu)化的微控制器的。所有ARMv7

19、profiles實現(xiàn)Thumb-2技術(shù),同時還包括了NEON技術(shù)的擴展提高DSP和多媒體處理吞吐量400,并提供浮點支持以滿足下一代3D圖形和游戲以及傳統(tǒng)嵌入式控制應用的需要。ARM7TDMIThumb 架構(gòu)擴展, 提供兩個獨立的指令集:ARM 指令,均為 32位Thumb指令,均為 16位兩種運行狀態(tài),用來選擇哪個指令集被執(zhí)行內(nèi)核具有Debug擴展結(jié)構(gòu)增強乘法器 (32x8) 支持64位結(jié)果EmbeddedICE 邏輯3 級流水線馮諾依曼架構(gòu)CPI(Cycle Per Instruction) 約為1.9圖2.2.3 ARM720T內(nèi)核結(jié)構(gòu) 圖2.2.1 ARM7TDMI內(nèi)核結(jié)構(gòu) ARM7T

20、DMI指令流水線為增加處理器指令流的速度,ARM7 系列使用3級流水線。允許多個操作同時處理,而非順序執(zhí)行。 PC指向正被取指的指令,而非正在執(zhí)行的指令。FetchDecodeExecute從存儲器中讀取指令解碼指令中用到的寄存器寄存器讀(從寄存器Bank)移位及ALU操作寄存器寫(到寄存器Bank )PCPCPC - 4PC-2PC - 8PC - 4ARMThumbARM7TDMI指令流水線 操作周期 1 2 3 45 6 ADD SUB MOV AND ORR EOR CMP RSBFetchDecode。FetchExecuteDecodeFetchExecuteDecodeFetch

21、ExecuteDecodeFetchFetchExecuteDecodeExecuteDecodeFetchExecuteDecodeFetch最佳流水線該例中用6個時鐘周期執(zhí)行了6條指令所有的操作都在寄存器中(單周期執(zhí)行)指令周期數(shù) (CPI) = 1ARM9TDMIHarvard架構(gòu)增加了可用的存儲器寬度指令存儲器接口數(shù)據(jù)存儲器接口可以實現(xiàn)對指令和數(shù)據(jù)存儲器的同時訪問5 級流水線實現(xiàn)了以下改進:改進 CPI 到 1.5提高了最大時鐘頻率ARM9TDMIInstructionFetch Shift + ALUMemoryAccessRegWriteRegReadRegDecodeFETCHD

22、ECODEEXECUTEMEMORYWRITEARM9TDMIARM or ThumbInst DecodeReg SelectRegReadShiftALURegWriteThumbARMdecompressARM decodeInstructionFetchFETCHDECODEEXECUTEARM7TDMI流水線ARM9TDMIARM9TDMID CacheI CacheMMUGLUE外部存儲器ARM940T2x 4K caches MPU寫緩沖ARM9xxTARM920T2x 16K caches MMU支持虛擬地址和內(nèi)存保護 寫緩沖帶Cache的ARM9TDMI 圖2.2.4 ARM

23、920T內(nèi)核結(jié)構(gòu)ARM9E-S 系列概述ARM9E 基于 ARM9TDMI 內(nèi)核,有以下擴展和增強單周期 32x16 乘法器EmbeddedICE 邏輯 RT改進的 ARM/Thumb 交互操作新的32x16和 16x16 乘法指令新的計數(shù)到零指令新的飽和算術(shù)指令ARM946E-SARM9E-S 內(nèi)核指令和數(shù)據(jù)cache, 大小可選擇指令和數(shù)據(jù)RAM,大小可選擇保護單元AHB 總線接口ARM966E-S與 ARM946E-S相似, 但無 cacheARM926EJ-S系列概述Jazelle狀態(tài)允許直接執(zhí)行Java 8位碼ARM926EJ-SARM9E-S 內(nèi)核可配置的cache和 TCM內(nèi)存管

24、理單元雙重 32位 AHB 總線接口 (多層)ARM10E 系列概述v5TE架構(gòu)CPI 1.36 級流水線靜態(tài)分支預測32kB 指令cache和32kB數(shù)據(jù)cache支持“Hit under miss”非阻塞的執(zhí)行單元每周期64 位的 LDM / STM操作EmbeddedICE邏輯 - RT-II支持新的 VFPv1 結(jié)構(gòu)同ARM1020E,除了cache大小為16kB對SUDL(single user design license )有效ARM1020EARM1022EARM9 vs ARM10流水線的對比 Intel StrongARM 概述ARM V4 架構(gòu) (無Thumb支持)5級流

25、水線,降低跳轉(zhuǎn)損耗-stage pipeline,reduced branch penalty改進的乘法器(典型地比ARM9TDMI 快2個周期)不支持 Multi-ICE 調(diào)試 (JTAG限制在連通性測試)無外部協(xié)處理器接口SA-110: 16K 指令和數(shù)據(jù) caches, 8 x 16 字節(jié)寫緩沖.SA-1100/1110:片上外設,存儲器控制器更小的 cache 容量PID 寄存器(作控制用)指令斷點,通過 CP15Intel XScale 概述V5TE 兼容架構(gòu)7-8級流水線帶統(tǒng)計分支預測32k的數(shù)據(jù)和指令 Cache, 外加2k的數(shù)據(jù)Minicache8口寫緩沖,4口填充和追加緩沖完

26、整的32位協(xié)處理器接口調(diào)試和性能監(jiān)控邏輯(通過CP14 )乘-加模塊(作為CP0 )可配置的內(nèi)核時鐘速度100-733MHz ,來自 33-66MHz 輸入時鐘異步輸入總線時鐘可到100 MHz (最大總線內(nèi)核時鐘的1/3 )Outline2、ARM體系結(jié)構(gòu)3、ARM編程模型工作狀態(tài)CPU工作模式寄存器組織異常內(nèi)存與IO1、嵌入式微處理器ARM微處理器:編程模型處理器工作狀態(tài)CPU工作模式寄存器組織異常內(nèi)存與IOARM微處理器:處理器工作狀態(tài)(PROCESSOR OPERATING STATES)處理器有兩種工作狀態(tài):ARM:32位,執(zhí)行字對準的ARM指令Thumb:16位,執(zhí)行半字對準的Th

27、umb指令ARM和Thumb之間狀態(tài)的切換不影響處理器的模式或寄存器的內(nèi)容ARM微處理器:處理器工作狀態(tài)進入Thumb狀態(tài):執(zhí)行BX指令,并設置操作數(shù)寄存器的狀態(tài)(位0)為1。在Thumb狀態(tài)進入異常(IRQ, FIQ, UNDEF, ABORT,SWI etc.),當異常處理返回時自動轉(zhuǎn)換到Thumb狀態(tài)進入ARM狀態(tài):執(zhí)行BX指令,并設置操作數(shù)寄存器的狀態(tài)(位0)為0。進入異常時,將PC放入異常模式鏈接寄存器中,從異常向量地址開始執(zhí)行也可進入ARM狀態(tài)ARM微處理器:處理器工作狀態(tài)Thumb-2:增加了混合模式能力定義了一個新的32-bit指令集能在傳統(tǒng)的16-bit指令運行的Thumb狀

28、態(tài)下同時運行。這樣能在一個系統(tǒng)中更好地平衡ARM和Thumb代碼的能力,使系統(tǒng)能更好地利用ARM級別的性能和Thumb代碼的密度的優(yōu)勢 ARM微處理器:存儲器格式ARM 的尋址空間是線性的地址空間,為232=4G Bytes 0 to 3 存儲第一個word, bytes 4 to 7存儲第二個wordARM支持大端(Big-endian)和小端(Little-endian)的內(nèi)存數(shù)據(jù)方式,可以通過硬件的方式設置(沒有提供軟件的方式)端模式ARM微處理器:存儲器格式大端的數(shù)據(jù)存放格式低地址高地址地址A地址A+1地址A+2地址A+3最高有效字節(jié)的地址就是該word的地址最高有效字節(jié)位于最低地址w

29、ord a=0 x f6 73 4b cdf6734bcdARM微處理器:存儲器格式小端的數(shù)據(jù)格式 低地址高地址地址A地址A+1地址A+2地址A+3最低有效字節(jié)的地址就是該word的地址最低有效字節(jié)位于最低地址word a=0 x f6 73 4b cdf6734bcdARM微處理器:存儲器格式大端: 小端:0 xb32045000 xddddddd00 xb32045000 xddddddd0 f6 f6 73 73 4b 4b cd cd0000dada 實例變量A:word A=0 x f6 73 4b cd,在內(nèi)存中的起始地址為0 x b3 20 45 00變量B:half word

30、B=218,在內(nèi)存中的起始地址為0 x dd dd dd d0問題:half word B=218與word C=218在內(nèi)存中的存放方式有何不同?請分大端和小端兩種情況說明。ARM微處理器:編程模型數(shù)據(jù)類型的約定 字節(jié)型數(shù)據(jù)(Byte):數(shù)據(jù)寬度為8bits 半字數(shù)據(jù)類型(HalfWord):數(shù)據(jù)寬度為16bits,存取式必須以2字節(jié)對齊的方式 字數(shù)據(jù)類型(Word):數(shù)據(jù)寬度為32bits,存取式必須以4字節(jié)對齊的方式 ARM微處理器:CPU模式(processor mode)7種CPU模式 CPU模式的轉(zhuǎn)變:軟件控制異常外部中斷ARM微處理器:CPU模式User模式程序不能訪問有些受保護

31、的資源只能通過異常的形式來改變CPU的當前運行模式特權(quán)模式可以存取系統(tǒng)中的任何資源System模式與User模式的運行環(huán)境一樣但是它可以不受任何限制的訪問任何資源該模式主要用于運行系統(tǒng)中的一些特權(quán)任務FIQ模式IRQ模式Supervisor模式Abort模式Undefined模式異常模式:主要是在外部中斷或者程序執(zhí)行非法操作時會觸發(fā)ARM微處理器:寄存器組織ARM處理器有37個寄存器 31個通用寄存器:程序計數(shù)器、堆棧及其他通用寄存器 6個狀態(tài)寄存器這些寄存器不能同時看到,同時只有17個不同的處理器狀態(tài)和工作模式確定哪些寄存器是對編程者是可見的ARM微處理器: ARM State寄存器ARM微

32、處理器: Thumb State寄存器R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R0 堆棧指針(R13) 連接寄存器(R14) 程序計數(shù)器(R15) 低寄存器高寄存器ARM State 與Thumb State寄存器關系寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiq *R9(SB,v6)R9R9_fiq *R10(SL,v7)R10R10_fi

33、q *R11(FP,v8)R11R11_fiq *R12(IP)R12R12_fiq *R13(SP)R13R13_svc*R13_abt *R13_und *R13_irq *R13_fiq *R14(LR)R14R14_svc *R14_abt *R14_und *R14_irq *R14_fiq *R15(PC)R15狀態(tài)寄存器R16(CPSR)CPSRSPSR無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM狀態(tài)各模式下的寄存器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R

34、0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_

35、fiqARM狀態(tài)各模式下的寄存器SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_svcCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0所有的37個寄存器,分成兩大類:31個通用32位寄存器;6個狀態(tài)寄存器。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R

36、1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fi

37、q無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用戶無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系統(tǒng)SPSR_svcCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定義SPSR_irqCPSRR15R14_irqR13_ir

38、qR12R11R10R9R8R7R6R5R4R3R2R1R0中斷SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中斷ARM狀態(tài)各模式下可以訪問的寄存器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR

39、11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1

40、R0 在匯編語言中寄存器R0R13為保存數(shù)據(jù)或地址值的通用寄存器。它們是完全通用的寄存器,不會被體系結(jié)構(gòu)作為特殊用途,并且可用于任何使用通用寄存器的指令。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svc

41、R13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0 其中R0R7為未分組的寄存器,也就是說對于任何處理器模式,這些寄存器

42、都對應于相同的32位物理寄存器。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR1

43、4_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R14為分組寄存器。它們所對應的物理寄存器取決于當前的處理器模式,幾乎所有允許使用通用寄存器的指令都允許使用分組寄存器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄

44、存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無S

45、PSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R12有兩個分組的物理寄存器。一個用于除FIQ模式之外的所有寄存器模式,另一個用于FIQ模式。這樣在發(fā)生FIQ中斷后,可以加速FIQ的處理速度。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_

46、fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器 寄存器R13、R14分別有6個分組的物理寄存器。一個用于用戶和系統(tǒng)模式,其余5個分別用于5種異常模式。R14_f

47、iqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_ab

48、tR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq堆棧指針寄存器R13(SP) 寄存器R13常作為堆棧指針(SP)。在ARM指令集當中,沒有以特殊方式使用R13的指令或其它功能,只是習慣上都這樣使用。但是在Thumb指令集中存在使用R13的指令。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2

49、)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq鏈接寄

50、存器R14(LR) R14為鏈接寄存器(LR),在結(jié)構(gòu)上有兩個特殊功能:在每種模式下,模式自身的R14版本用于保存子程序返回地址;當發(fā)生異常時,將R14對應的異常模式版本設置為異常返回地址(有些異常有一個小的固定偏移量)。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiq

51、R12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq程序計數(shù)器R15(PC) 寄存器R15為程序計數(shù)器(PC),它指向正在取指的地址。可以認為它是一個通用寄存器,但是對于它的使用有許多與指令相關的限制或特殊情況。如果R15使用的方式超出了這些限制,那么結(jié)果將是不可預測的。ARM微處理器:通用寄存器R1

52、5用作程序計數(shù)器(PC),可以被讀寫ARM state: bits 1:0為0,bits31:2即為 PC. THUMB state:bit 0為0,bits31:1即為 PCARM微處理器:程序狀態(tài)寄存器CPSR(當前程序狀態(tài)寄存器)在所有的模式下都是可以讀寫的,它主要包含:條件標志中斷使能標志當前處理器的模式其它的一些狀態(tài)和控制標志ARM微處理器:程序狀態(tài)寄存器置0表示執(zhí)行32bit的ARM指令置1表示執(zhí)行16bit的Thumb指令 NegativeZeroCarryOverflowIRQ中斷的響應:置1:禁止響應置0:允許響應FIQ中斷的響應:置1:禁止響應置0:允許響應條件標志模式控制

53、位ARM/Thumb控制標志中斷標志ARM微處理器:程序狀態(tài)寄存器模式控制位M0-M4ARM微處理器:異常異常是由內(nèi)部或者外部原因引起的,當異常發(fā)生時CPU將暫停執(zhí)行當前指令自動到指定的向量地址讀取指令并且執(zhí)行。在X86上,當有異常發(fā)生時CPU是到指定的向量地址讀取要執(zhí)行的程序的地址而ARM是到向量地址的地方讀取指令,也就是ARM的向量地址處存放的是一條指令(一般是一條跳轉(zhuǎn)指令) ARM微處理器:異常ARM CPU將引起異常的類型分為7種ARM微處理器:異常當異常出現(xiàn)時,異常模式分組的R14和SPSR用于保存狀態(tài),即: R14_=return link SPSR_=CPSR CPSR4:0=e

54、xception mode number CPSR5=0 /*在ARM狀態(tài)執(zhí)行*/ if=Reset or FIQ then CPSR6=1 /*禁止快速中斷*/ CPSR7=1 /*禁止正常中斷*/PC=exception vector address當處理異常返回時,將SPSR傳送到CPSR,R14傳送到PC異常的優(yōu)先級異常向量Vector Table異常處理當異常產(chǎn)生時, ARM core:拷貝 CPSR 到 SPSR_設置適當?shù)?CPSR 位: 改變處理器狀態(tài)進入 ARM 態(tài)改變處理器模式進入相應的異常模式設置中斷禁止位禁止相應中斷 (如需要)保存返回地址到 LR_設置 PC 為相應的

55、異常向量返回時, 異常處理需要:從 SPSR_恢復CPSR從LR_恢復PC Note:這些操作只能在 ARM 態(tài)執(zhí)行.Vector table can be at 0 xFFFF0000 on ARM720T and on ARM9/10 family devicesFIQIRQ(Reserved)Data AbortPrefetch AbortSoftware InterruptUndefined InstructionReset0 x1C0 x180 x140 x100 x0C0 x080 x040 x0084進入異常的操作R14_=Return LinkSPSR_=CPSRCPSR4:0

56、=Exception Mode NumberCPSR5=0 ;當運行于ARM狀態(tài)時IF=Reset or FIQ then ;當響應FIQ異常時,禁止新的FIQ異常 CPSR6=1; CPSR7=1;PC=Exception Vector Address當異常結(jié)束時,異常處理程序必須:1.將LR( R14 )中的值減去偏移量后存入PC,偏移量根據(jù)異常的類型而有所不同;2.將SPSR的值復制回CPSR;3.清零在入口置位的中斷禁止標志。注:恢復CPSR的動作會將T、F和I位自動恢復為異常發(fā)生前的值。退出異常例子: 用戶模式到 FIQ模式*spsr_fiqcpsrr7r4r5r2r1r0r3r6r15 (pc)r14_fiqr13_fiqr12_fiqr10_fiqr11_fiqr9_fiqr8_fiqr14 (lr)r13 (sp)r12r10r11r9r8用戶模式 CPSR 復制到 FIQ 模式 SPSRcpsrr15 (pc)r14 (lr)r13 (sp)r12r10r11r9r8r7r4r5r2r1r0r3r6r14_fiqr13_fiqr12_fiqr10_fiqr11_fiqr9_fiqr8_fiq返回一個從用戶模式計算

溫馨提示

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

評論

0/150

提交評論