《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頁,還剩127頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

ARM體系結(jié)構(gòu)ARM體系結(jié)構(gòu)目錄1總體介紹2ARM處理器的分類3流水線(pipeline)4模式(model)和寄存器5異常和異常向量表6存儲和I/O7AHBA總線目錄1總體介紹1總體介紹1總體介紹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年代的英國。1.1ARM公司和ARM處理器1)ARM是一個CPU內(nèi)核。1.2ARM處理器的使用量ARM20031.2ARM處理器的使用量ARM20031.3ARM處理器的特點支持CACHE和MMUCACHE的馮·諾依曼體系結(jié)構(gòu)/哈佛體系結(jié)構(gòu)RISC指令集固定的32位指令Load/Store體系結(jié)構(gòu)大多數(shù)指令單周期完成流水線執(zhí)行Thumb\DSP\jazeller功能擴(kuò)展低功耗1.3ARM處理器的特點支持CACHE和MMU支持CACHE和MMU(1)1、為什么采用高速緩存微處理器的時鐘頻率比內(nèi)存速度提高快得多,高速緩存可以提高內(nèi)存的平均性能。2、高速緩存的工作原理高速緩存是一種小型、快速的存儲器,它保存部分主存內(nèi)容的拷貝。CPU高速緩存控制器CACHE主存數(shù)據(jù)數(shù)據(jù)地址支持CACHE和MMU(1)1、為什么采用高速緩存高速緩存MMU(MemoryManagementUnit)虛實地址變換內(nèi)存地址訪問保護(hù)支持CACHE和MMU(2)MMU(MemoryManagementUnit)支持C指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處理器存儲器程序指令0指令1指令2指令3指令4數(shù)據(jù)數(shù)據(jù)0數(shù)據(jù)1數(shù)據(jù)2CACHE的馮·諾依曼體系結(jié)構(gòu)模型ARM7指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處理器存儲器程序指令0指指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處理器程序存儲器指令0指令1指令2數(shù)據(jù)存儲器數(shù)據(jù)0數(shù)據(jù)1數(shù)據(jù)2地址指令地址數(shù)據(jù)CACHE哈佛體系結(jié)構(gòu)模型ARM9+指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處理器程序存儲器指令0指RISC指令集RISC:精簡指令集(ReducedInstructionSetComputer)指令集中的指令長度(大?。┗疽恢略谕ǖ乐兄话钣杏玫闹噶畲_保數(shù)據(jù)通道快速執(zhí)行每一條指令使CPU硬件結(jié)構(gòu)設(shè)計變得更為簡單RISC指令集RISC:精簡指令集(ReducedInstRISC與CISCCISCRISCIFIDREGALUMEM開始退出IFIDALUMEMREG微操作通道開始退出單通數(shù)據(jù)通道RISC與CISCCISCIFIDREGALUMEM開始退出流水線操作流水線技術(shù):幾個指令可以并行執(zhí)行提高了CPU的運行效率內(nèi)部信息流要求通暢流動譯碼取指執(zhí)行add譯碼取指執(zhí)行sub譯碼取指執(zhí)行cmp時間AddSubCmp流水線操作流水線技術(shù):幾個指令可以并行執(zhí)行譯碼取指執(zhí)行add1.4命名的含義標(biāo)志含義說明T支持Thumb指令集Thumb指令集版本1:ARMv4TThumb指令集版本2:ARMv5TThumb-2:ARMv6TD片上調(diào)試M支持長乘法32位乘32位得到64位,32位的乘加得到64位IEmbeddedICEEDSP指令增加了DSP算法處理器指令:16位乘加指令,飽和的帶符號數(shù)的加減法,雙字?jǐn)?shù)據(jù)操作,cache預(yù)取指令JJava加速器Jazelle提高java代碼的運行速度S可綜合提供VHDL或Verilog語言設(shè)計文件1.4命名的含義標(biāo)志含義說明T支持Thumb指令集Thum1.6PXA250開發(fā)板例子(上面)串口Reset鍵GPIOLED10兆以太網(wǎng)(eth1)10兆以太網(wǎng)(eth0)以太網(wǎng)卡指示燈(LED)電源電源指示燈(LED)1.6PXA250開發(fā)板例子(上面)串口1.6PXA250開發(fā)板的例子(下面)JTAG接口SP0SP1SSP音頻接口PXA250微控制器網(wǎng)卡芯片穩(wěn)壓器1.6PXA250開發(fā)板的例子(下面)JTAG接口目錄1總體介紹2ARM處理器的分類3流水線(pipeline)4模式(model)和寄存器5異常和異常向量表6存儲和I/O7AHBA總線目錄1總體介紹2ARM處理器的分類2.1基于處理器內(nèi)核的分類ARM7T,ARM7E,ARM9,ARM9E,ARM10T,ARM10E,ARM112.2基于指令集體系結(jié)構(gòu)的分類v4T,v5T,v5TE,v5TEJ,v62.3uClinux對ARM處理器的分類有學(xué)員問:XScale是ARM幾?2ARM處理器的分類2.1基于處理器內(nèi)核的分類有學(xué)員問:2.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等。2.1ARMCore(ARM核)處理器核/整數(shù)核(Pro2.1.1ARM7T和ARM7EFamilyUnifiedCache內(nèi)存管理流水線級別ThumbDSPJazelleARM7TDMI無無3有無無ARM7TDMI-S無無3有無無ARM710T/720T8kMMU3有無無ARM740T8k或4kProtectionUnit3有無無ARM7EJ-S無無3有有有2.1.1ARM7T和ARM7EFamilyUnifie2.1.1ARM7系列的升級EmbeddedTraceMacrocell----ETM2.1.1ARM7系列的升級EmbeddedTrace2.1.2ARM9FamilyCache內(nèi)存管理流水線級別ThumbDSPJazelleARM9TDMI無無5有無無ARM920T16K/16kMMU5有無無ARM922T8k/8kMMU5有無無ARM940T4k/4kProtectionUnit5有無無2.1.2ARM9FamilyCache內(nèi)存管理流水線級2.1.2ARM9系列的升級2.1.2ARM9系列的升級2.1.3ARM9EFamilyCache內(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有有有2.1.3ARM9EFamilyCache內(nèi)存管理流水線2.1.3ARM9E系列的升級ARM926EJ-SARM946E-SARM966E-S2.1.3ARM9E系列的升級ARM926EJ-SARM92.1.4ARM10E和ARM10TFamilyARM10EJ-S無無6有有有ARM1026EJ-S0,4-128k/0,4-128kMMU6有有有Cache內(nèi)存管理流水線級別ThumbDSPJazelleARM10E無無6有有無ARM1020E32k/32kMMU6有有無ARM1022E16k/16kMMU6有有無ARM10TDMI無無6有無無ARM1020T32k/32kMMU6有無無2.1.4ARM10E和ARM10TFamilyARM12.1.5ARM11FamilyCache內(nèi)存管理流水線級別ThumbDSPJazelle浮點運算ARM1136J-S4-64kMMU8有有有無ARM1136JF-S4-64kMMU8有有有有ARM1156T2-S可配置9Thumb-2有無無ARM1156T2F-S可配置9Thumb-2有無有2.1.5ARM11FamilyCache內(nèi)存管理流水線2.1.6StrongARM和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.1.6StrongARM和XScaleSA-11102.1.7基于ARM的SOC2.1.7基于ARM的SOC2.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的擴(kuò)展2.2指令集體系結(jié)構(gòu)(ISA)ThumbDSPJazell2.2指令集體系結(jié)構(gòu)2.2指令集體系結(jié)構(gòu)2.3uClinux-2.4.x的分類ARM7TDMI:Triscend-A7S,Triscend-A7V,AT91M40xxx,S3C3410X,S3C4510B,S3C4530A01,S3C44B0XARM720ARM740ARM920ARM940ARM940TSA11102.3uClinux-2.4.x的分類ARM7TDMI:T目錄1總體介紹2ARM處理器的分類3流水線(pipeline)4模式(model)和寄存器5異常和異常向量表6存儲和I/O7AHBA總線目錄1總體介紹3流水線(pipeline)3流水線(pipeline)3.1ARM7的流水線指令流水線的目的是提高執(zhí)行速度。PC指向的是預(yù)取指令,因此如果直接讀取PC值,得到的是“當(dāng)前指令地址+8”從內(nèi)存中取指令指令譯碼執(zhí)行指令/讀寫REG3.1ARM7的流水線指令流水線的目的是提高執(zhí)行速度。PC3.2更多級的流水線ARM10采用了6級流水線,但是處于兼容考慮,直接讀取PC值依然等于“當(dāng)前指令地址+8”。3.2更多級的流水線ARM10采用了6級流水線,但是處于兼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.3流水線對程序的影響lr=lr&15; an3.4指令預(yù)取和自修改代碼流水線使得CPU在執(zhí)行當(dāng)前指令的同時,從存儲器中預(yù)取其后若干條指令。預(yù)取的指令不一定得到執(zhí)行。比如發(fā)生跳轉(zhuǎn)或中斷。自修改代碼指的是代碼在執(zhí)行過程中可能修改自身。被修改的指令可能和預(yù)取得指令不同,從而產(chǎn)生錯誤。3.4指令預(yù)取和自修改代碼流水線使得CPU在執(zhí)行當(dāng)前指令的目錄1總體介紹2ARM處理器的分類3流水線(pipeline)4模式(model)和寄存器5異常和異常向量表6存儲和I/O7AHBA總線目錄1總體介紹4模式和寄存器4模式和寄存器4.1模式分類用戶(User):一般的非特權(quán)任務(wù)運行的模式。系統(tǒng)(System):和用戶模式共用積存器,但是權(quán)限比用戶模式高。特權(quán)(SVC):用于軟件中斷和重起,一般操作系統(tǒng)運行在該模式??熘袛啵‵IQ):用于快中斷服務(wù)程序。中斷(IRQ):用于普通中斷服務(wù)程序。中止(Abort):用于存儲器故障。未定義(Undef):用于處理沒有定義的指令,可在該模式中用軟件來模擬硬件功能,比如浮點運算。4.1模式分類用戶(User):一般的非特權(quán)任務(wù)運行的模式4.2ARM處理器的寄存器ARM處理器總共有37個寄存器: 30個通用寄存器 6個狀態(tài)寄存器 1個專用于記錄當(dāng)前狀態(tài) 5個專用于記錄狀態(tài)切換前的狀態(tài)

1個程序計數(shù)器PC4.2ARM處理器的寄存器ARM處理器總共有37個寄存器:4.2ARM處理器的寄存器(續(xù))User/SystemSupervisorAbortUndefinedInterruptFastInterruptR0R0R0R0R0R0R1R1R1R1R1R1R2R2R2R2R2R2R3R3R3R3R3R3R4R4R4R4R4R4R5R5R5R5R5R5R6R6R6R6R6R6R7R7R7R7R7R7R8R8R8R8R8R8_FIQR9R9R9R9R9R9_FIQR10R10R10R10R10R10_FIQR11R11R11R11R11R11_FIQR12R12R12R12R12R12_FIQR13R13_SVCR13_ABORTR13_UNDEFR13_IRQR13_FIQR14R14_SVCR14_ABORTR14_UNDEFR14_IRQR14_FIQPCPCPCPCPCPC

CPSRCPSRCPSRCPSRCPSRCPSR

SPSR_SVCSPSR_ABORTSPSR_UNDEFSPSR_IRQSPSR_FIQ4.2ARM處理器的寄存器(續(xù))User/SystemSu4.2ARM處理器的寄存器(續(xù))r0—r12:通用寄存器。當(dāng)C和匯編互相調(diào)用時,r0—r3用來傳遞函數(shù)參數(shù),可記為a0—a3r13:用于各工作態(tài)的堆棧寄存器(sp)r14:用來保護(hù)程序返回地址的鏈接寄存器(lr)r15:程序計數(shù)器(pc)r8_FIQ—r12_FIQ:允許快速中斷處理r8_User—r12_User:除了FIQ外各模式公用除了User和System模式外,各種模式都有自己獨立的r13和r144.2ARM處理器的寄存器(續(xù))r0—r12:通用寄存4.3CPSR/SPSR程序狀態(tài)寄存器(ProgramStatusRegisters)CSPR/SPSR標(biāo)志位NZCV 31-28IFT 7-5模式位Mode 4-04.3CPSR/SPSR程序狀態(tài)寄存器(ProgramS4.3CPSR/SPSR(續(xù))條件標(biāo)志(ConditionCodeFlags)N=ALU計算結(jié)果為負(fù)數(shù)(NegativeresultfromALUflag)。Z=ALU計算結(jié)果為0(ZeroresultfromALUflag)。C=ALU計算結(jié)果進(jìn)位(ALUoperationCarriedout)。V=ALU計算結(jié)果溢出(ALUoperationOverflowed)。中斷禁止位(InterruptDisablebits)I=1,關(guān)IRQ。F=1,關(guān)FIQ。TBit(Architecturev4Tonly)T=0,處理器當(dāng)前處于ARM狀態(tài)(ProcessorinARMstate)T=1,處理器當(dāng)前處于Thumb狀態(tài)(ProcessorinThumbstate)4.3CPSR/SPSR(續(xù))條件標(biāo)志(Condition4.3CPSR/SPSR(續(xù))M[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)4.3CPSR/SPSR(續(xù))M[4:0]模式Acces目錄1總體介紹2ARM處理器的分類3流水線(pipeline)4模式(model)和寄存器5異常和異常向量表6存儲和I/O7AHBA總線目錄1總體介紹5異常和異常向量表5異常和異常向量表5.1異常的產(chǎn)生直接異常:軟件中斷,未定義指令(包括所要求的協(xié)處理器不存在時的協(xié)處理器命令)和預(yù)取指令間接異常:數(shù)據(jù)中止(在Load和Store數(shù)據(jù)訪問時的存儲器故障)外部異常:復(fù)位,IRQ和FIQ5.1異常的產(chǎn)生直接異常:軟件中斷,未定義指令(包括所要求5.2異常向量表RESET可以從0x00000000開始或0xffff0000開始,因此異常向量表可以放在上述地址優(yōu)先級RESETDataAbortFIQIRQPrefetchSWI/Undef5.2異常向量表RESET可以從0x00000000開始5.3uCLinux的異常向量表 /*Normalcase:lowermemoryiswritable.*/ .equ __real_stubs_start,.LCvectors+0x200.LCvectors: swi SYS_ERROR0 b __real_stubs_start+(vector_undefinstr-__stubs_start) ldr pc,__real_stubs_start+(.LCvswi-__stubs_start) b __real_stubs_start+(vector_prefetch-__stubs_start) b __real_stubs_start+(vector_data-__stubs_start) b __real_stubs_start+(vector_addrexcptn-__stubs_start) b __real_stubs_start+(vector_IRQ-__stubs_start) b __real_stubs_start+(vector_FIQ-__stubs_start)5.3uCLinux的異常向量表 /*Normalc5.4異常產(chǎn)生時的模式切換5.4異常產(chǎn)生時的模式切換5.4異常產(chǎn)生時的模式切換(續(xù))當(dāng)異常發(fā)生后,ARMcore的操作:將CPSR拷貝到SPSR_<mode>設(shè)置CPSR中適當(dāng)?shù)奈磺宄鼵PSR中的Thumb位(異常進(jìn)入后均為ARMstate,不可能是THUMBstate)修改相應(yīng)的模式位關(guān)中斷,如果是FIQ或Reset異常,還要關(guān)FIQ映射相應(yīng)模式的寄存器在LR_<mod>中保存近似返回地址將PC指向向量地址5.4異常產(chǎn)生時的模式切換(續(xù))當(dāng)異常發(fā)生后,ARMco5.5異常返回從異常返回,ARMcore的操作:從SPSR_<mod>中恢復(fù)CPSR恢復(fù)PC到LR_<mod>各種異常的返回時,對返回地址的調(diào)整不同:SWI/UND: movspc,r14_swi/undFIQ/IRQ/Prefetch: subspc,r14_fiq/irq/prefetch,#4DataABR: subspc,r14_dataabr,#85.5異常返回從異常返回,ARMcore的操作:5.5異常返回(續(xù))匯編指令中的^和S標(biāo)記可用于異常返回,恢復(fù)PC的同時恢復(fù)CPSR。S標(biāo)記的例子見前述命令中的“movs”。如果使用堆棧返回,預(yù)先保存在棧中的返回地址要求以做好調(diào)整。在異常返回時使用類似如下指令:“l(fā)dmfdr13!,(r0-r3,pc)^”1)“^”后綴不允許在usr和svc模式下使用。2)如果用在LDM指令中,且寄存器列表中含有PC時,那么除了正常的多寄存器傳送外,將SPSR拷貝到CPSR中。這一特點用于異常處理返回。3)如果使用“^”后綴進(jìn)行數(shù)據(jù)傳送且寄存器列表不包含PC時,加載/存儲的是usr模式的寄存器,而不是當(dāng)前模式的寄存器。5.5異常返回(續(xù))匯編指令中的^和S標(biāo)記可用于異常5.6異常的問題?如果FIQ,IRQ和DataAbort異常同時產(chǎn)生,執(zhí)行的順序如何?如果FIQ,IRQ和Prefetch異常同時產(chǎn)生,結(jié)果又如何?5.6異常的問題?如果FIQ,IRQ和DataAbort目錄1總體介紹2ARM處理器的分類3流水線(pipeline)4模式(model)和寄存器5異常和異常向量表6存儲和I/O7AHBA總線目錄1總體介紹6ARM的存儲和I/O空間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)一編址方式。6.1特點ARM體系同時支持大尾端/小尾端。6.2大尾和小尾6.2大尾和小尾6.3非對齊的存儲訪問非對齊的取指不可預(yù)知結(jié)果。ARM狀態(tài):忽略低2兩位;Thumb狀態(tài):忽略最低位。忽略由存儲器實現(xiàn)。非對齊的數(shù)據(jù)訪問執(zhí)行結(jié)果不可預(yù)知。忽略字單元地址的最低兩位;忽略半字單元地址的最低位。忽略可能由處理器或存儲器完成。6.3非對齊的存儲訪問非對齊的取指目錄1總體介紹2ARM處理器的分類3流水線(pipeline)4模式(model)和寄存器5異常和異常向量表6存儲和I/O7AHBA總線目錄1總體介紹7AMBA總線當(dāng)ARM核作為一個元件集成到復(fù)雜的系統(tǒng)芯片上時,需要某種接口和其它元件進(jìn)行通訊,這就是AMBA總線。它包括:AHB:用于高性能模塊的連接。ASB:用于高性能模塊的連接,將被AHB取代。APB:低性能外圍部件的連接。7AMBA總線當(dāng)ARM核作為一個元件集成到復(fù)雜的系統(tǒng)芯片上7典型的基于AMBA的系統(tǒng)ARM核片內(nèi)RAMDMA控制器橋路UART定時器并口APBAHB/ASB外部總線接口測試接口控制7典型的基于AMBA的系統(tǒng)ARM核片內(nèi)RAMDMA橋路UA參考書目ARM公司的各種參考手冊《ARMSoC體系結(jié)構(gòu)》,SteveFurber著,田擇等譯,北京航空航天大學(xué)出版社,2002年10月第一版參考書目ARM公司的各種參考手冊ARM體系結(jié)構(gòu)ARM體系結(jié)構(gòu)目錄1總體介紹2ARM處理器的分類3流水線(pipeline)4模式(model)和寄存器5異常和異常向量表6存儲和I/O7AHBA總線目錄1總體介紹1總體介紹1總體介紹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年代的英國。1.1ARM公司和ARM處理器1)ARM是一個CPU內(nèi)核。1.2ARM處理器的使用量ARM20031.2ARM處理器的使用量ARM20031.3ARM處理器的特點支持CACHE和MMUCACHE的馮·諾依曼體系結(jié)構(gòu)/哈佛體系結(jié)構(gòu)RISC指令集固定的32位指令Load/Store體系結(jié)構(gòu)大多數(shù)指令單周期完成流水線執(zhí)行Thumb\DSP\jazeller功能擴(kuò)展低功耗1.3ARM處理器的特點支持CACHE和MMU支持CACHE和MMU(1)1、為什么采用高速緩存微處理器的時鐘頻率比內(nèi)存速度提高快得多,高速緩存可以提高內(nèi)存的平均性能。2、高速緩存的工作原理高速緩存是一種小型、快速的存儲器,它保存部分主存內(nèi)容的拷貝。CPU高速緩存控制器CACHE主存數(shù)據(jù)數(shù)據(jù)地址支持CACHE和MMU(1)1、為什么采用高速緩存高速緩存MMU(MemoryManagementUnit)虛實地址變換內(nèi)存地址訪問保護(hù)支持CACHE和MMU(2)MMU(MemoryManagementUnit)支持C指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處理器存儲器程序指令0指令1指令2指令3指令4數(shù)據(jù)數(shù)據(jù)0數(shù)據(jù)1數(shù)據(jù)2CACHE的馮·諾依曼體系結(jié)構(gòu)模型ARM7指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處理器存儲器程序指令0指指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處理器程序存儲器指令0指令1指令2數(shù)據(jù)存儲器數(shù)據(jù)0數(shù)據(jù)1數(shù)據(jù)2地址指令地址數(shù)據(jù)CACHE哈佛體系結(jié)構(gòu)模型ARM9+指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處理器程序存儲器指令0指RISC指令集RISC:精簡指令集(ReducedInstructionSetComputer)指令集中的指令長度(大小)基本一致在通道中只包含最有用的指令確保數(shù)據(jù)通道快速執(zhí)行每一條指令使CPU硬件結(jié)構(gòu)設(shè)計變得更為簡單RISC指令集RISC:精簡指令集(ReducedInstRISC與CISCCISCRISCIFIDREGALUMEM開始退出IFIDALUMEMREG微操作通道開始退出單通數(shù)據(jù)通道RISC與CISCCISCIFIDREGALUMEM開始退出流水線操作流水線技術(shù):幾個指令可以并行執(zhí)行提高了CPU的運行效率內(nèi)部信息流要求通暢流動譯碼取指執(zhí)行add譯碼取指執(zhí)行sub譯碼取指執(zhí)行cmp時間AddSubCmp流水線操作流水線技術(shù):幾個指令可以并行執(zhí)行譯碼取指執(zhí)行add1.4命名的含義標(biāo)志含義說明T支持Thumb指令集Thumb指令集版本1:ARMv4TThumb指令集版本2:ARMv5TThumb-2:ARMv6TD片上調(diào)試M支持長乘法32位乘32位得到64位,32位的乘加得到64位IEmbeddedICEEDSP指令增加了DSP算法處理器指令:16位乘加指令,飽和的帶符號數(shù)的加減法,雙字?jǐn)?shù)據(jù)操作,cache預(yù)取指令JJava加速器Jazelle提高java代碼的運行速度S可綜合提供VHDL或Verilog語言設(shè)計文件1.4命名的含義標(biāo)志含義說明T支持Thumb指令集Thum1.6PXA250開發(fā)板例子(上面)串口Reset鍵GPIOLED10兆以太網(wǎng)(eth1)10兆以太網(wǎng)(eth0)以太網(wǎng)卡指示燈(LED)電源電源指示燈(LED)1.6PXA250開發(fā)板例子(上面)串口1.6PXA250開發(fā)板的例子(下面)JTAG接口SP0SP1SSP音頻接口PXA250微控制器網(wǎng)卡芯片穩(wěn)壓器1.6PXA250開發(fā)板的例子(下面)JTAG接口目錄1總體介紹2ARM處理器的分類3流水線(pipeline)4模式(model)和寄存器5異常和異常向量表6存儲和I/O7AHBA總線目錄1總體介紹2ARM處理器的分類2.1基于處理器內(nèi)核的分類ARM7T,ARM7E,ARM9,ARM9E,ARM10T,ARM10E,ARM112.2基于指令集體系結(jié)構(gòu)的分類v4T,v5T,v5TE,v5TEJ,v62.3uClinux對ARM處理器的分類有學(xué)員問:XScale是ARM幾?2ARM處理器的分類2.1基于處理器內(nèi)核的分類有學(xué)員問:2.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等。2.1ARMCore(ARM核)處理器核/整數(shù)核(Pro2.1.1ARM7T和ARM7EFamilyUnifiedCache內(nèi)存管理流水線級別ThumbDSPJazelleARM7TDMI無無3有無無ARM7TDMI-S無無3有無無ARM710T/720T8kMMU3有無無ARM740T8k或4kProtectionUnit3有無無ARM7EJ-S無無3有有有2.1.1ARM7T和ARM7EFamilyUnifie2.1.1ARM7系列的升級EmbeddedTraceMacrocell----ETM2.1.1ARM7系列的升級EmbeddedTrace2.1.2ARM9FamilyCache內(nèi)存管理流水線級別ThumbDSPJazelleARM9TDMI無無5有無無ARM920T16K/16kMMU5有無無ARM922T8k/8kMMU5有無無ARM940T4k/4kProtectionUnit5有無無2.1.2ARM9FamilyCache內(nèi)存管理流水線級2.1.2ARM9系列的升級2.1.2ARM9系列的升級2.1.3ARM9EFamilyCache內(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有有有2.1.3ARM9EFamilyCache內(nèi)存管理流水線2.1.3ARM9E系列的升級ARM926EJ-SARM946E-SARM966E-S2.1.3ARM9E系列的升級ARM926EJ-SARM92.1.4ARM10E和ARM10TFamilyARM10EJ-S無無6有有有ARM1026EJ-S0,4-128k/0,4-128kMMU6有有有Cache內(nèi)存管理流水線級別ThumbDSPJazelleARM10E無無6有有無ARM1020E32k/32kMMU6有有無ARM1022E16k/16kMMU6有有無ARM10TDMI無無6有無無ARM1020T32k/32kMMU6有無無2.1.4ARM10E和ARM10TFamilyARM12.1.5ARM11FamilyCache內(nèi)存管理流水線級別ThumbDSPJazelle浮點運算ARM1136J-S4-64kMMU8有有有無ARM1136JF-S4-64kMMU8有有有有ARM1156T2-S可配置9Thumb-2有無無ARM1156T2F-S可配置9Thumb-2有無有2.1.5ARM11FamilyCache內(nèi)存管理流水線2.1.6StrongARM和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.1.6StrongARM和XScaleSA-11102.1.7基于ARM的SOC2.1.7基于ARM的SOC2.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的擴(kuò)展2.2指令集體系結(jié)構(gòu)(ISA)ThumbDSPJazell2.2指令集體系結(jié)構(gòu)2.2指令集體系結(jié)構(gòu)2.3uClinux-2.4.x的分類ARM7TDMI:Triscend-A7S,Triscend-A7V,AT91M40xxx,S3C3410X,S3C4510B,S3C4530A01,S3C44B0XARM720ARM740ARM920ARM940ARM940TSA11102.3uClinux-2.4.x的分類ARM7TDMI:T目錄1總體介紹2ARM處理器的分類3流水線(pipeline)4模式(model)和寄存器5異常和異常向量表6存儲和I/O7AHBA總線目錄1總體介紹3流水線(pipeline)3流水線(pipeline)3.1ARM7的流水線指令流水線的目的是提高執(zhí)行速度。PC指向的是預(yù)取指令,因此如果直接讀取PC值,得到的是“當(dāng)前指令地址+8”從內(nèi)存中取指令指令譯碼執(zhí)行指令/讀寫REG3.1ARM7的流水線指令流水線的目的是提高執(zhí)行速度。PC3.2更多級的流水線ARM10采用了6級流水線,但是處于兼容考慮,直接讀取PC值依然等于“當(dāng)前指令地址+8”。3.2更多級的流水線ARM10采用了6級流水線,但是處于兼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.3流水線對程序的影響lr=lr&15; an3.4指令預(yù)取和自修改代碼流水線使得CPU在執(zhí)行當(dāng)前指令的同時,從存儲器中預(yù)取其后若干條指令。預(yù)取的指令不一定得到執(zhí)行。比如發(fā)生跳轉(zhuǎn)或中斷。自修改代碼指的是代碼在執(zhí)行過程中可能修改自身。被修改的指令可能和預(yù)取得指令不同,從而產(chǎn)生錯誤。3.4指令預(yù)取和自修改代碼流水線使得CPU在執(zhí)行當(dāng)前指令的目錄1總體介紹2ARM處理器的分類3流水線(pipeline)4模式(model)和寄存器5異常和異常向量表6存儲和I/O7AHBA總線目錄1總體介紹4模式和寄存器4模式和寄存器4.1模式分類用戶(User):一般的非特權(quán)任務(wù)運行的模式。系統(tǒng)(System):和用戶模式共用積存器,但是權(quán)限比用戶模式高。特權(quán)(SVC):用于軟件中斷和重起,一般操作系統(tǒng)運行在該模式??熘袛啵‵IQ):用于快中斷服務(wù)程序。中斷(IRQ):用于普通中斷服務(wù)程序。中止(Abort):用于存儲器故障。未定義(Undef):用于處理沒有定義的指令,可在該模式中用軟件來模擬硬件功能,比如浮點運算。4.1模式分類用戶(User):一般的非特權(quán)任務(wù)運行的模式4.2ARM處理器的寄存器ARM處理器總共有37個寄存器: 30個通用寄存器 6個狀態(tài)寄存器 1個專用于記錄當(dāng)前狀態(tài) 5個專用于記錄狀態(tài)切換前的狀態(tài)

1個程序計數(shù)器PC4.2ARM處理器的寄存器ARM處理器總共有37個寄存器:4.2ARM處理器的寄存器(續(xù))User/SystemSupervisorAbortUndefinedInterruptFastInterruptR0R0R0R0R0R0R1R1R1R1R1R1R2R2R2R2R2R2R3R3R3R3R3R3R4R4R4R4R4R4R5R5R5R5R5R5R6R6R6R6R6R6R7R7R7R7R7R7R8R8R8R8R8R8_FIQR9R9R9R9R9R9_FIQR10R10R10R10R10R10_FIQR11R11R11R11R11R11_FIQR12R12R12R12R12R12_FIQR13R13_SVCR13_ABORTR13_UNDEFR13_IRQR13_FIQR14R14_SVCR14_ABORTR14_UNDEFR14_IRQR14_FIQPCPCPCPCPCPC

CPSRCPSRCPSRCPSRCPSRCPSR

SPSR_SVCSPSR_ABORTSPSR_UNDEFSPSR_IRQSPSR_FIQ4.2ARM處理器的寄存器(續(xù))User/SystemSu4.2ARM處理器的寄存器(續(xù))r0—r12:通用寄存器。當(dāng)C和匯編互相調(diào)用時,r0—r3用來傳遞函數(shù)參數(shù),可記為a0—a3r13:用于各工作態(tài)的堆棧寄存器(sp)r14:用來保護(hù)程序返回地址的鏈接寄存器(lr)r15:程序計數(shù)器(pc)r8_FIQ—r12_FIQ:允許快速中斷處理r8_User—r12_User:除了FIQ外各模式公用除了User和System模式外,各種模式都有自己獨立的r13和r144.2ARM處理器的寄存器(續(xù))r0—r12:通用寄存4.3CPSR/SPSR程序狀態(tài)寄存器(ProgramStatusRegisters)CSPR/SPSR標(biāo)志位NZCV 31-28IFT 7-5模式位Mode 4-04.3CPSR/SPSR程序狀態(tài)寄存器(ProgramS4.3CPSR/SPSR(續(xù))條件標(biāo)志(ConditionCodeFlags)N=ALU計算結(jié)果為負(fù)數(shù)(NegativeresultfromALUflag)。Z=ALU計算結(jié)果為0(ZeroresultfromALUflag)。C=ALU計算結(jié)果進(jìn)位(ALUoperationCarriedout)。V=ALU計算結(jié)果溢出(ALUoperationOverflowed)。中斷禁止位(InterruptDisablebits)I=1,關(guān)IRQ。F=1,關(guān)FIQ。TBit(Architecturev4Tonly)T=0,處理器當(dāng)前處于ARM狀態(tài)(ProcessorinARMstate)T=1,處理器當(dāng)前處于Thumb狀態(tài)(ProcessorinThumbstate)4.3CPSR/SPSR(續(xù))條件標(biāo)志(Condition4.3CPSR/SPSR(續(xù))M[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)4.3CPSR/SPSR(續(xù))M[4:0]模式Acces目錄1總體介紹2ARM處理器的分類3流水線(pipeline)4模式(model)和寄存器5異常和異常向量表6存儲和I/O7AHBA總線目錄1總體介紹5異常和異常向量表5異常和異常向量表5.1異常的產(chǎn)生直接異常:軟件中斷,未定義指令(包括所要求的協(xié)處理器不存在時的協(xié)處理器命令)和預(yù)取指令間接異常:數(shù)據(jù)中止(在Load和Store數(shù)據(jù)訪問時的存儲器故障)外部異常:復(fù)位,IRQ和FIQ5.1異常的產(chǎn)生直接異常:軟件中斷,未定義指令(包括所要求5.2異常向量表RESET可以從0x00000000開始或0xffff0000開始,因此異常向量表可以放在上述地址優(yōu)先級RESETDataAbortFIQIRQPrefetchSWI/Undef5.2異常向量表RESET可以從0x00000000開始5.3uCLinux的異常向量表 /*Normalcase:lowermemoryiswritable.*/ .equ __real_stubs_start,.LCvectors+0x200.LCvectors: swi SYS_ERROR0 b __real_stubs_start+(vector_undefinstr-__stubs_start) ldr pc,__real_stubs_start+(.LCvswi-__stubs_start)

溫馨提示

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

評論

0/150

提交評論