版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、本資料來源,嵌入式系統(tǒng)及開發(fā)應(yīng)用,第二講ARM體系結(jié)構(gòu),Outline,2、ARM體系結(jié)構(gòu),3、ARM編程模型 工作狀態(tài) CPU工作模式 寄存器組織 異常 內(nèi)存與IO,1、嵌入式微處理器,主流的嵌入式微處理器,目前主流的嵌入式微處理器系列主要有ARM系列、MIPS系列、PowerPC系列、Super H系列和X86系列等。 屬于這些系列的嵌入式微處理器產(chǎn)品很多,有上千種以上。,Units (millions),Source: Andrew Allison, Inside The New Computer Industry, January 2001,Embedded RISC Processo
2、r Shipments,32位浪潮的到來,Source: Semico Research Corp. and SIA/WSTS,Total MCU, by Sub-Category (excl. DSP),Total Embedded Control Market Shipments by Type,總共約26億個(gè)32位處理器 付運(yùn),占總數(shù)96億的27%,2005年ARM為17億個(gè), 約占32位總量的70%左右,X86系列,主要由AMD,Intel,NS,ST等公司提供,如:Am186/88、Elan520、嵌入式K6,386EX、STPC等。 主要應(yīng)用在工業(yè)控制、通信等領(lǐng)域。 國(guó)內(nèi)由于對(duì)X8
3、6體系比較熟悉,得到廣泛應(yīng)用,特別是嵌入式PC的應(yīng)用非常廣泛。,MPC/PPC系列,Motorola推出的MPC系列,如MPC8XX。 IBM推出PPC系列,如PPC4XX。 主要應(yīng)用在通信、消費(fèi)電子及工業(yè)控制、軍用裝備等領(lǐng)域。,MPC/PPC系列,IBM PowerPC 集成10/100Mbps以太網(wǎng)控制器、串行和并行端口、內(nèi)存控制器以及其它外設(shè)的高性能嵌入式處理器。 Motorola MPC 高度綜合的SOC設(shè)備,它結(jié)合了PPC微處理器核心的功能、通信處理器和單硅成分內(nèi)的顯示控制器。這個(gè)設(shè)備可以在大量的電子應(yīng)用中使用,特別是在低能源、便攜式、圖象捕捉和個(gè)人通信設(shè)備。,技術(shù),0.25,微米,
4、CMoS SA-12E,282 Dhrystone 2.1 MIPS 200MHz,375 Dhrystone 2.1 MIPS 266MHz,200/100/66/50 MHz,266/133/66/66 MHz,晶體數(shù)量,480,萬,電源消耗,1.1,瓦,信號(hào),I/O,300,溫度范圍,-40到80度,電源供應(yīng),2.5V (,邏輯電路,),3.3V (I/O),,支持,5V I/Os,456-Ball,Enhanced PBGA (35mm x 35mm),性能,頻率,(CPU /,SDRAM /PCI /EBC),封裝,PowerPC 405 GP技術(shù)規(guī)格,*Dhrystone是一個(gè)綜合
5、性的基準(zhǔn)測(cè)試程序,它是為了測(cè)試編譯器和CPU處理整數(shù)指令和控制功能的有效性,人為地選擇一些“典型指令綜合起來形成的測(cè)試程序。,ARM系列,ARM(Advanced RISC Machine)公司是一家專門從事芯片IP設(shè)計(jì)與授權(quán)業(yè)務(wù)的英國(guó)公司,其產(chǎn)品有ARM內(nèi)核以及各類外圍接口。 ARM內(nèi)核是一種32位RISC微處理器,具有功耗低、性價(jià)比高、代碼密度高等三大特色。 目前,90%的移動(dòng)電話、大量的游戲機(jī)、手持PC和機(jī)頂盒等都已采用了ARM處理器,許多一流的芯片廠商都是ARM的授權(quán)用戶(Licensee),如Intel、Samsung、TI、Motorola、ST等,ARM已成為業(yè)界公認(rèn)的嵌入式微處
6、理器標(biāo)準(zhǔn)。,ARM Family,ARM7 Family,ARM9 Family,ARM10 Family,ARM11 Family,150DMIPS,300 DMIPS,500 DMIPS,1000 DMIPS,ARM Cortex Family,ARM Architecture,當(dāng)前的主流ARM處理器,ARM7 世界上最為廣泛使用的 CPU 之一 100MHz ARM9 100-300MHz,1.7B ARM Powred shipment in year of 2005, 31% is ARM9 based.,ARM11 芯片已經(jīng)面世,ARM11 300-700+ MHz SIMD 指令
7、擴(kuò)展支持更豐富的多媒體應(yīng)用 40家授權(quán)芯片公司,一些已開始量產(chǎn),FOMA N902i First ARM11 based phone,OMAP2420,i.MX31/i.MX31L,目前最快的嵌入式處理器,最快的處理器提供超過2000 DMIPS 的性能 運(yùn)行于 1GHz 頻率 (90nm or 65nm 制造工藝) 功耗小于 300mW,ARM Cortex A8 Application Processor,Cortex-M3 實(shí)現(xiàn) $1 ARM芯片,ARM Cortex Architecture Thumb-2 ISA 3 Stage Pipeline 1.22 DMIPS/MHz 30%
8、 over ARM7TDMI 33K gates 30% smaller than ARM7TDMI,Luminary Micro的Stellaris系列MCU產(chǎn)品售價(jià)僅1美元,ARM Cortex-M3 微控制器內(nèi)核,專門針對(duì)MCU應(yīng)用領(lǐng)域而設(shè)計(jì),突出低成本、低功耗和高效率。,領(lǐng)先嵌入式處理器技術(shù)發(fā)展討論,多處理器技術(shù) 單處理器技術(shù)的性能提升終有一天會(huì)遭遇瓶頸 對(duì)嵌入式系統(tǒng)而言,尤其要考慮付出的代價(jià) 把任務(wù)進(jìn)行并行分解是理想的選擇 ARM MPcore可以集成1-4個(gè)ARM11處理器 關(guān)鍵是要提供給軟件開發(fā)者一個(gè)友好的編程界面 64位處理器? 哪兒是系統(tǒng)性能瓶頸? 是需要64位地址還是64位
9、數(shù)據(jù)? 嵌入式系統(tǒng)比PC有更好的條件來解決系統(tǒng)性能和帶寬問題 PC系統(tǒng)在主板上,擴(kuò)展系統(tǒng)帶寬需要擴(kuò)大每個(gè)組件的接口帶寬 SoC只需擴(kuò)展片內(nèi)總線,非常容易實(shí)現(xiàn) AMBA支持8-1024位總線寬度 許多SoC設(shè)計(jì)以及ARM處理器內(nèi)部已經(jīng)使用64位數(shù)據(jù)總線,如何選擇嵌入式微處理器,微處理器內(nèi)核的選擇 有無MMU OS的考慮 系統(tǒng)的工作頻率 芯片存儲(chǔ)器的容量 片內(nèi)外設(shè)的考慮 實(shí)際應(yīng)用的要求 接口時(shí)序,Outline,2、ARM體系結(jié)構(gòu),3、ARM編程模型 工作狀態(tài) CPU工作模式 寄存器組織 異常 內(nèi)存與IO,1、嵌入式微處理器,圖2.1.1 ARM體系結(jié)構(gòu)方框圖,ARM處理器的分類,結(jié)構(gòu)體系版本(A
10、rchitecture) ARM v4T ARM v5TE ARM v6 ARM Cortex (v7),Processor Family ARM7 ARM9 ARM10 ARM11 ARM Cortex,按應(yīng)用特征分類 應(yīng)用處理器 Application Processor 實(shí)時(shí)控制處理器 Real-time Controller 微控制器 Micro-controller,特征:MMU, Cache 最快頻率、最高性能、合理功耗,特征:MPU, Cache 實(shí)時(shí)響應(yīng)、合理性能、較低功耗,特征:no sub-memory system 一般性能、最低成本、極低功耗,ARM體系結(jié)構(gòu)的命名規(guī)則,
11、ARMXyzTDMIEJF-S x系列 y存儲(chǔ)管理/保護(hù)單元 zCache TThumb16位譯碼器 DJTAG調(diào)試器 M快速乘法器 I嵌入式跟蹤宏單元 E增強(qiáng)DSP指令 JJazelle F向量浮點(diǎn)單元 S可綜合版本,以源代碼形式提供的ARM核,Roadmap of ARM V4/V5/V6,ARM V4,ARMV4是目前支持的最老的架構(gòu),是基于32-bit地址空間的32-bit指令集。ARMv4除了支持ARMv3的指令外還擴(kuò)展了: 支持halfword的存取 支持byte和halfword的符號(hào)擴(kuò)展讀 支持Thumb指令 提供Thumb和Normal狀態(tài)的轉(zhuǎn)換指令 進(jìn)一步的明確了會(huì)引起Un
12、defined異常的指令 對(duì)以前的26bits體系結(jié)構(gòu)的CPU不再兼容,ARMv4T,ARMv4T增加了16-bit Thumb指令集,這樣使得編譯器能產(chǎn)生緊湊代碼(相對(duì)于32-bit代碼,內(nèi)存能節(jié)省到35%以上)并保持32-bit系統(tǒng)的好處。 Thumb在處理器中仍然要擴(kuò)展為標(biāo)準(zhǔn)的32位ARM指令來運(yùn)行。用戶采用16位Thumb指令集最大的好處就是可以獲得更高的代碼密度和降低功耗。,ARM V5TE,1999年推出ARMv5TE其增強(qiáng)了Thumb體系,增強(qiáng)的Thumb體系增加了一個(gè)新的指令同時(shí)改進(jìn)了Thumb/ARM相互作用、編譯能力和混合及匹配ARM與Thumb例程,以更好地平衡代碼空間和
13、性能 并在ARM ISA上擴(kuò)展了增強(qiáng)的DSP指令集: 增強(qiáng)的DSP指令包括支持飽和算術(shù)(saturated arithmetic), 并且針對(duì)Audio DSP應(yīng)用提高了70%性能。E擴(kuò)展表示在通用的CPU上提供DSP能力。,ARMv5TEJ,2000年推出ARMv5TEJ,增加了Jazelle擴(kuò)展以支持Java加速技術(shù)。 Jazelle技術(shù)比僅僅基于軟件的JVM性能提高近8倍的性能減少了80的功耗。,ARMv6,2001年推出ARMv6,它在許多方面做了改進(jìn)如內(nèi)存系統(tǒng)、異常處理和較好地支持多處理器。 SIMD擴(kuò)展使得廣大的軟件應(yīng)用如Video和Audio codec的性能提高了4倍。 Thu
14、mb-2和TrustZone 技術(shù)也用于ARMv6中。ARMv6第一個(gè)實(shí)現(xiàn)是2002年春推出的ARM1136J(F)-STM處理器,2003年又推出了ARM1156T2(F)-S和ARM1176JZ(F)-S處理器。,ARMv7,ARMv7定義了3種不同的處理器配置(processor profiles): Profile A是面向復(fù)雜、基于虛擬內(nèi)存的OS和應(yīng)用的 Profile R是針對(duì)實(shí)時(shí)系統(tǒng)的 Profile M是針對(duì)低成本應(yīng)用的優(yōu)化的微控制器的。 所有ARMv7 profiles實(shí)現(xiàn)Thumb-2技術(shù),同時(shí)還包括了NEON技術(shù)的擴(kuò)展提高DSP和多媒體處理吞吐量400,并提供浮點(diǎn)支持以滿
15、足下一代3D圖形和游戲以及傳統(tǒng)嵌入式控制應(yīng)用的需要。,ARM7TDMI,Thumb 架構(gòu)擴(kuò)展, 提供兩個(gè)獨(dú)立的指令集: ARM 指令,均為 32位 Thumb指令,均為 16位 兩種運(yùn)行狀態(tài),用來選擇哪個(gè)指令集被執(zhí)行,內(nèi)核具有Debug擴(kuò)展結(jié)構(gòu),增強(qiáng)乘法器 (32x8) 支持64位結(jié)果,EmbeddedICE 邏輯,3 級(jí)流水線 馮諾依曼架構(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),ARM7TDMI指令流水線,為增加處理器指令流的速度,ARM7 系列使用3級(jí)流水線。 允許多個(gè)操作同時(shí)處理,而
16、非順序執(zhí)行。 PC指向正被取指的指令,而非正在執(zhí)行的指令。,從存儲(chǔ)器中讀取指令,解碼指令中用到的寄存器,寄存器讀(從寄存器Bank) 移位及ALU操作 寄存器寫(到寄存器Bank ),PCPC,PC - 4PC-2,PC - 8PC - 4,ARMThumb,ARM7TDMI指令流水線,操作,周期,1 2 3 45 6,Fetch,最佳流水線,該例中用6個(gè)時(shí)鐘周期執(zhí)行了6條指令所有的操作都在寄存器中(單周期執(zhí)行)指令周期數(shù) (CPI) = 1,ARM9TDMI,Harvard架構(gòu) 增加了可用的存儲(chǔ)器寬度 指令存儲(chǔ)器接口 數(shù)據(jù)存儲(chǔ)器接口 可以實(shí)現(xiàn)對(duì)指令和數(shù)據(jù)存儲(chǔ)器的同時(shí)訪問 5 級(jí)流水線 實(shí)現(xiàn)了
17、以下改進(jìn): 改進(jìn) CPI 到 1.5 提高了最大時(shí)鐘頻率,ARM9TDMI,Instruction Fetch,Shift + ALU,Memory Access,Reg Write,Reg Read,Reg Decode,FETCH,DECODE,EXECUTE,MEMORY,WRITE,ARM9TDMI,ARM or ThumbInst Decode,Reg Select,Reg Read,Shift,ALU,Reg Write,ThumbARMdecompress,ARM decode,Instruction Fetch,FETCH,DECODE,EXECUTE,ARM7TDMI,流水線
18、,ARM9TDMI,ARM9TDMI,D Cache,I Cache,MMU,GLUE,外部 存儲(chǔ)器,ARM940T 2x 4K caches MPU 寫緩沖,ARM9xxT,ARM920T 2x 16K caches MMU 支持虛擬地址和內(nèi)存保護(hù) 寫緩沖,帶Cache的ARM9TDMI,圖2.2.4 ARM920T內(nèi)核結(jié)構(gòu),ARM9E-S 系列概述,ARM9E 基于 ARM9TDMI 內(nèi)核,有以下擴(kuò)展和增強(qiáng) 單周期 32x16 乘法器 EmbeddedICE 邏輯 RT 改進(jìn)的 ARM/Thumb 交互操作 新的32x16和 16x16 乘法指令 新的計(jì)數(shù)到零指令 新的飽和算術(shù)指令 ARM
19、946E-S ARM9E-S 內(nèi)核 指令和數(shù)據(jù)cache, 大小可選擇 指令和數(shù)據(jù)RAM,大小可選擇 保護(hù)單元 AHB 總線接口 ARM966E-S 與 ARM946E-S相似, 但無 cache,ARM926EJ-S系列概述,Jazelle狀態(tài)允許直接執(zhí)行Java 8位碼 ARM926EJ-S ARM9E-S 內(nèi)核 可配置的cache和 TCM 內(nèi)存管理單元 雙重 32位 AHB 總線接口 (多層),ARM10E 系列概述,v5TE架構(gòu),CPI 1.3,6 級(jí)流水線,靜態(tài)分支預(yù)測(cè),32kB 指令cache和32kB數(shù)據(jù)cache 支持“Hit under miss” 非阻塞的執(zhí)行單元,每周期
20、64 位的 LDM / STM操作,EmbeddedICE邏輯 - RT-II,支持新的 VFPv1 結(jié)構(gòu),同ARM1020E,除了cache大小為16kB,對(duì)SUDL(single user design license )有效,ARM1020E,ARM1022E,ARM9 vs ARM10,流水線的對(duì)比,Intel StrongARM 概述,ARM V4 架構(gòu) (無Thumb支持) 5級(jí)流水線,降低跳轉(zhuǎn)損耗-stage pipeline,reduced branch penalty 改進(jìn)的乘法器(典型地比ARM9TDMI 快2個(gè)周期) 不支持 Multi-ICE 調(diào)試 (JTAG限制在連通
21、性測(cè)試) 無外部協(xié)處理器接口 SA-110: 16K 指令和數(shù)據(jù) caches, 8 x 16 字節(jié)寫緩沖. SA-1100/1110: 片上外設(shè),存儲(chǔ)器控制器 更小的 cache 容量 PID 寄存器(作控制用) 指令斷點(diǎn),通過 CP15,Intel XScale 概述,V5TE 兼容架構(gòu) 7-8級(jí)流水線帶統(tǒng)計(jì)分支預(yù)測(cè) 32k的數(shù)據(jù)和指令 Cache, 外加2k的數(shù)據(jù)Minicache 8口寫緩沖,4口填充和追加緩沖 完整的32位協(xié)處理器接口 調(diào)試和性能監(jiān)控邏輯(通過CP14 ) 乘-加模塊(作為CP0 ) 可配置的內(nèi)核時(shí)鐘速度100-733MHz ,來自 33-66MHz 輸入時(shí)鐘 異步輸
22、入總線時(shí)鐘可到100 MHz (最大總線內(nèi)核時(shí)鐘的1/3 ),Outline,2、ARM體系結(jié)構(gòu),3、ARM編程模型 工作狀態(tài) CPU工作模式 寄存器組織 異常 內(nèi)存與IO,1、嵌入式微處理器,ARM微處理器:編程模型,處理器工作狀態(tài) CPU工作模式 寄存器組織 異常 內(nèi)存與IO,ARM微處理器:處理器工作狀態(tài)(PROCESSOR OPERATING STATES),處理器有兩種工作狀態(tài): ARM:32位,執(zhí)行字對(duì)準(zhǔn)的ARM指令 Thumb:16位,執(zhí)行半字對(duì)準(zhǔn)的Thumb指令 ARM和Thumb之間狀態(tài)的切換不影響處理器的模式或寄存器的內(nèi)容,ARM微處理器:處理器工作狀態(tài),進(jìn)入Thumb狀態(tài)
23、: 執(zhí)行BX指令,并設(shè)置操作數(shù)寄存器的狀態(tài)(位0)為1。 在Thumb狀態(tài)進(jìn)入異常(IRQ, FIQ, UNDEF, ABORT,SWI etc.),當(dāng)異常處理返回時(shí)自動(dòng)轉(zhuǎn)換到Thumb狀態(tài) 進(jìn)入ARM狀態(tài): 執(zhí)行BX指令,并設(shè)置操作數(shù)寄存器的狀態(tài)(位0)為0。 進(jìn)入異常時(shí),將PC放入異常模式鏈接寄存器中,從異常向量地址開始執(zhí)行也可進(jìn)入ARM狀態(tài),ARM微處理器:處理器工作狀態(tài),Thumb-2:增加了混合模式能力 定義了一個(gè)新的32-bit指令集能在傳統(tǒng)的16-bit指令運(yùn)行的Thumb狀態(tài)下同時(shí)運(yùn)行。 這樣能在一個(gè)系統(tǒng)中更好地平衡ARM和Thumb代碼的能力,使系統(tǒng)能更好地利用ARM級(jí)別的性
24、能和Thumb代碼的密度的優(yōu)勢(shì),ARM微處理器:存儲(chǔ)器格式,ARM 的尋址空間是線性的地址空間,為232=4G Bytes 0 to 3 存儲(chǔ)第一個(gè)word, bytes 4 to 7存儲(chǔ)第二個(gè)word ARM支持大端(Big-endian)和小端(Little-endian)的內(nèi)存數(shù)據(jù)方式,可以通過硬件的方式設(shè)置(沒有提供軟件的方式)端模式,ARM微處理器:存儲(chǔ)器格式,大端的數(shù)據(jù)存放格式,低地址,高地址,地址A,地址A+1,地址A+2,地址A+3,最高有效字節(jié)的地址就是該word的地址,最高有效字節(jié)位于最低地址,word a=0 x f6 73 4b cd,f6,73,4b,cd,ARM微處
25、理器:存儲(chǔ)器格式,小端的數(shù)據(jù)格式,低地址,高地址,地址A,地址A+1,地址A+2,地址A+3,最低有效字節(jié)的地址就是該word的地址,最低有效字節(jié)位于最低地址,word a=0 x f6 73 4b cd,f6,73,4b,cd,ARM微處理器:存儲(chǔ)器格式,大端: 小端:,0 xb3204500,0 xddddddd0,0 xb3204500,0 xddddddd0,f6,f6,73,73,4b,4b,cd,cd,00,00,da,da,實(shí)例 變量A:word A=0 x f6 73 4b cd,在內(nèi)存中的起始地址為0 x b3 20 45 00 變量B:half word B=218,在內(nèi)存
26、中的起始地址為0 x dd dd dd d0,問題:half word B=218與word C=218在內(nèi)存中的存放方式有何不同?請(qǐng)分大端和小端兩種情況說明。,ARM微處理器:編程模型,數(shù)據(jù)類型的約定 字節(jié)型數(shù)據(jù)(Byte):數(shù)據(jù)寬度為8bits 半字?jǐn)?shù)據(jù)類型(HalfWord):數(shù)據(jù)寬度為16bits,存取式必須以2字節(jié)對(duì)齊的方式 字?jǐn)?shù)據(jù)類型(Word):數(shù)據(jù)寬度為32bits,存取式必須以4字節(jié)對(duì)齊的方式,ARM微處理器:CPU模式(processor mode),7種CPU模式,CPU模式的轉(zhuǎn)變: 軟件控制 異常 外部中斷,ARM微處理器:CPU模式,User模式,程序不能訪問有些受保
27、護(hù)的資源,只能通過異常的形式來改變CPU的當(dāng)前運(yùn)行模式,特權(quán)模式可以存取系統(tǒng)中的任何資源,System模式,與User模式的運(yùn)行環(huán)境一樣 但是它可以不受任何限制的訪問任何資源 該模式主要用于運(yùn)行系統(tǒng)中的一些特權(quán)任務(wù),FIQ模式,IRQ模式,Supervisor模式,Abort模式,Undefined模式,異常模式:主要是在外部中斷或者程序執(zhí)行非法操作時(shí)會(huì)觸發(fā),ARM微處理器:寄存器組織,ARM處理器有37個(gè)寄存器 31個(gè)通用寄存器:程序計(jì)數(shù)器、堆棧及其他通用寄存器 6個(gè)狀態(tài)寄存器 這些寄存器不能同時(shí)看到,同時(shí)只有17個(gè) 不同的處理器狀態(tài)和工作模式確定哪些寄存器是對(duì)編程者是可見的,ARM微處理器
28、: ARM State寄存器,ARM微處理器: Thumb State寄存器,低寄存器,高寄存器,ARM State 與Thumb State寄存器關(guān)系,ARM狀態(tài)各模式下的寄存器,ARM狀態(tài)各模式下的寄存器,所有的37個(gè)寄存器,分成兩大類: 31個(gè)通用32位寄存器; 6個(gè)狀態(tài)寄存器。,ARM狀態(tài)各模式下可以訪問的寄存器,一般的通用寄存器,在匯編語(yǔ)言中寄存器R0R13為保存數(shù)據(jù)或地址值的通用寄存器。它們是完全通用的寄存器,不會(huì)被體系結(jié)構(gòu)作為特殊用途,并且可用于任何使用通用寄存器的指令。,一般的通用寄存器,其中R0R7為未分組的寄存器,也就是說對(duì)于任何處理器模式,這些寄存器都對(duì)應(yīng)于相同的32位物
29、理寄存器。,一般的通用寄存器,寄存器R8R14為分組寄存器。它們所對(duì)應(yīng)的物理寄存器取決于當(dāng)前的處理器模式,幾乎所有允許使用通用寄存器的指令都允許使用分組寄存器,一般的通用寄存器,寄存器R8R12有兩個(gè)分組的物理寄存器。一個(gè)用于除FIQ模式之外的所有寄存器模式,另一個(gè)用于FIQ模式。這樣在發(fā)生FIQ中斷后,可以加速FIQ的處理速度。,一般的通用寄存器,寄存器R13、R14分別有6個(gè)分組的物理寄存器。一個(gè)用于用戶和系統(tǒng)模式,其余5個(gè)分別用于5種異常模式。,堆棧指針寄存器R13(SP),寄存器R13常作為堆棧指針(SP)。在ARM指令集當(dāng)中,沒有以特殊方式使用R13的指令或其它功能,只是習(xí)慣上都這樣
30、使用。但是在Thumb指令集中存在使用R13的指令。,鏈接寄存器R14(LR),R14為鏈接寄存器(LR),在結(jié)構(gòu)上有兩個(gè)特殊功能: 在每種模式下,模式自身的R14版本用于保存子程序返回地址; 當(dāng)發(fā)生異常時(shí),將R14對(duì)應(yīng)的異常模式版本設(shè)置為異常返回地址(有些異常有一個(gè)小的固定偏移量)。,程序計(jì)數(shù)器R15(PC),寄存器R15為程序計(jì)數(shù)器(PC),它指向正在取指的地址??梢哉J(rèn)為它是一個(gè)通用寄存器,但是對(duì)于它的使用有許多與指令相關(guān)的限制或特殊情況。如果R15使用的方式超出了這些限制,那么結(jié)果將是不可預(yù)測(cè)的。,ARM微處理器:通用寄存器,R15 用作程序計(jì)數(shù)器(PC),可以被讀寫 ARM state
31、: bits 1:0為0,bits31:2即為 PC. THUMB state:bit 0為0,bits31:1即為 PC,ARM微處理器:程序狀態(tài)寄存器,CPSR(當(dāng)前程序狀態(tài)寄存器)在所有的模式下都是可以讀寫的,它主要包含: 條件標(biāo)志 中斷使能標(biāo)志 當(dāng)前處理器的模式 其它的一些狀態(tài)和控制標(biāo)志,ARM微處理器:程序狀態(tài)寄存器,置0表示執(zhí)行32bit的ARM指令 置1表示執(zhí)行16bit的Thumb指令,Negative,Zero,Carry,Overflow,IRQ中斷的響應(yīng): 置1:禁止響應(yīng) 置0:允許響應(yīng),FIQ中斷的響應(yīng): 置1:禁止響應(yīng) 置0:允許響應(yīng),ARM微處理器:程序狀態(tài)寄存器,
32、模式控制位M0-M4,ARM微處理器:異常,異常是由內(nèi)部或者外部原因引起的,當(dāng)異常發(fā)生時(shí)CPU將暫停執(zhí)行當(dāng)前指令自動(dòng)到指定的向量地址讀取指令并且執(zhí)行。 在X86上,當(dāng)有異常發(fā)生時(shí)CPU是到指定的向量地址讀取要執(zhí)行的程序的地址 而ARM是到向量地址的地方讀取指令,也就是ARM的向量地址處存放的是一條指令(一般是一條跳轉(zhuǎn)指令),ARM微處理器:異常,ARM CPU將引起異常的類型分為7種,ARM微處理器:異常,當(dāng)異常出現(xiàn)時(shí),異常模式分組的R14和SPSR用于保存狀態(tài),即: R14_=return link SPSR_=CPSR CPSR4:0=exception mode number CPSR5
33、=0 /*在ARM狀態(tài)執(zhí)行*/ if=Reset or FIQ then CPSR6=1 /*禁止快速中斷*/ CPSR7=1 /*禁止正常中斷*/ PC=exception vector address 當(dāng)處理異常返回時(shí),將SPSR傳送到CPSR,R14傳送到PC,異常的優(yōu)先級(jí),異常向量,85,Vector Table,異常處理,當(dāng)異常產(chǎn)生時(shí), ARM core: 拷貝 CPSR 到 SPSR_ 設(shè)置適當(dāng)?shù)?CPSR 位: 改變處理器狀態(tài)進(jìn)入 ARM 態(tài) 改變處理器模式進(jìn)入相應(yīng)的異常模式 設(shè)置中斷禁止位禁止相應(yīng)中斷 (如需要) 保存返回地址到 LR_ 設(shè)置 PC 為相應(yīng)的異常向量 返回時(shí),
34、異常處理需要: 從 SPSR_恢復(fù)CPSR 從LR_恢復(fù)PC Note:這些操作只能在 ARM 態(tài)執(zhí)行.,Vector table can be at 0 xFFFF0000 on ARM720T and on ARM9/10 family devices,FIQ,IRQ,(Reserved),Data Abort,Prefetch Abort,Software Interrupt,Undefined Instruction,Reset,進(jìn)入異常的操作,R14_=Return Link SPSR_=CPSR CPSR4:0=Exception Mode Number CPSR5=0 ;當(dāng)運(yùn)行于
35、ARM狀態(tài)時(shí) IF=Reset or FIQ then ;當(dāng)響應(yīng)FIQ異常時(shí),禁止新的FIQ異常 CPSR6=1; CPSR7=1; PC=Exception Vector Address,當(dāng)異常結(jié)束時(shí),異常處理程序必須: 1.將LR( R14 )中的值減去偏移量后存入PC,偏移量根據(jù)異常的類型而有所不同; 2.將SPSR的值復(fù)制回CPSR; 3.清零在入口置位的中斷禁止標(biāo)志。 注:恢復(fù)CPSR的動(dòng)作會(huì)將T、F和I位自動(dòng)恢復(fù)為異常發(fā)生前的值。,退出異常,例子: 用戶模式到 FIQ模式*,r14_fiq,r13_fiq,r12_fiq,r10_fiq,r11_fiq,r9_fiq,r8_fiq,
36、用戶模式 CPSR 復(fù)制到 FIQ 模式 SPSR,返回一個(gè)從用戶模式計(jì)算的地址,PC值存儲(chǔ)在FIQ模式,用戶模式,FIQ 模式,圖示進(jìn)入異常過程,1. 程序在系統(tǒng)模式下運(yùn)行用戶程序,假定當(dāng)前處理器狀態(tài)為Thumb狀態(tài)、允許IRQ中斷;,2. 用戶程序運(yùn)行時(shí)發(fā)生IRQ中斷,硬件完成以下動(dòng)作:,置位I位(禁止IRQ中斷) 清零T位(進(jìn)入ARM狀態(tài)) 設(shè)置MOD位,切換處理器模式至IRQ模式,將下一條指令的地址存入IRQ模式的LR寄存器,將CPSR寄存器內(nèi)容存入IRQ模式的SPSR寄存器,將跳轉(zhuǎn)地址存入PC,實(shí)現(xiàn)跳轉(zhuǎn),BackAddr,JumpAddr,“?”表示對(duì)該位不關(guān)心,在異常處理結(jié)束后,異常處理程序完成以下動(dòng)作:,圖示退出異
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店員工行為準(zhǔn)則制度
- (2025)供應(yīng)商管理與采購(gòu)成本控制工作總結(jié)(2篇)
- 2025年手術(shù)室護(hù)士年度無菌操作規(guī)范落實(shí)與院感零事故工作總結(jié)(2篇)
- 車間電焊工安全培訓(xùn)內(nèi)容課件
- 車間生產(chǎn)培訓(xùn)課件模板
- 潰瘍性結(jié)腸炎標(biāo)準(zhǔn)化診療路徑2026
- 車間消防安全培訓(xùn)知識(shí)課件
- 車間安全班前培訓(xùn)課件
- 車間安全培訓(xùn)通訊稿
- 齒輪知識(shí)培訓(xùn)課件
- 機(jī)電設(shè)備安裝與調(diào)試技術(shù)教案
- 甲狀腺的中醫(yī)護(hù)理
- 紀(jì)念冊(cè)后記的格式范文
- 2024版裝修公司軟裝合同范本
- 加壓站清水池建設(shè)工程勘察設(shè)計(jì)招標(biāo)文件
- 工會(huì)制度匯編
- 2023年醫(yī)務(wù)科工作計(jì)劃-1
- 地基與基礎(chǔ)分項(xiàng)工程質(zhì)量驗(yàn)收記錄
- 一文多用作文課公開課課件
- 水運(yùn)工程施工課程設(shè)計(jì)指導(dǎo)書
- 驚恐障礙診治課件
評(píng)論
0/150
提交評(píng)論