第2章 ARM體系結(jié)構(gòu)_第1頁(yè)
第2章 ARM體系結(jié)構(gòu)_第2頁(yè)
第2章 ARM體系結(jié)構(gòu)_第3頁(yè)
第2章 ARM體系結(jié)構(gòu)_第4頁(yè)
第2章 ARM體系結(jié)構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩98頁(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)介

嵌入式系統(tǒng)與開(kāi)發(fā)第2章ARM體系結(jié)構(gòu)2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林22023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林22023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林2本章內(nèi)容ARM微處理器結(jié)構(gòu)ARM體系結(jié)構(gòu)簡(jiǎn)介ARM微處理器的寄存器結(jié)構(gòu)ARM微處理器的異常處理ARM的存儲(chǔ)器結(jié)構(gòu)ARM微處理器指令系統(tǒng)ARM微處理器的接口嵌入式處理器體系結(jié)構(gòu)計(jì)算機(jī)體系結(jié)構(gòu)(ComputerArchitecture)是程序員所看到的計(jì)算機(jī)的屬性,即概念性結(jié)構(gòu)與功能特性通常所說(shuō)的計(jì)算機(jī)體系結(jié)構(gòu)主要指機(jī)器語(yǔ)言級(jí)機(jī)器的系統(tǒng)結(jié)構(gòu)計(jì)算機(jī)體系結(jié)構(gòu)-8種屬性機(jī)內(nèi)數(shù)據(jù)表示:硬件能直接辨識(shí)和操作的數(shù)據(jù)類(lèi)型和格式尋址方式:最小可尋址單位、尋址方式的種類(lèi)、地址運(yùn)算寄存器組織:操作寄存器、變址寄存器、控制寄存器及專(zhuān)用寄存器的定義、數(shù)量和使用規(guī)則指令系統(tǒng):機(jī)器指令的操作類(lèi)型、格式、指令間排序和控制機(jī)構(gòu)存儲(chǔ)系統(tǒng):最小編址單位、編址方式、主存容量、最大可編址空間中斷機(jī)構(gòu):中斷類(lèi)型、中斷級(jí)別,以及中斷響應(yīng)方式等輸入輸出結(jié)構(gòu):輸入輸出的連接方式、處理機(jī)/存儲(chǔ)器與輸入輸出設(shè)備間的數(shù)據(jù)交換方式、數(shù)據(jù)交換過(guò)程的控制信息保護(hù):信息保護(hù)方式、硬件信息保護(hù)機(jī)制。常見(jiàn)的嵌入式處理器體系結(jié)構(gòu)ARM、POWERPC、MIPS、X86、SH2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林32023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林42023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林5什么是ARMARM(AdvancedRISCMachines)是一類(lèi)微處理器的通稱(chēng)1985年第一個(gè)ARM原型在英國(guó)劍橋誕生目前有多個(gè)版本,大多數(shù)ARM核心的處理器用在嵌入式領(lǐng)域ARM(AdvancedRISCMachinesLimited)是一家公司的名字成立于1990年11月,前身為Acorn計(jì)算機(jī)公司主要設(shè)計(jì)ARM系列RISC處理器內(nèi)核授權(quán)ARM內(nèi)核給生產(chǎn)和銷(xiāo)售半導(dǎo)體的合作伙伴ARM公司不生產(chǎn)芯片IP(IntelligenceProperty)另外也提供基于ARM架構(gòu)的開(kāi)發(fā)設(shè)計(jì)技術(shù)軟件工具,評(píng)估板,調(diào)試工具,應(yīng)用軟件總線架構(gòu),外圍設(shè)備單元等2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林6ARM的業(yè)務(wù)模型公司的特點(diǎn)是只設(shè)計(jì)芯片,不生產(chǎn)芯片提供ARM技術(shù)知識(shí)產(chǎn)權(quán)(IP)核,將技術(shù)授權(quán)給世界上許多著名的半導(dǎo)體、軟體和OEM廠商,并提供服務(wù)IP授權(quán)費(fèi)ARM創(chuàng)造和設(shè)計(jì)IP產(chǎn)品(芯片)Partner把ARMIP和其他IP集成進(jìn)產(chǎn)品(如芯片等)ARMPartnerOEMCustomer版權(quán)費(fèi)單價(jià)OEM用來(lái)自ARMPartner的芯片設(shè)計(jì)制造最終用戶產(chǎn)品業(yè)務(wù)拓展/市場(chǎng)格局2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林7ARMPartnershipModel2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林8ARM體系結(jié)構(gòu)的特點(diǎn)支持Thumb/ARM雙指令集;指令執(zhí)行采用3級(jí)/5級(jí)流水線;帶有指令和數(shù)據(jù)cache,大量使用寄存器,指令執(zhí)行速度更快;支持大端格式和小端格式兩種方法儲(chǔ)字?jǐn)?shù)據(jù);支持字節(jié)、半字和字3種數(shù)據(jù)類(lèi)型;支持七種處理器模式;嵌入了在線仿真ICE-RT邏輯;具有片上總線AMBA(AdvancedMicrocontrollerBusArchitecture);采用存儲(chǔ)器映像I/O的方式;具有協(xié)處理器接口;采用低電源電壓;體積小,成本低,性能高。2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林9ARM體系結(jié)構(gòu)組成32位的ALU37個(gè)32位寄存器組織32*8位乘法器32*32位桶形移位寄存器指令譯碼及控制邏輯指令流水線數(shù)據(jù)/地址寄存器2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林102023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林102023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林10本章內(nèi)容ARM微處理器結(jié)構(gòu)ARM體系結(jié)構(gòu)簡(jiǎn)介ARM微處理器的寄存器結(jié)構(gòu)ARM微處理器的異常處理ARM的存儲(chǔ)器結(jié)構(gòu)ARM微處理器指令系統(tǒng)ARM微處理器的接口ARM微處理器結(jié)構(gòu)ARM體系結(jié)構(gòu)的版本1ARM的微處理器系列22023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林12ARM體系結(jié)構(gòu)版本ARM體系結(jié)構(gòu)一直在完善和發(fā)展為了清楚的表達(dá)每個(gè)ARM應(yīng)用實(shí)例所使用的指令集,ARM公司定義了8種主要的ARM體系結(jié)構(gòu)版本,以版本號(hào)V1~V8表示V1版只有26位的尋址空間,沒(méi)有商業(yè)化;基本的數(shù)據(jù)處理指令(不包括乘法);字節(jié)、字和半字加載/存儲(chǔ)指令;具有分支指令,包括在子程序調(diào)用中使用的分支鏈接指令;有操作系統(tǒng)調(diào)所需的軟件中斷指令2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林13ARM體系結(jié)構(gòu)版本V2ARM3芯片采用了版本2a,是第一片采用片上Cache的ARM處理器26位尋址空間具有乘法和乘加指令;支持協(xié)處理器;快速中斷模式中使用兩個(gè)以上的分組寄存器;具有原子性加載/存儲(chǔ)指令SWP和SWPB。V3尋址范圍擴(kuò)展到32位,具有獨(dú)立的程序空間具有乘法和乘加指令;支持協(xié)處理器;快速中斷模式中具有的兩個(gè)以上的分組寄存器;具有原子性加載/存儲(chǔ)指令SWP和SWPB。2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林14ARM體系結(jié)構(gòu)版本V4不再兼容26位體系結(jié)構(gòu)并明確了哪些指令會(huì)引起未定義指令異常發(fā)生半字加載/存儲(chǔ)指令;字節(jié)和半字的加載和符號(hào)擴(kuò)展指令;具有可以轉(zhuǎn)換到Thumb狀態(tài)的指令;增加了用戶模式寄存器的新的特權(quán)處理器模式。V5對(duì)V4版本的體系結(jié)構(gòu)進(jìn)行擴(kuò)展并增加了指令改進(jìn)了ARM/Thumb狀態(tài)之間的切換效率;E—增強(qiáng)型DSP指令集,包括全部算法操作和16位乘法操作;J—支持的JAVA增強(qiáng),提供字節(jié)代碼執(zhí)行的硬件和優(yōu)化軟件加速功能。2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林15ARM體系結(jié)構(gòu)版本V6于2001年發(fā)布35%代碼壓縮率的THUMB;DSP擴(kuò)充:高性能定點(diǎn)DSP功能;JazelleTM:Java性能優(yōu)化,可提高8倍;Media擴(kuò)充:音、視頻性能優(yōu)化,可提高4倍V7采用Thumb-2有A、R、M三種類(lèi)型2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林16ARM體系結(jié)構(gòu)版本V8版將64位架構(gòu)支持引入ARM架構(gòu)中64位通用寄存器、SP(堆棧指針)和PC64位數(shù)據(jù)處理和擴(kuò)展的虛擬尋址兩種主要執(zhí)行狀態(tài):AArch64-64位執(zhí)行狀態(tài),包括該狀態(tài)的異常模型、內(nèi)存模型、程序員模型和指令集支持AArch32-32位執(zhí)行狀態(tài),包括該狀態(tài)的異常模型、內(nèi)存模型、程序員模型和指令集支持2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林17ARM體系結(jié)構(gòu)版本與處理器家族2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林18ARM體系結(jié)構(gòu)版本與處理器家族ArchitectureFamilyARMv1ARM1ARMv2ARM2,ARM3,AmberARMv3ARM6,ARM7ARMv4StrongARM,ARM7TDMI,ARM8,ARM9TDMI,FA526ARMv5ARM7EJ,ARM9E,ARM10E,XScale,FA626TE,Feroceon,PJ1/MohawkARMv6ARM11ARMv6-MARMCortex-M0,ARMCortex-M0+,ARMCortex-M1ARMv7ARMCortex-A5,ARMCortex-A7,ARMCortex-A8,ARMCortex-A9,ARMCortex-A15,ARMCortex-R4,ARMCortex-R5,ARMCortex-R7,Scorpion,Krait,PJ4/Sheeva,SwiftARMv7-MARMCortex-M3,ARMCortex-M4ARMv8-AARMCortex-A53,ARMCortex-A57,X-GeneARM微處理器結(jié)構(gòu)ARM體系結(jié)構(gòu)的版本1ARM的微處理器系列22023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林20ARM7微處理器系列ARM7系列是低功耗的32位RISC處理器,最適合用于對(duì)價(jià)位和功耗要求較高的消費(fèi)類(lèi)應(yīng)用具有嵌入式ICE-RT邏輯,調(diào)試開(kāi)發(fā)方便;極低的功耗,適合對(duì)功耗要求較高的應(yīng)用,如便攜式產(chǎn)品;能夠提供0.9MIPS/MHz的三級(jí)流水線結(jié)構(gòu);兼容16位的Thumb指令集,代碼密度高;對(duì)操作系統(tǒng)的支持廣泛,如WindowsCE、Linux、PalmOS等;指令系統(tǒng)與ARM9系列、ARM9E系列和ARM10E系列兼容,便于用戶的產(chǎn)品升級(jí)換代;主頻最高可達(dá)130M,高速的運(yùn)算處理能力能勝任絕大多數(shù)的復(fù)雜應(yīng)用。主要應(yīng)用領(lǐng)域:工業(yè)控制、Internet設(shè)備、網(wǎng)絡(luò)和調(diào)制解調(diào)器設(shè)備、移動(dòng)電話等多種多媒體等2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林21ARM系列微處理器核特點(diǎn)ARM7ARM7TDMI-s:整數(shù)處理核ARM7TDMI處理器的可綜合版本;ARM720T:帶MMU的處理器核心,支持操作系統(tǒng);ARM7EJ-S:帶有DSP和JazelleTM

技術(shù),能夠?qū)崿F(xiàn)Java加速功能馮諾伊曼體系結(jié)構(gòu);ARMTDMI是目前應(yīng)用最廣的微處理器核ARM720T帶有MMU和8KB的指令數(shù)據(jù)混合cache;ARM7EJ-執(zhí)行ARMv5TEJ指令,5級(jí)流水線,提供Java加速指令,沒(méi)有存儲(chǔ)器保護(hù)。ARM9ARM920T:帶有獨(dú)立的16KB數(shù)據(jù)和指令Cache;ARM922T:帶有獨(dú)立的8KB數(shù)據(jù)和指令Cache;ARM940T–包括更小數(shù)據(jù)和指令Cache和一個(gè)MPU基于ARM9TDMI,帶16位的Thumb指令集,增強(qiáng)代碼密度最多到35%;在0.13μm工藝下最高性能可達(dá)到300MIPS(Dhrystone2.1測(cè)試標(biāo)準(zhǔn));集成了數(shù)據(jù)和指令Chche;32位AMBA總線接口的MMU支持;可在0.18μm、0.15μm和0.13μm工藝的硅芯片上實(shí)現(xiàn)。ARM處理器結(jié)構(gòu)2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林22ARM7

TDMI的含義ARM7TDMI-SARM7TDMI的可綜合(synthesizable)版本(軟核),對(duì)應(yīng)用工程師來(lái)說(shuō)其編程模型與ARM7TDMI一致;嵌入式Embedded-ICE,支持片上斷點(diǎn)和調(diào)試點(diǎn);支持64位乘法;支持片上調(diào)試Debug;支持高密度16位的壓縮Thumb指令集2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林23ARM處理器核命名含義標(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ì)文件2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林24ARM9EARM926EJ-S:Jazelle技術(shù),有MMU,可配置的數(shù)據(jù)和指令Cache,TCM接口;ARM946E-S:可配置的數(shù)據(jù)和指令Cache及TCM;ARM966E-S:針對(duì)要求高性能和低功耗的可預(yù)測(cè)的指令執(zhí)行時(shí)間的硬實(shí)時(shí)應(yīng)用設(shè)計(jì)ARM968E-S:最小、功耗最小的

ARM9E系列處理器,針對(duì)嵌入式實(shí)時(shí)應(yīng)用設(shè)計(jì);ARM9E是針對(duì)微控制器、DSP和Java的單處理器解決方案;ARM

Jazelle

技術(shù)提供8倍的Java加速性能(ARM926EJ-S);5-級(jí)整數(shù)流水線;在0.13μm工藝下最高性能可達(dá)到300MIPS(Dhrystone2.1測(cè)試標(biāo)準(zhǔn));可選擇的

向量浮點(diǎn)單元VFP9協(xié)處理器指令優(yōu)秀海浮點(diǎn)性能,對(duì)于3D圖形加速和實(shí)時(shí)控制可達(dá)到

215MFLOPS。高性能的AHB總線,帶MMU可在0.18μm,0.15μm,0.13μm工藝的硅芯片上實(shí)現(xiàn)。ARM10EARM1020E:帶DSP指令集,在片調(diào)試功能,獨(dú)立的32KB數(shù)據(jù)和指令Cache,MMU支持;ARM1022E:與ARM1020E相同,只是獨(dú)立的數(shù)據(jù)和指令Cache變?yōu)?6KB;ARM1026EJ-S:同時(shí)具有MPU和MMU,可綜合版本;帶分支預(yù)測(cè)的6級(jí)整數(shù)流水線;在0.13μm工藝下最高性能可達(dá)到430MIPS(Dhrystone2.1測(cè)試標(biāo)準(zhǔn));對(duì)于3D圖形運(yùn)算和實(shí)時(shí)控制采用VFP協(xié)處理器,浮點(diǎn)運(yùn)算性能最高可達(dá)650MFLOPS;雙64位AMBA總線接口和64位內(nèi)部總路線接口;優(yōu)化的緩存結(jié)構(gòu)提高了處理器訪問(wèn)低速存儲(chǔ)器的性能;可在0.18μm,0.15μm,0.13μm工藝的硅芯片上實(shí)現(xiàn)ARM處理器結(jié)構(gòu)2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林25ARM11ARM11MPCore:可綜合的多處理器核,1至4個(gè)處理器可配置;ARM1136J(F)-S:可配置的數(shù)據(jù)和指令Cache,可提供1.9倍的MPEG4編碼加速功能;ARM1156T2(F)-S:帶集成浮點(diǎn)協(xié)處理器,帶內(nèi)存保護(hù)單元MPU

;ARM1176JZ(F)-S:帶針對(duì)CPU和系統(tǒng)安全架構(gòu)擴(kuò)展的TrustZone技術(shù)。增強(qiáng)的Thumb、Jazelle、DSP擴(kuò)展支持;帶片上和系統(tǒng)安全TrustZone技術(shù)支持;在0.13μm工藝下最高可達(dá)到550MHz;MPCore在0.13μm工藝下最高性能可達(dá)到740MIPS(Dhrystone2.1測(cè)試標(biāo)準(zhǔn));支持多媒體指令SIMD;采用三種電源模式:全速/待命/休眠集成DMA的TCM低功耗、高性能。SecurCoreSC100:第一個(gè)32位安全處理器;、SC110:在SC100上增加密鑰協(xié)處理器;SC200:帶Jazelle技術(shù)的高級(jí)安全處理器;SC210:在SC200上增加密鑰協(xié)處理器SecurCore是專(zhuān)門(mén)為智能卡、安全I(xiàn)C提供的32位安全處理器,為電子商務(wù)、銀行、網(wǎng)絡(luò)、移動(dòng)多媒體、公共交通提供安全解決方案;體積小、功耗低,代碼壓縮密度高;為快速增長(zhǎng)的Java卡平臺(tái)提供Java加速功能;ARM處理器結(jié)構(gòu)2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林26CortexCortex-A:面向應(yīng)用的微處理器,針對(duì)復(fù)雜操作系統(tǒng)和應(yīng)用程序設(shè)計(jì);Cortex-R:針對(duì)實(shí)時(shí)系統(tǒng)的嵌入式處理器;Cortex-M:針對(duì)成本敏感應(yīng)用優(yōu)化的深度嵌入式處理器;2004年發(fā)布,提供增強(qiáng)的媒體和數(shù)字處理能力,增加了系統(tǒng)性能;支持ARM、Thumb、Thumb-2指令集;Thumb-2指令集提供了更高的代碼存儲(chǔ)密度,進(jìn)一步降低成本;Intel系列StrongARM:ARMv4體系XScale:ARMv5TE體系,增加MMX指令StrongARM主要應(yīng)用于手持設(shè)備和PDA,5級(jí)流水線,具有獨(dú)立的數(shù)據(jù)和指令Cache,不支持Thumb指令集,目前已停產(chǎn);XScale是目前Intel公司主推的高性能嵌入式處理器,分通用處理器、網(wǎng)絡(luò)處理器和I/O處理器三類(lèi)。其中通用處理器有PXA25x、PXA26x、PXA27x三個(gè)系列,被廣泛應(yīng)用于智能手機(jī)、PDA領(lǐng)域。ARM處理器結(jié)構(gòu)2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林27ARM處理器系列類(lèi)型ARM7ARM9ARM10ARM11流水線3568典型頻率(MHz)80150260335功耗(mW/MHz)0.060.19(+cache)0.5(+cache)0.4(+cache)性能MIPS/MHz0.971.11.31.2架構(gòu)馮諾伊曼哈佛哈佛哈佛2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林282023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林282023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林28本章內(nèi)容ARM微處理器結(jié)構(gòu)ARM體系結(jié)構(gòu)簡(jiǎn)介ARM微處理器的寄存器結(jié)構(gòu)ARM微處理器的異常處理ARM的存儲(chǔ)器結(jié)構(gòu)ARM微處理器指令系統(tǒng)ARM微處理器的接口ARM處理器的寄存器結(jié)構(gòu)ARM處理器運(yùn)行模式1ARM處理器工作狀態(tài)2ARM處理器寄存器組織3Thumb狀態(tài)寄存器集42023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林30處理器模式說(shuō)明備注

用戶(usr)正常程序執(zhí)行模式不能直接切換到其它模式

系統(tǒng)(sys)運(yùn)行操作系統(tǒng)的特權(quán)任務(wù)與用戶模式類(lèi)似,但具有可以直接切換到其它模式等特權(quán)

快中斷(fiq)支持高速數(shù)據(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處理器模式共7種模式2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林31ARM處理器模式特權(quán)模式處理器模式說(shuō)明備注

用戶(usr)正常程序工作模式不能直接切換到其它模式

系統(tǒng)(sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類(lèi)似,但具有可以直接切換到其它模式等特權(quán)

快中斷(fiq)支持高速數(shù)據(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)入此模式除用戶模式外,其它模式均為特權(quán)模式。ARM內(nèi)部寄存器和一些片內(nèi)外設(shè)在硬件設(shè)計(jì)上只允許(或者可選為只允許)特權(quán)模式下訪問(wèn)。此外,特權(quán)模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。

未定義(und)

中止(abt)

管理(svc)

中斷(irq)

快中斷(fiq)

系統(tǒng)(sys)2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林32ARM處理器模式異常模式處理器模式說(shuō)明備注

用戶(usr)正常程序工作模式不能直接切換到其它模式

系統(tǒng)(sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類(lèi)似,但具有可以直接切換到其它模式等特權(quán)

快中斷(fiq)支持高速數(shù)據(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)入此模式

未定義(und)

中止(abt)

管理(svc)

中斷(irq)

快中斷(fiq)這五種模式稱(chēng)為異常模式。它們除了可以通過(guò)程序切換進(jìn)入外,也可以由特定的異常進(jìn)入。當(dāng)特定的異常出現(xiàn)時(shí),處理器進(jìn)入相應(yīng)的模式。每種異常模式都有一些獨(dú)立的寄存器,以避免異常退出時(shí)用戶模式的狀態(tài)不可靠。2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林33ARM處理器模式用戶和系統(tǒng)模式處理器模式說(shuō)明備注

用戶(usr)正常程序工作模式不能直接切換到其它模式

系統(tǒng)(sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類(lèi)似,但具有可以直接切換到其它模式等特權(quán)

快中斷(fiq)支持高速數(shù)據(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)入此模式這兩種模式都不能由異常進(jìn)入,而且它們使用完全相同的寄存器組。系統(tǒng)模式是特權(quán)模式,不受用戶模式的限制。操作系統(tǒng)在該模式下訪問(wèn)用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一些特權(quán)任務(wù)可以使用這個(gè)模式訪問(wèn)一些受控的資源。

系統(tǒng)(sys)

用戶(usr)2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林34處理器的模式與切換除了用戶模式之外的其他6種處理器模式稱(chēng)為特權(quán)模式特權(quán)模式下,程序可以訪問(wèn)所有的系統(tǒng)資源,也可以任意地進(jìn)行處理器模式的切換除系統(tǒng)模式外,其他5種特權(quán)模又稱(chēng)為異常模式大多數(shù)的用戶程序運(yùn)行在用戶模式下,因此應(yīng)用程序不能夠訪問(wèn)一些受操作系統(tǒng)保護(hù)的系統(tǒng)資源,應(yīng)用程序也不能直接進(jìn)行處理器模式的切換用戶模式下,當(dāng)需要進(jìn)行處理器模式切換時(shí),應(yīng)用程序可以主動(dòng)產(chǎn)生異常,在異常處理中進(jìn)行處理器模式的切換處理器模式可以通過(guò)軟件進(jìn)行切換,也可以通過(guò)異常進(jìn)行切換當(dāng)發(fā)生異常時(shí),處理器進(jìn)入相應(yīng)的異常模式。在每一種異常模式下都有一組寄存器,供相應(yīng)的異常處理程序使用,這樣就可以保證在進(jìn)入異常模式時(shí),用戶模式下的寄存器不被破壞系統(tǒng)模式并不是通過(guò)異常進(jìn)入的,它和用戶模式具有完全一樣的寄存器。但是系統(tǒng)模式屬于特權(quán)模式,可以訪問(wèn)所有的系統(tǒng)資源,也可以直接進(jìn)行處理器模式切換主要供操作系統(tǒng)任務(wù)使用。通常操作系統(tǒng)的任務(wù)需要訪問(wèn)所有的系統(tǒng)資源,同時(shí)該任務(wù)仍然使用用戶模式的寄存器組,而不是使用異常模式下相應(yīng)的寄存器組,這樣可以保證當(dāng)異常發(fā)生時(shí)任務(wù)狀態(tài)不被破壞ARM處理器的寄存器結(jié)構(gòu)ARM處理器運(yùn)行模式1ARM處理器工作狀態(tài)2ARM處理器寄存器組織3Thumb狀態(tài)寄存器集42023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林36處理器的工作狀態(tài)從編程的角度看,ARM微處理器的工作狀態(tài)一般有兩種ARM狀態(tài),處理器執(zhí)行32位的字對(duì)齊的ARM指令Thumb狀態(tài),處理器執(zhí)行16位的、半字對(duì)齊的Thumb指令A(yù)RM處理器可在兩種狀態(tài)之間切換,且不影響處理器的模式及寄存器2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林37ARM指令集與Thumb指令集ARM處理器是基于RISC原理設(shè)計(jì)的,指令集和相關(guān)譯碼機(jī)制較為簡(jiǎn)單ARMV4版中增加了16位Thumb指令集ARM指令集效率高,但是代碼密度低Thumb指令集具有較高的代碼密度,卻仍然保持ARM的大多數(shù)性能上的優(yōu)勢(shì),它是ARM指令集的子集2003年后出現(xiàn)了更高性能的Thumb-2指令集所有的ARM指令都可以條件執(zhí)行,而Thumb指令僅有一條指令條件執(zhí)行ARM程序和Thumb程序可相互調(diào)用,相互之間的狀態(tài)切換開(kāi)銷(xiāo)幾乎為零2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林38ARM指令集與Thumb指令集ARM指令集與Thumb指令集的關(guān)系Thumb指令集具有靈活、小巧的特點(diǎn)ARM指令集支持ARM核所有的特性,具有高效、快速的特點(diǎn)2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林39ARM狀態(tài)與Thumb狀態(tài)的切換被動(dòng)切換CPU復(fù)位后總是進(jìn)入ARM狀態(tài)異常產(chǎn)生后總是進(jìn)入ARM狀態(tài)異常返回后總是進(jìn)入異常之前狀態(tài)主動(dòng)切換(BX指令)進(jìn)入Thumb狀態(tài)當(dāng)操作數(shù)寄存器的狀態(tài)位(Rn[0])為1時(shí),執(zhí)行BX指令時(shí)可以使微處理器從ARM狀態(tài)切換到Thumb狀態(tài)進(jìn)入ARM狀態(tài)當(dāng)操作數(shù)寄存器的狀態(tài)位(Rn[0])為0時(shí),執(zhí)行BX指令時(shí)可以使微處理器從Thumb狀態(tài)切換到ARM狀態(tài)ARM處理器的寄存器結(jié)構(gòu)ARM處理器運(yùn)行模式1ARM處理器工作狀態(tài)2ARM處理器寄存器組織3Thumb狀態(tài)寄存器集42023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林41處理器寄存器組織ARM處理器內(nèi)部有37個(gè)用戶可見(jiàn)的寄存器寄存器被安排成部分重疊的寄存器組在不同的工作模式和處理器狀態(tài)下,程序員可以訪問(wèn)的寄存器也不盡相同2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林42寄存器類(lèi)別寄存器在匯編中的名稱(chēng)各模式下實(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_fiq*R9(SB,v6)R9R9_fiq*R10(SL,v7)R10R10_fiq*R11(FP,v8)R11R11_fiq*R12(IP)R12R12_fiq*R13(SP)R13R13_svc*R13_abt*R13_und*R13_irq*R13_fiq*R14(LR)R14R14_svc*R14_abt*R14_und*R14_irq*R14_fiq*R15(PC)R15狀態(tài)寄存器R16(CPSR)CPSRSPSR無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM狀態(tài)各模式下的寄存器2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林43寄存器類(lèi)別寄存器在匯編中的名稱(chēng)各模式下實(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)寄存器CPSRCPSRSPSR無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM狀態(tài)各模式下的寄存器SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_svcCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0所有的37個(gè)寄存器,分成兩大類(lèi):31個(gè)通用32位寄存器;6個(gè)狀態(tài)寄存器。2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林44寄存器類(lèi)別寄存器在匯編中的名稱(chēng)各模式下實(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)寄存器CPSRCPSRSPSR無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq無(wú)CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用戶無(wú)CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系統(tǒng)SPSR_svcCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定義SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中斷SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中斷ARM狀態(tài)各模式下可以訪問(wèn)的寄存器2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林45寄存器類(lèi)別寄存器在匯編中的名稱(chēng)各模式下實(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)寄存器CPSRCPSRSPSR無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0在匯編語(yǔ)言中寄存器R0~R13為保存數(shù)據(jù)或地址值的通用寄存器。它們是完全通用的寄存器,不會(huì)被體系結(jié)構(gòu)作為特殊用途,并且可用于任何使用通用寄存器的指令。2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林46寄存器類(lèi)別寄存器在匯編中的名稱(chēng)各模式下實(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)寄存器CPSRCPSRSPSR無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0其中R0~R7為未分組的寄存器,也就是說(shuō)對(duì)于任何處理器模式,這些寄存器都對(duì)應(yīng)于相同的32位物理寄存器。2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林47寄存器類(lèi)別寄存器在匯編中的名稱(chēng)各模式下實(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)寄存器CPSRCPSRSPSR無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8寄存器R8~R14為分組寄存器。它們所對(duì)應(yīng)的物理寄存器取決于當(dāng)前的處理器模式,幾乎所有允許使用通用寄存器的指令都允許使用分組寄存器2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林48寄存器類(lèi)別寄存器在匯編中的名稱(chēng)各模式下實(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)寄存器CPSRCPSRSPSR無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8寄存器R8~R12有兩個(gè)分組的物理寄存器。一個(gè)用于除FIQ模式之外的所有寄存器模式,另一個(gè)用于FIQ模式。這樣在發(fā)生FIQ中斷后,可以加速FIQ的處理速度。2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林49寄存器類(lèi)別寄存器在匯編中的名稱(chēng)各模式下實(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)寄存器CPSRCPSRSPSR無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器寄存器R13、R14分別有6個(gè)分組的物理寄存器。一個(gè)用于用戶和系統(tǒng)模式,其余5個(gè)分別用于5種異常模式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR132023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林50寄存器類(lèi)別寄存器在匯編中的名稱(chēng)各模式下實(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)寄存器CPSRCPSRSPSR無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq堆棧指針寄存器R13(SP)寄存器R13常作為堆棧指針(SP)。在ARM指令集當(dāng)中,沒(méi)有以特殊方式使用R13的指令或其它功能,只是習(xí)慣上都這樣使用。但是在Thumb指令集中存在使用R13的指令。2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林51寄存器類(lèi)別寄存器在匯編中的名稱(chēng)各模式下實(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)寄存器CPSRCPSRSPSR無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq鏈接寄存器R14(LR)R14為鏈接寄存器(LR),在結(jié)構(gòu)上有兩個(gè)特殊功能:在每種模式下,模式自身的R14版本用于保存子程序返回地址;當(dāng)發(fā)生異常時(shí),將R14對(duì)應(yīng)的異常模式版本設(shè)置為異常返回地址(有些異常有一個(gè)小的固定偏移量)。2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林52Lable程序A程序BR14R14(LR)寄存器與子程序調(diào)用BLLable地址A???MOVPC,LRR14(地址A)Lable???1.程序A執(zhí)行過(guò)程中調(diào)用程序B;操作流程2.程序跳轉(zhuǎn)至標(biāo)號(hào)Lable,執(zhí)行程序B。同時(shí)硬件將“BLLable”指令的下一條指令所在地址存入R14(LR);3.程序B執(zhí)行最后,將R14寄存器的內(nèi)容放入PC,返回程序A;鏈接寄存器(R14)2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林53鏈接寄存器(R14)R14寄存器與異常發(fā)生異常發(fā)生時(shí),程序要跳轉(zhuǎn)至異常服務(wù)程序,對(duì)返回地址的處理與子程序調(diào)用類(lèi)似,都是由硬件完成的區(qū)別在于有些異常有一個(gè)小常量的偏移當(dāng)發(fā)生異常嵌套時(shí),異常之間可能會(huì)發(fā)生沖突例如:如果用戶在用戶模式下執(zhí)行程序時(shí)發(fā)生了IRQ中斷,用戶模式R14寄存器不會(huì)被破壞。但是如果允許在IRQ模式下的中斷處理程序重新使能IRQ中斷,并且發(fā)生了嵌套的IRQ中斷時(shí),外部中斷處理程序保存在R14_irq中的任何值都將被嵌套中斷的返回地址所覆蓋2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林54R14寄存器注意要點(diǎn)R14R14_irq用戶模式下的程序IRQ模式下的程序AareturnB...XA地址A地址A1.執(zhí)行用戶模式下的程序;2.發(fā)生IRQ中斷,硬件將某個(gè)地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒(méi)有被破壞;3.IRQ服務(wù)程序A執(zhí)行完畢,將R14_irq寄存器的內(nèi)容減去某個(gè)常量后存入PC,返回之前被中斷的程序;未被破壞R14_irq鏈接寄存器(R14)2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林55R14寄存器注意要點(diǎn)R14R14_irq用戶模式下的程序IRQ模式下的程序AaB...XA地址A地址A1.執(zhí)行用戶模式下的程序;2.發(fā)生IRQ中斷,硬件將某個(gè)地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒(méi)有被破壞;3.IRQ服務(wù)程序A執(zhí)行完畢,將R14_irq寄存器的內(nèi)容減去某個(gè)常量后存入PC,返回之前被中斷的程序;未被破壞IRQ模式下的程序BareturnB...XA地址B地址B4.如果在IRQ處理程序中打開(kāi)IRQ中斷,并且再次發(fā)生IRQ中斷;5.硬件將返回地址保存在R14_irq寄存器中,原來(lái)保存的返回地址將被覆蓋,造成錯(cuò)誤;R14_irq被破壞6.在程序B返回到程序A,然后在返回到用戶模式下被中斷的程序時(shí),發(fā)生錯(cuò)誤,將不能正確返回;returnreturn解決辦法是確保R14的對(duì)應(yīng)版本在發(fā)生中斷嵌套時(shí)不再保存任何有意義的值(將R14入棧),或者切換到其它處理器模式下。鏈接寄存器(R14)2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林56寄存器類(lèi)別寄存器在匯編中的名稱(chēng)各模式下實(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)寄存器CPSRCPSRSPSR無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq程序計(jì)數(shù)器R15(PC)寄存器R15為程序計(jì)數(shù)器(PC),它指向正在取指的地址??梢哉J(rèn)為它是一個(gè)通用寄存器,但是對(duì)于它的使用有許多與指令相關(guān)的限制或特殊情況。如果R15使用的方式超出了這些限制,那么結(jié)果將是不可預(yù)測(cè)的。2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林57程序計(jì)數(shù)器(R15)-讀取從R15讀取的值是處理器正在取指的地址ARM狀態(tài)當(dāng)前正在執(zhí)行指令的地址加上8個(gè)字節(jié)R15寄存器的最低兩位總是為0Thumb狀態(tài)當(dāng)前正在執(zhí)行指令的地址加上4個(gè)字節(jié)R15寄存器的最低一位總是為0LDRR0,PC??????PCPC-4PC-8正在執(zhí)行正在譯碼正在取指流水線狀態(tài)地址程序代碼2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林58程序計(jì)數(shù)器(R15)-寫(xiě)入寫(xiě)入R15的值被當(dāng)作一個(gè)指令地址,程序從這個(gè)地址處繼續(xù)執(zhí)行(相當(dāng)于執(zhí)行一次無(wú)條件跳轉(zhuǎn))由于ARM指令以字節(jié)為邊界,因此寫(xiě)入R15的值最低兩位通常為0b00,具體的規(guī)則取決于內(nèi)核結(jié)構(gòu)的版本:在ARM結(jié)構(gòu)V3版及以下版本中,寫(xiě)入R15的值的最低兩位被忽略,因此跳轉(zhuǎn)地址由指令的實(shí)際目標(biāo)地址(寫(xiě)入R15的值)和0xFFFFFFFC相與得到在ARM結(jié)構(gòu)V4版及以上版本中,寫(xiě)入R15的值的最低兩位為0,如果不是,結(jié)果將不可預(yù)測(cè)2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林59寄存器類(lèi)別寄存器在匯編中的名稱(chēng)各模式下實(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)寄存器CPSRCPSRSPSR無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq程序狀態(tài)寄存器CPSR寄存器CPSR為當(dāng)前程序狀態(tài)寄存器,在異常模式中,另外一個(gè)寄存器“保存程序狀態(tài)寄存器(SPSR)”可以被訪問(wèn)。每種異常都有自己的SPSR,在進(jìn)入異常時(shí)它保存CPSR的當(dāng)前值,異常退出時(shí)可通過(guò)它恢復(fù)CPSR。2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林60程序狀態(tài)寄存器ARM內(nèi)核包含1個(gè)CPSR和5個(gè)供異常處理程序使用的SPSRCPSR反映了當(dāng)前處理器的狀態(tài),其包含:4個(gè)條件代碼標(biāo)志:負(fù)(N)、零(Z)、進(jìn)位(C)和溢出(V)2個(gè)中斷禁止位,分別控制一種類(lèi)型的中斷5個(gè)對(duì)當(dāng)前處理器模式進(jìn)行編碼的位1個(gè)用于指示當(dāng)前執(zhí)行指令(ARM還是Thumb)的位每個(gè)異常模式還帶有一個(gè)程序狀態(tài)保存寄存器(SPSR),用于保存在異常發(fā)生之前的CPSRCPSR和SPSR通過(guò)特殊指令(MRS、MSR)進(jìn)行訪問(wèn)2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林61NZCV——IM0M1M2M3M4TF—...313029282726876543210條件代碼標(biāo)志保留控制位溢出標(biāo)志oVerflow進(jìn)位或借位擴(kuò)展Carry零Zero負(fù)或小于NegativeIRQ禁止InterruptFIQ禁止Fast狀態(tài)位Thumb模式位ModeNZCVIM0M1M2M3M4TFCPSR寄存器的格式程序狀態(tài)寄存器2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林62程序狀態(tài)寄存器-條件代碼標(biāo)志多數(shù)指令可以選擇影響條件代碼標(biāo)志位通常如果指令帶S后綴,則該指令的執(zhí)行會(huì)影響條件代碼標(biāo)志但有一些指令的執(zhí)行總是會(huì)影響條件代碼標(biāo)志算術(shù)操作、邏輯操作、MSR或者LDM指令可以對(duì)這些位進(jìn)行設(shè)置條件代碼標(biāo)志位可決定所有ARM指令是否執(zhí)行此為ARM指令的重要特點(diǎn),可實(shí)現(xiàn)代碼的優(yōu)化2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林63程序狀態(tài)寄存器-條件代碼標(biāo)志N

運(yùn)算結(jié)果的最高位反映在該標(biāo)志位。對(duì)于有符號(hào)二進(jìn)制補(bǔ)碼,結(jié)果為負(fù)數(shù)時(shí)N=1,結(jié)果為正數(shù)或零時(shí)N=0;Z

指令結(jié)果為0時(shí)Z=1(通常表示比較結(jié)果“相等”),否則Z=0;C

當(dāng)進(jìn)行加法運(yùn)算(包括CMN指令),并且最高位產(chǎn)生進(jìn)位時(shí)C=1,否則C=0。當(dāng)進(jìn)行減法運(yùn)算(包括CMP指令),并且最高位產(chǎn)生借位時(shí)C=0,否則C=1。對(duì)于結(jié)合移位操作的非加法/減法指令,C為從最高位最后移出的值,其它指令C通常不變;V

當(dāng)進(jìn)行加法/減法運(yùn)算,并且發(fā)生有符號(hào)溢出時(shí)V=1,否則V=0,其它指令V通常不變。2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林64程序狀態(tài)寄存器-控制位CPSR的最低8位為控制位,當(dāng)發(fā)生異常時(shí),這些位被硬件改變當(dāng)處理器處于特權(quán)模式時(shí),可用軟件操作這些位中斷禁止位I、FI位為1,IRQ中斷被禁止;I位為0,IRQ中斷被使能F位為1,F(xiàn)IQ中斷被禁止;F位為0,F(xiàn)IQ中斷被使能處理器狀態(tài)標(biāo)志位T當(dāng)T位為1時(shí),處理器正在Thumb狀態(tài)下運(yùn)行當(dāng)T位為0時(shí),處理器正在ARM狀態(tài)下運(yùn)行模式位M0~M4決定處理器的操作模式不是所有模式位的組合都定義了有效的處理器模式,如果使用了錯(cuò)誤的設(shè)置,將引起一個(gè)無(wú)法恢復(fù)的錯(cuò)誤2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林65程序狀態(tài)寄存器-模式位M[4:0]模式可見(jiàn)的Thumb狀態(tài)寄存器可見(jiàn)的ARM狀態(tài)寄存器10000用戶R0~R7,SP,LR,PC,CPSRR0~R14,PC,CPSR10001快中斷R0~R7,SP_fiq,LR_fiq,PC,CPSR,SPSR_fiqR0~R7,R8_fiq~R14_fiq,PC,CPSR,SPSR_fiq10010中斷R0~R7,SP_irq,LR_irq,PC,CPSR,SPSR_fiqR0~R12,R13_irq,R14_irq,PC,CPSR,SPSR_irq10011管理R0~R7,SP_svc,LR_svc,PC,CPSR,SPSR_svcR0~R12,R13_svc,R14_svc,PC,CPSR,SPSR_svc10111中止R0~R7,SP_abt,LR_abt,PC,CPSR,SPSR_abtR0~R12,R13_abt,R14_abt,PC,CPSR,SPSR_abt11011未定義R0~R7,SP_und,LR_und,PC,CPSR,SPSR_undR0~R12,R13_und,R14_und,PC,CPSR,SPSR_und11111系統(tǒng)R0~R7,SP,LR,PC,CPSRR0~R14,PC,CPSR2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林66程序狀態(tài)寄存器-保留位CPSR中的未定義位為了提高程序的可移植性,不要隨意改變保留位,并確保保程序的運(yùn)行不受保留位的值影響2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林67高版本ARM處理器的CPSR條件位:N=1-結(jié)果為負(fù),0-結(jié)果為正或0Z=1-結(jié)果為0,0-結(jié)果不為0C=1-進(jìn)位,0-借位V=1-結(jié)果溢出,0結(jié)果沒(méi)溢出Q位:僅ARM5TE/J架構(gòu)支持指示增強(qiáng)型DSP指令是否溢出J位僅ARM5TE/J架構(gòu)支持J=1:處理器處于Jazelle狀態(tài)中斷禁止位:I=1:禁止IRQ.F=1:禁止FIQ.TBit僅ARMxT架構(gòu)支持T=0:處理器處于ARM狀態(tài)T=1:處理器處于Thumb狀態(tài)Mode位(處理器模式位):0b10000 User0b10001 FIQ0b10010 IRQ0b10011 Supervisor0b10111 Abort0b11011 Undefined0b11111 System2731NZCVQ2867IFTmode1623

815

54024fsxc

UndefinedJARM處理器的寄存器結(jié)構(gòu)ARM處理器運(yùn)行模式1ARM處理器工作狀態(tài)2ARM處理器寄存器組織3Thumb狀態(tài)寄存器集42023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林69Thumb狀態(tài)的寄存器集Thumb狀態(tài)下寄存器是ARM狀態(tài)下的子集Thumb狀態(tài)R0~R7與ARM狀態(tài)R0~R7相同;Thumb狀態(tài)CPSR和SPSR與ARM狀態(tài)CPSR和SPSR相同;Thumb狀態(tài)SP映射到ARM狀態(tài)R13;Thumb狀態(tài)LR映射到ARM狀態(tài)R14;Thumb狀態(tài)PC映射到ARM狀態(tài)PC(R15)Thumb狀態(tài)中的高寄存器(R8~R15)不是標(biāo)準(zhǔn)寄存器集的一部分,匯編語(yǔ)言程序員對(duì)它們的訪問(wèn)受到限制,可以使用MOV、CMP和ADD指令對(duì)高寄存器操作2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林70Thumb狀態(tài)寄存器在Arm狀態(tài)寄存器上的映射R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

R11

R12

R0

堆棧指針(R13)

連接寄存器(R14)

程序計(jì)數(shù)器(R15)

低寄存器高寄存器2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林712023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林712023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林71本章內(nèi)容ARM微處理器結(jié)構(gòu)ARM體系結(jié)構(gòu)簡(jiǎn)介ARM微處理器的寄存器結(jié)構(gòu)ARM微處理器的異常處理ARM的存儲(chǔ)器結(jié)構(gòu)ARM微處理器指令系統(tǒng)ARM微處理器的接口2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林72異常內(nèi)部或外部事件使正常的程序產(chǎn)生暫時(shí)的停止,稱(chēng)之為異常ARM中,中斷是異常的一種,是CPU外部設(shè)備告知CPU的一種方法在處理異常之前,ARM內(nèi)核保存當(dāng)前的處理器狀態(tài)(CPSR->SPSR),以便當(dāng)處理程序結(jié)束時(shí)可以恢復(fù)執(zhí)行原來(lái)的程序(SPSR->CPSR)如果同時(shí)發(fā)生兩個(gè)或更多異常,那么將按照固定的優(yōu)先級(jí)來(lái)處理異常2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林73VectorTable不同的異常將導(dǎo)致處理器進(jìn)入不同的工作模式,并執(zhí)行不同特定地址的指令各異常類(lèi)型具有不同的優(yōu)先級(jí)。復(fù)位——發(fā)生時(shí),處理器立即停止當(dāng)前程序,進(jìn)入禁止中斷的管理模式,并從地址0x00000000或者0xFFFF0000處開(kāi)始執(zhí)行;未定義指令——在ARM處理器或協(xié)處理器認(rèn)為當(dāng)前指令未定義時(shí)發(fā)生;軟件中斷——當(dāng)用戶模式下的程序使用指令SWI時(shí),處理器便產(chǎn)生軟件中斷,進(jìn)入管理模式,以調(diào)用特權(quán)操作。指令預(yù)取中止——當(dāng)處理器預(yù)取指令的地址不存在,或該地址不允許當(dāng)前指令訪問(wèn),存儲(chǔ)器會(huì)向處理器發(fā)出中止信號(hào);只有當(dāng)預(yù)取的指令被執(zhí)行時(shí),才會(huì)產(chǎn)生指令預(yù)取中止異常。Vectortablecanbeat

0xFFFF0000onARM720T

andonARM9/10familydevicesFIQIRQ(Reserved)DataAbortPrefetchAbortSoftwareInterruptUndefinedInstructionReset0x1C0x180x140x100x0C0x080x040x001665優(yōu)先級(jí)異常處理2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林74VectorTable不同的異常將導(dǎo)致處理器進(jìn)入不同的工作模式,并執(zhí)行不同特定地址的指令各異常類(lèi)型具有不同的優(yōu)先級(jí)。數(shù)據(jù)訪問(wèn)中止——若處理器數(shù)據(jù)訪問(wèn)指令的地址不存在,或該地址不允許當(dāng)前指令訪問(wèn)時(shí),產(chǎn)生數(shù)據(jù)中止異常;外部中斷請(qǐng)求——當(dāng)處理器的外部中斷請(qǐng)求引腳有效,而且CPSR中的I位為0時(shí),產(chǎn)生IRQ異常。系統(tǒng)外設(shè)可通過(guò)該異常請(qǐng)求中斷服務(wù)。快速中斷請(qǐng)求——處理器的快速中斷請(qǐng)求引腳有效,而且CPSR中的F位為0時(shí),產(chǎn)生FIQ異常。Vectortablecanbeat

0xFFFF0000onARM720T

andonARM9/10familydevicesFIQIRQ(Reserved)DataAbortPrefetchAbortSoftwareInterruptUndefinedInstructionReset0x1C0x180x140x100x0C0x080x040x0016652優(yōu)先級(jí)43異常處理2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林7575異常30xFFFF001C0x0000001C快速中斷模式快速中斷請(qǐng)求(FIQ)40xFFFF00180x00000018外部中斷模式外部中斷請(qǐng)求(IRQ)20xFFFF00100x00000010中止模式數(shù)據(jù)訪問(wèn)中止50xFFFF000C0x0000000C中止模式指令預(yù)取中止60xFFFF00080x00000008管理模式軟件中斷(SWI)60xFFFF00040x00000004未定義指令中止模式未定義指令10xFFFF00000x00000000管理模式復(fù)位優(yōu)先級(jí)特定地址(高端)特定地址(低端)工作模式異常類(lèi)型2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林76進(jìn)入異常無(wú)論進(jìn)入異常前處于ARM或Thumb狀態(tài),總在異常對(duì)應(yīng)模式的LR中保存PC值將CPSR復(fù)制到適當(dāng)?shù)腟PSR中設(shè)置CPSRARM內(nèi)核在部分異常時(shí)置位中斷禁止標(biāo)志,以防止不受控制的異常嵌套總是在ARM狀態(tài)中處理異常。若在Thumb狀態(tài)下發(fā)生了異常,在異常向量地址裝入PC時(shí),自動(dòng)切換到ARM狀態(tài)模式位強(qiáng)制設(shè)置為與異常類(lèi)型相對(duì)應(yīng)的值強(qiáng)制PC從相關(guān)的異常向量處取指2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林77退出異常將LR(R14)中的值減去偏移量后存入PC,偏移量根據(jù)異常的類(lèi)型而有所不同恢復(fù)CPSR(如將SPSR的值復(fù)制回CPSR),即恢復(fù)之前CPU狀態(tài)恢復(fù)之前中斷屏蔽狀態(tài)恢復(fù)之前的CPU模式恢復(fù)之前的狀態(tài)標(biāo)志2023/2/5中國(guó)礦業(yè)大學(xué)——信電學(xué)院——張林78程序AIRQ服務(wù)程序系統(tǒng)模式IRQ模式程序寄存器組圖示進(jìn)入異常過(guò)程1.程序在系統(tǒng)模式下運(yùn)行用戶程序,假定當(dāng)前處理器狀態(tài)為T(mén)humb狀態(tài)、允許IRQ中斷;2.用戶程序運(yùn)行時(shí)發(fā)生

溫馨提示

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