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

下載本文檔

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

文檔簡介

嵌入式系統(tǒng)及開發(fā)運用第二講

ARM體系構造Outline2、ARM體系構造3、ARM編程模型任務形狀CPU任務方式存放器組織異常內存與IO1、嵌入式微處置器主流的嵌入式微處置器目前主流的嵌入式微處置器系列主要有ARM系列、MIPS系列、PowerPC系列、SuperH系列和X86系列等。屬于這些系列的嵌入式微處置器產(chǎn)品很多,有上千種以上。Units(millions)Source:AndrewAllison,InsideTheNewComputerIndustry,January2001EmbeddedRISCProcessorShipments32位浪潮的到來Source:SemicoResearchCorp.andSIA/WSTSTotalMCU,bySub-Category(excl.DSP)TotalEmbeddedControlMarketShipmentsbyType總共約26億個32位處置器付運,占總數(shù)96億的27%2005年ARM為17億個,約占32位總量的70%左右X86系列主要由AMD,Intel,NS,ST等公司提供,如:Am186/88、Elan520、嵌入式K6,386EX、STPC等。主要運用在工業(yè)控制、通訊等領域。國內由于對X86體系比較熟習,得到廣泛運用,特別是嵌入式PC的運用非常廣泛。MPC/PPC系列Motorola推出的MPC系列,如MPC8XX。IBM推出PPC系列,如PPC4XX。主要運用在通訊、消費電子及工業(yè)控制、軍用配備等領域。MPC/PPC系列IBMPowerPC集成10/100Mbps以太網(wǎng)控制器、串行和并行端口、內存控制器以及其它外設的高性能嵌入式處置器。MotorolaMPC高度綜合的SOC設備,它結合了PPC微處置器中心的功能、通訊處置器和單硅成分內的顯示控制器。這個設備可以在大量的電子運用中運用,特別是在低能源、便攜式、圖象捕捉和個人通訊設備。技術0.25微米CMoSSA-12E282Dhrystone2.1MIPS@200MHz375Dhrystone2.1MIPS@266MHz200/100/66/50MHz266/133/66/66MHz晶體數(shù)量480萬電源耗費1.1瓦信號I/O300溫度范圍-40到80度電源供應2.5V(邏輯電路),3.3V(I/O),支持5VI/Os456-Ball,EnhancedPBGA(35mmx35mm)性能頻率(CPU/SDRAM/PCI/EBC)封裝PowerPC405GP技術規(guī)格*Dhrystone是一個綜合性的基準測試程序,它是為了測試編譯器和CPU處置整數(shù)指令和控制功能的有效性,人為地選擇一些“典型指令綜合起來構成的測試程序。ARM系列ARM(AdvancedRISCMachine)公司是一家專門從事芯片IP設計與授權業(yè)務的英國公司,其產(chǎn)品有ARM內核以及各類外圍接口。ARM內核是一種32位RISC微處置器,具有功耗低、性價比高、代碼密度高等三大特征。目前,90%的挪動、大量的游戲機、手持PC和機頂盒等都已采用了ARM處置器,許多一流的芯片廠商都是ARM的授權用戶〔Licensee〕,如Intel、Samsung、TI、Motorola、ST等,ARM已成為業(yè)界公認的嵌入式微處置器規(guī)范。ARMFamilyARM7?FamilyARM9?FamilyARM10?FamilyARM11?Family150DMIPS300DMIPS500DMIPS1000DMIPSARMCortex?FamilyARM720TARM1JARM1176JZARM1026EARM920T/ARM922TARM926EJCortexAApplicationProcessorARM7TDMIARM1156T2ARM1026EARM946ECortexREmbeddedRTControllerARM7TDMIARM966EARM968ECortexMMicro-controllerARMArchitecture當前的主流ARM處置器ARM7世界上最為廣泛運用的CPU之一<100MHzARM9100-300MHz1.7BARMPowredshipmentinyearof2005,31%isARM9based.ARM11芯片曾經(jīng)面世ARM11300-700+MHzSIMD指令擴展支持更豐富的多媒體運用40家授權芯片公司,一些已開場量產(chǎn)FOMAN902iFirstARM11basedphoneOMAP2420i.MX31/i.MX31L目前最快的嵌入式處置器最快的處置器提供超越2000DMIPS的性能運轉于1GHz頻率(90nmor65nm制造工藝)功耗小于300mWARMCortexA8ApplicationProcessorCortex-M3實現(xiàn)$1ARM芯片ARMCortexArchitectureThumb-2ISA3StagePipeline1.22DMIPS/MHz–30%overARM7TDMI33Kgates–30%smallerthanARM7TDMILuminaryMicro的Stellaris系列MCU產(chǎn)品售價僅1美圓ARMCortex-M3微控制器內核,專門針對MCU運用領域而設計,突出低本錢、低功耗和高效率。領先嵌入式處置器技術開展討論多處置器技術單處置器技術的性能提升終有一天會遭遇瓶頸對嵌入式系統(tǒng)而言,尤其要思索付出的代價把義務進展并行分解是理想的選擇ARMMPcore可以集成1-4個ARM11處置器關鍵是要提供應軟件開發(fā)者一個友好的編程界面64位處置器?哪兒是系統(tǒng)性能瓶頸?是需求64位地址還是64位數(shù)據(jù)?嵌入式系統(tǒng)比PC有更好的條件來處理系統(tǒng)性能和帶寬問題PC系統(tǒng)在主板上,擴展系統(tǒng)帶寬需求擴展每個組件的接口帶寬SoC只需擴展片內總線,非常容易實現(xiàn)AMBA支持8-1024位總線寬度許多SoC設計以及ARM處置器內部曾經(jīng)運用64位數(shù)據(jù)總線如何選擇嵌入式微處置器微處置器內核的選擇有無MMUOS的思索系統(tǒng)的任務頻率芯片存儲器的容量片內外設的思索實踐運用的要求接口時序Outline2、ARM體系構造3、ARM編程模型任務形狀CPU任務方式存放器組織異常內存與IO1、嵌入式微處置器圖2.1.1ARM體系構造方框圖ARM處置器的分類構造體系版本〔Architecture〕ARMv4TARMv5TEARMv6ARMCortex(v7)ProcessorFamilyARM7ARM9ARM10ARM11ARMCortex按運用特征分類運用途置器ApplicationProcessor實時控制處置器Real-timeController微控制器Micro-controller特征:MMU,Cache最快頻率、最高性能、合理功耗特征:MPU,Cache實時呼應、合理性能、較低功耗特征:nosub-memorysystem普通性能、最低本錢、極低功耗ARM體系構造的命名規(guī)那么ARM{X}{y}{z}{T}{D}{M}{I}{E}{J}{F}{-S}x——系列y——存儲管理/維護單元z——CacheT——Thumb16位譯碼器D——JTAG調試器M——快速乘法器I——嵌入式跟蹤宏單元E——加強DSP指令J——JazelleF——向量浮點單元S——可綜合版本,以源代碼方式提供的ARM核v4v5TESA110v4TARM720TARM7TDMI-SARM920TARM940TARM922TARM966E-SARM946E-SARM1020Ev5TEJ/Jazellev6/JazelleARM7EJ-SARM926EJ-SARM1026EJ-SARM11Micro-ArchitectureRoadmapofARMV4/V5/V6系列相應產(chǎn)品性能特點ARM7系列ARM7TDMI,ARM7TDMI-S,ARM720T,ARM7EJ三級流水性能:0.9MIPS/MHz,可到達130MIPs(Dhrystone2.1)ARM9系列ARM920T,ARM922T五級流水,性能:1.1MIPS/MHz,可達300MIPS(Dhrystone2.1),單32-bitAMBAbus接口,支持MMUARM9E系列ARM926EJ-S,RM946E-S,ARM966E-S,ARM968E-S,ARM996HS五級流水,支持DSP指令。性能:1.1MIPS/MHz,可達300MIPS(Dhrystone2.1),高性能AHB,軟核〔softIP〕ARM10系列ARM1020E,ARM1022EARM1026EJ-S6級流水支持分支預測〔branchprediction〕,支持DSP指令。性能:1.35MIPS/MHz,可達430+Dhrystone2.1MIPS,,可選支持高性能浮點操作,雙64位總線接口,內部64位數(shù)據(jù)通路系列相應產(chǎn)品性能特點ARM11系列ARM11MPCore,ARM1J(F)-S,ARM1156T2(F)-S,ARM1176JZ(F)-S8級流水線(9級ARM1156T2(F)-S),獨立的load-store和arithmetic流水線,支持分支預測和前往棧〔ReturnStack〕。強大的ARMv6指令集,支持DSP,SIMD(SingleInstructionMultipleData)擴展,支持ARMTrustZone、Thumb-2中心技術。740Dhrystone2.1MIPS,低功耗0.6mW/MHz(0.13μm,1.2V)Cortex系列Cortex-A8,Cortex-M3,Cortex-R4Cortex-A系列:面向用于復雜OS和運用的運用途置器〔applicationsprocessors〕,支持ARM,ThumbandThumb-2指令集。Cortex-R系列:面向嵌入式實時領域的嵌入式處置器,支持ARM,Thumb,和Thumb-2指令集。Cortex-M系列:面向深嵌入式價錢敏感的嵌入式處置器,只支持Thumb-2指令集SecurCore系列SecurCoreSC100,SecurCoreSC200用于SmartCard和SecureIC的32-bit處理方案。支持ARM和Thumb

指令集,軟核。具有平安特征和低本錢平安存儲維護單元ARMV4ARMV4是目前支持的最老的架構,是基于32-bit地址空間的32-bit指令集。ARMv4除了支持ARMv3的指令外還擴展了:支持halfword的存取支持byte和halfword的符號擴展讀支持Thumb指令提供Thumb和Normal形狀的轉換指令進一步的明確了會引起Undefined異常的指令對以前的26bits體系構造的CPU不再兼容ARMv4TARMv4T添加了16-bitThumb

指令集,這樣使得編譯器能產(chǎn)生緊湊代碼〔相對于32-bit代碼,內存能節(jié)省到35%以上)并堅持32-bit系統(tǒng)的益處。Thumb在處置器中依然要擴展為規(guī)范的32位ARM指令來運轉。用戶采用16位Thumb指令集最大的益處就是可以獲得更高的代碼密度和降低功耗。ARMV5TE1999年推出ARMv5TE其加強了Thumb體系,加強的Thumb體系添加了一個新的指令同時改良了Thumb/ARM相互作用、編譯才干和混合及匹配ARM與Thumb例程,以更好地平衡代碼空間和性能并在ARMISA上擴展了加強的DSP

指令集:

加強的DSP指令包括支持飽和算術〔saturatedarithmetic〕,并且針對AudioDSP運用提高了70%性能。‘E’擴展表示在通用的CPU上提供DSP才干。ARMv5TEJ2000年推出ARMv5TEJ,添加了Jazelle擴展以支持Java加速技術。Jazelle技術比僅僅基于軟件的JVM性能提高近8倍的性能減少了80%的功耗。ARMv62001年推出ARMv6,它在許多方面做了改良如內存系統(tǒng)、異常處置和較好地支持多處置器。SIMD擴展使得寬廣的軟件運用如Video和Audiocodec的性能提高了4倍。Thumb-2和TrustZone技術也用于ARMv6中。ARMv6第一個實現(xiàn)是2002年春推出的ARM1J(F)-STM處置器,2003年又推出了

ARM1156T2(F)-S

和ARM1176JZ(F)-S處置器。ARMv7ARMv7定義了3種不同的處置器配置〔processorprofiles〕:ProfileA是面向復雜、基于虛擬內存的OS和運用的ProfileR是針對實時系統(tǒng)的ProfileM是針對低本錢運用的優(yōu)化的微控制器的。一切ARMv7profiles實現(xiàn)Thumb-2技術,同時還包括了NEON?技術的擴展提高DSP和多媒體處置吞吐量400%

,并提供浮點支持以滿足下一代3D圖形和游戲以及傳統(tǒng)嵌入式控制運用的需求。ARM7TDMIThumb架構擴展,提供兩個獨立的指令集:ARM指令,均為32位Thumb指令,均為16位兩種運轉形狀,用來選擇哪個指令集被執(zhí)行內核具有Debug擴展構造加強乘法器(32x8)支持64位結果EmbeddedICE邏輯3級流水線馮·諾依曼架構CPI(CyclePerInstruction)約為1.9圖2.2.3ARM720T內核構造圖2.2.1ARM7TDMI內核構造ARM7TDMI指令流水線為添加處置器指令流的速度,ARM7系列運用3級流水線。允許多個操作同時處置,而非順序執(zhí)行。PC指向正被取指的指令,而非正在執(zhí)行的指令。FetchDecodeExecute從存儲器中讀取指令解碼指令中用到的存放器存放器讀〔從存放器Bank〕移位及ALU操作存放器寫〔到存放器Bank〕PC PCPC-4 PC-2PC-8 PC-4ARM ThumbARM7TDMI指令流水線操作周期 1 2 3 4 56ADDSUBMOVANDORREORCMPRSBFetchDecode。FetchExecuteDecodeFetchExecuteDecodeFetchExecuteDecodeFetchFetchExecuteDecodeExecuteDecodeFetchExecuteDecodeFetch最正確流水線該例中用6個時鐘周期執(zhí)行了6條指令

一切的操作都在存放器中〔單周期執(zhí)行〕

指令周期數(shù)(CPI)=1ARM9TDMIHarvard架構添加了可用的存儲器寬度指令存儲器接口數(shù)據(jù)存儲器接口可以實現(xiàn)對指令和數(shù)據(jù)存儲器的同時訪問5級流水線實現(xiàn)了以下改良:改良CPI到~1.5提高了最大時鐘頻率ARM9TDMIInstructionFetchShift+ALUMemoryAccessRegWriteRegReadRegDecodeFETCHDECODEEXECUTEMEMORYWRITEARM9TDMIARMorThumb

InstDecodeRegSelectRegReadShiftALURegWriteThumb?ARM

decompressARMdecodeInstructionFetchFETCHDECODEEXECUTEARM7TDMI流水線ARM9TDMIARM9TDMIDCacheICacheMMUGLUE外部存儲器ARM940T2x4KcachesMPU寫緩沖ARM9xxTARM920T2x16KcachesMMU支持虛擬地址和內存維護寫緩沖帶Cache的ARM9TDMI圖2.2.4ARM920T內核構造ARM9E-S系列概述ARM9E基于ARM9TDMI內核,有以下擴展和加強單周期32x16乘法器EmbeddedICE邏輯RT改良的ARM/Thumb交互操作新的32x16和16x16乘法指令新的計數(shù)到零指令新的飽和算術指令ARM946E-SARM9E-S內核指令和數(shù)據(jù)cache,大小可選擇指令和數(shù)據(jù)RAM,大小可選擇維護單元AHB總線接口ARM966E-S與ARM946E-S類似,但無cacheARM926EJ-S系列概述Jazelle形狀允許直接執(zhí)行Java8位碼ARM926EJ-SARM9E-S內核可配置的cache和TCM內存管理單元雙重32位AHB總線接口(多層)ARM10E系列概述v5TE架構CPI1.36級流水線靜態(tài)分支預測32kB指令cache和32kB數(shù)據(jù)cache支持“Hitundermiss〞非阻塞的執(zhí)行單元每周期64位的LDM/STM操作EmbeddedICE邏輯-RT-II支持新的VFPv1構造同ARM1020E,除了cache大小為16kB對SUDL(singleuserdesignlicense)有效ARM1020EARM1022EARM9vsARM10流水線的對比Intel?StrongARM概述ARMV4架構(無Thumb支持)5級流水線,降低跳轉損耗-stagepipeline,reducedbranchpenalty改良的乘法器〔典型地比ARM9TDMI快2個周期〕不支持Multi-ICE調試(JTAG限制在連通性測試)無外部協(xié)處置器接口SA-110:16K指令和數(shù)據(jù)caches,8x16字節(jié)寫緩沖.SA-1100/1110:片上外設,存儲器控制器更小的cache容量PID存放器(作控制用)指令斷點,經(jīng)過CP15Intel?XScale?概述V5TE兼容架構7-8級流水線帶統(tǒng)計分支預測32k的數(shù)據(jù)和指令Cache,外加2k的數(shù)據(jù)Minicache8口寫緩沖,4口填充和追加緩沖完好的32位協(xié)處置器接口調試和性能監(jiān)控邏輯〔經(jīng)過CP14〕乘-加模塊〔作為CP0〕可配置的內核時鐘速度100-733MHz,來自33-66MHz輸入時鐘異步輸入總線時鐘可到100MHz〔最大總線內核時鐘的1/3〕Outline2、ARM體系構造3、ARM編程模型任務形狀CPU任務方式存放器組織異常內存與IO1、嵌入式微處置器ARM微處置器:編程模型處置器任務形狀CPU任務方式存放器組織異常內存與IOARM微處置器:處置器任務形狀〔PROCESSOROPERATINGSTATES〕處置器有兩種任務形狀:ARM:32位,執(zhí)行字對準的ARM指令Thumb:16位,執(zhí)行半字對準的Thumb指令ARM和Thumb之間形狀的切換不影響處置器的方式或存放器的內容ARM微處置器:處置器任務形狀進入Thumb形狀:執(zhí)行BX指令,并設置操作數(shù)存放器的形狀〔位[0]〕為1。在Thumb形狀進入異常(IRQ,FIQ,UNDEF,ABORT,SWIetc.),當異常處置前往時自動轉換到Thumb形狀進入ARM形狀:執(zhí)行BX指令,并設置操作數(shù)存放器的形狀〔位[0]〕為0。進入異常時,將PC放入異常方式鏈接存放器中,從異常向量地址開場執(zhí)行也可進入ARM形狀ARM微處置器:處置器任務形狀Thumb-2

:添加了混合方式才干定義了一個新的32-bit指令集能在傳統(tǒng)的16-bit指令運轉的Thumb形狀下同時運轉。這樣能在一個系統(tǒng)中更好地平衡ARM和Thumb代碼的才干,使系統(tǒng)能更好地利用ARM級別的性能和Thumb代碼的密度的優(yōu)勢ARM微處置器:存儲器格式ARM的尋址空間是線性的地址空間,為232=4GBytes0to3存儲第一個word,bytes4to7存儲第二個wordARM支持大端〔Big-endian〕和小端〔Little-endian〕的內存數(shù)據(jù)方式,可以經(jīng)過硬件的方式設置〔沒有提供軟件的方式〕端方式ARM微處置器:存儲器格式大端的數(shù)據(jù)存放格式低地址高地址地址A地址A+1地址A+2地址A+3最高有效字節(jié)的地址就是該word的地址最高有效字節(jié)位于最低地址worda=0xf6734bcdf6734bcdARM微處置器:存儲器格式小端的數(shù)據(jù)格式低地址高地址地址A地址A+1地址A+2地址A+3最低有效字節(jié)的地址就是該word的地址最低有效字節(jié)位于最低地址worda=0xf6734bcdf6734bcdARM微處置器:存儲器格式大端:小端:0xb32045000xddddddd00xb32045000xddddddd0f6f673734b4bcdcd0000dada實例變量A:wordA=0xf6734bcd,在內存中的起始地址為0xb3204500變量B:halfwordB=218,在內存中的起始地址為0xddddddd0問題:halfwordB=218與wordC=218在內存中的存放方式有何不同?請分大端和小端兩種情況闡明。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方式〔processormode〕7種CPU方式CPU方式的轉變:軟件控制異常外部中斷ARM微處置器:CPU方式User方式程序不能訪問有些受維護的資源只能經(jīng)過異常的方式來改動CPU的當前運轉方式特權方式可以存取系統(tǒng)中的任何資源System方式與User方式的運轉環(huán)境一樣但是它可以不受任何限制的訪問任何資源該方式主要用于運轉系統(tǒng)中的一些特權義務FIQ方式IRQ方式Supervisor方式Abort方式Undefined方式異常方式:主要是在外部中斷或者程序執(zhí)行非法操作時會觸發(fā)ARM微處置器:存放器組織ARM處置器有37個存放器31個通用存放器:程序計數(shù)器、堆棧及其他通用存放器6個形狀存放器這些存放器不能同時看到,同時只需17個不同的處置器形狀和任務方式確定哪些存放器是對編程者是可見的ARM微處置器:ARMState存放器ARM微處置器:ThumbState存放器R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

R11

R12

R0

堆棧指針(R13)

銜接存放器(R14)

程序計數(shù)器(R15)

低存放器高存放器ARMState與ThumbState存放器關系寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(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_fiq*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ǒ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無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM形狀各方式下的存放器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ǒ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無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用戶無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系統(tǒng)SPSR_svcCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定義SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中斷SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中斷ARM形狀各方式下可以訪問的存放器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(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無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq普通的通用存放器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0在匯編言語中存放器R0~R13為保管數(shù)據(jù)或地址值的通用存放器。它們是完全通用的存放器,不會被體系構造作為特殊用途,并且可用于任何運用通用存放器的指令。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(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無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq普通的通用存放器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0其中R0~R7為未分組的存放器,也就是說對于任何處置器方式,這些存放器都對應于一樣的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_undR14_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存放器R8~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_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普通的通用存放器R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8存放器R8~R12有兩個分組的物理存放器。一個用于除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_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_fiqR14_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_abtR13_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)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鏈接存放器R14〔LR〕R14為鏈接存放器〔LR〕,在構造上有兩個特殊功能:在每種方式下,方式本身的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_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程序計數(shù)器R15〔PC〕存放器R15為程序計數(shù)器〔PC〕,它指向正在取指的地址。可以以為它是一個通用存放器,但是對于它的運用有許多與指令相關的限制或特殊情況。假設R15運用的方式超出了這些限制,那么結果將是不可預測的。ARM微處置器:通用存放器R15用作程序計數(shù)器(PC),可以被讀寫ARMstate:bits[1:0]為0,bits[31:2]即為PC.THUMBstate:bit[0]為0,bits[31:1]即為PCARM微處置器:程序形狀存放器CPSR〔當前程序形狀存放器〕在一切的方式下都是可以讀寫的,它主要包含:條件標志中斷使能標志當前處置器的方式其它的一些形狀和控制標志ARM微處置器:程序形狀存放器置0表示執(zhí)行32bit的ARM指令置1表示執(zhí)行16bit的Thumb指令NegativeZeroCarryOverflowIRQ中斷的呼應:置1:制止呼應置0:允許呼應FIQ中斷的呼應:置1:制止呼應置0:允許呼應條件標志方式控制位ARM/Thumb控制標志中斷標志ARM微處置器:程序形狀存放器方式控制位M0-M4ARM微處置器:異常異常是由內部或者外部緣由引起的,當異常發(fā)生時CPU將暫停執(zhí)行當前指令自動到指定的向量地址讀取指令并且執(zhí)行。在X86上,當有異常發(fā)生時CPU是到指定的向量地址讀取要執(zhí)行的程序的地址而ARM是到向量地址的地方讀取指令,也就是ARM的向量地址處存放的是一條指令〔普通是一條跳轉指令〕ARM微處置器:異常ARMCPU將引起異常的類型分為7種ARM微處置器:異常當異常出現(xiàn)時,異常方式分組的R14和SPSR用于保管形狀,即:R14_<exception_mode>=returnlinkSPSR_<exception_mode>=CPSRCPSR[4:0]=exceptionmodenumberCPSR[5]=0/*在ARM形狀執(zhí)行*/if<exception_mode>==ResetorFIQthenCPSR[6]=1/*制止快速中斷*/CPSR[7]=1/*制止正常中斷*/PC=exceptionvectoraddress當處置異常前往時,將SPSR傳送到CPSR,R14傳送到PC異常的優(yōu)先級異常向量VectorTable異常處置當異常產(chǎn)生時,ARMcore:拷貝CPSR到SPSR_<mode>設置適當?shù)腃PSR位:改動處置器形狀進入ARM態(tài)改動處置器方式進入相應的異常方式設置中斷制止位制止相應中斷(如需求)保管前往地址到LR_<mode>設置PC為相應的異常向量前往時,異常處置需求:從SPSR_<mode>恢復CPSR從LR_<mode>恢復PCNote:這些操作只能在ARM態(tài)執(zhí)行.Vectortablecanbeat

0xFFFF0000onARM720T

andonARM9/10familydevicesFIQIRQ(Reserved)DataAbortPrefetchAbortSoftwareInterruptUndefinedInstructionReset0x1C0x180x140x100x0C0x080x040x0084進入異常的操作R14_<Exception_Mode>=ReturnLinkSPSR_<Exception_Mode>=CPSRCPSR[4:0]=ExceptionModeNumberCPSR[5]=0;當運轉于ARM形狀時IF<Exception_Mode>==ResetorFIQthen;當呼應FIQ異常時,制止新的FIQ異常CPSR[6]=1;CPSR[7]=1;PC=ExceptionVectorAddress當異常終了時,異常處置程序必需: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_fiqr

溫馨提示

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

最新文檔

評論

0/150

提交評論