![第2章 ARM處理器基礎(chǔ)_第1頁](http://file4.renrendoc.com/view/bd464ce8e3718633aa00c02c218bbd64/bd464ce8e3718633aa00c02c218bbd641.gif)
![第2章 ARM處理器基礎(chǔ)_第2頁](http://file4.renrendoc.com/view/bd464ce8e3718633aa00c02c218bbd64/bd464ce8e3718633aa00c02c218bbd642.gif)
![第2章 ARM處理器基礎(chǔ)_第3頁](http://file4.renrendoc.com/view/bd464ce8e3718633aa00c02c218bbd64/bd464ce8e3718633aa00c02c218bbd643.gif)
![第2章 ARM處理器基礎(chǔ)_第4頁](http://file4.renrendoc.com/view/bd464ce8e3718633aa00c02c218bbd64/bd464ce8e3718633aa00c02c218bbd644.gif)
![第2章 ARM處理器基礎(chǔ)_第5頁](http://file4.renrendoc.com/view/bd464ce8e3718633aa00c02c218bbd64/bd464ce8e3718633aa00c02c218bbd645.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第2章ARM處理器基礎(chǔ)2/5/2023教學要點ARM簡介ARM處理器的分類流水線(pipeline)模式(model)和寄存器異常和異常向量表存儲和I/OAHBA總線ARM指令系統(tǒng)1ARM簡介1.1ARM公司和ARM處理器1)ARM是一個CPU內(nèi)核。ARM公司自己并不生產(chǎn)或銷售芯片,它采用技術(shù)授權(quán)模式,通過出售芯片技術(shù)授權(quán),收取授權(quán)費和技術(shù)轉(zhuǎn)讓費。 2)基于ARM內(nèi)核的處理器是目前消費類電 子市場中占有量第一的處理器,尤其是 手機行業(yè)。 3)ARM是“AdvancedRISCMachine” 的縮寫,最早的ARM處理器誕生于 80年代的英國。知識產(chǎn)權(quán):產(chǎn)品、規(guī)劃和路線圖CPUs從ARMv4T到ARMv6
結(jié)構(gòu)體系A(chǔ)RM系統(tǒng)級IP和設(shè)計方法AMBAReferencemethodologies軟件IPMediaengines-Move?,Swerve3D?先進技術(shù)Java,security,multiprocessor軟件開發(fā)工具RealView?-開發(fā)工具和平臺ARM處理器的使用量ARM20031.2ARM處理器的特點支持CACHE和MMU馮·諾依曼體系結(jié)構(gòu)/哈佛體系結(jié)構(gòu)RISC指令集固定的32位指令Load/Store體系結(jié)構(gòu)大多數(shù)指令單周期完成流水線執(zhí)行Thumb\DSP\jazeller功能擴展低功耗支持CACHE和MMU為什么采用高速緩存(Cache)?微處理器的時鐘頻率比內(nèi)存速度提高快得多,高速緩存可以提高內(nèi)存的平均性能。高速緩存的工作原理:高速緩存是一種小型、快速的存儲器,它保存部分主存內(nèi)容的拷貝。CPU高速緩存控制器CACHE主存數(shù)據(jù)高速數(shù)據(jù)地址寫緩沖器塊數(shù)據(jù)MMU(MemoryManagementUnit)虛實地址變換內(nèi)存地址訪問保護支持CACHE和MMU指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處理器存儲器程序指令0指令1指令2指令3指令4數(shù)據(jù)數(shù)據(jù)0數(shù)據(jù)1數(shù)據(jù)2ARM7馮·諾依曼體系結(jié)構(gòu)模型1)數(shù)據(jù)與指令都存儲在同一存儲區(qū)中,取指令與取數(shù)據(jù)利用同一數(shù)據(jù)總線。2)被早期大多數(shù)計算機所采用3)ARM7——馮諾依曼體系結(jié)構(gòu)簡單,但速度較慢。取指不能同時取數(shù)據(jù)。馮·諾依曼體系結(jié)構(gòu)模型指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處理器程序存儲器指令0指令1指令2數(shù)據(jù)存儲器數(shù)據(jù)0數(shù)據(jù)1數(shù)據(jù)2地址指令地址數(shù)據(jù)ARM9+哈佛體系結(jié)構(gòu)模型1)程序存儲器與數(shù)據(jù)存儲器分開2)提供了較大的存儲器帶寬,各自有自己的總線3)適合于數(shù)字信號處理4)大多數(shù)DSP都是哈佛結(jié)構(gòu)5)ARM9是哈佛結(jié)構(gòu)取指和取數(shù)在同一周期進行,提高速度。哈佛體系結(jié)構(gòu)模型RISC與CISCRISC和CISC是目前設(shè)計制造微處理器的兩種典型技術(shù),雖然它們都是試圖在體系結(jié)構(gòu)、操作運行、軟件硬件、編譯時間和運行時間等諸多因素中做出某種平衡,以求達到高效的目的,但采用的方法不同,因此,在很多方面差異很大,它們主要有:CISC:復雜指令集(ComplexInstructionSetComputer)具有大量的指令和尋址方式8/2原則:80%的程序只使用20%的指令大多數(shù)程序只使用少量的指令就能夠運行CISCCPU包含有豐富的單元電路,因而功能強、面積大、功耗大RISC:精簡指令集(ReducedInstructionSetComputer)在通道中只包含最有用的指令確保數(shù)據(jù)通道快速執(zhí)行每一條指令使CPU硬件結(jié)構(gòu)設(shè)計變得更為簡單
RISCCPU包含較少的單元電路,因而面積小、功耗低RISC與CISCCISCIFIDREGALUMEM開始退出IFIDALUMEMREG微操作通道開始退出單通數(shù)據(jù)通道RISC流水線操作流水線技術(shù):幾個指令可以并行執(zhí)行提高了CPU的運行效率內(nèi)部信息流要求通暢流動譯碼取指執(zhí)行add譯碼取指執(zhí)行sub譯碼取指執(zhí)行cmp時間AddSubCmpARMRISC體系結(jié)構(gòu)1.4命名的含義標志含義說明T支持Thumb指令集Thumb指令集版本1:ARMv4TThumb指令集版本2:ARMv5TThumb-2:ARMv6TD片上調(diào)試M支持長乘法32位乘32位得到64位,32位的乘加得到64位IEmbeddedICEEDSP指令增加了DSP算法處理器指令:16位乘加指令,飽和的帶符號數(shù)的加減法,雙字數(shù)據(jù)操作,cache預取指令JJava加速器Jazelle提高java代碼的運行速度S可綜合提供VHDL或Verilog語言設(shè)計文件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的應用處理器,比如:Intel的PXA25x,Philip的lpc22xx系列,Samsung的S3C44B0等。ARM7T和ARM7EFamilyUnifiedCache內(nèi)存管理流水線級別ThumbDSPJazelleARM7TDMI無無3有無無ARM7TDMI-S無無3有無無ARM710T/720T8kMMU3有無無ARM740T8k或4kProtectionUnit3有無無ARM7EJ-S無無3有有有ARM7系列的升級EmbeddedTraceMacrocell----ETMARM9FamilyCache內(nèi)存管理流水線級別ThumbDSPJazelleARM9TDMI無無5有無無ARM920T16K/16kMMU5有無無ARM922T8k/8kMMU5有無無ARM940T4k/4kProtectionUnit5有無無ARM9系列的升級ARM9EFamilyCache內(nèi)存管理流水線級別ThumbDSPJazelleARM9E-S無無5有有無ARM946E-S4k-1M/4k-1MProtectionUnit5有有無ARM966E-S無無5有有無ARM968E-S無無5有有無ARM9EJ-S無無5/6有有有ARM926EJ-S14k-128k/4k-128kMMU5/6有有有ARM9E系列的升級ARM926EJ-SARM946E-SARM966E-SARM10E和ARM10TFamilyARM10EJ-S無無6有有有ARM1026EJ-S0,4-128k/0,4-128kMMU6有有有Cache內(nèi)存管理流水線級別ThumbDSPJazelleARM10E無無6有有無ARM1020E32k/32kMMU6有有無ARM1022E16k/16kMMU6有有無ARM10TDMI無無6有無無ARM1020T32k/32kMMU6有無無ARM11FamilyCache內(nèi)存管理流水線級別ThumbDSPJazelle浮點運算ARM1136J-S4-64kMMU8有有有無ARM1136JF-S4-64kMMU8有有有有ARM1156T2-S可配置9Thumb-2有無無ARM1156T2F-S可配置9Thumb-2有無有StrongARM和XScaleSA-1110(基于StrongARM)內(nèi)核SA-116kI-Cache+8kD-CacheI-MMU+D-MMUPXA25x/26x/27xIXP2400(基于XScale)內(nèi)核XScale7/8級流水線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是對v4T中的Thumb的擴展指令集體系結(jié)構(gòu)流水線方式是把一個重復的過程分解為若干個子過程,每個子過程可以與其他子過程同時進行。由于這種工作方式與工廠中的生產(chǎn)流水線十分相似,因此,把它稱為流水線工作方式。3流水線3.1ARM7的流水線指令流水線的目的是提高執(zhí)行速度。PC指向的是預取指令,因此如果直接讀取PC值,得到的是“當前指令地址+8”從內(nèi)存中取指令指令譯碼執(zhí)行指令/讀寫REG指令流水線的目的是提高執(zhí)行速度。PC指向的是預取指令,因此如果直接讀取PC值,得到的是并不是當前正在執(zhí)行的指令地址。CUP中的一條指令的執(zhí)行可以分若干個階段:1.取指,從存儲器中取出指令(fetch)2.譯碼,指令譯碼(dec)3.取操作數(shù),假定操作數(shù)從寄存器組中取(reg)4.執(zhí)行運算(ALU)5.存儲器訪問(mem)6.結(jié)果寫回寄存器(res)各個階段的操作相對都是獨立的。因此,可以采用流水線的重疊技術(shù),可以大大提高系統(tǒng)的性能。指令流水線ARM7TDMIProcessorCore馮·諾依曼
架構(gòu)三級流水線快速中斷響應性能指標:0.9DhrystoneMIPs/MHzEmbedded
ICE-RT調(diào)試邏輯NomemorymanagementNocacheCPI=1.9
使用最廣泛的32位嵌入式內(nèi)核主要應用領(lǐng)域:個人音頻設(shè)備手機和移動通信終端Modems,xDSL,CableModemsATMandEthernet網(wǎng)絡設(shè)備打印機數(shù)碼相機PDA機頂盒ARM7內(nèi)核使用3級流水線,以提高指令流傳遞給處理器的速度,使得某些操作達到并行處理的效果,比單純的串行處理要好。PC指向處于指令讀取級的指令地址,而不是處于執(zhí)行級的指令地址。FETCHDECODEEXECUTE從存儲器讀取指令譯碼讀寄存器移位和算術(shù)邏輯運算寫寄存器PC PCPC-4 PC-2PC-8 PC-4ARM Thumb指令流水線本例中6個時鐘周期內(nèi)一共完成了6條指令全部對寄存器進行操作(單周期執(zhí)行)指令周期數(shù)(CPI)=1
OperationCycle 1 23 4 56ADDSUBMOVANDORREORCMPRSBFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteDecodeExecuteFetchDecodeFetchFetch優(yōu)秀的流水線結(jié)構(gòu)本例中6個時鐘周期內(nèi)一共完成了4條指令指令周期數(shù)(CPI)=1.5Cycle
Operation 1 23456ADDSUBLDRMOVANDORRFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteDataWritebackFetchDecodeExecuteFetchDecodeFetch流水線執(zhí)行舉例:LDRARM9TDMI5級流水線性能改進提升CPI至~1.5提高時鐘頻率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個時鐘周期完成6條指令,CPI等于1.2Interlock:LDR后面的指令馬上要用到LDR的結(jié)果寄存器,導致插入一個內(nèi)部周期WIM3.2更多級的流水線ARM10采用了6級流水線,但是處于兼容考慮,直接讀取PC值依然等于“當前指令地址+8”。3.3流水線對程序的影響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指令預取和自修改代碼流水線使得CPU在執(zhí)行當前指令的同時,從存儲器中預取其后若干條指令。預取的指令不一定得到執(zhí)行。比如發(fā)生跳轉(zhuǎn)或中斷。自修改代碼指的是代碼在執(zhí)行過程中可能修改自身。被修改的指令可能和預取得指令不同,從而產(chǎn)生錯誤。相鄰指令執(zhí)行的數(shù)據(jù)相關(guān)性會產(chǎn)生指令執(zhí)行的停頓(stall),嚴重的會產(chǎn)生數(shù)據(jù)災難(hazards)。如圖所示,第2條指令的reg操作需要第1條指令執(zhí)行的結(jié)果(res),因此,第2條指令在執(zhí)行時,不得不產(chǎn)生停頓。另外碰到分支類指令,那么,會使后面緊接該條指令的幾條指令的執(zhí)行都會無效,如圖所示。4模式和寄存器模式分類ARM處理器的寄存器狀態(tài)寄存器異常和異常向量表4.1模式分類ARM一共有7種執(zhí)行模式:User:非特權(quán)級模式,多數(shù)應用程序使用的模式FIQ:進入快速中斷響應時IRQ:進入一般中斷響應時Supervisor:復位后的缺省模式,或進入軟件中斷響應時Abort:遇到存儲器訪問出錯時Undef:遇到未定義指令時System:特權(quán)級的User模式4.2ARM處理器的寄存器ARM一共有37個32位的寄存器1個PC寄存器1個CPSR(當前狀態(tài)寄存器)5個SPSR(狀態(tài)保留寄存器)30個通用寄存器當前的處理器模式?jīng)Q定了可以訪問到的寄存器組,以下是對所有模式都有的寄存器一組特定的r0-r12寄存器一個特定的r13(堆棧指針,sp)和r14(連接寄存器,lr)PC寄存器
r15當前狀態(tài)寄存器cpsr特權(quán)模式(System模式除外)獨有的特定的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:通用寄存器。當C和匯編互相調(diào)用時,r0~r3用來傳遞函數(shù)參數(shù),可記為a0~a3r13:用于各工作態(tài)的堆棧寄存器(sp)r14:用來保護程序返回地址的鏈接寄存器(lr)r15:程序計數(shù)器(pc)r8_FIQ—r12_FIQ:允許快速中斷處理r8_User—r12_User:除了FIQ外各模式公用除了User和System模式外,各種模式都有自己獨立的r13和r144.3狀態(tài)寄存器條件標識位N=
結(jié)果為負Z=結(jié)果為零C=進位V=溢出Q標識位只在5TE/J系列中有效指示stickyoverflow的發(fā)生J標識位僅在5TEJ系列中有效J=1:處理器處于Jazelle狀態(tài)中斷使能位I=1:禁止IRQ.F=1:禁止FIQ.T標識位只在xT系列內(nèi)核中有效T=0:處理器處于ARM狀態(tài)T=1:處理器處于Thumb狀態(tài)模式位指示當前處理器模式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)當處理器處于ARM狀態(tài)時:所有指令都是32位長度所有指令存儲必須word對齊pc[31:2]有效,[1:0]未定義當處理器處于Thumb狀態(tài)時:所有指令都是16位長度所有指令存儲必須halfword對齊pc[31:1]位有效,最低位未定義當處理器處于Jazelle狀態(tài)時:所有指令都是8位長度處理器一次執(zhí)行1個word的讀取指令獲得4條Java指令注意在指令中訪問PC寄存器的值不是當前指令地址5異常和異常向量表異常的產(chǎn)生異常優(yōu)先級異常處理異常返回指令5.1異常的產(chǎn)生直接異常:軟件中斷,未定義指令(包括所要求的協(xié)處理器不存在時的協(xié)處理器命令)和預取指令間接異常:數(shù)據(jù)中止(在Load和Store數(shù)據(jù)訪問時的存儲器故障)外部異常:復位,IRQ和FIQ5.2異常優(yōu)先級異常在當前指令執(zhí)行完成之后才被響應多個異常可以在同一時間產(chǎn)生異常指定了優(yōu)先級和固定的服務順序:ResetDataAbortFIQIRQPrefetchAbortSWIUndefinedinstructionVectorTableVectortablecanbeat
0xFFFF0000onARM720T
andonARM9/10familydevicesFIQIRQ(Reserved)DataAbortPrefetchAbortSoftwareInterruptUndefinedInstructionReset0x1C0x180x140x100x0C0x080x040x005.3異常處理當異常產(chǎn)生時,ARMcore:拷貝CPSR到SPSR_<mode>設(shè)置適當?shù)腃PSR位:改變處理器狀態(tài)進入ARM狀態(tài)改變處理器模式進入相應的異常模式設(shè)置中斷禁止位禁止相應中斷保存返回地址到LR_<mode>設(shè)置PC到相應的異常向量返回時,異常處理需要:從SPSR_<mode>恢復CPSR從LR_<mode>恢復PC這些操作只能在ARM態(tài)執(zhí)行.從SWI和Undef異常返回 MOVSpc,lr從FIQ,IRQ和預取異常(PrefectAbort)返回
SUBSpc,lr,#4
從數(shù)據(jù)異常(DataAbort)返回
SUBSpc,lr,#8
若LR之前被壓棧,使用LDM“^”
LDMFDsp!,{pc}^異常返回:使用一數(shù)據(jù)處理指令:相應的指令取決于什么樣的異常帶S位把PC作為目標寄存器在特權(quán)模式下,這些操作不僅更新PC,而且拷貝SPSR到CPSR5.4異常返回指令匯編指令中的^和S標記可用于異常返回,恢復PC的同時恢復CPSR。如果使用堆棧返回,預先保存在棧中的返回地址要求以做好調(diào)整。在異常返回時使用類似如下指令:“l(fā)dmfdr13!,(r0-r3,pc)^”1)“^”后綴不允許在usr和svc模式下使用。2)如果用在LDM指令中,且寄存器列表中含有PC時,那么除了正常的多寄存器傳送外,將SPSR拷貝到CPSR中。這一特點用于異常處理返回。ARMorThumb?Thumb/ARM混合應用程序ARMCodeARMCodeThumb
CodeFIQIRQ(Reserved)DataAbortPrefetchAbortSoftwareInterruptUndefinedInstructionResetFIQvsIRQFIQ和IRQ提供了非?;镜膬?yōu)先級級別。在下邊兩種情況下,F(xiàn)IQs有高于IRQs的優(yōu)先級:當多個中斷產(chǎn)生時,F(xiàn)IQ高于IRQ.處理FIQ時禁止IRQs.IRQs將不會被響應直到FIQ處理完成.FIQs的設(shè)計使中斷處理盡可能地快.FIQ向量位于中斷向量表的最末.為了使中斷處理程序可從中斷向量處連續(xù)執(zhí)行FIQ模式有5個額外的私有寄存器(r8-r12)中斷處理必須保護其使用的非私有寄存器可以有多個FIQ中斷源,但是考慮到系統(tǒng)性能應避免嵌套。6ARM的存儲和I/O空間特點大端和小端非對齊的存儲訪問6.1特點ARM體系同時支持大端/小端。32位地址線/數(shù)據(jù)線,支持如下數(shù)據(jù)類型:字節(jié)(byte)8bits半字(Halfword)16bits,半字必須對齊2字節(jié)邊界字(Word)32bits,字必須對齊4字節(jié)邊界ARM的I/O空間采用統(tǒng)一編址方式。ARM可以通過配置支持兩種endianr0=0x11223344STRr0,[r1]LDRBr2,[r1]r1=0x100Memory32100123ByteLane312423161587011223344312423161587011223344312423161587011223344312423161587000000044312423161587000000011LittleendianBigendianR2=0x44R2=0x116.2EndianConfiguration/大端和小端Littleendian:Bigendian6.3非對齊的存儲訪問非對齊的取指不可預知結(jié)果。ARM狀態(tài):忽略低2兩位;Thumb狀態(tài):忽略最低位。忽略由存儲器實現(xiàn)。非對齊的數(shù)據(jù)訪問執(zhí)行結(jié)果不可預知。忽略字單元地址的最低兩位;忽略半字單元地址的最低位。忽略可能由處理器或存儲器完成。7AMBA總線當ARM核作為一個元件集成到復雜的系統(tǒng)芯片上時,需要某種接口和其它元件進行通訊,這就是AMBA總線。ARM研發(fā)的AMBA(Advanced
Microcontroller
Bus
Architecture)提供一種特殊的機制,可將RISC處理器集成在其它IP芯核和外設(shè)中,2.0版AMBA標準定義了三組總線:AHB(AMBA高性能總線):用于高性能、高數(shù)據(jù)吞吐部件,如CPU、DMA、DSP之間的互連。ASB(AMBA系統(tǒng)總線):用來作處理器與外設(shè)之間的互連,將被AHB取代。APB(AMBA外設(shè)總線):為系統(tǒng)的低速外部設(shè)備提供低功耗的簡易互連。系統(tǒng)總線和外設(shè)總線之間的橋接器提供AHB/ASP部件與APB部件間的訪問代理與緩沖。ARM核片內(nèi)RAMDMA控制器橋路UART定時器并口APBAHB/ASB外部總線接口測試接口控制AHB用來研發(fā)寬帶寬處理器芯核的片上總線。應用于高性能、高時鐘頻率的系統(tǒng)模塊,它構(gòu)成了高性能的系統(tǒng)骨干總線(
back-bone
bus
)。它主要支持的特性是:用于高性能、高數(shù)據(jù)吞吐部件,如CPU、DMA、DSP之間數(shù)據(jù)突發(fā)傳輸(
burst
transfer
)數(shù)據(jù)分割傳輸(
split
transaction
)流水線方式一個周期內(nèi)完成總線主設(shè)備(master)對總線控制權(quán)的交接單時鐘沿操作內(nèi)部無三態(tài)實現(xiàn)更寬的數(shù)據(jù)總線寬度(最低32位,最高可達1024位,但推薦不要超過256位)是第一代AMBA系統(tǒng)總線,同AHB相比,它數(shù)據(jù)寬度要小一些,它支持的典型數(shù)據(jù)寬度為8位、16位、32位。它的主要特征如下:流水線方式數(shù)據(jù)突發(fā)傳送多總線主設(shè)備內(nèi)部有三態(tài)實現(xiàn)
是本地二級總線(local
secondary
bus
),通過橋和AHB/ASB相連。它主要是為了滿足不需要高能流水線接口或不需要高帶寬接口的設(shè)備的互連。APB的總線信號經(jīng)改進后全和時鐘上升沿相關(guān),這種改進的主要優(yōu)點如下:更易達到高頻率的操作性能和時鐘的占空比無關(guān)單時鐘沿簡化了更易與基于周期的仿真器集成APB
只有一個APB橋,它將來自AHB/ASB的信號轉(zhuǎn)換為合適的形式以滿足掛在APB上的設(shè)備的要求。橋要責鎖存地址、數(shù)據(jù)以及控制信號,同時要進行二次譯碼以選擇相應的APB設(shè)備ARM指令集總體分為6類指令跳轉(zhuǎn)指令:B和BL數(shù)據(jù)處理指令:數(shù)據(jù)傳輸指令,算術(shù)指令,邏輯指令,比較指令,乘法指令,前導零計數(shù)訪存指令:單數(shù)據(jù)訪存指令,多數(shù)據(jù)訪存指令,信號量操作指令程序狀態(tài)訪問指令:MRS和MSR協(xié)處理器指令異常指令:SWI和BKPT8ARM指令系統(tǒng)所有指令都是32bit大多數(shù)指令都在單周期內(nèi)完成所有指令都可以條件執(zhí)行l(wèi)oad/store體系結(jié)構(gòu)指令集可以通過協(xié)處理器擴展8.1ARM指令特點<Opcode>{<cond>}{s}<Rd>,<Rn>,<Operand2>Cond:指令的條件碼Opcode:指令操作碼S:操作是否影響cpsrRn:包含第一個操作數(shù)的寄存器編碼Rd:目標寄存器編碼Operand2:第2操作數(shù)Cond001OpcodeSRnRdOperand20111215161920212425272831788.2ARM指令的格式8.3ARM指令的條件執(zhí)行所有的ARM指令可包含一個可選的條件碼,只有在cpsr中的條件標志位滿足指定的條件時,指令才會被執(zhí)行。不符合條件的代碼依然占用一個時鐘周期(相當于一個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:無符號數(shù)高于或等于/無符號數(shù)小于(higherorsame/lower)HI/LS:無符號數(shù)高于/無符號數(shù)低于或等于(higher/lowerorsame)GE/LT:有符號數(shù)大于或等于/有符號數(shù)小于(greaterorequal/lessthan)GT/LE:有符號數(shù)大于/有符號數(shù)小于或等于(greaterthan/lessorequal)MI/PL:負/非負VS/VC:溢出/不溢出(overflowset/overflowclear)CS/CC:進位/無進位(carryset/carryclear)0000EQZ置位相等/等于00001NEZ清0不等0010CS/HSC置位進位/無符號高于或等于0011CC/LOC清0無進位/無符號低于0100MIN置位負數(shù)0101PLN清0非負數(shù)0110VSV置位溢出0111VCV清0無溢出ARM指令的條件碼ARM指令的條件碼1000HIC置位且Z清0無符號高于1001LSC清0或Z置位無符號低于或等于1010GEN等于V有符號大于或等于1011LTN不等于V有符號小于1100GTZ清0且N等于V有符號大于1101LEZ置位或N不等于V有符號小于或等于1110AL任何狀態(tài)總是(always)1111NV無從不(never)注:AL是默認的,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ù)要么來自寄存器,要么來自立即數(shù),不會來自內(nèi)存。如果有結(jié)果,則結(jié)果一定是為32位寬,并且放在一個寄存器中,不會寫入內(nèi)存。(有一個例外:長乘法指令產(chǎn)生64位結(jié)果)每一個操作數(shù)寄存器和結(jié)果寄存器都在指令中獨立指出,即:ARM指令采用3地址模式:
<Operation>Rd,Rn,Rm數(shù)據(jù)處理指令的特點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的無符號整數(shù)(0-31)在指令的最低字節(jié)指定的另一寄存器立即數(shù)
8比特數(shù)
8比特數(shù)循環(huán)右移偶數(shù)位右移位數(shù)由匯編器自動計算立即數(shù)尋址ARM指令中的立即數(shù),由一個8bit的常數(shù)循環(huán)右移偶數(shù)位得到:立即數(shù)=(0->255)循環(huán)右移2N位,其中:0<=N<=12例子:合法立即數(shù):0x3fc,0x0,0xf0000000,0xf0000001非法立即數(shù):0x1fe,0xffff,0x1010,0xf0000010同一個立即數(shù)可能有多個表示方法。如:0x3f0=0x3f循環(huán)右移28位0x3f0=0xfc循環(huán)右移30位對立即數(shù)的編碼規(guī)則:如果立即數(shù)在0–0xff之間,移位數(shù)為0。否則,就取決于編譯器了。指令“movr0,#0x3f0”在ADS1.2中被編譯為0xe3a00ffc,在arm-elf-gcc-2.95.3中被編譯為0xe3a00e3f。立即數(shù)尋址對于有互補操作的指令,編譯器可以做智能的轉(zhuǎn)換,比如:mvnr1,0xffffff00 -> movr1,0xffaddr1,r1,#0xff
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年家具行業(yè)環(huán)保認證服務合同范本集
- 2025年度環(huán)保技術(shù)合同環(huán)保設(shè)備所有權(quán)抵押及運營服務條款
- 絕緣漆項目融資計劃書
- 邵陽2025年湖南邵陽市邵陽縣縣直事業(yè)單位選調(diào)46人筆試歷年參考題庫附帶答案詳解
- 西安2025年陜西西安航空學院招聘筆試歷年參考題庫附帶答案詳解
- 蘇州江蘇蘇州市公安局吳中分局招聘警務輔助人員110人筆試歷年參考題庫附帶答案詳解
- 聊城2024年山東聊城陽谷縣教育類人才回引(5人)筆試歷年參考題庫附帶答案詳解
- 鹽城江蘇鹽城市教育局部分直屬事業(yè)單位招錄政府購買服務用工3人筆試歷年參考題庫附帶答案詳解
- 玉溪云南玉溪易門縣教育體育系統(tǒng)面向2025年畢業(yè)生招聘教師6人筆試歷年參考題庫附帶答案詳解
- 漯河2024年河南漯河市政協(xié)引進高層次人才2人筆試歷年參考題庫附帶答案詳解
- 教案設(shè)計常見問題及解決措施
- (正式版)JBT 14932-2024 機械式停車設(shè)備 停放客車通-用技術(shù)規(guī)范
- (正式版)JBT 14682-2024 多關(guān)節(jié)機器人用伺服電動機技術(shù)規(guī)范
- 2024年職業(yè)衛(wèi)生技術(shù)人員評價方向考試題庫附答案
- 紅樓夢詩詞全集
- 像科學家一樣思考-怎么做-怎么教-
- 苯胺合成靛紅工藝
- 三年級上冊數(shù)學脫式計算大全600題及答案
- 2024年度農(nóng)村電子商務ppt演示課件
- 計算機控制系統(tǒng) 課件 第10章 網(wǎng)絡化控制系統(tǒng)的分析與設(shè)計
- 高原反應的癥狀和處理方法
評論
0/150
提交評論