《嵌入式系統(tǒng)及其應(yīng)用課件》第二章嵌入式微處理器的體系結(jié)構(gòu)_第1頁(yè)
《嵌入式系統(tǒng)及其應(yīng)用課件》第二章嵌入式微處理器的體系結(jié)構(gòu)_第2頁(yè)
《嵌入式系統(tǒng)及其應(yīng)用課件》第二章嵌入式微處理器的體系結(jié)構(gòu)_第3頁(yè)
《嵌入式系統(tǒng)及其應(yīng)用課件》第二章嵌入式微處理器的體系結(jié)構(gòu)_第4頁(yè)
《嵌入式系統(tǒng)及其應(yīng)用課件》第二章嵌入式微處理器的體系結(jié)構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩96頁(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)介

1、嵌入式系統(tǒng)及其應(yīng)用李 登 峰主要內(nèi)容:一、ARM處理器概述二、ARM內(nèi)核結(jié)構(gòu) 三、ARM中斷與異常四、ARM寄存器組織五、ARM的協(xié)處理器接口六、ARM的存儲(chǔ)系統(tǒng)七、S3C2440微處理器一、ARM處理器概述 ARM(Advanced RISC Machines)是一家專門從事基于RISC技術(shù)的芯片設(shè)計(jì)開 發(fā)的公司,但公司并不直接從事芯片生產(chǎn),而是靠轉(zhuǎn)讓設(shè)計(jì)許可獲得收益。 ARM微處理器內(nèi)核產(chǎn)品是一個(gè)龐大產(chǎn)品系列,采用ARM微處理器內(nèi)核的微處理器芯片遍及工業(yè)控制消費(fèi)類電子產(chǎn)品、通信系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)、無(wú)線傳輸?shù)雀黝惍a(chǎn)品市場(chǎng),約占據(jù)了32位RISC微處理器75%以上的市場(chǎng)份額。1.ARM處理器體系結(jié)

2、構(gòu)版本 從指令集體系結(jié)構(gòu)版本來(lái)看,為了清楚地表達(dá)每個(gè)ARM內(nèi)核應(yīng)用實(shí)例所使用的指令集,ARM公司定義了7種主要的ARM指令集體系結(jié)構(gòu)版本,以版本號(hào)V1V7表示,其中V1、V2、 V3版本已經(jīng)不再使用或未實(shí)現(xiàn)商業(yè)化。(1)V3版架構(gòu)( 目前已廢棄 )對(duì)原來(lái)的ARM體系結(jié)構(gòu)作了較大的改動(dòng): 尋址空間增至32位(4GB);當(dāng)前程序狀態(tài)信息從原來(lái)的R15寄存器移到當(dāng)前程序狀態(tài)寄存器CPSR中(Current Program Status Register)增加了程序狀態(tài)保存寄存器SPSR(Saved Program Status Register);增加了兩種異常模式,使操作系統(tǒng)代碼可方便地使用數(shù)據(jù)訪

3、問(wèn)中止異常、指令預(yù)取中止異常和未定義指令異常;增加了MRS/MSR指令,以訪問(wèn)新增的CPSR/SPSR寄存器;增加了從異常處理返回的指令功能。(2)V4版架構(gòu)是目前應(yīng)用最廣的ARM體系結(jié)構(gòu),不再?gòu)?qiáng)制要求與26位地址址空間兼容,而且還明確了哪些指令會(huì)引起未定義指令異常指令集中增加了以下功能: 符號(hào)化和非符號(hào)化半字及符號(hào)化字節(jié)的存/取指令;增加了T變種,處理器可工作在Thumb狀態(tài),增加了16位Thumb指令集;完善了軟件中斷SWI指令的功能;處理器系統(tǒng)模式引進(jìn)特權(quán)方式時(shí)使用用戶寄存器操作;把一些未使用的指令空間捕獲為未定義指令。(3)V5版架構(gòu)是在V4版的基礎(chǔ)上增加了一些新的指令: 帶有鏈接和交

4、換的轉(zhuǎn)移BLX指令;計(jì)數(shù)前導(dǎo)零CLZ指令;BRK中斷指令;增加了數(shù)字信號(hào)處理指令(V5TE版); 為協(xié)處理器增加更多可選擇的指令;改進(jìn)了ARM/Thumb狀態(tài)之間的切換效率;增加了兩個(gè)E和J兩個(gè)變種,其中E表示增強(qiáng)型DSP指令集,包括全部算法操作和16位乘法操作,J表示支持新的JAVA,提供字節(jié)代碼執(zhí)行的硬件和優(yōu)化軟件加速功能。(4)V6版架構(gòu)在V5版的基礎(chǔ)上強(qiáng)化了圖形處理性能,增加了一些新的功能: 單指令多數(shù)據(jù)功能 (Single Instruction, Multiple Data,SIMD ),將語(yǔ)音及圖像的處理功能提高到了原型機(jī)的4倍;Thumb增強(qiáng)功能,使得35%代碼壓縮;高性能定點(diǎn)

5、DSP功能;JazelleTM功能,Java性能優(yōu)化,速度可提高8倍。(5)v7構(gòu)架是在V6版的基礎(chǔ)上發(fā)展的,是目前ARM處理器體系結(jié)構(gòu)的最高版本,并保持了對(duì)現(xiàn)存ARM解決方案的完整的代碼兼容性。 采用了新型13級(jí)流水線,指令的吞吐率更高;增加了硬件處理中斷嵌套功能,具有更好的實(shí)時(shí)性;采用了Thumb-2技術(shù),比純32位代碼少使用31%的內(nèi)存;采用了NEON(可執(zhí)行打包的 SIMD處理)技術(shù),將DSP和媒體處理能力提高了進(jìn)4倍,可加速多媒體和信號(hào)處理算法(如視頻編碼/解碼、2D/3D 圖形、游戲、音頻和語(yǔ)音處理、圖像處理技術(shù)、電話和聲音合成),其性能至少為ARMv6 SIMD性能的2倍;增加了

6、支持改良的浮點(diǎn)運(yùn)算,滿足下一代3D圖形、游戲以、信號(hào)分析及傳統(tǒng)嵌入式控制需求。 2.ARM處理器家族ARM7 FamilyUnified Cache內(nèi)存管理流水線級(jí)別ThumbDSPJazelleARM7TDMI無(wú)無(wú)3有無(wú)無(wú)ARM7TDMI-S無(wú)無(wú)3有無(wú)無(wú)ARM710T/720T8kMMU3有無(wú)無(wú)ARM740T8k或4kProtection Unit3有無(wú)無(wú)ARM7EJ-S無(wú)無(wú)3有有有ARM9 FamilyCache內(nèi)存管理流水線級(jí)別ThumbDSPJazelleARM9無(wú)無(wú)5有無(wú)無(wú)ARM920T16K/16kMMU5有無(wú)無(wú)ARM922T8k/8kMMU5有無(wú)無(wú)ARM940T4k/4kProt

7、ection Unit5有無(wú)無(wú)ARM10 FamilyCache內(nèi)存管理流水線級(jí)別ThumbDSPJazelleARM10E無(wú)無(wú)6有有無(wú)ARM1020E32k/32kMMU6有有無(wú)ARM1022E16k/16kMMU6有有無(wú)ARM10EJ-S無(wú)無(wú)6有有有ARM1026EJ-S0,4-128k/0,4-128kMMU6有有有ARM10TDMI無(wú)無(wú)6有無(wú)無(wú)ARM1020T32k/32kMMU6有無(wú)無(wú)ARM11 FamilyCache內(nèi)存管理流水線級(jí)別ThumbDSPJazelle浮點(diǎn)運(yùn)算ARM1136J-S4-64kMMU8有有有無(wú)ARM1136JF-S4-64kMMU8有有有有ARM1156T2

8、-S可配置9Thumb-2有無(wú)無(wú)ARM1156T2F-S可配置9Thumb-2有無(wú)有3. ARM產(chǎn)品命名規(guī)則可綜合版本S支持向量浮點(diǎn)運(yùn)算F支持Jazelle加速J基于TDMI增強(qiáng)型,支持DSP指令E支持Embedded ICE,支持嵌入式跟蹤調(diào)試I支持快速乘法器M支持片上調(diào)試D支持Thumb指令集TcacheZ存儲(chǔ)管理/保護(hù)單元Y處理器系列,如ARM7/ARM9/ARM11等X含義后綴變量此外還必須注意:ARM7TDMI之后的所有ARM內(nèi)核,即使“ARM”標(biāo)志后沒(méi)有包含那些字符,但也包含了TDMI的特性;處理器系列是共享相同硬件特性的一組處理器的具體實(shí)現(xiàn)。例如,ARM7TDMI:ARM740T

9、和ARM720T都共享相同的系列特性,都屬于ARM7系列;JTAG是由 IEEE1149。1標(biāo)準(zhǔn)測(cè)試訪問(wèn)端口(standard test access port)和邊界掃描來(lái)描述的。它是ARM 用來(lái)發(fā)送和接受處理器內(nèi)核與測(cè)試一起之間調(diào)試信息的一系列協(xié)議;嵌入式ICE宏單元(Embedded ICE macrocell)是建立在處理器內(nèi)部、用來(lái)設(shè)置斷點(diǎn)和觀察點(diǎn)的調(diào)試硬件。可綜合版本,意味著處理器內(nèi)核是以源代碼形式提供的。這種源代碼形式又可以被編譯成一種易于EDA工具使用的形式。家族架構(gòu)內(nèi)核主要特點(diǎn)ARM7ARMv4TARM7TDMI(-S)基本內(nèi)核/無(wú)cache/無(wú)MMU,3級(jí)流水ARM710T

10、ARM7TDMI +8KB/8KB+ MMUARM720TARM710T的超集ARM740TARM7TDMI +8KB/8KB+MPUARMv5TEJARM7EJ-SARM7TDMI+DSP+Jazelle+可綜合ARM9ARMv4TARM9TDMI基本內(nèi)核/無(wú)cache/無(wú)MMU,5級(jí)流水ARM920TARM9TDMI+16KB/16KB+MMUARM922TARM9TDMI+8KB/8KB+ MMUARM940TARM9TDMI+4KB/4KB+ MPUARM9EARMv5TEARM946E-SARM9E+可變+ MPU +可綜合ARM966E-SARM9E +無(wú)cache+TCMs +可

11、綜合ARM968E-SARM9E +無(wú)cache+TCMs +可綜合ARMv5TEJARM926EJ-SARM9E +無(wú)cache +MMU +Jazelle+可綜合ARMv5TEARM996HSARM966E(無(wú)振蕩器) ARM主要產(chǎn)品家族、架構(gòu)、內(nèi)核及主要特點(diǎn)關(guān)系A(chǔ)RM10EARMv5TEARM1020EARM10E+32KB/32KB+ MMU+ (VFP)ARM1022EARM10E+16KB/16KB+ MMU+ (VFP)ARMv5TEJARM1026EJ-SARM10E+可變+ MMU+ (VFP)+ Jazelle+可綜合ARM11ARMv6ARM1136J(F)-SARM11

12、+可變+MMU+JazelleDBX+ (VFP) ARMv6T2ARM1156T2(F)-SARM11+可變+MMU+JazelleDBX+ (VFP)ARMv6KZARM1176JZ(F)-SARM11+可變+MMU+JazelleDBX+ (VFP) +TrustZoneARMv6KARM11 MPCoreARM11+可變+MMU+JazelleDBX+ (VFP) +對(duì)稱多核處理器CortexARMv7-ACortex-A8可變動(dòng)+MMU +VFP+ NEON+Jazelle RCT+Thumb-2 +TrustZoneARMv7-RCortex-R4(F)可變動(dòng)+(MMU)+(FPU

13、)+Embedded profileARMv7-MCortex-M3基本核心+無(wú)cache+MPUARMv7-MECortex-M4Optional 8 region MPU with sub regions and background region二、ARM內(nèi)核結(jié)構(gòu)T功能模塊(16 Thumb ): 可以在兼顧性能的同時(shí)減少代碼尺寸。M功能模塊: (增強(qiáng)型乘法器)可生成全64位的結(jié)果。D功能模塊(Debug ):該內(nèi)核中放置了用于調(diào)試的結(jié)構(gòu)。I功能模塊(EmbeddedICE Logic):用于實(shí)現(xiàn)斷點(diǎn)觀測(cè)及變量觀測(cè)的邏輯電路部分 ARM內(nèi)核TMDIARM9內(nèi)核模塊示意圖ARM內(nèi)核采用了R

14、ISC型處理器結(jié)構(gòu),具有低功耗、成本低、功能強(qiáng)等突出優(yōu)勢(shì),在嵌入式系統(tǒng)及應(yīng)用領(lǐng)域具有重要的影響,其主要特點(diǎn)包括:采用了RISC型處理器結(jié)構(gòu);低功耗、成本低、功能強(qiáng);采用ARM/Thumb(32位/16位)雙指令集;具有多處理器狀態(tài)模式;具有在線仿真調(diào)試功能;具有協(xié)處理器接口;具有優(yōu)化設(shè)計(jì)的片上總線AMBA(AHB/ASB/APB);具有靈活方便的接口。1. ARM7TDMI主處理器邏輯結(jié)構(gòu)三級(jí)指令流水線是ARM7TDMI的主要特征之一,三級(jí)指令流水線指令的執(zhí)行分為取指、譯碼和執(zhí)行三個(gè)階段,各階段所完成的操作詳細(xì)分解表如下:ARM7TDMI單周期指令最佳流水線MOV、ADD、SUB指令為單周期指

15、令。從T1開始,用3個(gè)時(shí)鐘周期執(zhí)行了3條指令,指令平均周期數(shù)等于1個(gè)時(shí)鐘周期。2.ARM9TDMI主處理器通用內(nèi)核結(jié)構(gòu)3.ARM920T內(nèi)核結(jié)構(gòu) 4. ARM啟動(dòng)方式ARM內(nèi)核真正支持的啟動(dòng)方式只有一個(gè):通過(guò)操作CP15來(lái)實(shí)現(xiàn)對(duì)reset vector的重定向 memory remap:這一機(jī)制并非ARM內(nèi)核本身所支持的,而是在SoC的時(shí)候人為修改memory的訪問(wèn)邏輯而實(shí)現(xiàn)的 5.ARM處理器運(yùn)行模式處理器模式說(shuō)明備注 用戶 (usr)正常程序執(zhí)行模式不能直接切換到其它模式 系統(tǒng) (sys)運(yùn)行操作系統(tǒng)的特權(quán)任務(wù)與用戶模式類似,但具有可以直接切換到其它模式等特權(quán) 快中斷 (fiq)支持高速數(shù)

16、據(jù)傳輸及通道處理FIQ異常響應(yīng)時(shí)進(jìn)入此模式 中斷 (irq)用于通用中斷處理IRQ異常響應(yīng)時(shí)進(jìn)入此模式 管理 (svc)操作系統(tǒng)保護(hù)模式系統(tǒng)復(fù)位和軟件中斷響應(yīng)時(shí)進(jìn)入此模式 中止 (abt)用于支持虛擬內(nèi)存和/或存儲(chǔ)器保護(hù)在ARM7TDMI沒(méi)有大用處 未定義 (und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模式、ARM微處理器的運(yùn)行模式可以通過(guò)軟件改變,也可以通過(guò)外部中斷或異常處理改變。、大多數(shù)的應(yīng)用程序運(yùn)行在用戶模式下,當(dāng)處理器運(yùn)行在用戶模式下時(shí),某些被保護(hù)的系統(tǒng)資源是不能被訪問(wèn)的。、除用戶模式以外,其余的所有6種模式稱為非用戶模式或特權(quán)模式(Privileged Modes);

17、、其中除去用戶模式和系統(tǒng)模式以外的5種又稱為異常模式(Exception Modes),常用于處理中斷或異常,以及需要訪問(wèn)受保護(hù)的系統(tǒng)資源等情況。ARM微處理器運(yùn)行模式要注意的問(wèn)題ARM體系中有以下3種方式控制程序的執(zhí)行流程。1.順序執(zhí)行:每執(zhí)行一條ARM指令,程序計(jì)數(shù)器寄存器的值加4個(gè)字節(jié);每執(zhí)行一條Thumb指令,程序計(jì)數(shù)器寄存器的值加兩個(gè)字節(jié)。2.跳轉(zhuǎn):通過(guò)跳轉(zhuǎn)指令,程序可以跳轉(zhuǎn)到特定的地址標(biāo)號(hào)處執(zhí)行,或者跳轉(zhuǎn)到特定的子程序處執(zhí)行。3.異常:當(dāng)異常或中斷發(fā)生時(shí),系統(tǒng)執(zhí)行完當(dāng)前指令后,將跳轉(zhuǎn)到相應(yīng)的異常處理程序處執(zhí)行。異常是指處理器正常的程序執(zhí)行流程發(fā)生暫時(shí)的停止。三、ARM中斷與異常1

18、.ARM中斷與異常類型 異常類型復(fù)位(reset)當(dāng)處理器的復(fù)位引腳有效時(shí),系統(tǒng)產(chǎn)生復(fù)位異常,程序跳轉(zhuǎn)到復(fù)位異常處理程序執(zhí)行。復(fù)位異常中斷通常用在下面幾種情況下:系統(tǒng)上電、系統(tǒng)復(fù)位、軟復(fù)位。未定義指令(undefined instruction)當(dāng)ARM處理器或協(xié)處理器遇到不能處理的指令時(shí),產(chǎn)生未定義指令異常,可使用異常機(jī)制進(jìn)行軟件仿真軟件中斷(software interrupt)該異常由執(zhí)行SWI指令產(chǎn)生,可用于用戶模式下的程序調(diào)用特權(quán)操作指令,可使用該異常機(jī)制實(shí)現(xiàn)系統(tǒng)功能調(diào)用。指令預(yù)取中止(prefech abort)若處理器預(yù)取指令的地址不存在,或該地址不允許當(dāng)前指令訪問(wèn),存儲(chǔ)器會(huì)向處

19、理器發(fā)出終止信號(hào),但當(dāng)預(yù)取的指令被執(zhí)行時(shí),才會(huì)產(chǎn)生指令預(yù)取中止異常。數(shù)據(jù)中止(data abort)若處理器數(shù)據(jù)訪問(wèn)指令的地址不存在,或該地址不允許當(dāng)前指令訪問(wèn)時(shí),產(chǎn)生數(shù)據(jù)中止異常。外部中斷請(qǐng)求(irq)當(dāng)處理器的外部中斷請(qǐng)求引腳有效,且CPSR中的1位為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異常。 當(dāng)一個(gè)異常出現(xiàn)以后,ARM微處理器會(huì)執(zhí)行以下幾步操作:(1)保存處理器當(dāng)前狀態(tài)、中斷屏蔽位以及各條件標(biāo)志位。將下一條指令的地址存入相應(yīng)連接寄存器,以便程序在處理異常返回時(shí)能從正確的位置重新

20、開始執(zhí)行。(2)根據(jù)異常類型,設(shè)置CPSR中相應(yīng)的位 包括設(shè)置CPSR中的位,使處理器進(jìn)入相應(yīng)的執(zhí)行模式;設(shè)置CPSR中的位,禁止IRQ中斷,當(dāng)進(jìn)入FIQ模式時(shí),禁止FIQ中斷。(3)將程序計(jì)數(shù)器設(shè)置為該異常中斷的中斷向量地址,之后跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序處執(zhí)行。(4)還可以設(shè)置中斷禁止位,以禁止中斷發(fā)生。如果異常發(fā)生時(shí),處理器處于Thumb狀態(tài),則當(dāng)異常向量地址加載PC時(shí),處理器自動(dòng)切換到ARM狀態(tài)。2.異常的響應(yīng)及返回類型地址異常類型進(jìn)入時(shí)的模式進(jìn)入時(shí)I的狀態(tài)進(jìn)入時(shí)F的狀態(tài)0 x0000 0000復(fù)位管理 禁止禁止0 x0000 0004未定義指令未定義IF0 x0000 0008軟件

21、中斷(SWI)管理禁止F0 x0000 000C預(yù)取中止(指令)中止IF0 x0000 0010數(shù)據(jù)中止中止IF0 x0000 0014保留保留0 x0000 0018IRQ中斷禁止F0 x0000 001CFIQ快中斷禁止禁止3. 中斷與異常入口向量四、ARM的寄存器組織 ARM處理器有37個(gè)寄存器:31個(gè)通用寄存器,6個(gè)狀態(tài)寄存器。 1.通用寄存器 通用寄存器包括R0R15,可以分為三類:未分組寄存器 R0-R7分組寄存器 R8R14 寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2

22、R3(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無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqSPSR_fiqSPSR_i

23、rqSPSR_undSPSR_abtSPSR_abtCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0所有的37個(gè)寄存器,分成兩大類:31個(gè)通用32位寄存器;6個(gè)狀態(tài)寄存器。寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R

24、4R5(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無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqR13_fiqR13_irqR13_undR13_abtR

25、13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0 在匯編語(yǔ)言中寄存器R0R13為保存數(shù)據(jù)或地址值的通用寄存器。它們是完全通用的寄存器,不會(huì)被體系結(jié)構(gòu)作為特殊用途,并且可用于任何使用通用寄存器的指令。寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(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(S

26、L,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無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq 其中R0R7為未分組的寄存器,也就是說(shuō)對(duì)于任何處理器模式,這些寄存器都對(duì)應(yīng)于相同的32位物理寄存器。寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中

27、斷快中斷通用寄存器和程序計(jì)數(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無(wú)SPSR_abtSPSR_ab

28、tSPSR_undSPSR_irqSPSR_fiqR14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R14為分組寄存器。它們所對(duì)應(yīng)的物理寄存器取決于當(dāng)前的處理器模式,幾乎所有允許使用通用寄存器的指令都允許使用分組寄存器寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4

29、(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無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqR12_fiqR12R11_fiqR11R10_

30、fiqR10R9_fiqR9R8_fiqR8 寄存器R8R12有兩個(gè)分組的物理寄存器。一個(gè)用于除FIQ模式之外的所有寄存器模式,另一個(gè)用于FIQ模式。這樣在發(fā)生FIQ中斷后,可以加速FIQ的處理速度。寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(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)R12R

31、12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq 寄存器R13、R14分別有6個(gè)分組的物理寄存器。一個(gè)用于用戶和系統(tǒng)模式,其余5個(gè)分別用于5種異常模式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13寄存器類別寄存器

32、在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(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)

33、寄存器CPSRCPSRSPSR無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq 寄存器R13常作為堆棧指針(SP)。在ARM指令集當(dāng)中,沒(méi)有以特殊方式使用R13的指令或其它功能,只是習(xí)慣上都這樣使用。但是在Thumb指令集中存在使用R13的指令。寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(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)R

34、10R10_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無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq R14為鏈接寄存器(LR),在結(jié)構(gòu)上有兩個(gè)特殊功能:在每種模式下,模式自身的R14版本用于保存子程序返回地址;當(dāng)發(fā)生異常時(shí),將R14對(duì)應(yīng)的異常模式版本設(shè)置為異常返回地址(有些異常有一個(gè)小的固

35、定偏移量)。Lable程序A程序BR14R14(LR)寄存器與子程序調(diào)用BL Lable地址A?MOV PC,LRR14(地址A)Lable?1.程序A執(zhí)行過(guò)程中調(diào)用程序B;調(diào)用流程2.程序跳轉(zhuǎn)至標(biāo)號(hào)Lable,執(zhí)行程序B。同時(shí)硬件將“BL Lable”指令的下一條指令所在地址存入R14(LR);3.程序B執(zhí)行最后,將R14寄存器的內(nèi)容放入PC,返回程序A;R14R14_irq用戶模式下的程序IRQ模式下的程序AaB.XA地址A地址A1.執(zhí)行用戶模式下的程序;2.發(fā)生IRQ中斷,硬件將某個(gè)地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒(méi)有被破壞;3. IRQ服務(wù)程序A執(zhí)行完畢,

36、將R14_irq寄存器的內(nèi)容減去某個(gè)常量后存入PC,返回之前被中斷的程序;未被破壞IRQ模式下的程序BareturnB.XA地址B地址B4. 如果在IRQ處理程序中打開IRQ中斷,并且再次發(fā)生IRQ中斷;5. 硬件將返回地址保存在R14_irq寄存器中,原來(lái)保存的返回地址將被覆蓋,造成錯(cuò)誤;R14_irq 被破壞6. 在程序B返回到程序A,然后在返回到用戶模式下被中斷的程序時(shí),發(fā)生錯(cuò)誤,將不能正確返回;returnreturnR14寄存器注意要點(diǎn)寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3

37、)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無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq 寄存器R15為程序計(jì)

38、數(shù)器(PC),它指向正在取指的地址。可以認(rèn)為它是一個(gè)通用寄存器,但是對(duì)于它的使用有許多與指令相關(guān)的限制或特殊情況。如果R15使用的方式超出了這些限制,那么結(jié)果將是不可預(yù)測(cè)的。讀R15的限制 正常操作時(shí),從R15讀取的值是處理器正在取指的地址,即當(dāng)前正在執(zhí)行指令的地址加上8個(gè)字節(jié)(兩條ARM指令的長(zhǎng)度)。由于ARM指令總是以字為單位,所以R15寄存器的最低兩位總是為0。LDR R0,PC?PCPC-4PC-8正在執(zhí)行正在譯碼正在取指流水線狀態(tài)地址程序代碼寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2

39、(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無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq 寄存器CPSR

40、為程序狀態(tài)寄存器,在異常模式中,另外一個(gè)寄存器“程序狀態(tài)保存寄存器(SPSR)”可以被訪問(wèn)。每種異常都有自己的SPSR,在進(jìn)入異常時(shí)它保存CPSR的當(dāng)前值,異常退出時(shí)可通過(guò)它恢復(fù)CPSR。NZCVIM0M1M2M3M4TF. . .31 30 29 28 27 26 8 7 6 5 4 3 2 1 0條件代碼標(biāo)志保留控制位溢出標(biāo)志oVerflow進(jìn)位或借位擴(kuò)展 Carry零 Zero負(fù)或小于 NegativeIRQ禁止 InterruptFIQ禁止 Fast狀態(tài)位 Thumb模式位 ModeNZCVIM0M1M2M3M4TF2 .程序狀態(tài)寄存器 條件碼標(biāo)志(Condition Code Fla

41、gs)N、Z、C、V均為條件碼標(biāo)志位。它們的內(nèi)容可被算術(shù)或邏輯運(yùn)算的結(jié)果所改變,并且可以決定某條指令是否被執(zhí)行。標(biāo)志位含義N當(dāng)用兩個(gè)補(bǔ)碼表示的帶符號(hào)數(shù)進(jìn)行運(yùn)算時(shí),N=1表示運(yùn)算的結(jié)果為負(fù)數(shù);N=0表示運(yùn)算的結(jié)果為正數(shù)或零ZZ=1表示運(yùn)算的結(jié)果為零;Z=0表示運(yùn)算的結(jié)果為非零C可以有4種方法設(shè)置C的值;加法運(yùn)算(包括比較指令CMP);當(dāng)運(yùn)算結(jié)果產(chǎn)生了進(jìn)位時(shí)(無(wú)符號(hào)數(shù)溢出),C=1,否則C=0;減法運(yùn)算(包括比較指令CMP);當(dāng)運(yùn)算時(shí)產(chǎn)生了借位(無(wú)符號(hào)數(shù)溢出),C=0,否則C=1;對(duì)于包含移位操作的非加/減運(yùn)算指令,C為移出值的最后一位;對(duì)于其它的非加/減運(yùn)算指令,C的值通常不改變條件碼的具體含義

42、 控制位PSR的低8位(包括I、F、T和M4:0)稱為控制位,當(dāng)發(fā)生異常時(shí)這些位可以被改變。如果處理器運(yùn)行特權(quán)模式,這些位也可以由程序修改。中斷禁止位I、FI1 禁止IRQ中斷F1 禁止FIQ中斷T標(biāo)志位:該位反映處理器的運(yùn)行狀態(tài)。對(duì)于ARM體系結(jié)構(gòu)v5及以上版本的T系列處理器,當(dāng)該位為1時(shí),程序運(yùn)行于Thumb狀態(tài),否則運(yùn)行于ARM狀態(tài)。非T系列處理器,當(dāng)該位為1時(shí),執(zhí)行下一條指令以引起未定義的指令異常;當(dāng)該位為0時(shí),表示運(yùn)行于ARM狀態(tài)。運(yùn)行模式位M4:0:M0、M1 、 M2、M3、M4是模式位。這些位決定了處理器的運(yùn)行模式。具體含義如下表:M4:0處理器模式可訪問(wèn)的寄存器0b10000

43、用戶模式PC,CPSR,R0R140b10001FIQ模式PC,CPSR,SPSR_fiq,R14_fiqR8_fiq,R7R00b10010IRQ模式PC,CPSR,SPSR_irq,R14_isqR13_isq,R12R00b10011管理模式PC,CPSR,SPSR_svc,R14_svcR13_svc,R12R00b10111中止模式PC,CPSR,SPSR_adt,R14_adtR13_adt,R12R00b11011未定義模式PC,CPSR,SPSR_und,R14_undR13_und,R12R00b11111系統(tǒng)模式PC,CPSR,(ARM v4及以上版本),R1R0注意:并不

44、是所有的運(yùn)行模式位的組合都是有效的,其他的組合結(jié)果會(huì)導(dǎo)致處理器進(jìn)入一個(gè)不可恢復(fù)的狀態(tài)!PSR中的其余位為保留位,當(dāng)改變PSR中的條件碼標(biāo)志位或者控制位時(shí),保留位不要改變,在程序中也不要使用保留位來(lái)存儲(chǔ)數(shù)據(jù)。保留位將用于ARM版本的擴(kuò)展。 保留位3 .ARM狀態(tài)下的寄存器 表為ARM狀態(tài)下的寄存器組織 表為Thumb狀態(tài)下的寄存器組織Thumb狀態(tài)寄存器在Arm狀態(tài)寄存器上的映射R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R0 堆棧指針(R13) 連接寄存器(R14) 程序計(jì)數(shù)器(R15) 低寄存器高寄存器五、 ARM的協(xié)處理器接口ARM920T處理器通過(guò)一個(gè)外

45、部協(xié)處理器接口來(lái)支持連接片上協(xié)處理器,允許附加專門設(shè)計(jì)的協(xié)處理器到ARM920T。ARM920T處理器包括CP14和CP15兩個(gè)內(nèi)部協(xié)處理器,其中CP14用于調(diào)試控制,而CP15用于內(nèi)存系統(tǒng)控制和測(cè)試控制。外部協(xié)處理器通過(guò)使用一個(gè)流水線跟蹤器來(lái)執(zhí)行指令(以保證和ARM處理器內(nèi)核中的流水線同步)。1 .CP14協(xié)處理器 調(diào)試通信通道協(xié)處理器DCC(the Debug Communications Channel)提供了兩個(gè)32位的數(shù)據(jù)傳送寄存器和一個(gè)通信控制寄存器,通信數(shù)據(jù)控制寄存器的編碼格式如圖所示通信數(shù)據(jù)控制寄存器的編碼格式 W和R位兩位可提供目標(biāo)和主機(jī)調(diào)試器之間的同步握手,其功能定義見(jiàn)表

46、: 調(diào)試器不能利用協(xié)處理器CP14直接訪問(wèn)調(diào)試通信通道,因?yàn)檫@對(duì)調(diào)試器無(wú)意義,但調(diào)試器可使用掃描鏈讀寫DCC寄存器。DCC數(shù)據(jù)和控制寄存器可映射到EmbeddedICE邏輯單元中的地址。(1)目標(biāo)到調(diào)試器的通信 目標(biāo)到調(diào)試器的通信是運(yùn)行于ARM內(nèi)核上的應(yīng)用程序與運(yùn)行于主機(jī)上的調(diào)試器之間的通信事件,其處理順序:(1)目標(biāo)應(yīng)用程序檢查DCC寫入寄存器是否空閑可用。為此,目標(biāo)應(yīng)用程序使用MRC指令讀取調(diào)試通信通道控制寄存器,以檢查W位是否已清除。(2)如果W位已清除,則通信數(shù)據(jù)寫入寄存器已清空,應(yīng)用程序?qū)f(xié)處理器CP14使用MCR指令將字寫入通信數(shù)據(jù)寫入寄存器。寫入寄存器操作會(huì)自動(dòng)設(shè)置W位。如果W位

47、已設(shè)置,則表明調(diào)試器尚未清空通信數(shù)據(jù)寫入寄存器。此時(shí),如果應(yīng)用程序需要發(fā)送另一個(gè)字,它必須輪詢W位,直到它已清除。 (3) 調(diào)試器通過(guò)掃描鏈2輪詢通信數(shù)據(jù)控制寄存器。如果調(diào)試器發(fā)現(xiàn)W位已設(shè)置,則它可以讀DCC數(shù)據(jù)寄存器,以讀取應(yīng)用程序發(fā)送的信息。讀取數(shù)據(jù)的進(jìn)程會(huì)自動(dòng)清除通信數(shù)據(jù)控制寄存器中的W位。 (2)調(diào)試器到目標(biāo)的通信 調(diào)試器到目標(biāo)的通信運(yùn)行于主機(jī)上的調(diào)試器向運(yùn)行于內(nèi)核上的應(yīng)用程序傳輸消息的事件,其處理順序:調(diào)試器輪詢通信數(shù)據(jù)控制寄存器的R位,如果R位已清除,則通信數(shù)據(jù)讀取寄存器已清空,可將數(shù)據(jù)寫入此寄存器,以供目標(biāo)應(yīng)用程序讀取。調(diào)試器通過(guò)掃描鏈2,將數(shù)據(jù)掃描到通信數(shù)據(jù)讀取寄存器中,此操作

48、會(huì)自動(dòng)設(shè)置通信數(shù)據(jù)控制寄存器中的R位。目標(biāo)應(yīng)用程序輪詢通信數(shù)據(jù)控制寄存器中的R位。如果該位已經(jīng)設(shè)置,則通信數(shù)據(jù)讀取寄存器中已經(jīng)有數(shù)據(jù),應(yīng)用程序可使用MRC指令從協(xié)處理器CP14讀取該數(shù)據(jù)。同時(shí),讀取指令還會(huì)清除R位。2 .CP15協(xié)處理器 定義了16個(gè)內(nèi)部寄存器,通過(guò)MCR和MRC協(xié)處理器指令對(duì)這些寄存器進(jìn)行讀寫操作,可以實(shí)現(xiàn)Cache、MMU、保護(hù)系統(tǒng)、配置時(shí)鐘模式的配置和控制。 CP15協(xié)處理器的寄存器只能在特權(quán)模式下使用MCR和MRC指令訪問(wèn),MCR指令是寫操作指令,MRC是讀操作指令,其指令位格式分別為:mcr p15, opcode1, Rd, CRn, , ; / 寫CP15寄存器

49、mrc p15, opcode1, Rd, CRn, , ; / 讀CP15寄存器其中,p15表示是CP15協(xié)處理器;CP15協(xié)處理器規(guī)定opcode1為0;Rd是處理器內(nèi)核寄存器編號(hào);CRn是CP15寄存器編號(hào);opcode2和CRm是指令的選項(xiàng),具體含義取決于不同的寄存器。(1)寄存器C0 寄存器C0用于獲取設(shè)備ID編碼和Cache類型寄存器,用MRC命令讀C0寄存器時(shí),當(dāng)opcode2=0時(shí)讀到的是設(shè)備ID編碼;當(dāng)opcode2=1時(shí),讀到的是Cache類型。 (2)寄存器C1寄存器C1主要用于Caches、異常中斷向量選擇、存儲(chǔ)格式選擇、寫緩沖使能和MMU使能等功能的配置和設(shè)置,稱為控

50、制寄存器。其編碼格式如圖所示,對(duì)C1寄存器進(jìn)行讀寫操作時(shí),CRm 和opcode2被忽略。 表寄存器C1的各位功能定義 內(nèi)存訪問(wèn)權(quán)限與S/R及AP的關(guān)系表 (3)寄存器C2寄存器C2用于存放第一級(jí)頁(yè)表基地址,稱為頁(yè)表基地址寄存器。即一級(jí)映射描述符表的基地址,定位界限為16KB。寫寄存器C2 時(shí),在D31D14更新當(dāng)前活動(dòng)的第一級(jí)轉(zhuǎn)換表的物理地址,D13D0應(yīng)該寫0 或先前讀回的值。讀寄存器C2 時(shí),D31D14返回當(dāng)前活動(dòng)的第一級(jí)轉(zhuǎn)換表的物理地址,D13D0的值則不確定。 對(duì)C2寄存器進(jìn)行讀寫操作時(shí),CRm 和opcode2被忽略。 寄存器C2的編碼格式如圖所示 (4)寄存器C3 寄存器C3是

51、域存取控制,域存取控制決定了是否對(duì)某一內(nèi)存塊進(jìn)行權(quán)限檢查。寄存器C3的編碼格式 兩個(gè)位字段編碼與對(duì)應(yīng)的域訪問(wèn)權(quán)限關(guān)系表(5)寄存器C5和C6 CP15中的寄存器C5是錯(cuò)誤狀態(tài)寄(FSR),C6是出錯(cuò)地址寄存器(FAR)。寄存器C5的編碼格式見(jiàn)如圖所示。 對(duì)C5和C6寄存器進(jìn)行讀寫操作時(shí),CRm 和opcode2被忽略 狀態(tài)標(biāo)識(shí)編碼及其含義(6)寄存器C7 寄存器C7是只寫寄存器,用于控制Cache和寫緩沖,稱為Cache功能控制寄存器。 執(zhí)行寫操作時(shí)Rd中存放寫入寄存器C7數(shù)據(jù),Rd中的數(shù)據(jù)、CRm 和opcode2的不同組合決定執(zhí)行不同的操作,若Rd中的數(shù)據(jù)、CRm 和opcode2的組合不

52、是表中給出的組合,將導(dǎo)致不可預(yù)料的結(jié)果。數(shù)據(jù)、CRm 和opcode2組合與操作功能關(guān)系表(7)寄存器C8寄存器C8是只寫寄存器,用于控制清除TLB的內(nèi)容,稱為TLB操作寄存器。執(zhí)行寫操作時(shí)Rd中存放寫入寄存器C8數(shù)據(jù),Rd中的數(shù)據(jù)、CRm 和opcode2的不同組合決定執(zhí)行不同的操作,若Rd中的數(shù)據(jù)、CRm 和opcode2的組合不是表中給出的組合,將導(dǎo)致不可預(yù)料的結(jié)果,讀操作也將產(chǎn)生不可預(yù)知的后果。數(shù)據(jù)、CRm 和opcode2組合與操作功能關(guān)系(8)寄存器C9 寄存器C19是可讀寫的寄存器,用于控制Cache內(nèi)容鎖定,稱為Cache鎖定控制寄存器。用協(xié)處理器指令執(zhí)行C9的讀寫操作時(shí),op

53、code2=0對(duì)應(yīng)于數(shù)據(jù)cache,opcode2=1對(duì)應(yīng)指令cache。寄存器C9有A、B兩種編碼格式。寄存器C9的A編碼格式 寄存器C9的B編碼格式(9)寄存器C10 寄存器C10是可讀寫的寄存器,用于控制TLB內(nèi)容鎖定,稱為TLB鎖定控制寄存器。它允許把指定的轉(zhuǎn)換表遍歷結(jié)果裝載到TLB中,由寄存器C10設(shè)定的TLB內(nèi)容不會(huì)被其它轉(zhuǎn)換表遍歷的結(jié)果覆蓋,寄存器C10的編碼格式如圖所示W(wǎng)=LOG2(TLB入口數(shù)目); P=1時(shí)寫入TLB的地址變換條目不會(huì)受使整個(gè)TLB無(wú)效操作的影響,一直保持有效;P=0時(shí)寫入TLB的地址變換條目將會(huì)受到使整個(gè)TLB無(wú)效操作的影響。(10)寄存器C13 寄存器C

54、13是可讀寫的寄存器,用于快速上下文切換(FCSE)進(jìn)程的標(biāo)識(shí),稱為進(jìn)程標(biāo)識(shí)寄存器,寄存器C13的編碼格式如圖所示。PID表示當(dāng)前進(jìn)程所在進(jìn)程空間塊的編號(hào),即當(dāng)前進(jìn)程的標(biāo)識(shí)符,取值為0127。PID=0,變換后的虛擬地址(MVA)=虛擬地址(VA),禁止使用快速上下文切換(FCSE)技術(shù),系統(tǒng)復(fù)位后PID的默認(rèn)值為0;PID的值為非0,使能快速上下文切換(FCSE)技術(shù)。 ARM體系中的存儲(chǔ)空間使用單一的地址空間,將存儲(chǔ)器看做是從零地址開始的字節(jié)存儲(chǔ)單元的線性組合。字單元占用4個(gè)字節(jié)單元,字單元的首地址可以被4整除半字單元占用2個(gè)字節(jié)單元,半字單元的首地址可以被2整除字?jǐn)?shù)據(jù)存儲(chǔ)格式分為大端格式

55、和小端格式,若32位的字?jǐn)?shù)據(jù)從高位到低位用D31D0表示,最高位字節(jié)為D31D24,次高位字節(jié)為D23D16,次低位字節(jié)為D15D8,最低位字節(jié)為D7D0,A表示字節(jié)單元首地址,A1和A2分別表示兩個(gè)半字單元首地址 六、ARM存儲(chǔ)系統(tǒng)1.ARM存儲(chǔ)格式字單元的首地址A存放32位字?jǐn)?shù)據(jù)的高位字節(jié),末地址存放低位字節(jié)的存儲(chǔ)模式稱為大端格式;字單元的首地址A存放32位字?jǐn)?shù)最低位字節(jié),末地址存放最高位字節(jié)的存儲(chǔ)模式稱為小端格式。大端格式和小端格式存儲(chǔ)模式的區(qū)別 2. 存儲(chǔ)空間管理單元(MMU)(1)MMU簡(jiǎn)介ARM920T處理器實(shí)現(xiàn)了增強(qiáng)ARM體系結(jié)構(gòu)v4 MMU,為ARM9TDMI內(nèi)核的指令和數(shù)據(jù)地

56、址端口提供了變換和訪問(wèn)權(quán)限檢查。MMU由存儲(chǔ)在主存儲(chǔ)器中的一組二級(jí)頁(yè)表控制,該組頁(yè)表由CP15寄存器1中的M位使能,提供了一種地址變換和保護(hù)方案。用戶可以單獨(dú)地鎖定和刷新MMU中的指令和數(shù)據(jù)TLBs。 MMU的特性包括:標(biāo)準(zhǔn)的ARMv4 MMU映像大小、域和訪問(wèn)保護(hù)方案;映像的大小事1MB(區(qū))、64KB(大頁(yè))、4KB(小頁(yè))和1KB(極小頁(yè));針對(duì)區(qū)的訪問(wèn)權(quán)限;大頁(yè)和小頁(yè)的訪問(wèn)權(quán)限可以通過(guò)單獨(dú)地為每個(gè)1/4頁(yè)進(jìn)行分別指定來(lái)實(shí)現(xiàn)(這些1/4頁(yè)被稱為子頁(yè));硬件實(shí)現(xiàn)了16個(gè)域;64項(xiàng)指令TLB和64項(xiàng)數(shù)據(jù)TLB;硬件頁(yè)表搜索;Round-Robin替換算法(也叫輪換算法);使用CP15寄存器8

57、使整個(gè)TLB無(wú)效,由MVA選擇的TLB入口無(wú)效;使用CP15寄存器10單獨(dú)地鎖定指令TLB和數(shù)據(jù)TLB; (2)存儲(chǔ)器訪問(wèn)的順序 MMU把虛擬地址(VA)映射成物理地址的過(guò)程 ,通常要有一個(gè)多級(jí)的查表過(guò)程,對(duì)于32位的ARM體系結(jié)構(gòu)是兩級(jí)查表,對(duì)于一些64位體系結(jié)構(gòu)則需要更多級(jí)查找表。在32位的ARM體系結(jié)構(gòu)中VA被分成三段,前兩段VAD31D20和VAD29D12作為兩級(jí)查表的索引,第三段VAD11D0作為頁(yè)內(nèi)的偏移。 32位ARM體系結(jié)構(gòu)兩級(jí)查表的查找流程存儲(chǔ)器訪問(wèn)的順序和控制過(guò)程 當(dāng)CPU要訪問(wèn)存儲(chǔ)器時(shí),MMU先查找TLB中的虛擬地址表,如果TLB中沒(méi)有虛擬地址的入口,則轉(zhuǎn)換表遍歷硬件從

58、存于主存儲(chǔ)器中的轉(zhuǎn)換表中獲取轉(zhuǎn)換表和訪問(wèn)權(quán)限并存放在TLB中,由TLB 入口地址獲得對(duì)應(yīng)的頁(yè)表,根據(jù)頁(yè)表中的C/B(高速緩存/緩沖)位、訪問(wèn)權(quán)限和域控制等相關(guān)控制位,分別控制高速緩存和寫緩沖的訪問(wèn)以及是否允許訪問(wèn)所指向的存儲(chǔ)區(qū)域,如果所指向的存儲(chǔ)區(qū)不允許訪問(wèn),則MMU將向CPU發(fā)送一個(gè)存儲(chǔ)器異常。 MMU將CPU核產(chǎn)生的VA地址通過(guò)CP15寄存器13變換成一個(gè)物理地址以訪問(wèn)外部存儲(chǔ)器,并使用TLB執(zhí)行訪問(wèn)權(quán)限檢測(cè)。 在32位ARM體系中,4GB的虛擬空間被分成了128個(gè)大小為32MB的空間塊,CPU能看到的虛擬地址空間范圍為0 x00 x01FFFFFF 。如果CPU給出的虛擬地址超出這個(gè)范圍

59、,則由硬件按照一定的規(guī)則進(jìn)行修改,得到修改后的虛擬地址(MVA)。 (3)地址變換變換基址變換表基址(TTB)寄存器指向物理存儲(chǔ)器中一個(gè)表的基地址,TTB寄存器的低14位13:0在讀訪問(wèn)時(shí)被設(shè)置為0,并且這個(gè)表必須在一個(gè)16KB邊界上。 變化表基址3114130變化表基址寄存器 MVA的31:20位作為偏移地址,所以變換表中最多可以有4096個(gè)項(xiàng),每項(xiàng)32位,包含了區(qū)或頁(yè)描述符信息,分別用于描述虛擬存儲(chǔ)器的1MB空間,可以尋址最大4GB的虛擬存儲(chǔ)器。 區(qū)或頁(yè)描述符的后兩位為描述符性質(zhì)標(biāo)記,00表示該描述符無(wú)效,01表示該描述符是粗頁(yè)描述符,10表示該描述符是區(qū)描述符,11表示該描述符是細(xì)頁(yè)描述

60、符。 第一級(jí)取操作與頁(yè)表描述符 TTB寄存器的位31:14拼接MVA的位31:20產(chǎn)生一個(gè)30位地址,這個(gè)地址用來(lái)選擇一個(gè)4字節(jié)變換表項(xiàng)。這是一個(gè)區(qū)表或頁(yè)表的第一級(jí)描述符。 第一級(jí)描述符是一個(gè)區(qū)描述符、粗頁(yè)表描述符、細(xì)頁(yè)表描述符或者是無(wú)效內(nèi)容。第一級(jí)描述符的格式如圖第一級(jí)描述符 區(qū)描述符:區(qū)描述符為一個(gè)1MB的存儲(chǔ)塊提供基地址 位 描述 31:20 為一個(gè)區(qū)生成相應(yīng)的物理地址位 19:12 總被寫入0 11:10 (AP)指示這個(gè)區(qū)的訪問(wèn)權(quán)限 9 總被寫入0 8:5 指定包含主要訪問(wèn)控制的16個(gè)可能存在的域中的一個(gè) 4 應(yīng)該寫入1,用于向后兼容 3:2 這些位(C和B)指示被這個(gè)區(qū)映射的存儲(chǔ)區(qū)

溫馨提示

  • 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)論