第3章ARM體系結(jié)構(gòu)_第1頁(yè)
第3章ARM體系結(jié)構(gòu)_第2頁(yè)
第3章ARM體系結(jié)構(gòu)_第3頁(yè)
第3章ARM體系結(jié)構(gòu)_第4頁(yè)
第3章ARM體系結(jié)構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩78頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第3章ARM體系構(gòu)造1第3章ARM體系構(gòu)造3.1ARM微處置器根底3.2ARM的內(nèi)核系列3.3ARM微處置器的指令系統(tǒng)3.4ARM內(nèi)存管理單元23.1ARM微處置器根底ARM的運(yùn)轉(zhuǎn)方式ARM的任務(wù)形狀A(yù)RM的存放器組織ARM的異常ARM的存儲(chǔ)器格式ARM的特點(diǎn)和優(yōu)勢(shì)3ARM的運(yùn)轉(zhuǎn)方式ARM微處置器支持7種運(yùn)轉(zhuǎn)方式,分別為:用戶方式〔usr〕:ARM處置器正常的程序執(zhí)行形狀快速中斷方式〔fiq〕:用于高速數(shù)據(jù)傳輸或通道處置中斷方式〔irq〕:用于通用的中斷處置管理方式〔svc〕:操作系統(tǒng)運(yùn)用的維護(hù)方式終止方式〔abt〕:當(dāng)數(shù)據(jù)或指令預(yù)取終止時(shí)進(jìn)入該方式,可用于虛擬存儲(chǔ)及存儲(chǔ)維護(hù)。系統(tǒng)方式〔sys〕:運(yùn)轉(zhuǎn)具有特權(quán)的操作系統(tǒng)義務(wù)。未定義方式〔und〕:當(dāng)未定義的指令執(zhí)行時(shí)進(jìn)入該方式,可用于支持硬件協(xié)處置器的軟件仿真。4ARM的任務(wù)形狀

ARM微處置器的任務(wù)形狀普通有兩種,并可在兩種形狀之間切換:ARM形狀,此時(shí)處置器執(zhí)行32位的字對(duì)齊的ARM指令Thumb形狀,此時(shí)處置器執(zhí)行16位的、半字對(duì)齊的Thumb指令5ARM的存放器組織

ARM微處置器共有37個(gè)32位存放器,其中31個(gè)為通用存放器,6個(gè)為形狀存放器。但是這些存放器不能被同時(shí)訪問(wèn)。在某種時(shí)辰,通用存放器R14~R0、程序計(jì)數(shù)器PC、一個(gè)或兩個(gè)形狀存放器都是可訪問(wèn)的。6ARM的存放器組織7ARM的存放器組織8ARM的存放器組織9ARM的存放器組織PSR存放器的各個(gè)位:中斷制止位I、FThumb標(biāo)志位運(yùn)轉(zhuǎn)方式位M[4:0]10ARM的存放器組織M[4:0]處理器模式0b10000用戶模式0b10001FIQ0b10010IRQ0b10011管理模式0b10111終止模式0b11011未定義模式0b11111系統(tǒng)模式形狀存放器方式位的含義11ARM的異常異常類型具體含義復(fù)位(Reset)當(dāng)處理器的復(fù)位電平有效時(shí),產(chǎn)生復(fù)位異常,程序跳轉(zhuǎn)到復(fù)位異常處理程序處執(zhí)行。未定義指令(Undefined)當(dāng)ARM處理器或協(xié)處理器遇到不能處理的指令時(shí),產(chǎn)生未定義指令異常??墒褂迷摦惓C(jī)制進(jìn)行軟件仿真。軟件中斷(SWI)該異常由執(zhí)行SWI指令產(chǎn)生,可用于用戶模式下的程序調(diào)用特權(quán)操作指令。可使用該異常機(jī)制實(shí)現(xiàn)系統(tǒng)功能調(diào)用。指令預(yù)取終止(PrefetchAbort)若處理器預(yù)取指令的地址不存在,或該地址不允許當(dāng)前指令訪問(wèn),存儲(chǔ)器會(huì)向處理器發(fā)出終止信號(hào),但當(dāng)預(yù)取的指令被執(zhí)行時(shí),才會(huì)產(chǎn)生指令預(yù)取終止異常。數(shù)據(jù)終止(DataAbort)若處理器數(shù)據(jù)訪問(wèn)指令的地址不存在,或該地址不允許當(dāng)前指令訪問(wèn)時(shí),產(chǎn)生數(shù)據(jù)終止異常。外部中斷請(qǐng)求(IRQ)當(dāng)處理器的外部中斷請(qǐng)求引腳有效,且CPSR中的I位為0時(shí),產(chǎn)生IRQ異常。系統(tǒng)的外設(shè)可通過(guò)該異常請(qǐng)求中斷服務(wù)??焖僦袛嗾?qǐng)求(FIQ)當(dāng)處理器的快速中斷請(qǐng)求引腳有效,且CPSR中的F位為0時(shí),產(chǎn)生FIQ異常。12ARM的異常返回指令以前的狀態(tài)ARMThumbBLMOVPC,R14PC+4PC+2SWIMOVSPC,R14_svcPC+4PC+2UDEFMOVSPC,R14_undPC+4PC+2FIQSUBSPC,R14_fiq,#4PC+4PC+4IRQSUBSPC,R14_irq,#4PC+4PC+4PABTSUBSPC,R14_abt,#4PC+4PC+4DABTSUBSPC,R14_abt,#8PC+8PC+813ARM的異常1〔最高〕復(fù)位2數(shù)據(jù)終止3FIQ4IRQ5預(yù)取指令終止6〔最低〕未定義指令、SWIARM異常的優(yōu)先級(jí)14ARM的存儲(chǔ)器格式ARM體系構(gòu)造將存儲(chǔ)器看作是從零地址開(kāi)場(chǎng)的字節(jié)的線性組合。從第0字節(jié)到第3字節(jié)放置第一個(gè)存儲(chǔ)的字?jǐn)?shù)據(jù),從第4個(gè)字節(jié)到第7個(gè)字節(jié)放置第二個(gè)存儲(chǔ)的字?jǐn)?shù)據(jù),依次陳列。作為32位的微處置器,ARM體系構(gòu)造所支持的最大尋址空間為4GB〔32位〕。ARM體系構(gòu)造可以用兩種方法存儲(chǔ)字?jǐn)?shù)據(jù),稱之為大端格式和小端格式。15ARM的存儲(chǔ)器格式大端格式16ARM的存儲(chǔ)器格式小端格式。17ARM的特點(diǎn)和優(yōu)勢(shì)1.內(nèi)核編程體系多種方式的切換眾多的通用存放器32位地址/數(shù)據(jù)操作指令集中的特殊功能高效的C和C++編譯器硬件乘法器Thumb指令集E加強(qiáng)DSP指令Jazzle技術(shù)2.協(xié)處置器MMUMPUVFP3.AMBA(先進(jìn)控制器總線體系)4.嵌入式ICE、低功耗、小體積183.2ARM的內(nèi)核系列ARM內(nèi)核分類與系列ARM體系構(gòu)造版本19ARM內(nèi)核分類與系列ARM內(nèi)核系列ARM7系列ARM9系列ARM9E系列ARM10E系列SecurCore系列StrongARM/XscaleARM11系列Cortex20ARM內(nèi)核分類與系列1994-2004年發(fā)布的ARM內(nèi)核21ARM內(nèi)核分類與系列處置器內(nèi)核內(nèi)核分類ARM7 ARM7DMI(-S) ARM720T ARM7EJ-SARM9 ARM920T ARM922TARM9E ARM926EJ-S ARM946E-S ARM966E-S ARM968E-SARM10EARM1020E ARM1022E ARM1026EJ-S處置器內(nèi)核 內(nèi)核分類ARM11 ARM1J(F)-S ARM1156T2(F)-S ARM1176JZ(F)-SSecurCoreSC100 SC110 SC200 SC210StrongARM Xscale 22ARM7內(nèi)核ARM7TDMIARM7TDMI-SARM720TARM7EJ-S23ARM9內(nèi)核ARM920TARM922T24ARM9E內(nèi)核

ARM926EJ-SARM946E-SARM966E-SARM968E-S25ARM10E內(nèi)核

ARM1020EARM1026EJ-S26ARM11內(nèi)核

ARM1J(F)-SARM1156T2(F)-SARM1176JZ(F)-S27SecurCore內(nèi)核

SC100/SC110SC200/SC21028其他ARM內(nèi)核

StrongARMIntelXScaleCortexARMCortexA〔運(yùn)用內(nèi)核〕ARMCortexR〔實(shí)時(shí)內(nèi)核〕ARMCortexM〔微控制器〕29ARM體系構(gòu)造版本

ARMV1體系是最初的版本,只需26位的尋址空間,沒(méi)有乘法指令,最終也沒(méi)有商業(yè)化。ARMV2體系與V1體系同為26位尋址空間具有乘法和乘加指令,支持協(xié)處置器。ARMV3體系的尋址范圍擴(kuò)展到32位,具有乘法和乘加指令,支持協(xié)處置器。ARMV4體系添加了半字存儲(chǔ)操作,對(duì)調(diào)試的支持以及支持嵌入的ICE。ARMV5體系添加了DSP指令支持和對(duì)Java指令的支持。ARMV6體系添加了媒體指令,ARMv6指令集合中參與了超越60條SIMD單指令多數(shù)據(jù)指令。ARMV7體系定義了三種獨(dú)立的內(nèi)核型--A〔運(yùn)用領(lǐng)域〕,R〔實(shí)時(shí)領(lǐng)域〕,M〔控制領(lǐng)域〕。303.2ARM微處置器的指令系統(tǒng)ARM指令系統(tǒng)的概述ARM的尋址方式ARM的指令集Thumb的指令集31ARM指令系統(tǒng)的概述ARM微處置器指令是加載/存儲(chǔ)型的,即指令集僅能處置存放器中的數(shù)據(jù),處置結(jié)果都要放回存放器中,對(duì)系統(tǒng)存儲(chǔ)器的訪問(wèn)那么需求專門(mén)的加載/存儲(chǔ)指令來(lái)完成ARM指令集分為六類:跳轉(zhuǎn)指令數(shù)據(jù)處置指令程序形狀存放器〔PSR〕處置指令加載/存儲(chǔ)指令協(xié)處置器指令異常產(chǎn)生指令32ARM指令系統(tǒng)的概述助記符指令功能描述ADC帶進(jìn)位加法指令A(yù)DD加法指令A(yù)ND邏輯與指令B跳轉(zhuǎn)指令BIC位清零指令BL帶返回的跳轉(zhuǎn)指令BLX帶返回和狀態(tài)切換的跳轉(zhuǎn)指令BX帶狀態(tài)切換的跳轉(zhuǎn)指令CDP協(xié)處理器數(shù)據(jù)操作指令CMN比較反值指令CMP比較指令EOR異或指令LDC存儲(chǔ)器到協(xié)處理器的數(shù)據(jù)傳輸指令LDM加載多個(gè)寄存器指令LDR存儲(chǔ)器到寄存器的數(shù)據(jù)傳輸指令MCR從ARMMLA乘加運(yùn)算指令MOV數(shù)據(jù)傳送指令

助記符指令功能描述MRC從協(xié)處理器寄存器到ARMMRS傳送CPSRMSR傳送通用寄存器到CPSRMUL32MLA32MVN數(shù)據(jù)取反傳送指令ORR邏輯或指令RSB逆向減法指令RSC帶借位的逆向減法指令SBC帶借位減法指令STC協(xié)處理器寄存器寫(xiě)入存儲(chǔ)器指令STM批量?jī)?nèi)存字寫(xiě)入指令STR寄存器到存儲(chǔ)器的數(shù)據(jù)傳輸指令SUB減法指令SWI軟件中斷指令SWP交換指令TEQ相等測(cè)試指令TST位測(cè)試指令33ARM指令的格式一條典型的ARM指令編碼格式為:Cond001OpcodeSRnRdOperand2011121516192021242527283178一條典型的ARM指令語(yǔ)法格式為:<Opcode>{<cond>}{s}<Rd>,<Rn>{,<Operand2>}Opcode:指令操作碼。cond:指令的條件碼。S:決議指令的操作能否影響cpsr的值。Rd:目的存放器編碼。Rn:包含第一個(gè)操作數(shù)的存放器編碼。Operand2:第2操作數(shù)。34條件執(zhí)行每條ARM指令包含4位條件碼域<cond>,它占用指令編碼的最高四位[31:28]。條件編碼共24=16種,其中,15種用于指令的條件碼。每種條件碼用2個(gè)英文縮寫(xiě)字符表示。ARM處置器根據(jù)指令的執(zhí)行條件能否滿足,決議當(dāng)前指令能否執(zhí)行。只需在cpsr中的條件標(biāo)志位滿足指定的條件時(shí),指令才會(huì)被執(zhí)行。不符合條件的代碼依然占用一個(gè)時(shí)鐘周期〔相當(dāng)于一個(gè)NOP指令〕。書(shū)寫(xiě)時(shí),條件碼的位置在指令助記符的后面〔因此也稱為條件后綴?!常纾?MOVEQR0,R1;35ARM指令系統(tǒng)的概述

條件碼助記符后綴標(biāo)志含義0000EQZ置位相等0001NEZ清零不相等0010CSC置位無(wú)符號(hào)數(shù)大于或等于0011CCC清零無(wú)符號(hào)數(shù)小于0100MIN置位負(fù)數(shù)0101PLN清零正數(shù)或零0110VSV置位溢出0111VCV清零未溢出1000HIC置位無(wú)符號(hào)數(shù)大于1001LSC清零無(wú)符號(hào)數(shù)小于或等于1010GEN等于V帶符號(hào)數(shù)大于或等于1011LTN不等于V帶符號(hào)數(shù)小于1100GTZ清零且(N等于V)帶符號(hào)數(shù)大于1101LEZ置位或(N不等于V)帶符號(hào)數(shù)小于或等于1110AL忽略無(wú)條件執(zhí)行36ARM的尋址方式-1立刻尋址立刻尋址也叫立刻數(shù)尋址,這是一種特殊的尋址方式,操作數(shù)本身就在指令中給出,只需取出指令也就取到了操作數(shù)。這個(gè)操作數(shù)被稱為立刻數(shù),對(duì)應(yīng)的尋址方式也就叫做立刻尋址。例如以下指令:ADDR0,R0,#1;R0←R0+1ADDR0,R0,#0x3f;R0←R0+0x3f在以上兩條指令中,第二個(gè)源操作數(shù)即為立刻數(shù),要求以“#〞為前綴,對(duì)于以十六進(jìn)制表示的立刻數(shù),還要求在“#〞后加上“0x〞或“&〞。37ARM的尋址方式-2存放器尋址存放器尋址就是利用存放器中的數(shù)值作為操作數(shù),這種尋址方式是各類微處置器經(jīng)常采用的一種方式,也是一種執(zhí)行效率較高的尋址方式。以下指令:ADDR0,R1,R2;R0←R1+R2該指令的執(zhí)行效果是將存放器R1和R2的內(nèi)容相加,其結(jié)果存放在存放器R0中。38ARM的尋址方式-3存放器間接尋址 存放器間接尋址就是以存放器中的值作為操作數(shù)的地址,而操作數(shù)本身存放在存儲(chǔ)器中。例如以下指令: LDRR0,[R1];R0←[R1] STRR0,[R1];[R1]←R0 第一條指令將以R1的值為地址的存儲(chǔ)器中的數(shù)據(jù)傳送到R0中。 第二條指令將R0的值傳送到以R1的值為地址的存儲(chǔ)器中。39ARM的尋址方式-4基址變址尋址 基址變址尋址就是將存放器〔該存放器普通稱作基址存放器〕的內(nèi)容與指令中給出的地址偏移量相加,從而得到一個(gè)操作數(shù)的有效地址。變址尋址方式常用于訪問(wèn)某基地址附近的地址單元。采用變址尋址方式的指令常見(jiàn)有以下幾種方式,如下所示: LDRR0,[R1,#4];R0←[R1+4] LDRR0,[R1,#4]?。籖0←[R1+4]、R1←R1+4 LDRR0,[R1],#4;R0←[R1]、R1←R1+4 LDRR0,[R1,R2];R0←[R1+R2] 在第一條指令中,將存放器R1的內(nèi)容加上4構(gòu)成操作數(shù)的有效地址,從而獲得操作數(shù)存入存放器R0中。在第二條指令中,將存放器R1的內(nèi)容加上4構(gòu)成操作數(shù)的有效地址,從而獲得操作數(shù)存入存放器R0中,然后,R1的內(nèi)容自增4個(gè)字節(jié)。留意:“!〞表示數(shù)據(jù)傳輸終了后,更新基址存放器的值,但基址存放器不能為R15—PC。40ARM的尋址方式-5多存放器尋址 采用多存放器尋址方式,一條指令可以完成多個(gè)存放器值的傳送。這種尋址方式可以用一條指令完成傳送最多16個(gè)通用存放器的值。以下指令: LDMIAR0,{R1,R2,R3,R4};R1←[R0] ;R2←[R0+4] ;R3←[R0+8] ;R4←[R0+12] 該指令的后綴IA表示在每次執(zhí)行完加載/存儲(chǔ)操作后,R0按字長(zhǎng)度添加,因此,指令可將延續(xù)存儲(chǔ)單元的值傳送到R1~R4。41ARM的尋址方式-6跳轉(zhuǎn)尋址相對(duì)尋址以程序計(jì)數(shù)器PC當(dāng)前值為基地址,指令中的標(biāo)號(hào)作為偏移量,將兩者相加之后得到操作數(shù)的有效地址。例如:BL NEXT ;跳轉(zhuǎn)到子程序NEXT處執(zhí)行…….NEXT…….MOVPC,LR ;從子程序中前往42ARM的尋址方式-7堆棧尋址 堆棧是一種數(shù)據(jù)構(gòu)造,按先進(jìn)后出〔FirstInLastOut,F(xiàn)ILO〕的方式任務(wù),運(yùn)用一個(gè)稱作堆棧指針的公用存放器指示當(dāng)前的操作位置,堆棧指針總是指向棧頂。 當(dāng)堆棧指針指向最后壓入堆棧的數(shù)據(jù)時(shí),稱為滿堆?!睩ullStack〕,而當(dāng)堆棧指針指向下一個(gè)將要放入數(shù)據(jù)的空位置時(shí),稱為空堆棧〔EmptyStack〕。同時(shí),根據(jù)堆棧的生成方式,又可以分為遞增堆棧〔AscendingStack〕和遞減堆?!睤ecendingStack〕,當(dāng)堆棧由低地址向高地址生成時(shí),稱為遞增堆棧,當(dāng)堆棧由高地址向低地址生成時(shí),稱為遞減堆棧。留意:不要以為空堆棧就是沒(méi)有內(nèi)容的堆棧,滿堆棧就是沒(méi)有空間的堆棧。43ARM尋址方式總結(jié)ARM的尋址方式采用加載/存儲(chǔ)方式,因此沒(méi)有直接在內(nèi)存中處置數(shù)據(jù)的尋址方式。ARM尋址的字加載-存儲(chǔ)尋址是4字節(jié)對(duì)齊,半字加載是2字節(jié)對(duì)齊,不對(duì)齊不能訪問(wèn)。ARM多存放器的尋址方式可以加快某些程序的執(zhí)行效率。留意:以上ARM尋址方式是適用于一切ARM體系的,包括ARM7的馮.諾依曼構(gòu)造和ARM9及以上的哈佛構(gòu)造。44ARM指令集同一個(gè)體系的ARM內(nèi)核的指令集是一樣的,但是每條指令運(yùn)轉(zhuǎn)的時(shí)間能夠不同。45ARM指令集:跳轉(zhuǎn)指令跳轉(zhuǎn)實(shí)現(xiàn)的兩種方法:1〕運(yùn)用專門(mén)的跳轉(zhuǎn)指令2〕直接向PC寫(xiě)入跳轉(zhuǎn)地址〔保管斷點(diǎn),4GB延續(xù)線性地址空間〕ARM指令集中的跳轉(zhuǎn)指令可以完成從當(dāng)前指令向前或向后的32MB的地址空間的跳轉(zhuǎn),包括以下4條指令:B跳轉(zhuǎn)指令,例如:BLabel;程序無(wú)條件跳轉(zhuǎn)至Label處BL帶前往的跳轉(zhuǎn)指令BLX帶前往和形狀切換的跳轉(zhuǎn)指令BX帶形狀切換的跳轉(zhuǎn)指令46ARM指令集:數(shù)據(jù)處置指令傳送指令:存放器之間數(shù)據(jù)傳輸MOV數(shù)據(jù)傳送指令MVN數(shù)據(jù)取反傳送指令比較指令:不保管結(jié)果,只更新CPSR,即使不加S也自動(dòng)更新CMP比較指令CMN反值比較指令TST位測(cè)試指令TEQ相等測(cè)試指令算術(shù)指令:保管結(jié)果,更新CPSR標(biāo)志位ADD加法指令A(yù)DC帶進(jìn)位加法指令SUB減法指令SBC帶借位減法指令RSB逆向減法指令RSC帶借位的逆向減法指令A(yù)ND邏輯與指令ORR邏輯或指令EOR邏輯異或指令BIC位去除指令47ARM指令集:乘法指令乘法指令與乘加指令:MUL32位乘法指令MLA32位乘加指令SMULL64位有符號(hào)數(shù)乘法指令SMLAL64位有符號(hào)數(shù)乘加指令UMULL64位無(wú)符號(hào)數(shù)乘法指令UMLAL64位無(wú)符號(hào)數(shù)乘加指令例如:MLASR0,R1,R2,R3;什么意思呢???R0=R1XR2+R3,同時(shí)設(shè)置CPSR相關(guān)條件標(biāo)志位48加載/存儲(chǔ)指令–存放器存儲(chǔ)器之間傳送數(shù)據(jù)單存放器加載存儲(chǔ)指令:LDR字?jǐn)?shù)據(jù)加載指令LDRB字節(jié)數(shù)據(jù)加載指令LDRH半字?jǐn)?shù)據(jù)加載指令STR字?jǐn)?shù)據(jù)存儲(chǔ)指令STRB字節(jié)數(shù)據(jù)存儲(chǔ)指令STRH半字?jǐn)?shù)據(jù)存儲(chǔ)指令LDRSB有符號(hào)的字節(jié)加載LDRSH有符號(hào)的半字加載多存放器加載存儲(chǔ)指令:LDM多字節(jié)加載指令STM多字節(jié)存儲(chǔ)指令I(lǐng)A:每次傳送后地址+4IB:每次傳送前地址+4DA:每次傳送后地址-4DB:每次傳送前地址-4FD:滿遞減堆棧ED:空遞減堆棧FA:滿遞增堆棧EA:空遞增堆棧加載指令:用于存儲(chǔ)器中的數(shù)據(jù)傳送到存放器存儲(chǔ)指令:用于存放器中的數(shù)據(jù)傳送到存儲(chǔ)器交換指令:存儲(chǔ)器與存放器之間交換數(shù)據(jù),如:SWP、SWPB塊復(fù)制相關(guān)堆棧操作相關(guān)思索:STRR0,[R1],#8STRR0,[R1,#8]STMFDR13!,{R0,R4-R12,LR}LDMFDR13!,{R0,R4-R12,PC}49程序形狀存放器指令A(yù)RM微處置器支持程序形狀存放器訪問(wèn)指令,用于在程序形狀存放器和通用存放器之間傳送數(shù)據(jù),程序形狀存放器訪問(wèn)指令包括以下兩條:MRS程序形狀存放器到通用存放器的數(shù)據(jù)傳送指令MSR通用存放器到程序形狀存放器的數(shù)據(jù)傳送指令思索:MSRCPSR_c,R0 ;什么意思????50ARM的協(xié)處置器指令主要用于ARM處置器初始化ARM協(xié)處置器的數(shù)據(jù)處置操作,以及在ARM處置器的存放器和協(xié)處置器的存放器之間傳送數(shù)據(jù),和在ARM協(xié)處置器的存放器和存儲(chǔ)器之間傳送數(shù)據(jù)。ARM協(xié)處置器指令包括以下5條:CDP協(xié)處置器數(shù)操作指令LDC協(xié)處置器數(shù)據(jù)加載指令STC協(xié)處置器數(shù)據(jù)存儲(chǔ)指令MCRARM處置器存放器到協(xié)處置器存放器的數(shù)據(jù)傳送指令MRC協(xié)處置器存放器到ARM處置器存放器的數(shù)據(jù)傳送指令A(yù)RM指令集:協(xié)處置器指令〔選修〕51異常產(chǎn)生指令〔選修〕ARM微處置器所支持的異常指令有如下兩條:—SWI軟件中斷指令SWI指令用于產(chǎn)生軟件中斷,在控制方式中用于進(jìn)入管理員方式,以便用戶程序能調(diào)用操作系統(tǒng)的系統(tǒng)例程。操作系統(tǒng)在SWI的異常處置程序中提供相應(yīng)的系統(tǒng)效力,指令中24位的立刻數(shù)指定用戶程序調(diào)用系統(tǒng)例程的類型。指令例如:SWI0x02;該指令調(diào)用操作系統(tǒng)編號(hào)為02的系統(tǒng)例程?!狟KPT斷點(diǎn)中斷指令BKPT指令的格式為:BKPT16位的立刻數(shù)BKPT指令產(chǎn)生軟件斷點(diǎn)中斷,可用于程序的調(diào)試。52AREAHelloW,CODE,READONLY;聲明代碼區(qū)SWI_WriteCEQU&0;輸出r0中的字符SWI_ExitEQU&11;程序終了ENTRY;代碼入口STARTADRr1,TEXT;r1“HelloWorld〞LOOPLDRBr0,[r1],#1;讀取下一字節(jié)CMPr0,#0;檢查文本終點(diǎn)SWINESWI_WriteC;假設(shè)非終點(diǎn),那么打印BNELOOP;并前往LOOPSWISWI_Exit;執(zhí)行終了TEXT=“HelloWorld〞,&0a,&0d,0END;程序終了Example:HelloARMWorld!53Thumb指令集 為兼容數(shù)據(jù)總線寬度為16位的運(yùn)用系統(tǒng),ARM體系構(gòu)造除了支持執(zhí)行效率很高的32位ARM指令集以外,同時(shí)支持16位的Thumb指令集。Thumb指令集是ARM指令集的一個(gè)子集,允許指令編碼為16位的長(zhǎng)度。與等價(jià)的32位代碼相比較,Thumb指令集在保管32代碼優(yōu)勢(shì)的同時(shí),大大的節(jié)省了系統(tǒng)的存儲(chǔ)空間。一切的Thumb指令都有對(duì)應(yīng)的ARM指令,而且Thumb的編程模型也對(duì)應(yīng)于ARM的編程模型,按照規(guī)那么編程時(shí)可實(shí)現(xiàn)相互調(diào)用。Thumb指令集的數(shù)據(jù)處置指令操作數(shù)是32位,指令地址也是32位,但是大多數(shù)Thumb指令是無(wú)條件執(zhí)行的,并且大多數(shù)Thumb數(shù)據(jù)處置指令的目的存放器與其中一個(gè)源存放器一樣。54運(yùn)轉(zhuǎn)速度和存儲(chǔ)器空間的比較Thumb代碼所需的存儲(chǔ)空間約為ARM代碼的60%~70%Thumb代碼運(yùn)用的指令數(shù)比ARM代碼多約30%~40%假設(shè)運(yùn)用32位的存儲(chǔ)器,ARM代碼比Thumb代碼快約40%假設(shè)運(yùn)用16位的存儲(chǔ)器,Thumb代碼比ARM代碼快約40%~50%與ARM代碼相比較,運(yùn)用Thumb代碼,存儲(chǔ)器的功耗會(huì)降低約30%55Thumb指令集和ARM指令集區(qū)別1、分支指令程序相對(duì)轉(zhuǎn)移,特別是條件轉(zhuǎn)移與ARM代碼下的轉(zhuǎn)移相比,在范圍上受更多的限制,轉(zhuǎn)向子程序是無(wú)條件的轉(zhuǎn)移。2、數(shù)據(jù)處置指令數(shù)據(jù)處置指令是對(duì)通用存放器進(jìn)展操作。在大多數(shù)情況下,操作的結(jié)果須放入其中一個(gè)操作數(shù)存放器中,而不是第三個(gè)存放器中。數(shù)據(jù)處置操作比ARM形狀的更少。訪問(wèn)存放器R8-R15外,遭到一定的限制。Thumb指令移位和ALU操作分開(kāi)〔ARM只需一條指令〕Thumb對(duì)R0~R7數(shù)據(jù)處置總是更新cpsr標(biāo)志位〔同功能ARM只需加S后綴才可以〕。除CMP指令外對(duì)R8~R15操作均不改動(dòng)標(biāo)志位。56Thumb指令集3、單存放器加載和存儲(chǔ)指令在Thumb形狀下,單存放器加載和存儲(chǔ)指令只能訪問(wèn)存放器R0-R7。4、多存放器加載和存儲(chǔ)指令LDM和STM指令可以將任何范圍為R0-R7的存放器子集加載或存儲(chǔ)。PUSH和POP指令運(yùn)用堆棧指令R13作為基址實(shí)現(xiàn)滿遞減堆棧。除R0-R7外,PUSH指令還可以存儲(chǔ)銜接存放器R14,并且POP指令可以加載程序指令PC。Thumb指令集沒(méi)有協(xié)處置器指令、信號(hào)量指令及訪問(wèn)CPSR或SPSR的指令,沒(méi)有乘加指令及64位乘法指令等,且第二操作的數(shù)遭到限制;573.4ARM內(nèi)存管理單元ARMMMU概述ARMMMU的功能ARMMMU的操作ARMMMU的地址轉(zhuǎn)換58ARMMMU概述MMU是內(nèi)存管理單元〔MemoryManagementUnit〕的縮寫(xiě)。MMU在處置器中實(shí)現(xiàn)內(nèi)存管理的功能,完成物理地址到虛擬地址的映射。MMU本身有少量存儲(chǔ)空間存放從虛擬地址到物理地址的匹配表。此表稱作TLB(轉(zhuǎn)換旁置緩沖區(qū))。一切數(shù)據(jù)懇求都送往MMU,由MMU決議數(shù)據(jù)是在RAM內(nèi)還是在大容量存儲(chǔ)器設(shè)備內(nèi)。假設(shè)數(shù)據(jù)不在存儲(chǔ)空間內(nèi),MMU將產(chǎn)生頁(yè)面錯(cuò)誤中斷。在通常情況下,MMU的兩個(gè)主要功能是:1.將虛地址轉(zhuǎn)換成物理地址2.控制內(nèi)存的訪問(wèn)權(quán)限MMU封鎖時(shí),虛地址直接輸出到物理地址總線。59ARMMMU的功能CP15的主要管理和配置功能如下; 頁(yè)表 TLB〔轉(zhuǎn)換旁路緩沖器〕 域和訪問(wèn)權(quán)限 Cache和寫(xiě)緩沖器 快速上下文切換60ARMMMU的功能CP15協(xié)處置器的功能模塊:功能使用寄存器全局控制寄存器0、1MMU寄存器2、3、4、5、6、8,10以及寄存器1中的部分MPU寄存器2、3、5、6以及寄存器1中的部分Cache和WriteBuffer寄存器7、9FSCE寄存器13測(cè)試和時(shí)鐘控制寄存器15保留寄存器11、12、1461ARMMMU的操作MMU的功能相關(guān)的CP15中存放器的描畫(huà)寄存器主要操作R1使能/禁止MMU、cache、寫(xiě)緩沖R2設(shè)置變換表基地址(16k對(duì)齊)R3設(shè)置16個(gè)域的訪問(wèn)權(quán)限R8操作TLB功能(無(wú)效統(tǒng)一TLB、無(wú)效指令或數(shù)據(jù)TLB)62當(dāng)MMU被制止的時(shí)候存儲(chǔ)器按如下處置:根據(jù)詳細(xì)的情況決議能否允許Cache和寫(xiě)緩沖沒(méi)有存儲(chǔ)區(qū)訪問(wèn)的權(quán)限,MMU也不會(huì)產(chǎn)生異常信號(hào)物理地址的虛擬地址一樣,即平板〔flataddressmapping〕地址映射方式ARMMMU的操作63R1控制存放器〔類型:ARMv3:只寫(xiě),ARMv4:讀寫(xiě)〕M(位[0]):允許MMUA(位[1]):允許定位缺點(diǎn)檢測(cè)C(位[2]):允許數(shù)據(jù)Cache或者一致CacheW(位[3]):允許寫(xiě)緩沖P(位[4]):從26-32位異常處置〔異常程序地址位數(shù)〕D(位[5]):從26-32位地址區(qū)域〔26位地址異常檢查使能〕L(位[6]):至上一次中止區(qū)域〔終止模型選擇〕B(位[7]):從小端到大端S(位[8]):修正MMU系統(tǒng)ARMMMU的操作RR64R(位[9]):ROM維護(hù)形狀F(位[10]):控制外協(xié)處置器通訊速度Z(位[11]):允許分支預(yù)測(cè)I(位[12]):允許指令CacheV(位[13]):向量地址(從0x00000000-0x0000001C到0xFFFF0000-0xFFFF001C)RR(位[14]):控制Cache置換算法〔淘汰算法類型選擇〕L4(位[15]):對(duì)于ARMv5以后版本,控制向后兼容〔Thumb2〕位[31:16]:保管留意:對(duì)于MMU,其實(shí)只和CP15的存放器的0、1、8、9位有關(guān)ARMMMU的操作65 R2地址變換表基址存放器〔類型:ARMv3:只寫(xiě),ARMv4:讀寫(xiě)〕位[31:14]:變換表基地址,定位界限為16KBARMMMU的操作66 R3域訪問(wèn)控制存放器:〔類型:ARMv3:只寫(xiě),ARMv4:讀寫(xiě)〕數(shù)據(jù)的含義如下:00不允許訪問(wèn),任何訪問(wèn)將產(chǎn)生域錯(cuò)誤01客戶〔Client〕運(yùn)用域,根據(jù)段和頁(yè)描畫(huà)符的訪問(wèn)權(quán)限檢驗(yàn)10保管11管理〔Manager〕運(yùn)用域,不檢查訪問(wèn)答應(yīng)位,任何都不會(huì)產(chǎn)生域錯(cuò)誤ARMMMU的操作67R5缺點(diǎn)形狀存放器:〔類型:ARMv3:只讀,ARMv4:讀寫(xiě)〕Bit[8]:0Bits[7:4]:當(dāng)錯(cuò)誤發(fā)生時(shí),確定16個(gè)域中(D15–D0)哪個(gè)被訪問(wèn)。Bits[3:0]:指出試圖訪問(wèn)的類型ARMMMU的操作68 R6缺點(diǎn)地址存放器:〔類型:ARMv3:只讀,ARMv4:讀寫(xiě)〕上一次數(shù)據(jù)存取中止的地址ARMMMU的操作69功能如下所示:無(wú)效指令TLB無(wú)效指令單一入口無(wú)效整個(gè)數(shù)據(jù)TLB無(wú)效數(shù)據(jù)單一入口功能opcode2CRmData指令無(wú)效所有TLB01110MCRp15,0,Rd,c8,c7,0無(wú)效單一入口1111虛擬地址MCRp15,0,Rd,c8,c7,1無(wú)效整個(gè)指令TLB01010MCRp15,0,Rd,c8,c5,0無(wú)效指令單一入口1101虛擬地址MCRp15,0,Rd,c8,c5,1無(wú)效整個(gè)數(shù)據(jù)TLB01100MCRp15,0,Rd,c8,c6,0無(wú)效數(shù)據(jù)單一入口1110虛擬地址MCRp15,0,Rd,c8,c6,1R8TLB功能存放器〔類型:只寫(xiě)〕:用來(lái)執(zhí)行TLB的操作ARM

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論