版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第2章ARM處理器基礎(chǔ)2/5/2023教學(xué)要點(diǎn)ARM簡(jiǎn)介ARM處理器的分類流水線(pipeline)模式(model)和寄存器異常和異常向量表存儲(chǔ)和I/OAHBA總線ARM指令系統(tǒng)1ARM簡(jiǎn)介1.1ARM公司和ARM處理器1)ARM是一個(gè)CPU內(nèi)核。ARM公司自己并不生產(chǎn)或銷售芯片,它采用技術(shù)授權(quán)模式,通過(guò)出售芯片技術(shù)授權(quán),收取授權(quán)費(fèi)和技術(shù)轉(zhuǎn)讓費(fèi)。 2)基于ARM內(nèi)核的處理器是目前消費(fèi)類電 子市場(chǎng)中占有量第一的處理器,尤其是 手機(jī)行業(yè)。 3)ARM是“AdvancedRISCMachine” 的縮寫(xiě),最早的ARM處理器誕生于 80年代的英國(guó)。知識(shí)產(chǎn)權(quán):產(chǎn)品、規(guī)劃和路線圖CPUs從ARMv4T到ARMv6
結(jié)構(gòu)體系A(chǔ)RM系統(tǒng)級(jí)IP和設(shè)計(jì)方法AMBAReferencemethodologies軟件IPMediaengines-Move?,Swerve3D?先進(jìn)技術(shù)Java,security,multiprocessor軟件開(kāi)發(fā)工具RealView?-開(kāi)發(fā)工具和平臺(tái)ARM處理器的使用量ARM20031.2ARM處理器的特點(diǎn)支持CACHE和MMU馮·諾依曼體系結(jié)構(gòu)/哈佛體系結(jié)構(gòu)RISC指令集固定的32位指令Load/Store體系結(jié)構(gòu)大多數(shù)指令單周期完成流水線執(zhí)行Thumb\DSP\jazeller功能擴(kuò)展低功耗支持CACHE和MMU為什么采用高速緩存(Cache)?微處理器的時(shí)鐘頻率比內(nèi)存速度提高快得多,高速緩存可以提高內(nèi)存的平均性能。高速緩存的工作原理:高速緩存是一種小型、快速的存儲(chǔ)器,它保存部分主存內(nèi)容的拷貝。CPU高速緩存控制器CACHE主存數(shù)據(jù)高速數(shù)據(jù)地址寫(xiě)緩沖器塊數(shù)據(jù)MMU(MemoryManagementUnit)虛實(shí)地址變換內(nèi)存地址訪問(wèn)保護(hù)支持CACHE和MMU指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處理器存儲(chǔ)器程序指令0指令1指令2指令3指令4數(shù)據(jù)數(shù)據(jù)0數(shù)據(jù)1數(shù)據(jù)2ARM7馮·諾依曼體系結(jié)構(gòu)模型1)數(shù)據(jù)與指令都存儲(chǔ)在同一存儲(chǔ)區(qū)中,取指令與取數(shù)據(jù)利用同一數(shù)據(jù)總線。2)被早期大多數(shù)計(jì)算機(jī)所采用3)ARM7——馮諾依曼體系結(jié)構(gòu)簡(jiǎn)單,但速度較慢。取指不能同時(shí)取數(shù)據(jù)。馮·諾依曼體系結(jié)構(gòu)模型指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處理器程序存儲(chǔ)器指令0指令1指令2數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)0數(shù)據(jù)1數(shù)據(jù)2地址指令地址數(shù)據(jù)ARM9+哈佛體系結(jié)構(gòu)模型1)程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器分開(kāi)2)提供了較大的存儲(chǔ)器帶寬,各自有自己的總線3)適合于數(shù)字信號(hào)處理4)大多數(shù)DSP都是哈佛結(jié)構(gòu)5)ARM9是哈佛結(jié)構(gòu)取指和取數(shù)在同一周期進(jìn)行,提高速度。哈佛體系結(jié)構(gòu)模型RISC與CISCRISC和CISC是目前設(shè)計(jì)制造微處理器的兩種典型技術(shù),雖然它們都是試圖在體系結(jié)構(gòu)、操作運(yùn)行、軟件硬件、編譯時(shí)間和運(yùn)行時(shí)間等諸多因素中做出某種平衡,以求達(dá)到高效的目的,但采用的方法不同,因此,在很多方面差異很大,它們主要有:CISC:復(fù)雜指令集(ComplexInstructionSetComputer)具有大量的指令和尋址方式8/2原則:80%的程序只使用20%的指令大多數(shù)程序只使用少量的指令就能夠運(yùn)行CISCCPU包含有豐富的單元電路,因而功能強(qiáng)、面積大、功耗大RISC:精簡(jiǎn)指令集(ReducedInstructionSetComputer)在通道中只包含最有用的指令確保數(shù)據(jù)通道快速執(zhí)行每一條指令使CPU硬件結(jié)構(gòu)設(shè)計(jì)變得更為簡(jiǎn)單
RISCCPU包含較少的單元電路,因而面積小、功耗低RISC與CISCCISCIFIDREGALUMEM開(kāi)始退出IFIDALUMEMREG微操作通道開(kāi)始退出單通數(shù)據(jù)通道RISC流水線操作流水線技術(shù):幾個(gè)指令可以并行執(zhí)行提高了CPU的運(yùn)行效率內(nèi)部信息流要求通暢流動(dòng)譯碼取指執(zhí)行add譯碼取指執(zhí)行sub譯碼取指執(zhí)行cmp時(shí)間AddSubCmpARMRISC體系結(jié)構(gòu)1.4命名的含義標(biāo)志含義說(shuō)明T支持Thumb指令集Thumb指令集版本1:ARMv4TThumb指令集版本2:ARMv5TThumb-2:ARMv6TD片上調(diào)試M支持長(zhǎng)乘法32位乘32位得到64位,32位的乘加得到64位IEmbeddedICEEDSP指令增加了DSP算法處理器指令:16位乘加指令,飽和的帶符號(hào)數(shù)的加減法,雙字?jǐn)?shù)據(jù)操作,cache預(yù)取指令JJava加速器Jazelle提高java代碼的運(yùn)行速度S可綜合提供VHDL或Verilog語(yǔ)言設(shè)計(jì)文件ARMprocessor’snameARM926EJ-SFamilynumber7:ARM79:ARM910:ARM1011:ARM11Memorysystem
2:Cache,MMU,ProcessID4:Cache,MPU6:Writebuffer,nocacheMemorysize0:Cachesize(4-128KB)2:Reducedcachesize6:TCMSynthesizableExtensions
E:DSPextensionJ:Jazelleextension
T:Thumbsupport…2ARM處理器的分類基于處理器內(nèi)核的分類ARM7T,ARM7E,ARM9,ARM9E,ARM10T,ARM10E,ARM11基于指令集體系結(jié)構(gòu)的分類v4T,v5T,v5TE,v5TEJ,v62.1ARMCore(ARM核)處理器核/整數(shù)核(ProcessorCore/IntegerCore):ARM7TDMI,ARM9TDMI,ARM9E-S,ARM10TDMI,ARM10E等。ARMCPU核(ARMCPUCores):
ARM710T/720T/740T,ARM920T/940T,ARM946E-S,ARM966E-S,ARM1020E等?;贏RMCoreCPU的應(yīng)用處理器,比如:Intel的PXA25x,Philip的lpc22xx系列,Samsung的S3C44B0等。ARM7T和ARM7EFamilyUnifiedCache內(nèi)存管理流水線級(jí)別ThumbDSPJazelleARM7TDMI無(wú)無(wú)3有無(wú)無(wú)ARM7TDMI-S無(wú)無(wú)3有無(wú)無(wú)ARM710T/720T8kMMU3有無(wú)無(wú)ARM740T8k或4kProtectionUnit3有無(wú)無(wú)ARM7EJ-S無(wú)無(wú)3有有有ARM7系列的升級(jí)EmbeddedTraceMacrocell----ETMARM9FamilyCache內(nèi)存管理流水線級(jí)別ThumbDSPJazelleARM9TDMI無(wú)無(wú)5有無(wú)無(wú)ARM920T16K/16kMMU5有無(wú)無(wú)ARM922T8k/8kMMU5有無(wú)無(wú)ARM940T4k/4kProtectionUnit5有無(wú)無(wú)ARM9系列的升級(jí)ARM9EFamilyCache內(nèi)存管理流水線級(jí)別ThumbDSPJazelleARM9E-S無(wú)無(wú)5有有無(wú)ARM946E-S4k-1M/4k-1MProtectionUnit5有有無(wú)ARM966E-S無(wú)無(wú)5有有無(wú)ARM968E-S無(wú)無(wú)5有有無(wú)ARM9EJ-S無(wú)無(wú)5/6有有有ARM926EJ-S14k-128k/4k-128kMMU5/6有有有ARM9E系列的升級(jí)ARM926EJ-SARM946E-SARM966E-SARM10E和ARM10TFamilyARM10EJ-S無(wú)無(wú)6有有有ARM1026EJ-S0,4-128k/0,4-128kMMU6有有有Cache內(nèi)存管理流水線級(jí)別ThumbDSPJazelleARM10E無(wú)無(wú)6有有無(wú)ARM1020E32k/32kMMU6有有無(wú)ARM1022E16k/16kMMU6有有無(wú)ARM10TDMI無(wú)無(wú)6有無(wú)無(wú)ARM1020T32k/32kMMU6有無(wú)無(wú)ARM11FamilyCache內(nèi)存管理流水線級(jí)別ThumbDSPJazelle浮點(diǎn)運(yùn)算ARM1136J-S4-64kMMU8有有有無(wú)ARM1136JF-S4-64kMMU8有有有有ARM1156T2-S可配置9Thumb-2有無(wú)無(wú)ARM1156T2F-S可配置9Thumb-2有無(wú)有StrongARM和XScaleSA-1110(基于StrongARM)內(nèi)核SA-116kI-Cache+8kD-CacheI-MMU+D-MMUPXA25x/26x/27xIXP2400(基于XScale)內(nèi)核XScale7/8級(jí)流水線32kI-Cache+32kD-CacheI-MMU+D-MMU2.2指令集體系結(jié)構(gòu)(ISA)ThumbDSPJazelleMediaTrustZoneThumb-2v4StrongARMv4T*ARM7T,ARM9v5T*ARM10T,XScalev5TE**ARM9E,ARM10Ev5TEJ***ARM7EJ,ARM9EJ,ARM10EJv6****ARM1136J(F)-Sv6Z*****v6T2*****ARM1156T2(F)-S注:v5T支持的Thumb是對(duì)v4T中的Thumb的擴(kuò)展指令集體系結(jié)構(gòu)流水線方式是把一個(gè)重復(fù)的過(guò)程分解為若干個(gè)子過(guò)程,每個(gè)子過(guò)程可以與其他子過(guò)程同時(shí)進(jìn)行。由于這種工作方式與工廠中的生產(chǎn)流水線十分相似,因此,把它稱為流水線工作方式。3流水線3.1ARM7的流水線指令流水線的目的是提高執(zhí)行速度。PC指向的是預(yù)取指令,因此如果直接讀取PC值,得到的是“當(dāng)前指令地址+8”從內(nèi)存中取指令指令譯碼執(zhí)行指令/讀寫(xiě)REG指令流水線的目的是提高執(zhí)行速度。PC指向的是預(yù)取指令,因此如果直接讀取PC值,得到的是并不是當(dāng)前正在執(zhí)行的指令地址。CUP中的一條指令的執(zhí)行可以分若干個(gè)階段:1.取指,從存儲(chǔ)器中取出指令(fetch)2.譯碼,指令譯碼(dec)3.取操作數(shù),假定操作數(shù)從寄存器組中?。╮eg)4.執(zhí)行運(yùn)算(ALU)5.存儲(chǔ)器訪問(wèn)(mem)6.結(jié)果寫(xiě)回寄存器(res)各個(gè)階段的操作相對(duì)都是獨(dú)立的。因此,可以采用流水線的重疊技術(shù),可以大大提高系統(tǒng)的性能。指令流水線ARM7TDMIProcessorCore馮·諾依曼
架構(gòu)三級(jí)流水線快速中斷響應(yīng)性能指標(biāo):0.9DhrystoneMIPs/MHzEmbedded
ICE-RT調(diào)試邏輯NomemorymanagementNocacheCPI=1.9
使用最廣泛的32位嵌入式內(nèi)核主要應(yīng)用領(lǐng)域:個(gè)人音頻設(shè)備手機(jī)和移動(dòng)通信終端Modems,xDSL,CableModemsATMandEthernet網(wǎng)絡(luò)設(shè)備打印機(jī)數(shù)碼相機(jī)PDA機(jī)頂盒ARM7內(nèi)核使用3級(jí)流水線,以提高指令流傳遞給處理器的速度,使得某些操作達(dá)到并行處理的效果,比單純的串行處理要好。PC指向處于指令讀取級(jí)的指令地址,而不是處于執(zhí)行級(jí)的指令地址。FETCHDECODEEXECUTE從存儲(chǔ)器讀取指令譯碼讀寄存器移位和算術(shù)邏輯運(yùn)算寫(xiě)寄存器PC PCPC-4 PC-2PC-8 PC-4ARM Thumb指令流水線本例中6個(gè)時(shí)鐘周期內(nèi)一共完成了6條指令全部對(duì)寄存器進(jìn)行操作(單周期執(zhí)行)指令周期數(shù)(CPI)=1
OperationCycle 1 23 4 56ADDSUBMOVANDORREORCMPRSBFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteDecodeExecuteFetchDecodeFetchFetch優(yōu)秀的流水線結(jié)構(gòu)本例中6個(gè)時(shí)鐘周期內(nèi)一共完成了4條指令指令周期數(shù)(CPI)=1.5Cycle
Operation 1 23456ADDSUBLDRMOVANDORRFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteDataWritebackFetchDecodeExecuteFetchDecodeFetch流水線執(zhí)行舉例:LDRARM9TDMI5級(jí)流水線性能改進(jìn)提升CPI至~1.5提高時(shí)鐘頻率ARM9TDMI流水線InstructionFetchShift+ALUMemoryAccessRegWriteRegReadRegDecodeFETCHDECODEEXECUTEMEMORYWRITEARM9TDMIARMorThumb
InstDecodeRegSelectRegReadShiftALURegWriteThumb?ARM
decompressARMdecodeInstructionFetchFETCHDECODEEXECUTEARM7TDMICycleOperationADD R1,R1,R2SUB R3,R4,R1ORR R8,R3,R4AND R6,R3,R1EOR R3,R1,R212345678LDR
R4,[R7]9FDEFDEWFDEWFDEWFDWEFDEWF-Fetch D
-Decode E-Execute I-Interlock M-MemoryW–Write-backILDR內(nèi)部周期本例中7個(gè)時(shí)鐘周期完成6條指令,CPI等于1.2Interlock:LDR后面的指令馬上要用到LDR的結(jié)果寄存器,導(dǎo)致插入一個(gè)內(nèi)部周期WIM3.2更多級(jí)的流水線ARM10采用了6級(jí)流水線,但是處于兼容考慮,直接讀取PC值依然等于“當(dāng)前指令地址+8”。3.3流水線對(duì)程序的影響lr=lr&15;lr=pc+lr*4;cpsr=spsr;pc=lr;
and lr,lr,#15 ldr lr,[pc,lr,lsl#2] movs pc,lr .LCtab_irq: .word __irq_usr @0x0 .word __irq_invalid @0x1 .word __irq_invalid @0x2 .word __irq_svc @0x3 .word __irq_invalid @0x4 …… .word __irq_invalid @0xf3.4指令預(yù)取和自修改代碼流水線使得CPU在執(zhí)行當(dāng)前指令的同時(shí),從存儲(chǔ)器中預(yù)取其后若干條指令。預(yù)取的指令不一定得到執(zhí)行。比如發(fā)生跳轉(zhuǎn)或中斷。自修改代碼指的是代碼在執(zhí)行過(guò)程中可能修改自身。被修改的指令可能和預(yù)取得指令不同,從而產(chǎn)生錯(cuò)誤。相鄰指令執(zhí)行的數(shù)據(jù)相關(guān)性會(huì)產(chǎn)生指令執(zhí)行的停頓(stall),嚴(yán)重的會(huì)產(chǎn)生數(shù)據(jù)災(zāi)難(hazards)。如圖所示,第2條指令的reg操作需要第1條指令執(zhí)行的結(jié)果(res),因此,第2條指令在執(zhí)行時(shí),不得不產(chǎn)生停頓。另外碰到分支類指令,那么,會(huì)使后面緊接該條指令的幾條指令的執(zhí)行都會(huì)無(wú)效,如圖所示。4模式和寄存器模式分類ARM處理器的寄存器狀態(tài)寄存器異常和異常向量表4.1模式分類ARM一共有7種執(zhí)行模式:User:非特權(quán)級(jí)模式,多數(shù)應(yīng)用程序使用的模式FIQ:進(jìn)入快速中斷響應(yīng)時(shí)IRQ:進(jìn)入一般中斷響應(yīng)時(shí)Supervisor:復(fù)位后的缺省模式,或進(jìn)入軟件中斷響應(yīng)時(shí)Abort:遇到存儲(chǔ)器訪問(wèn)出錯(cuò)時(shí)Undef:遇到未定義指令時(shí)System:特權(quán)級(jí)的User模式4.2ARM處理器的寄存器ARM一共有37個(gè)32位的寄存器1個(gè)PC寄存器1個(gè)CPSR(當(dāng)前狀態(tài)寄存器)5個(gè)SPSR(狀態(tài)保留寄存器)30個(gè)通用寄存器當(dāng)前的處理器模式?jīng)Q定了可以訪問(wèn)到的寄存器組,以下是對(duì)所有模式都有的寄存器一組特定的r0-r12寄存器一個(gè)特定的r13(堆棧指針,sp)和r14(連接寄存器,lr)PC寄存器
r15當(dāng)前狀態(tài)寄存器cpsr特權(quán)模式(System模式除外)獨(dú)有的特定的spsr(狀態(tài)保留寄存器)ARM處理器的寄存器User/SystemSupervisorAbortUndefinedInterruptFIQR0R0R0R0R0R0R1R1R1R1R1R1R2R2R2R2R2R2R3R3R3R3R3R3R4R4R4R4R4R4R5R5R5R5R5R5R6R6R6R6R6R6R7R7R7R7R7R7R8R8R8R8R8R8_FIQR9R9R9R9R9R9_FIQR10R10R10R10R10R10_FIQR11R11R11R11R11R11_FIQR12R12R12R12R12R12_FIQR13R13_SVCR13_ABORTR13_UNDEFR13_IRQR13_FIQR14R14_SVCR14_ABORTR14_UNDEFR14_IRQR14_FIQPCPCPCPCPCPC
CPSRCPSRCPSRCPSRCPSRCPSR
SPSR_SVCSPSR_ABORTSPSR_UNDEFSPSR_IRQSPSR_FIQ寄存器組織User
mode
r0-r7,
r15,
and
cpsrr8r9r10r11r12r13(sp)r14(lr)spsrFIQr8r9r10r11r12r13(sp)r14(lr)r15(pc)cpsrr0r1r2r3r4r5r6r7Userr13(sp)r14(lr)spsrIRQUser
mode
r0-r12,
r15,
and
cpsrr13(sp)r14(lr)spsrUndefUser
mode
r0-r12,
r15,
and
cpsrr13(sp)r14(lr)spsrSVCUser
mode
r0-r12,
r15,
and
cpsrr13(sp)r14(lr)spsrAbortUser
mode
r0-r12,
r15,
and
cpsrThumbstateLowregistersThumbstateHighregistersNote:SystemmodeusestheUsermoderegistersetARM處理器的寄存器r0—r12:通用寄存器。當(dāng)C和匯編互相調(diào)用時(shí),r0~r3用來(lái)傳遞函數(shù)參數(shù),可記為a0~a3r13:用于各工作態(tài)的堆棧寄存器(sp)r14:用來(lái)保護(hù)程序返回地址的鏈接寄存器(lr)r15:程序計(jì)數(shù)器(pc)r8_FIQ—r12_FIQ:允許快速中斷處理r8_User—r12_User:除了FIQ外各模式公用除了User和System模式外,各種模式都有自己獨(dú)立的r13和r144.3狀態(tài)寄存器條件標(biāo)識(shí)位N=
結(jié)果為負(fù)Z=結(jié)果為零C=進(jìn)位V=溢出Q標(biāo)識(shí)位只在5TE/J系列中有效指示stickyoverflow的發(fā)生J標(biāo)識(shí)位僅在5TEJ系列中有效J=1:處理器處于Jazelle狀態(tài)中斷使能位I=1:禁止IRQ.F=1:禁止FIQ.T標(biāo)識(shí)位只在xT系列內(nèi)核中有效T=0:處理器處于ARM狀態(tài)T=1:處理器處于Thumb狀態(tài)模式位指示當(dāng)前處理器模式2731NZCVQ2867IFTmode162381554024fsxc
UndefinedJCPSR/SPSRM[4:0]模式AccessibleRegisters10000UserPC,R14toR0,CPSR10001FIQPC,R14_FIQtoR8_FIQ,R7toR0,CPSR,SPSR_FIQ10010IRQPC,R14_IRQ,R13_IRQ,R12toR0,CPSR,SPSR_IRQ10011SVCPC,R14_SVC,R13_SVC,R12toR0,CPSR,SPSR_SVC10111AbortPC,R14_ABORT,R13_ABORT,R12toR0,CPSR,SPSR_ABORT11011UndefPC,R14_UNDEF,R13_UNDEF,R12toR0,CPSR,SPSR_UNDEF11111SystemPC,R14toR0,CPSR(Architecture4only)PC寄存器(r15)當(dāng)處理器處于ARM狀態(tài)時(shí):所有指令都是32位長(zhǎng)度所有指令存儲(chǔ)必須word對(duì)齊pc[31:2]有效,[1:0]未定義當(dāng)處理器處于Thumb狀態(tài)時(shí):所有指令都是16位長(zhǎng)度所有指令存儲(chǔ)必須halfword對(duì)齊pc[31:1]位有效,最低位未定義當(dāng)處理器處于Jazelle狀態(tài)時(shí):所有指令都是8位長(zhǎng)度處理器一次執(zhí)行1個(gè)word的讀取指令獲得4條Java指令注意在指令中訪問(wèn)PC寄存器的值不是當(dāng)前指令地址5異常和異常向量表異常的產(chǎn)生異常優(yōu)先級(jí)異常處理異常返回指令5.1異常的產(chǎn)生直接異常:軟件中斷,未定義指令(包括所要求的協(xié)處理器不存在時(shí)的協(xié)處理器命令)和預(yù)取指令間接異常:數(shù)據(jù)中止(在Load和Store數(shù)據(jù)訪問(wèn)時(shí)的存儲(chǔ)器故障)外部異常:復(fù)位,IRQ和FIQ5.2異常優(yōu)先級(jí)異常在當(dāng)前指令執(zhí)行完成之后才被響應(yīng)多個(gè)異常可以在同一時(shí)間產(chǎn)生異常指定了優(yōu)先級(jí)和固定的服務(wù)順序:ResetDataAbortFIQIRQPrefetchAbortSWIUndefinedinstructionVectorTableVectortablecanbeat
0xFFFF0000onARM720T
andonARM9/10familydevicesFIQIRQ(Reserved)DataAbortPrefetchAbortSoftwareInterruptUndefinedInstructionReset0x1C0x180x140x100x0C0x080x040x005.3異常處理當(dāng)異常產(chǎn)生時(shí),ARMcore:拷貝CPSR到SPSR_<mode>設(shè)置適當(dāng)?shù)腃PSR位:改變處理器狀態(tài)進(jìn)入ARM狀態(tài)改變處理器模式進(jìn)入相應(yīng)的異常模式設(shè)置中斷禁止位禁止相應(yīng)中斷保存返回地址到LR_<mode>設(shè)置PC到相應(yīng)的異常向量返回時(shí),異常處理需要:從SPSR_<mode>恢復(fù)CPSR從LR_<mode>恢復(fù)PC這些操作只能在ARM態(tài)執(zhí)行.從SWI和Undef異常返回 MOVSpc,lr從FIQ,IRQ和預(yù)取異常(PrefectAbort)返回
SUBSpc,lr,#4
從數(shù)據(jù)異常(DataAbort)返回
SUBSpc,lr,#8
若LR之前被壓棧,使用LDM“^”
LDMFDsp!,{pc}^異常返回:使用一數(shù)據(jù)處理指令:相應(yīng)的指令取決于什么樣的異常帶S位把PC作為目標(biāo)寄存器在特權(quán)模式下,這些操作不僅更新PC,而且拷貝SPSR到CPSR5.4異常返回指令匯編指令中的^和S標(biāo)記可用于異常返回,恢復(fù)PC的同時(shí)恢復(fù)CPSR。如果使用堆棧返回,預(yù)先保存在棧中的返回地址要求以做好調(diào)整。在異常返回時(shí)使用類似如下指令:“l(fā)dmfdr13!,(r0-r3,pc)^”1)“^”后綴不允許在usr和svc模式下使用。2)如果用在LDM指令中,且寄存器列表中含有PC時(shí),那么除了正常的多寄存器傳送外,將SPSR拷貝到CPSR中。這一特點(diǎn)用于異常處理返回。ARMorThumb?Thumb/ARM混合應(yīng)用程序ARMCodeARMCodeThumb
CodeFIQIRQ(Reserved)DataAbortPrefetchAbortSoftwareInterruptUndefinedInstructionResetFIQvsIRQFIQ和IRQ提供了非?;镜膬?yōu)先級(jí)級(jí)別。在下邊兩種情況下,F(xiàn)IQs有高于IRQs的優(yōu)先級(jí):當(dāng)多個(gè)中斷產(chǎn)生時(shí),F(xiàn)IQ高于IRQ.處理FIQ時(shí)禁止IRQs.IRQs將不會(huì)被響應(yīng)直到FIQ處理完成.FIQs的設(shè)計(jì)使中斷處理盡可能地快.FIQ向量位于中斷向量表的最末.為了使中斷處理程序可從中斷向量處連續(xù)執(zhí)行FIQ模式有5個(gè)額外的私有寄存器(r8-r12)中斷處理必須保護(hù)其使用的非私有寄存器可以有多個(gè)FIQ中斷源,但是考慮到系統(tǒng)性能應(yīng)避免嵌套。6ARM的存儲(chǔ)和I/O空間特點(diǎn)大端和小端非對(duì)齊的存儲(chǔ)訪問(wèn)6.1特點(diǎn)ARM體系同時(shí)支持大端/小端。32位地址線/數(shù)據(jù)線,支持如下數(shù)據(jù)類型:字節(jié)(byte)8bits半字(Halfword)16bits,半字必須對(duì)齊2字節(jié)邊界字(Word)32bits,字必須對(duì)齊4字節(jié)邊界ARM的I/O空間采用統(tǒng)一編址方式。ARM可以通過(guò)配置支持兩種endianr0=0x11223344STRr0,[r1]LDRBr2,[r1]r1=0x100Memory32100123ByteLane312423161587011223344312423161587011223344312423161587011223344312423161587000000044312423161587000000011LittleendianBigendianR2=0x44R2=0x116.2EndianConfiguration/大端和小端Littleendian:Bigendian6.3非對(duì)齊的存儲(chǔ)訪問(wèn)非對(duì)齊的取指不可預(yù)知結(jié)果。ARM狀態(tài):忽略低2兩位;Thumb狀態(tài):忽略最低位。忽略由存儲(chǔ)器實(shí)現(xiàn)。非對(duì)齊的數(shù)據(jù)訪問(wèn)執(zhí)行結(jié)果不可預(yù)知。忽略字單元地址的最低兩位;忽略半字單元地址的最低位。忽略可能由處理器或存儲(chǔ)器完成。7AMBA總線當(dāng)ARM核作為一個(gè)元件集成到復(fù)雜的系統(tǒng)芯片上時(shí),需要某種接口和其它元件進(jìn)行通訊,這就是AMBA總線。ARM研發(fā)的AMBA(Advanced
Microcontroller
Bus
Architecture)提供一種特殊的機(jī)制,可將RISC處理器集成在其它IP芯核和外設(shè)中,2.0版AMBA標(biāo)準(zhǔn)定義了三組總線:AHB(AMBA高性能總線):用于高性能、高數(shù)據(jù)吞吐部件,如CPU、DMA、DSP之間的互連。ASB(AMBA系統(tǒng)總線):用來(lái)作處理器與外設(shè)之間的互連,將被AHB取代。APB(AMBA外設(shè)總線):為系統(tǒng)的低速外部設(shè)備提供低功耗的簡(jiǎn)易互連。系統(tǒng)總線和外設(shè)總線之間的橋接器提供AHB/ASP部件與APB部件間的訪問(wèn)代理與緩沖。ARM核片內(nèi)RAMDMA控制器橋路UART定時(shí)器并口APBAHB/ASB外部總線接口測(cè)試接口控制AHB用來(lái)研發(fā)寬帶寬處理器芯核的片上總線。應(yīng)用于高性能、高時(shí)鐘頻率的系統(tǒng)模塊,它構(gòu)成了高性能的系統(tǒng)骨干總線(
back-bone
bus
)。它主要支持的特性是:用于高性能、高數(shù)據(jù)吞吐部件,如CPU、DMA、DSP之間數(shù)據(jù)突發(fā)傳輸(
burst
transfer
)數(shù)據(jù)分割傳輸(
split
transaction
)流水線方式一個(gè)周期內(nèi)完成總線主設(shè)備(master)對(duì)總線控制權(quán)的交接單時(shí)鐘沿操作內(nèi)部無(wú)三態(tài)實(shí)現(xiàn)更寬的數(shù)據(jù)總線寬度(最低32位,最高可達(dá)1024位,但推薦不要超過(guò)256位)是第一代AMBA系統(tǒng)總線,同AHB相比,它數(shù)據(jù)寬度要小一些,它支持的典型數(shù)據(jù)寬度為8位、16位、32位。它的主要特征如下:流水線方式數(shù)據(jù)突發(fā)傳送多總線主設(shè)備內(nèi)部有三態(tài)實(shí)現(xiàn)
是本地二級(jí)總線(local
secondary
bus
),通過(guò)橋和AHB/ASB相連。它主要是為了滿足不需要高能流水線接口或不需要高帶寬接口的設(shè)備的互連。APB的總線信號(hào)經(jīng)改進(jìn)后全和時(shí)鐘上升沿相關(guān),這種改進(jìn)的主要優(yōu)點(diǎn)如下:更易達(dá)到高頻率的操作性能和時(shí)鐘的占空比無(wú)關(guān)單時(shí)鐘沿簡(jiǎn)化了更易與基于周期的仿真器集成APB
只有一個(gè)APB橋,它將來(lái)自AHB/ASB的信號(hào)轉(zhuǎn)換為合適的形式以滿足掛在APB上的設(shè)備的要求。橋要責(zé)鎖存地址、數(shù)據(jù)以及控制信號(hào),同時(shí)要進(jìn)行二次譯碼以選擇相應(yīng)的APB設(shè)備ARM指令集總體分為6類指令跳轉(zhuǎn)指令:B和BL數(shù)據(jù)處理指令:數(shù)據(jù)傳輸指令,算術(shù)指令,邏輯指令,比較指令,乘法指令,前導(dǎo)零計(jì)數(shù)訪存指令:?jiǎn)螖?shù)據(jù)訪存指令,多數(shù)據(jù)訪存指令,信號(hào)量操作指令程序狀態(tài)訪問(wèn)指令:MRS和MSR協(xié)處理器指令異常指令:SWI和BKPT8ARM指令系統(tǒng)所有指令都是32bit大多數(shù)指令都在單周期內(nèi)完成所有指令都可以條件執(zhí)行l(wèi)oad/store體系結(jié)構(gòu)指令集可以通過(guò)協(xié)處理器擴(kuò)展8.1ARM指令特點(diǎn)<Opcode>{<cond>}{s}<Rd>,<Rn>,<Operand2>Cond:指令的條件碼Opcode:指令操作碼S:操作是否影響cpsrRn:包含第一個(gè)操作數(shù)的寄存器編碼Rd:目標(biāo)寄存器編碼Operand2:第2操作數(shù)Cond001OpcodeSRnRdOperand20111215161920212425272831788.2ARM指令的格式8.3ARM指令的條件執(zhí)行所有的ARM指令可包含一個(gè)可選的條件碼,只有在cpsr中的條件標(biāo)志位滿足指定的條件時(shí),指令才會(huì)被執(zhí)行。不符合條件的代碼依然占用一個(gè)時(shí)鐘周期(相當(dāng)于一個(gè)NOP指令)。//r0,r1,r2,r3,r4:a,b,c,d,ecmp r0,r1cmpeq r2,r3addeq r4,r4,#1if((a==b)&&(c==d)){ e++;}ARM指令的條件域EQ/NE:等于/不等于(equal/notequal)HS/LO:無(wú)符號(hào)數(shù)高于或等于/無(wú)符號(hào)數(shù)小于(higherorsame/lower)HI/LS:無(wú)符號(hào)數(shù)高于/無(wú)符號(hào)數(shù)低于或等于(higher/lowerorsame)GE/LT:有符號(hào)數(shù)大于或等于/有符號(hào)數(shù)小于(greaterorequal/lessthan)GT/LE:有符號(hào)數(shù)大于/有符號(hào)數(shù)小于或等于(greaterthan/lessorequal)MI/PL:負(fù)/非負(fù)VS/VC:溢出/不溢出(overflowset/overflowclear)CS/CC:進(jìn)位/無(wú)進(jìn)位(carryset/carryclear)0000EQZ置位相等/等于00001NEZ清0不等0010CS/HSC置位進(jìn)位/無(wú)符號(hào)高于或等于0011CC/LOC清0無(wú)進(jìn)位/無(wú)符號(hào)低于0100MIN置位負(fù)數(shù)0101PLN清0非負(fù)數(shù)0110VSV置位溢出0111VCV清0無(wú)溢出ARM指令的條件碼ARM指令的條件碼1000HIC置位且Z清0無(wú)符號(hào)高于1001LSC清0或Z置位無(wú)符號(hào)低于或等于1010GEN等于V有符號(hào)大于或等于1011LTN不等于V有符號(hào)小于1100GTZ清0且N等于V有符號(hào)大于1101LEZ置位或N不等于V有符號(hào)小于或等于1110AL任何狀態(tài)總是(always)1111NV無(wú)從不(never)注:AL是默認(rèn)的,NV不建議使用。4.4數(shù)據(jù)處理指令數(shù)據(jù)傳輸指令:mov和mvn算數(shù)指令:add、adc、sub、sbc,rsb和rsc邏輯指令:and、orr、eor和bic比較指令:cmp、cmn、tst和teq所有的操作數(shù)要么來(lái)自寄存器,要么來(lái)自立即數(shù),不會(huì)來(lái)自內(nèi)存。如果有結(jié)果,則結(jié)果一定是為32位寬,并且放在一個(gè)寄存器中,不會(huì)寫(xiě)入內(nèi)存。(有一個(gè)例外:長(zhǎng)乘法指令產(chǎn)生64位結(jié)果)每一個(gè)操作數(shù)寄存器和結(jié)果寄存器都在指令中獨(dú)立指出,即:ARM指令采用3地址模式:
<Operation>Rd,Rn,Rm數(shù)據(jù)處理指令的特點(diǎn)addr0,r1,#0xffaddr0,r1,r1,LSLr2CondSRnRd第2操作數(shù)078111215161920opcode212400X25272831#immed_8#rot0781100000000Rm03411方式1:#immed方式2:Rm0000Rm03411Rs78方式3:RmLSLRsshiftRm03411#immed_567方式4:RmLSL#immed_5(#immed_5取值范圍0-31)addr0,r1,r1,LSL#31四種尋址方式和s后綴四種尋址方式的硬件支持寄存器,可能需要移位。如需移位,移位值可為:5bit的無(wú)符號(hào)整數(shù)(0-31)在指令的最低字節(jié)指定的另一寄存器立即數(shù)
8比特?cái)?shù)
8比特?cái)?shù)循環(huán)右移偶數(shù)位右移位數(shù)由匯編器自動(dòng)計(jì)算立即數(shù)尋址ARM指令中的立即數(shù),由一個(gè)8bit的常數(shù)循環(huán)右移偶數(shù)位得到:立即數(shù)=(0->255)循環(huán)右移2N位,其中:0<=N<=12例子:合法立即數(shù):0x3fc,0x0,0xf0000000,0xf0000001非法立即數(shù):0x1fe,0xffff,0x1010,0xf0000010同一個(gè)立即數(shù)可能有多個(gè)表示方法。如:0x3f0=0x3f循環(huán)右移28位0x3f0=0xfc循環(huán)右移30位對(duì)立即數(shù)的編碼規(guī)則:如果立即數(shù)在0–0xff之間,移位數(shù)為0。否則,就取決于編譯器了。指令“movr0,#0x3f0”在ADS1.2中被編譯為0xe3a00ffc,在arm-elf-gcc-2.95.3中被編譯為0xe3a00e3f。立即數(shù)尋址對(duì)于有互補(bǔ)操作的指令,編譯器可以做智能的轉(zhuǎn)換,比如:mvnr1,0xffffff00 -> movr1,0xffaddr1,r1,#0xff
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025物資采購(gòu)合同管理規(guī)定
- 二零二五年度柴油運(yùn)輸行業(yè)競(jìng)業(yè)禁止與市場(chǎng)調(diào)研合同3篇
- 2025年度全新競(jìng)業(yè)協(xié)議失效一個(gè)月競(jìng)業(yè)限制解除申請(qǐng)總結(jié)3篇
- 2025年度農(nóng)業(yè)機(jī)械作業(yè)與農(nóng)業(yè)廢棄物資源化利用合作協(xié)議3篇
- 二零二五年度水泥行業(yè)節(jié)能減排合作協(xié)議3篇
- 二零二五年度綠色能源解決方案整體轉(zhuǎn)讓合同版3篇
- 二零二五年度企業(yè)風(fēng)險(xiǎn)管理及內(nèi)部控制優(yōu)化合同3篇
- 2025年度教育機(jī)構(gòu)教育資源轉(zhuǎn)讓協(xié)議3篇
- 2025年度男女朋友共同購(gòu)房及按揭還款協(xié)議3篇
- 2025年度建筑廢棄物資源化利用合同書(shū)模板3篇
- 顱內(nèi)壓增高病人的護(hù)理
- 高考日語(yǔ)基礎(chǔ)歸納總結(jié)與練習(xí)(一輪復(fù)習(xí))
- 會(huì)計(jì)科目涉稅風(fēng)險(xiǎn)點(diǎn)風(fēng)險(xiǎn)
- 香椿矮化密植栽培
- GB/T 4214.3-2023家用和類似用途電器噪聲測(cè)試方法洗碗機(jī)的特殊要求
- 建設(shè)工程質(zhì)量控制講義三
- YY/T 0606.7-2008組織工程醫(yī)療產(chǎn)品第7部分:殼聚糖
- 2023年遼寧軌道交通職業(yè)學(xué)院高職單招(英語(yǔ))試題庫(kù)含答案解析
- GB/T 29076-2021航天產(chǎn)品質(zhì)量問(wèn)題歸零實(shí)施要求
- DL-T 5190.1-2022 電力建設(shè)施工技術(shù)規(guī)范 第1部分:土建結(jié)構(gòu)工程(附條文說(shuō)明)
- 殯葬服務(wù)人才需求調(diào)研報(bào)告
評(píng)論
0/150
提交評(píng)論