ARM7與ARM9體系結(jié)構(gòu)研討課件_第1頁
ARM7與ARM9體系結(jié)構(gòu)研討課件_第2頁
ARM7與ARM9體系結(jié)構(gòu)研討課件_第3頁
ARM7與ARM9體系結(jié)構(gòu)研討課件_第4頁
ARM7與ARM9體系結(jié)構(gòu)研討課件_第5頁
已閱讀5頁,還剩143頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

本資料來源本資料來源第2章ARM7/ARM9體系結(jié)構(gòu)主講人:吳貴芳2022/12/9第2章ARM7/ARM9體系結(jié)構(gòu)主講人:吳貴芳1.ARM簡介2.ARM7/9TDMI3.ARM的模塊、內(nèi)核和功能框圖4.ARM處理器狀態(tài)5.ARM處理器模式主要內(nèi)容6.ARM內(nèi)部寄存器7.當(dāng)前程序狀態(tài)寄存器8.ARM體系的異常、中斷及其向量表9.ARM體系的存儲系統(tǒng)1.ARM簡介主要內(nèi)容6.ARM內(nèi)部寄存器2.1ARM簡介ARM公司簡介ARM是AdvancedRISCMachines的縮寫,它是一家微處理器行業(yè)的知名企業(yè),該企業(yè)設(shè)計了大量高性能、廉價、耗能低的RISC(精簡指令集)處理器。公司的特點是只設(shè)計芯片,而不生產(chǎn)。它將技術(shù)授權(quán)給世界上許多著名的半導(dǎo)體、軟件和OEM廠商,并提供服務(wù)。2.1ARM簡介ARM公司簡介ARM是A2.1ARM簡介ARM公司簡介將技術(shù)授權(quán)給其它芯片廠商形成各具特色的ARM芯片...2.1ARM簡介ARM公司簡介將技術(shù)授權(quán)給其它芯片廠商形2.1ARM簡介RISC結(jié)構(gòu)特性RISC是精簡指令集計算機的縮寫,其目標(biāo)是設(shè)計出在高時鐘頻率下單周期執(zhí)行,簡單而有效的指令集。ARM內(nèi)核采用RISC體系結(jié)構(gòu),因此具有RISC的結(jié)構(gòu)特點:具有大量的通用存儲器;獨特的裝載/保存(load-store)結(jié)構(gòu);簡單的尋址模式;統(tǒng)一和固定長度的指令格式。2.1ARM簡介RISC結(jié)構(gòu)特性RISC2.1ARM簡介

為了使ARM能夠更好地滿足嵌入式應(yīng)用的需要,ARM體系結(jié)構(gòu)還有以下特點:每條數(shù)據(jù)處理指令可同時包含算術(shù)邏輯單元(ALU)的運算和移位處理,實現(xiàn)ALU和移位器的最大利用;使用地址自增和自減的尋址方式優(yōu)化程序循環(huán);裝載/保存指令對數(shù)據(jù)的批量傳輸,實現(xiàn)最大數(shù)據(jù)吞吐量;大多數(shù)指令的條件執(zhí)行,實現(xiàn)最快速的代碼執(zhí)行。ARM體系結(jié)構(gòu)2.1ARM簡介為了使ARM能夠更好地滿2.1ARM簡介常用ARM處理器系列ARM公司開發(fā)了很多系列的ARM處理器核,目前最新的系列是Cortex,而ARM6核以及更早的系列已經(jīng)很罕見了。當(dāng)前應(yīng)用比較多的ARM處理器核系列有:ARM7ARM9ARM10EXscaleARM11CortexARM9E2.1ARM簡介常用ARM處理器系列AR版本ARM處理器系列特點ARMv1ARM1該版體系結(jié)構(gòu)只在原型機ARM1出現(xiàn)過,沒有用于商業(yè)產(chǎn)品?;拘阅埽?基本的數(shù)據(jù)處理指令(無乘法)?26位尋址ARMv2ARM2和ARM3該版體系結(jié)構(gòu)對ARMv1版進(jìn)行了擴展,版本ARMv2a是v2版的變種,ARM3芯片采用了ARMv2a。ARMv2版增加了以下功能:?32位乘法和乘加指令?支持32位協(xié)處理器操作指令?快速中斷模式ARM體系結(jié)構(gòu)版本及特點版本ARM處理器系列特點ARMv1ARM1該版體系結(jié)構(gòu)只在原ARMv3ARMv3MARM6、ARM7DI、ARM7MARMv3版體系結(jié)構(gòu)對ARM體系結(jié)構(gòu)作了較大的改動:?尋址空間增至32位(4GB)?獨立的當(dāng)前程序狀態(tài)寄存器CPSR和程序狀態(tài)保存寄存器SPSR,保存程序異常中斷時的程序狀態(tài),以便于對異常的處?增加了異常中斷(Abort)和未定義兩種處理器模式?增加了MMU支持?ARMv3M增加了有符號和無符號長乘法指令A(yù)RMv4ARMv4TStrongARM、ARM9TDMI、ARM9TARMv4版體系結(jié)構(gòu)是目前應(yīng)用最廣的ARM體系結(jié)構(gòu),在v3版上作了進(jìn)一步擴充,指令集中增加了以下功能:?增加了系統(tǒng)模式?增加了16位Thumb指令集?完善了軟件中斷SWI指令的功能?不再支持26位尋址模式ARMv3ARM6、ARM7DI、ARMv3版體系結(jié)構(gòu)對ARARMv5TEARMv5TEJARM9E、ARM10E、Xscale、ARM7EJ、ARM926EJARMv5版體系結(jié)構(gòu)在ARMv4版基礎(chǔ)上增加了一些新的指令,包括:?增加ARM與Thumb狀態(tài)之間切換的指令?增強乘法指令和快速乘累加指令?增加了數(shù)字信號處理指令(ARMv5TE版)?增加了Java加速功能(ARMv5TEJ版)ARMv6ARM11ARMv6版體系結(jié)構(gòu)是2001年發(fā)布的,首先在ARM11處理器中使用。此體系結(jié)構(gòu)在ARMv5版基礎(chǔ)上增加了以下功能:?Thumb-2增強代碼密度?SIMD增強媒體和數(shù)字處理功能?TrustZone提供增強的安全性能?IEM提供增強的功耗管理功能ARMv5TEARM9E、ARMv5版體系結(jié)構(gòu)在ARMv4版ARMv7Cortex系列ARMv7版體系結(jié)構(gòu)定義了3種不同的微處理器系列:?A系列為面向應(yīng)用的微處理器核,支持復(fù)雜操作系統(tǒng)和用戶應(yīng)用?R系列為深度嵌入的微處理器核,針對實時系統(tǒng)應(yīng)用?M系列為微控制核,針對成本敏感的嵌入式控制應(yīng)用ARMv7Cortex系列ARMv7版體系結(jié)構(gòu)定義了3種不同內(nèi)核特點M4KTM系列針對多CPU集成的SOC應(yīng)用領(lǐng)域為下一代消費類產(chǎn)品、下一代網(wǎng)絡(luò)和寬帶產(chǎn)品M4KTM系列4KpTM、4KcTM內(nèi)核針對SOC系統(tǒng)優(yōu)化,其內(nèi)存、指令緩存和數(shù)據(jù)緩存都可以根據(jù)具體應(yīng)用調(diào)整大小M4KTM系列4KEpTM、4KEmTM和4KEcTM內(nèi)核與4KTM系列類似,但能提供更高性能,在同樣時鐘頻率下指令執(zhí)行周期更短4KSTM系列4KScTM和4KSdTM內(nèi)核針對數(shù)據(jù)通信的應(yīng)用。其特點是采用了SmartMIPSTM結(jié)構(gòu),擁有反黑客的特性,可以讓數(shù)據(jù)加密更加快速,在網(wǎng)絡(luò)處理、智能卡、機頂盒等方面有廣泛應(yīng)用MIPS32位處理器內(nèi)核系列和特點內(nèi)核特點M4KTM系列針對多CPU集成的SOC應(yīng)用領(lǐng)域為下一ProSeriesTM系列M4KProTM、4KEProTM、4KEmProTM、4KEcProms和4KSdProTM內(nèi)核該系列內(nèi)核允許SOC的設(shè)計者創(chuàng)造自己的CorExtendTM擴展指令集。這樣可以根據(jù)具體應(yīng)用設(shè)計出性能更好,效率更高的產(chǎn)品24KTM系列針對圖形、JAVA應(yīng)用,包含了最快的浮點乘法器,也支持CorExtendTM擴展指令集,是數(shù)字電視、機頂盒和DVD等多媒體應(yīng)用的理想選擇ProSeriesTM系列M4KProTM、4KEPr2.1ARM簡介ARMCortex系列簡介

基于ARMv7版本的ARMCortex系列產(chǎn)品由A、R、M三個系列組成,具體分類延續(xù)了一直以來ARM面向具體應(yīng)用設(shè)計CPU的思路。ARMCortexA應(yīng)用處理器(ApplicationProcessor

)系列R實時控制處理(RealTimeControl)系列M微控制器(MicroController)系列2.1ARM簡介ARMCortex系列簡介2.1ARM簡介CortexTM-M3處理器簡介

該處理器是首款基于ARMv7-M架構(gòu)的處理器,采用了純Thumb2指令的執(zhí)行方式,具有極高的運算能力和中斷相應(yīng)能力。

Cortex-M3主要應(yīng)用于汽車車身系統(tǒng),工業(yè)控制系統(tǒng)和無線網(wǎng)絡(luò)等對功耗和成本敏感的嵌入式應(yīng)用領(lǐng)域。目前最便宜的基于該內(nèi)核的ARM單片機售價為1美元。2.1ARM簡介CortexTM-M3處理器簡介2.1ARM簡介CortexTM-R4處理器簡介

該處理器是首款基于ARMv7架構(gòu)的高級嵌入式處理器,其主要目標(biāo)為產(chǎn)量巨大的高級嵌入式應(yīng)用系統(tǒng),如硬盤,噴墨式打印機,以及汽車安全系統(tǒng)等等。CortexTM-R4F處理器簡介

該處理器在CortexTM-R4處理器的基礎(chǔ)上加入了代碼錯誤校正(ECC)技術(shù),浮點運算單元(FPU)以及DMA綜合配置的能力,增強了處理器在存儲器保護(hù)單元、緩存、緊密耦合存儲器、DMA訪問以及調(diào)試方面的能力。2.1ARM簡介CortexTM-R4處理器簡介2.1ARM簡介CortexTM-A8處理器簡介

該處理器是ARM公司所開發(fā)的基于ARMv7架構(gòu)的首款應(yīng)用級處理器,其特色是運用了可增加代碼密度和加強性能的技術(shù)、可支持多媒體以及信號處理能力的NEONTM技術(shù)、以及能夠支持Java和其他文字代碼語言的提前和即時編譯的Jazelle@RTC技術(shù)。眾多先進(jìn)的技術(shù)使其適用于家電以及電子行業(yè)等各種高端的應(yīng)用領(lǐng)域。2.1ARM簡介CortexTM-A8處理器簡介2.1ARM簡介ARM7系列簡介

該系列包括ARM9TDMI、ARM9TDMI-S、帶有高速緩存處理器宏單元的ARM720T和擴充了Jazelle的ARM7EJ-S。該系列處理器提供Thumb16位壓縮指令集和EmbededICE軟件調(diào)試方式,適用于更大規(guī)模的SoC設(shè)計中。

ARM7系列廣泛應(yīng)用于多媒體和嵌入式設(shè)備,包括Internet設(shè)備、網(wǎng)絡(luò)和調(diào)制解調(diào)器設(shè)備,以及移動電話、PDA等無線設(shè)備。2.1ARM簡介ARM7系列簡介該系列包2.1ARM簡介

該系列包括ARM9TDMI、ARM920T和帶有高速緩存處理器宏單元的ARM940T。除了兼容ARM7系列,而且能夠更加靈活的設(shè)計。

ARM9系列主要應(yīng)用于引擎管理、儀器儀表、安全系統(tǒng)和機頂盒等領(lǐng)域。ARM9系列簡介2.1ARM簡介該系列包括ARM9TDM2.1ARM簡介

該系列為含有DSP指令集的綜合處理器,包括ARM926EJ-S、帶有高速緩存處理器宏單元的ARM966E-S/ARM946E-S。其內(nèi)核在ARM7處理器內(nèi)核的基礎(chǔ)上使用了Jazelle增強技術(shù),該技術(shù)支持一種新的Java操作狀態(tài),允許在硬件中執(zhí)行Java字節(jié)碼。

ARM9E系列主要應(yīng)用于下一代無線設(shè)備、數(shù)字消費品、成像設(shè)備、工業(yè)控制、存儲設(shè)備和網(wǎng)絡(luò)設(shè)備等領(lǐng)域。ARM9E系列簡介2.1ARM簡介該系列為含有DSP指令集2.1ARM簡介ARM10E系列簡介

該系列包括ARM1020E和ARM1020E處理器核,其核心在于使用向量浮點(VFP)單元VFP10提供高性能的浮點解決方案,從而極大提高了處理器的整型和浮點運算性能??梢杂糜谝曨l游戲機和高性能打印機等場合。2.1ARM簡介ARM10E系列簡介該系2.1ARM簡介Xscale簡介IntelXscale微控制器則提供全性能、高性價比、低功耗的解決方案,支持16位Thumb指令并集成數(shù)字信號處理(DSP)指令。主要應(yīng)用于手提式通訊和消費電子類設(shè)備。2.1ARM簡介Xscale簡介InteARM9TDMI-S2.2ARM9TDMI簡介ARM9TDMI是基于ARM體系結(jié)構(gòu)V4版本的低端ARM核。其彌補了ARM6很難在低于5V電壓下穩(wěn)定工作的不足,還增加了后綴所對應(yīng)的功能:支持高密度16位的Thumb指令集;支持片上調(diào)試;支持64位乘法;支持EmbededICE觀察硬件;ARM9TDMI的可綜合(synthesizable)版本(軟核),對應(yīng)用工程師來說其編程模型與ARM9TDMI一致;

注意:“ARM核”并非芯片,ARM核與其它部件如RAM、ROM、片內(nèi)外設(shè)組合在一起才能構(gòu)成現(xiàn)實的芯片。ARM9TDMI-S2.2ARM9TDMI簡介2.2ARM9TDMI存儲器的字與半字

從偶數(shù)地址開始的連續(xù)2個字節(jié)構(gòu)成一個半字;以能被4整除的地址開始的連續(xù)4個字節(jié)構(gòu)成一個字;

ARM指令的長度剛好是一個字,Thumb指令的長度剛好是一個半字。2.2ARM9TDMI存儲器的字與半字從2.2ARM9TDMI

如果一個數(shù)據(jù)是從偶地址開始的連續(xù)存儲,那么它就是半字對齊,否則就是非半字對齊;如果一個數(shù)據(jù)是以能被4整除的地址開始的連續(xù)存儲,那么它就是字對齊,否則就是非字對齊。方式半字對齊字對齊地址……0x40020x4004…………0x40040x4008……特征Bit0=0其他位為任意值Bit1=0,Bit0=0其他位為任意值存儲器的存儲方式2.2ARM9TDMI如果一個數(shù)據(jù)是從偶地2.2ARM9TDMI三級流水線ARM處理器使用流水線來增加處理器指令流的速度,這樣可使幾個操作同時進(jìn)行,并使處理和存儲器系統(tǒng)連續(xù)操作,能提供0.9MIPS/MHz的指令執(zhí)行速度。ARM9TDMI的流水線分3級,分別為:取指譯碼執(zhí)行取指譯碼執(zhí)行處理指令并將結(jié)果寫回寄存器識別將要被執(zhí)行的指令從寄存器裝載一條指令

正常操作過程中,在執(zhí)行一條指令的同時對下一條(第二條)指令進(jìn)行譯碼,并將第三條指令從存儲器中取出。

在ARM狀態(tài)下,流水線上各指令的地址為:

在Thumb狀態(tài)下,流水線上各指令的地址為:PCPC-4PC-8PCPC-2PC-42.2ARM9TDMI三級流水線ARM處2.2ARM9TDMI三級流水線結(jié)構(gòu)的指令執(zhí)行順序PC指令1指令2指令3指令4…………程序存儲器PC-4PC-8PC+4周期1周期2周期3周期4周期5周期6取指譯碼執(zhí)行取指譯碼執(zhí)行取指譯碼執(zhí)行取指譯碼執(zhí)行周期2周期1周期3周期4

在第1個周期,PC指向指令1,此時指令1進(jìn)入三級流水線的取指階段。1

在第2個周期,PC指向指令2,此時指令1進(jìn)入三級流水線的譯碼階段,同時取出指令2。2

在第3個周期,PC指向指令3,此時指令1進(jìn)入三級流水線的執(zhí)行階段,指令2進(jìn)入譯碼階段,取出指令3。3

在第4個周期,指令1執(zhí)行完成,指令2和指令3流水線推進(jìn)一級,同時開始指令4的取指處理。4處理器執(zhí)行一條指令的三個階段2.2ARM9TDMI三級流水線結(jié)構(gòu)的指令執(zhí)行順序PC指

執(zhí)行ADDPC,PC,#4指令后,PC的值為多少?2.2ARM9TDMI思考題ADDPC,PC,#4………………0x40000x40040x40080x400C地址指令PC取指譯碼執(zhí)行PCPC-4PC-8ARM7的3級流水線ADD

程序計數(shù)器R15(PC)總是指向“正在取指”的指令,而不是指向“正在執(zhí)行”的指令或“正在譯碼”的指令。

一般來說,人們習(xí)慣性約定將“正在執(zhí)行”的指令作為參考點,則:PC值=當(dāng)前程序執(zhí)行位置+8

注:ARM狀態(tài)時,每條指令為4字節(jié)長。PC指向0x4000地址,取指ADD指令。PC指向0x4004地址,譯碼ADD指令。PC指向0x4008地址,執(zhí)行ADD指令,所以指令執(zhí)行的結(jié)果為:PC=PC+4=0x4008+4=0x400C?!瓐?zhí)行ADDPC,PC,#4指令后,PC的值為多CPU掃描鏈1掃描鏈1數(shù)據(jù)總線數(shù)據(jù)總線掃描鏈1掃描鏈2協(xié)處理器信號接口EmbeddedICE-RTTAP控制器EmbeddedICE-RT宏單元DBGTCKENDBGTMSDBGnTRSTDBGTDIDBGTDORDATA[31:0]WDATA[31:0]ADDR[31:0]TRANS[1:0]PROT[1:0]SIZE[1:0]WRITELOCKDBGRNG(0)DBGRNG(1)DBGEXT(1)DBGEXT(0)2.3ARM模塊框圖CPU協(xié)處理接口信號EmbedICE硬件仿真功能模塊片上調(diào)試系統(tǒng)讀寫總線CPU掃描鏈1掃數(shù)數(shù)據(jù)總線掃描鏈1掃協(xié)處理器Embedded2.3ARM內(nèi)核框圖地址寄存器寄存器組31*32位寄存器(6個狀態(tài)寄存器)地址增加器乘法器桶形移位器32位ALU寫數(shù)據(jù)寄存器指令管線讀數(shù)據(jù)寄存器Thumb指令譯碼器指令譯碼和控制邏輯ADDR[31:0]CLKCLENCFGBIGENDnIRQnFIQnRESETABORTLOCKWRITESIZE[1:0]PROT[1:0]TRANS[1:0]DBG輸出DBG輸入CP控制CP握手WDATA[31:0]RDATA[31:0]掃描調(diào)試控制2.3ARM內(nèi)核框圖地址寄存器寄存器組地址增加器乘法器桶2.3ARM功能框圖ARM9TDMI處理器LOCKCLKCLKENnIRQnFIQnRESETCFGBIGENDDBGRQDMOREDBGINSTRVAILDDBGBREAKDBGACKDBGnEXECDBGEXT[1]DBGEXT[0]DBGENDBGCOMMTXDBGCOMMRXDBGRNG[0]DBGRNG[1]DBGTCKENDBGTMSDBGTDIDBGnTRSTDBGTDODBGnTDOENADDR[31:0]WDATA[31:0]RDATA[31:0]ABORTWRITESIZE[1:0]PROT[1:0]TRANS[1:0]CPnTRANSCPnOPCCPnMREQCPSEQCPTBITCPnICPACPB同步的掃描調(diào)試訪問接口存儲器接口存儲器管理接口協(xié)處理器接口時鐘中斷總線控制仲裁調(diào)試2.3ARM功能框圖ARM9TDMILOCKCLKCLK2.4ARM處理器狀態(tài)處理器狀態(tài)ARM9TDMI處理器內(nèi)核包含2套指令系統(tǒng),分別為ARM指令集和Thumb指令,并且各自對應(yīng)1種處理器的狀態(tài):ARM狀態(tài):32位,處理器執(zhí)行字方式的ARM指令,處理器默認(rèn)為此狀態(tài);Thumb狀態(tài):16位,處理器執(zhí)行半字方式的Thumb指令。注意:兩個狀態(tài)之間的切換并不影響處理器模式或寄存器內(nèi)容。2.4ARM處理器狀態(tài)處理器狀態(tài)ARM92.4ARM處理器狀態(tài)狀態(tài)切換的一個例子地址最低位為0,表示切換到ARM狀態(tài)

使用BX指令將ARM內(nèi)核的操作狀態(tài)在ARM狀態(tài)和Thumb狀態(tài)之間進(jìn)行切換。ARM指令集Thumb指令集 CODE32 LDR R0,=Lable+1 BX R0 CODE16Lable MOV R1,#12 CODE16 LDR R0,=Lable BX R0 CODE32Lable MOV R1,#10地址最低位為1,表示切換到Thumb狀態(tài)跳轉(zhuǎn)地址標(biāo)號執(zhí)行完BX指令,處理器切換到Thumb狀態(tài),開始執(zhí)行Thumb指令程序代碼指令集關(guān)系

從ARM狀態(tài)切換到Thumb狀態(tài)的程序代碼如下:

從Thumb狀態(tài)切換到ARM狀態(tài)的程序代碼如下:執(zhí)行完BX指令,處理器切換到ARM狀態(tài),開始執(zhí)行ARM指令2.4ARM處理器狀態(tài)狀態(tài)切換的一個例子地址最低位為0,2.5ARM處理器模式簡介ARM體系結(jié)構(gòu)支持7種處理器模式,分別為:用戶模式、快中斷模式、中斷模式、管理模式、中止模式、未定義模式和系統(tǒng)模式。這樣的好處是可以更好的支持操作系統(tǒng)并提高工作效率。ARM9TDMI完全支持這七種模式。2.5ARM處理器模式簡介ARM體系結(jié)構(gòu)

除用戶模式外,其它模式均為特權(quán)模式。ARM內(nèi)部寄存器和一些片內(nèi)外設(shè)在硬件設(shè)計上只允許(或者可選為只允許)特權(quán)模式下訪問。此外,特權(quán)模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。處理器模式說明備注

用戶(usr)正常程序運行的工作模式不能直接從用戶模式切換到其它模式特權(quán)模式系統(tǒng)(sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類似,但具有可以直接切換到其它模式等特權(quán)異常模式快中斷(fiq)快速中斷請求處理只有在FIQ異常響應(yīng)時,才進(jìn)入此模式中斷(irq)中斷請求處理只有在IRQ異常響應(yīng)時,才進(jìn)入此模式管理(svc)供操作系統(tǒng)使用的一種保護(hù)模式只有在系統(tǒng)復(fù)位和軟件中斷響應(yīng)時,才進(jìn)入此模式中止(abt)用于虛擬內(nèi)存和/或存儲器保護(hù)在ARM7內(nèi)核中沒有多大用處未定義(und)支持軟件仿真的硬件協(xié)處理器只有在未定義指令異常響應(yīng)時,才進(jìn)入此模式處理器模式

這兩種模式都不能由異常進(jìn)入,想要進(jìn)入必須修改CPSR,而且它們使用完全相同的寄存器組。系統(tǒng)模式是特權(quán)模式,不受用戶模式的限制。操作系統(tǒng)在該模式下訪問用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一些特權(quán)任務(wù)可以使用這個模式訪問一些受控的資源。

這五種模式稱為異常模式。它們除了可以通過程序切換進(jìn)入外,也可以由特定的異常進(jìn)入。當(dāng)特定的異常出現(xiàn)時,處理器進(jìn)入相應(yīng)的模式。每種異常模式都有一些獨立的寄存器,以避免異常退出時用戶模式的狀態(tài)不可靠。何時進(jìn)入異常模式,具體規(guī)定如下:處理器復(fù)位之后進(jìn)入管理模式,操作系統(tǒng)內(nèi)核通常處于管理模式;當(dāng)處理器訪問存儲器失敗時,進(jìn)入數(shù)據(jù)訪問中止模式;當(dāng)處理器遇到?jīng)]有定義或不支持的指令時,進(jìn)入未定義模式;中斷模式與快速中斷模式分別對ARM處理器2種不同級別的中斷作出響應(yīng)。除用戶模式外,其它模式均為特權(quán)模式。ARM內(nèi)2.6ARM內(nèi)部寄存器簡介

在ARM處理器內(nèi)部共有37個用戶可訪問的寄存器,分別為31個通用32位寄存器和6個狀態(tài)寄存器。ARM處理器共有7種不同的處理器模式,每種模式都有一組相應(yīng)的寄存器組,最多可以18個活動的寄存器。2.6ARM內(nèi)部寄存器簡介在ARM處理器內(nèi)ARM狀態(tài)各模式下的寄存器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(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_scvR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR13_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR-SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq

所有的37個寄存器,分成兩大類:31個通用32位寄存器;6個狀態(tài)寄存器。ARM狀態(tài)各模式下的寄存器寄存器寄存器在匯各模式下實際訪問的ARM狀態(tài)各模式下可以訪問的寄存器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(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-SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM狀態(tài)各模式下可以訪問的寄存器寄存器寄存器在匯各模式下實未分組的通用寄存器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(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_scvR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR13_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR-SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq寄存器R0~R7為未分組的通用寄存器,它們在任何處理器模式都對應(yīng)于相同的32位物理寄存器。第一類分組的通用寄存器寄存器R8~R12有兩個分組的物理寄存器。一個用于除FIQ模式之外的所有寄存器模式,另一個用于FIQ模式。在發(fā)生FIQ中斷后,處理器不必為保護(hù)寄存器而浪費時間,從而加速了FIQ的處理速度。第二類分組的通用寄存器寄存器R13、R14分別有6個分組的物理寄存器。1個用于用戶和系統(tǒng)模式,其余5個分別用于5種異常模式。寄存器R13通常作為堆棧指針(SP),用于保存待使用的寄存器的內(nèi)容。寄存器R14稱為鏈接寄存器(LR),在結(jié)構(gòu)上有兩個特殊功能:當(dāng)使用BL指令調(diào)用子程序時,返回地址將自動存入R14中;當(dāng)發(fā)生異常時,將R14對應(yīng)的異常模式版本設(shè)置為異常返回地址(有些異常有一個小的固定偏移量)。程序計數(shù)器寄存器R15稱為程序計數(shù)器(PC),它指向正在“取指”的指令。狀態(tài)寄存器寄存器CPSR為當(dāng)前程序狀態(tài)寄存器,在異常模式中,另外一個寄存器“程序狀態(tài)保存寄存器(SPSR)”可以被訪問。每種異常都有自己的SPSR,在進(jìn)入異常時它保存CPSR的當(dāng)前值,異常退出時可通過它恢復(fù)CPSR。未分組的通用寄存器寄存器寄存器在匯各模式下實際訪問的寄存器用2.6ARM內(nèi)部寄存器在Thumb狀態(tài)各模式下實際訪問的寄存器Thumb狀態(tài)寄存器集是ARM狀態(tài)集的子集,程序員可以直接訪問的寄存器為:8個通用寄存器R0~R7;程序計數(shù)器(PC);堆棧指針(SP);鏈接寄存器(LR);當(dāng)前程序狀態(tài)寄存器(CPSR)。2.6ARM內(nèi)部寄存器在Thumb狀態(tài)各模式下實際訪問的在Thumb狀態(tài)各模式下的寄存器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4,WR)R7SPR13R13_scvR13_abtR13_undR13_irqR13_fiqLRR14R14_svcR14_abtR14_undR13_irqR14_fiqPCR15狀態(tài)寄存器CPSRCPSR未分組的通用寄存器第二類分組的通用寄存器在匯編語言中寄存器R0~R7為通用寄存器,對于任何處理器模式,它們中的每一個都對應(yīng)于相同的32為物理寄存器。堆棧指針SP對應(yīng)ARM狀態(tài)的寄存器R13。每個異常模式都有其自身的SP分組版本,SP通常指向各異常模式所專用的堆棧。注意:在發(fā)生異常時,處理器自動進(jìn)入ARM狀態(tài)。鏈接寄存器LR對應(yīng)ARM狀態(tài)寄存器R14。注意:在發(fā)生異常時,處理器自動進(jìn)入ARM狀態(tài)。在Thumb狀態(tài)各模式下的寄存器寄存器寄存器在匯各模式下實際ARM狀態(tài)Thumb寄存器在ARM狀態(tài)寄存器上的映射R0R1R2R3R4R5R6R7R8R9R10R11R12堆棧指針(R13)連接寄存器(R14)程序計數(shù)器(R15)CPSRSPSRR0R1R2R3R4R5R6R7堆棧指針(SP)連接寄存器(LR)程序計數(shù)器(PC)CPSRThumb狀態(tài)Thumb狀態(tài)R0~R7與ARM狀態(tài)R0~R7相同;1Thumb狀態(tài)CPSR(無SPSR)與ARM狀態(tài)CPSR相同。5Thumb狀態(tài)SP映射到ARM狀態(tài)R13;2Thumb狀態(tài)LR映射到ARM狀態(tài)R14;3Thumb狀態(tài)PC映射到ARM狀態(tài)R15(PC);4低端寄存器高端寄存器

在Thumb狀態(tài)中,高端寄存器的訪問是受到限制的,只有MOV、CMP和ADD指令可以對其訪問,可以用于數(shù)據(jù)的快速暫存。ARM狀態(tài)Thumb寄存器在ARM狀態(tài)寄存器上的映射R0R1ARMThumbARMResetBXBXARM中斷服務(wù)程序正常程序事件ARMARMISR1ISR2ISRn…狀態(tài)切換過程異常發(fā)生進(jìn)入退出

系統(tǒng)復(fù)位,自動切換到ARM狀態(tài)。1

通過BX和BLX指令改變當(dāng)前處理器模式,使之從ARM狀態(tài)切換到Thumb狀態(tài)。2

在Thumb狀態(tài)下,正常程序執(zhí)行時產(chǎn)生中斷異常。3

處理器進(jìn)入中斷異常,自動的將模式切換到ARM狀態(tài)。4

異常處理完畢,返回正常程序,此時處理器自動的將模式切換到Thumb狀態(tài)。5

再次通過BX和BLX指令改變當(dāng)前處理器模式,使之從Thumb狀態(tài)切換到ARM狀態(tài)。6

程序在正常運行的過程中,復(fù)位事件產(chǎn)生,導(dǎo)致系統(tǒng)復(fù)位。ARMThumbARMResetBXBXARM中斷服務(wù)程序正2.7當(dāng)前程序狀態(tài)寄存器簡介ARM內(nèi)核包含1個CPSR和5個僅供異常處理程序使用的SPSR。CPSR反映當(dāng)前處理器的狀態(tài),其包含:4個條件代碼標(biāo)志(負(fù)標(biāo)志N、零標(biāo)志Z、進(jìn)位標(biāo)志C和溢出標(biāo)志V);2個中斷禁止位(IRQ禁止與FIQ禁止);5個對當(dāng)前處理器模式進(jìn)行編碼的位(M[4:0]);1個用于指示當(dāng)前執(zhí)行指令的位(ARM指令還是Thumb指令)。2.7當(dāng)前程序狀態(tài)寄存器簡介ARM內(nèi)核2.7當(dāng)前程序狀態(tài)寄存器程序狀態(tài)寄存器的格式NZCV——IM0M1M2M3M4TF—...313029282726876543210條件代碼標(biāo)志保留控制位溢出標(biāo)志進(jìn)位或借位擴展零負(fù)或小于IRQ禁止FIQ禁止?fàn)顟B(tài)位模式位NZCVIM0M1M2M3M4TF2.7當(dāng)前程序狀態(tài)寄存器程序狀態(tài)寄存器的格式NZCV——2.7當(dāng)前程序狀態(tài)寄存器條件代碼標(biāo)志各標(biāo)志位的含義如下:負(fù)標(biāo)志N:運算結(jié)果的第31位值,記錄標(biāo)志設(shè)置操作的結(jié)果;零標(biāo)志Z:如果標(biāo)志設(shè)置的操作為0,則置位;進(jìn)位標(biāo)志C:記錄無符號加法溢出,減法無借位,循環(huán)移位;溢出標(biāo)志V:記錄標(biāo)志設(shè)置操作的有符號溢出。2.7當(dāng)前程序狀態(tài)寄存器條件代碼標(biāo)志各標(biāo)志位的含義如下:

警告:絕對不要強制改變CPSR寄存器中的控制位T。如果這樣做,處理器將進(jìn)入一個無法預(yù)測的狀態(tài)。2.7當(dāng)前程序狀態(tài)寄存器控制位1、中斷禁止控制位I和F;2、處理器狀態(tài)位T;3、處理器模式位M0~M4。當(dāng)控制位I置位時,IRQ中斷被禁止;當(dāng)控制位F置位時,F(xiàn)IQ中斷被禁止。當(dāng)控制位T置位時,處理器正在Thumb狀態(tài)下運行;當(dāng)控制位T清零時,處理器正在ARM狀態(tài)下運行。M[4:0]模式可見的Thumb狀態(tài)寄存器可見的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,CPSR

注意:不是所有模式位的組合都定義了有效的處理器模式,如果將非法值寫入M[4:0]中,處理器將進(jìn)入一個無法恢復(fù)的模式。警告:絕對不要強制改變CPSR寄存器中的控制位2.7當(dāng)前程序狀態(tài)寄存器保留位CPSR中的保留位被保留將來使用。當(dāng)改變CPSR標(biāo)志和控制位時,請確認(rèn)沒有改變這些保留位。另外,請確保您的程序不依賴于包含特定值的保留位,因為將來的處理器可能會將這些位設(shè)置為1或者0。2.7當(dāng)前程序狀態(tài)寄存器保留位CPSR中的2.8ARM體系的異常異常簡介

只要正常的程序流被暫時中止,處理器就進(jìn)入異常模式。例如在用戶模式下執(zhí)行程序時,當(dāng)外設(shè)向處理器內(nèi)核發(fā)出中斷請求導(dǎo)致內(nèi)核從用戶模式切換到異常中斷模式。如果同時發(fā)生兩個或更多異常,那么將按照固定的順序來處理異常。2.8ARM體系的異常異常簡介只要正常的異常入口/出口匯總

下表所示為異常返回地址值以及退出異常處理程序所推薦使用的指令。異?;蛉肟诜祷刂噶罘祷氐刂稴WIMOVSPC,R14_svcR14未定義的指令MOVSPC,R14_undR14預(yù)取中止SUBSPC,R14_abt,#4R14-4快速中斷SUBSPC,R14_fiq,#4R14-4中斷SUBSPC,R14_irq,#4R14-4數(shù)據(jù)中止SUBSPC,R14_abt,#8R14-8復(fù)位無-

注意:“MOVSPC,R14_svc”是指在管理模式執(zhí)行MOVSPC,R14指令,同樣類似的指令還有“MOVSPC,R14_und”、“SUBSPC,R14_abt,#4”等。異常入口/出口匯總下表所示為異常返回地址值以及2.8ARM體系的異常異常向量表地址異常進(jìn)入時的模式進(jìn)入時I的狀態(tài)進(jìn)入時F的狀態(tài)0x00000000復(fù)位管理禁止禁止0x00000004未定義指令未定義IF0x00000008軟件中斷異常管理禁止F0x0000000C中止(預(yù)?。┲兄笽F0x00000010中止(數(shù)據(jù))中止IF0x00000014保留保留--0x00000018IRQ中斷禁止F0x0000001CFIQ快速中斷禁止禁止注:表中的I和F表示不對該位有影響,保留原來的值。2.8ARM體系的異常異常向量表地址異常進(jìn)入時的模式進(jìn)入2.8ARM體系的異常異常優(yōu)先級

當(dāng)多個異常同時發(fā)生時,一個固定的優(yōu)先級決定系統(tǒng)處理它們的順序。優(yōu)先級異常1復(fù)位2數(shù)據(jù)中止3FIQ4IRQ5預(yù)取指中止6未定義指令中止6軟件中斷異常優(yōu)先級由高到低2.8ARM體系的異常異常優(yōu)先級當(dāng)多個異2.8ARM體系的異常異常的進(jìn)入當(dāng)一個異常導(dǎo)致模式切換時,內(nèi)核自動的做如下處理:將異常處理程序的返回地址(加固定的偏移量)保存到相應(yīng)異常模式下的LR;將CPSR的當(dāng)前值保存到相應(yīng)異常模式下的SPSR;設(shè)置CPSR為相應(yīng)的異常模式;設(shè)置PC為相應(yīng)異常處理程序的中斷入口向量地址,跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序執(zhí)行;用戶模式SPSR異常模式CPSRR15(PC)R14(LR)R0~R13-BackAddrJumpAddrUserModeExceptionMode程序代碼正常運行在用戶模式下。2.8ARM體系的異常異常的進(jìn)入當(dāng)一個異常導(dǎo)致模式切換時2.8ARM體系的異常異常的進(jìn)入當(dāng)一個異常導(dǎo)致模式切換時,內(nèi)核自動的做如下處理:將異常處理程序的返回地址(加固定的偏移量)保存到相應(yīng)異常模式下的LR;將CPSR的當(dāng)前值保存到相應(yīng)異常模式下的SPSR;設(shè)置CPSR為相應(yīng)的異常模式;設(shè)置PC為相應(yīng)異常處理程序的中斷入口向量地址,跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序執(zhí)行;2.8ARM體系的異常異常的進(jìn)入當(dāng)一個異常導(dǎo)致模式切換時2.8ARM體系的異常異常的退出

當(dāng)異常處理程序結(jié)束時,異常處理程序必須:返回到發(fā)生異常中斷的指令的下一條指令處執(zhí)行,即就是說將LR中的值減去偏移量后移入PC;將SPSR的值復(fù)制回CPSR;SPSR異常模式用戶模式CPSRR15(PC)R14(LR)R0~R13-BackAddrCurrentAddrUserModeExceptionModeBackAddr-Off2.8ARM體系的異常異常的退出當(dāng)異常處2.8ARM體系的異常異常的退出

當(dāng)異常處理程序結(jié)束時,異常處理程序必須:返回到發(fā)生異常中斷的指令的下一條指令處執(zhí)行,即就是說將LR中的值減去偏移量后移入PC;將SPSR的值復(fù)制回CPSR;清零在入口處置位的中斷禁止標(biāo)志。2.8ARM體系的異常異常的退出當(dāng)異常處2.8ARM體系的異常復(fù)位異常

當(dāng)nRESET信號被拉低時,ARM處理器放棄正在執(zhí)行的指令,等到nRESET信號再次變高時,處理器執(zhí)行一下操作:強制M[4:0]變?yōu)閎10011,系統(tǒng)進(jìn)入管理模式;將CPSR中的標(biāo)志位I和F置位,IRQ與FIQ中斷被禁止;將CPSR中的標(biāo)志位T清零,處理器處于ARM狀態(tài);強制PC從地址0x00開始對下一條指令進(jìn)行取指;返回到ARM狀態(tài)并恢復(fù)執(zhí)行。2.8ARM體系的異常復(fù)位異常當(dāng)nRES2.8ARM體系的異常中斷請求異常

只有當(dāng)CPSR中相應(yīng)的中斷屏蔽位被清除時,才可能發(fā)生IRQ異常,中斷請求(IRQ)異常由一個nIRQ輸入端的低電平所產(chǎn)生的正常中斷。注:中斷異常產(chǎn)生時,中斷異常模式下的R14保存的是PC的值。取指譯碼執(zhí)行取指譯碼執(zhí)行取指譯碼執(zhí)行周期4周期5周期1周期2周期3PC-8指令1指令2指令3PC-4PC中斷發(fā)生周期指令1的執(zhí)行不會中斷;異常程序結(jié)束時返回到指令2;進(jìn)入中斷服務(wù)程序時,指令3地址被保存在R14中。2.8ARM體系的異常中斷請求異常只有當(dāng)C

程序運行在用戶模式下,當(dāng)一個IRQ異常中斷發(fā)生時,內(nèi)核切換到“中斷模式”,并自動的做如下處理:2.8ARM體系的異常進(jìn)入IRQ異常模式R0~R12R13_usrR14_usrR15CPSR-R13_irqR14_irqSPSR_irqUSR模式IRQ模式2I=1,T=0,mod=irq3異常向量地址0x00184ISR代碼將寄存器壓棧51

將異常處理程序的返回地址保存到異常模式下的R14(R14_irq)中。1

用戶模式的CPSR被保存到新的IRQ中斷異常模式SPSR_irq中。2

修改CPSR,禁止新的IRQ中斷產(chǎn)生,進(jìn)入ARM狀態(tài),設(shè)置為IRQ模式。3

設(shè)置IRQ模式下的PC為IRQ異常處理程序的中斷入口向量地址0x00000018。4

將IRQ中斷異常模式的棧頂指針保存到R13_irq中,之后軟件處理程序調(diào)用中斷服務(wù)程序為中斷源服務(wù)。5程序運行在用戶模式下,當(dāng)一個IRQ異常中斷發(fā)生

從R13_irq中獲取IRQ中斷異常模式的棧頂指針。12.8ARM體系的異常退出IRQ異常模式R0~R12R13_usrR14_usrR15CPSR-R13_irqR14_irqSPSR_irqIRQ模式USR模式恢復(fù)CPSR2R14減4后為返回地址3ISR代碼將寄存器出棧1

將SPSR_irq中的內(nèi)容復(fù)制到CPSR。2

由于流水線的特性,將R14_irq指向的地址減去一個偏移量后存入R15(PC),實現(xiàn)指令為:SUBSPC,R14_irq,#4

3

中斷服務(wù)程序執(zhí)行完畢后,系統(tǒng)將通過以下幾步軟件操作返回用戶模式:從R13_irq中獲取IRQ中斷異常模式的棧頂指針。2.8ARM體系的異??焖僦袛嗾埱螽惓?/p>

快速中斷請求(FIQ)適用于對一個突發(fā)事件的快速響應(yīng),這得益于在ARM狀態(tài)中,快中斷模式有8個專用的寄存器可用來滿足寄存器保護(hù)的需要(這可以加速上下文切換的速度)。不管異常入口是來自ARM狀態(tài)還是Thumb狀態(tài),F(xiàn)IQ處理程序都會通過執(zhí)行下面的指令從中斷返回:SUBSPC,R14_fiq,#4

在一個特權(quán)模式中,可以通過置位CPSR中的F位來禁止FIQ異常。2.8ARM體系的異??焖僦袛嗾埱螽惓?焖傧到y(tǒng)模式FIQ模式程序寄存器組FIQ中斷的例子“?”表示該位無關(guān)SPSR_fiqPCCPSRSPSRMODTFI...NZCVSYS100...????R8~R12R8_fiq~R12_fiqLRLR_sysLR_fiqR0~R7SP_sysSP_fiqThumbThumb指令1指令2指令3BX指令BX指令A(yù)RMARMSYS100.????FIQ011...????BackAddrJumpAddrJump10SYS100...????JumpBackAddr-4Thumb不是一個完整的體系結(jié)構(gòu),不能指望處理器只執(zhí)行Thumb指令而不支持ARM指令集。因此,Thumb指令只需要支持通用功能,必要時可以借助于完善的ARM指令集,比如,所有異常自動進(jìn)入ARM狀態(tài)。

在系統(tǒng)模式下運行用戶程序,當(dāng)前處理器處于Thumb狀態(tài),執(zhí)行Thumb指令代碼,同時處理器還允許IRQ和FIQ中斷。

指令1的在執(zhí)行過程產(chǎn)生了FIQ中斷。

注:完成指令1的執(zhí)行后才響應(yīng)中斷。FIQ中斷相應(yīng)過程中,硬件自動執(zhí)行如下動作:將CPSR寄存器內(nèi)容存入IRQ模式的SPSR寄存器置為F和I(禁止FIQ和IRQ中斷);清零T位(進(jìn)入ARM狀態(tài));設(shè)置MOD位,切換處理器模式至FIQ模式。將下一條的地址存入FIQ模式的LR寄存器,即指令3的地址。將跳轉(zhuǎn)地址存入PC,即FIQ中斷服務(wù)函數(shù)的入口地址,實現(xiàn)跳轉(zhuǎn)。FIQ中斷服務(wù)程序在ARM狀態(tài)下執(zhí)行現(xiàn)場保護(hù)等操作。FIQ中斷服務(wù)程序使用BX指令,將處理器從ARM狀態(tài)切換到Thumb狀態(tài),通過置位CPSR的T位實現(xiàn)。FIQ中斷服務(wù)程序開始執(zhí)行Thumb指令。FIQ中斷服務(wù)程序使用BX指令,將處理器從Thumb狀態(tài)切換到ARM狀態(tài),通過清除CPSR的T位實現(xiàn)。FIQ中斷服務(wù)程序在ARM狀態(tài)下執(zhí)行恢復(fù)中斷現(xiàn)場等操作。FIQ中斷異常處理結(jié)束后,異常處理程序完成以下動作:將SPSR寄存器的值復(fù)制回CPSR寄存器;將LR寄存的值減去一個常量(FIQ異常為4)后復(fù)制到PC寄存器,跳轉(zhuǎn)到被中斷的用戶程序(指令2的地址)。系統(tǒng)模式FIQ模式程寄FIQ中斷的例子“?”表示該位無關(guān)SP2.8ARM體系的異常未定義的指令異常

未定義指令異常是內(nèi)部異常中斷,當(dāng)ARM處理器遇到一條自己和系統(tǒng)內(nèi)部任何協(xié)處理器都無法執(zhí)行的指令時,就會發(fā)生未定義指令異常,從而進(jìn)入中斷處理程序,同時軟件可使用這一機制通過仿真未定義的協(xié)處理器指令來擴展ARM指令集。在仿真失敗的指令后,捕獲處理器執(zhí)行下面的指令:MOVSPC,R14_und2.8ARM體系的異常未定義的指令異常未2.8ARM體系的異常中止異常

中止表示當(dāng)前對存儲器的訪問不能被完成,這是由外部ABORT輸入信號引起的異常中斷。中止類型有2種類型:預(yù)取指中止:由程序存儲器引起的中止異常;數(shù)據(jù)中止:由數(shù)據(jù)存儲器引起的中止異常。2.8ARM體系的異常中止異常中止表示當(dāng)2.8ARM體系的異常預(yù)取指中止

當(dāng)發(fā)生預(yù)取指中止時,ARM內(nèi)核將預(yù)取的指令標(biāo)記為無效,但在指令到達(dá)流水線的執(zhí)行階段時才進(jìn)入異常。如果指令在流水線中因為發(fā)生分支而沒有被執(zhí)行,中止將不會發(fā)生。在處理中止的原因之后,不管處于哪種處理器操作狀態(tài),處理程序都會執(zhí)行下面的指令恢復(fù)PC和CPSR并重試被中止的指令:

SUBSPC,R14_abt,#42.8ARM體系的異常預(yù)取指中止當(dāng)發(fā)生預(yù)2.8ARM體系的異常數(shù)據(jù)中止

當(dāng)發(fā)生數(shù)據(jù)中止異常時,異常會在“導(dǎo)致異常的指令”執(zhí)行后的下一條指令發(fā)生。在這種情況下,理想的狀況是進(jìn)入數(shù)據(jù)中止異常的ISR,然后在內(nèi)存中挑選出問題,再重新執(zhí)行導(dǎo)致異常的指令。在修復(fù)產(chǎn)生中止的原因后,不管處于哪種處理器操作狀態(tài),處理程序都必須執(zhí)行下面的返回指令:

SUBSPC,R14_abt,#82.8ARM體系的異常數(shù)據(jù)中止當(dāng)發(fā)生數(shù)據(jù)中止2.8ARM體系的異常軟件中斷異常

軟件中斷異常(SWI)用于進(jìn)入管理模式,通常用于請求一個特定的管理函數(shù)。SWI處理程序通過執(zhí)行下面的指令返回:MOVSPC,R14_svc

這個動作恢復(fù)了PC和CPSR并返回到SWI之后的指令。SWI處理程序讀取操作碼以提取SWI函數(shù)編號。2.8ARM體系的異常軟件中斷異常軟件中斷2.8ARM體系的異常中斷延遲

中斷延遲即從外部中斷請求信號發(fā)出到執(zhí)行對應(yīng)的中斷服務(wù)程序ISR的第1條指令所需要的時間。通過軟件程序設(shè)計來縮短中斷延遲的方法有:中斷優(yōu)先級和中斷嵌套。2.8ARM體系的異常中斷延遲中斷延遲即2.9ARM體系的存儲系統(tǒng)簡介ARM處理器采用馮·諾依曼(VonNeumann)結(jié)構(gòu),指令、數(shù)據(jù)和I/O統(tǒng)一編址(即存在同一個空間)。只有裝載、保存和交換指令可訪問存儲器中的數(shù)據(jù)。ARM芯片一般在處理器核和外部存儲器之間有一個存儲器管理部件將局部總線的信號和時序轉(zhuǎn)換為現(xiàn)實的外部總線信號和時序。ARM9處理器核存儲器存儲器管理器ARM7的規(guī)范定義了局部總線的信號和時序。各芯片生產(chǎn)廠商制定了自己的外部總線的信號和時序。2.9ARM體系的存儲系統(tǒng)簡介ARM處理器2.9ARM體系的存儲系統(tǒng)地址空間ARM結(jié)構(gòu)使用單個平面的232個8位字節(jié)地址空間。地址空間可以看作是包含230個32位字,或231個16位半字。如果地址向上或向下溢出地址空間,通常會發(fā)生翻轉(zhuǎn)。注意:如果在取指操作時地址發(fā)生溢出,只要沒有執(zhí)行預(yù)取的無效指令,就不會導(dǎo)致異常。2.9ARM體系的存儲系統(tǒng)地址空間ARM2.9ARM體系的存儲系統(tǒng)存儲器格式地址空間的規(guī)則要求字地址A:位于地址A的字包含的字節(jié)位于地址A,A+1,A+2和A+3;位于地址A的半字包含的字節(jié)位于地址A和A+1;位于地址A+2的半字包含的字節(jié)位于地址A+2和A+3;位于地址A的字包含的半字位于地址A和A+2;

……字節(jié)字節(jié)字節(jié)字節(jié)……A+3A+2A+1A存儲器半字半字字2.9ARM體系的存儲系統(tǒng)存儲器格式地址空間的規(guī)則要求字2.9ARM體系的存儲系統(tǒng)存儲器格式存儲器系統(tǒng)有兩種映射機制:小端存儲器系統(tǒng):在小端格式中,數(shù)據(jù)的高字節(jié)存放在高地址中。大端存儲器系統(tǒng):在大端格式中,數(shù)據(jù)的高字節(jié)存放在低地址中?!瑼+3A+2A+1A存儲器

小端存儲模式下,0x12345678在A地址開始的一個字空間的存儲;

1

大端存儲模式下,0x12345678在A地址開始的一個字空間的存儲;

20x120x340x560x78…………A+3A+2A+1A存儲器0x780x560x340x122.9ARM體系的存儲系統(tǒng)存儲器格式存儲器系統(tǒng)有兩種映射2.9ARM體系的存儲系統(tǒng)非對齊的存儲器訪問ARM結(jié)構(gòu)通常希望所有的存儲器訪問都合理的對齊,具體來說就是字訪問的地址通常是字對齊的,而半字訪問使用的地址是半字對齊的。不按這種方式對齊的存儲器訪問稱為非對齊的存儲器訪問。將一個非字(半字)對齊的地址寫入ARM(Thumb)狀態(tài)的R15寄存器,將引起非對齊的指令取指。在一個非字(半字)對齊的地址讀寫一個字(半字),將引起非對齊的數(shù)據(jù)訪問:2.9ARM體系的存儲系統(tǒng)非對齊的存儲器訪問本資料來源本資料來源第2章ARM7/ARM9體系結(jié)構(gòu)主講人:吳貴芳2022/12/9第2章ARM7/ARM9體系結(jié)構(gòu)主講人:吳貴芳1.ARM簡介2.ARM7/9TDMI3.ARM的模塊、內(nèi)核和功能框圖4.ARM處理器狀態(tài)5.ARM處理器模式主要內(nèi)容6.ARM內(nèi)部寄存器7.當(dāng)前程序狀態(tài)寄存器8.ARM體系的異常、中斷及其向量表9.ARM體系的存儲系統(tǒng)1.ARM簡介主要內(nèi)容6.ARM內(nèi)部寄存器2.1ARM簡介ARM公司簡介ARM是AdvancedRISCMachines的縮寫,它是一家微處理器行業(yè)的知名企業(yè),該企業(yè)設(shè)計了大量高性能、廉價、耗能低的RISC(精簡指令集)處理器。公司的特點是只設(shè)計芯片,而不生產(chǎn)。它將技術(shù)授權(quán)給世界上許多著名的半導(dǎo)體、軟件和OEM廠商,并提供服務(wù)。2.1ARM簡介ARM公司簡介ARM是A2.1ARM簡介ARM公司簡介將技術(shù)授權(quán)給其它芯片廠商形成各具特色的ARM芯片...2.1ARM簡介ARM公司簡介將技術(shù)授權(quán)給其它芯片廠商形2.1ARM簡介RISC結(jié)構(gòu)特性RISC是精簡指令集計算機的縮寫,其目標(biāo)是設(shè)計出在高時鐘頻率下單周期執(zhí)行,簡單而有效的指令集。ARM內(nèi)核采用RISC體系結(jié)構(gòu),因此具有RISC的結(jié)構(gòu)特點:具有大量的通用存儲器;獨特的裝載/保存(load-store)結(jié)構(gòu);簡單的尋址模式;統(tǒng)一和固定長度的指令格式。2.1ARM簡介RISC結(jié)構(gòu)特性RISC2.1ARM簡介

為了使ARM能夠更好地滿足嵌入式應(yīng)用的需要,ARM體系結(jié)構(gòu)還有以下特點:每條數(shù)據(jù)處理指令可同時包含算術(shù)邏輯單元(ALU)的運算和移位處理,實現(xiàn)ALU和移位器的最大利用;使用地址自增和自減的尋址方式優(yōu)化程序循環(huán);裝載/保存指令對數(shù)據(jù)的批量傳輸,實現(xiàn)最大數(shù)據(jù)吞吐量;大多數(shù)指令的條件執(zhí)行,實現(xiàn)最快速的代碼執(zhí)行。ARM體系結(jié)構(gòu)2.1ARM簡介為了使ARM能夠更好地滿2.1ARM簡介常用ARM處理器系列ARM公司開發(fā)了很多系列的ARM處理器核,目前最新的系列是Cortex,而ARM6核以及更早的系列已經(jīng)很罕見了。當(dāng)前應(yīng)用比較多的ARM處理器核系列有:ARM7ARM9ARM10EXscaleARM11CortexARM9E2.1ARM簡介常用ARM處理器系列AR版本ARM處理器系列特點ARMv1ARM1該版體系結(jié)構(gòu)只在原型機ARM1出現(xiàn)過,沒有用于商業(yè)產(chǎn)品?;拘阅埽?基本的數(shù)據(jù)處理指令(無乘法)?26位尋址ARMv2ARM2和ARM3該版體系結(jié)構(gòu)對ARMv1版進(jìn)行了擴展,版本ARMv2a是v2版的變種,ARM3芯片采用了ARMv2a。ARMv2版增加了以下功能:?32位乘法和乘加指令?支持32位協(xié)處理器操作指令?快速中斷模式ARM體系結(jié)構(gòu)版本及特點版本ARM處理器系列特點ARMv1ARM1該版體系結(jié)構(gòu)只在原ARMv3ARMv3MARM6、ARM7DI、ARM7MARMv3版體系結(jié)構(gòu)對ARM體系結(jié)構(gòu)作了較大的改動:?尋址空間增至32位(4GB)?獨立的當(dāng)前程序狀態(tài)寄存器CPSR和程序狀態(tài)保存寄存器SPSR,保存程序異常中斷時的程序狀態(tài),以便于對異常的處?增加了異常中斷(Abort)和未定義兩種處理器模式?增加了MMU支持?ARMv3M增加了有符號和無符號長乘法指令A(yù)RMv4ARMv4TStrongARM、ARM9TDMI、ARM9TARMv4版體系結(jié)構(gòu)是目前應(yīng)用最廣的ARM體系結(jié)構(gòu),在v3版上作了進(jìn)一步擴充,指令集中增加了以下功能:?增加了系統(tǒng)模式?增加了16位Thumb指令集?完善了軟件中斷SWI指令的功能?不再支持26位尋址模式ARMv3ARM6、ARM7DI、ARMv3版體系結(jié)構(gòu)對ARARMv5TEARMv5TEJARM9E、ARM10E、Xscale、ARM7EJ、ARM926EJARMv5版體系結(jié)構(gòu)在ARMv4版基礎(chǔ)上增加了一些新的指令,包括:?增加ARM與Thumb狀態(tài)之間切換的指令?增強乘法指令和快速乘累加指令?增加了數(shù)字信號處理指令(ARMv5TE版)?增加了Java加速功能(ARMv5TEJ版)ARMv6ARM11ARMv6版體系結(jié)構(gòu)是2001年發(fā)布的,首先在ARM11處理器中使用。此體系結(jié)構(gòu)在ARMv5版基礎(chǔ)上增加了以下功能:?Thumb-2增強代碼密度?SIMD增強媒體和數(shù)字處理功能?TrustZone提供增強的安全性能?IEM提供增強的功耗管理功能ARMv5TEARM9E、ARMv5版體系結(jié)構(gòu)在ARMv4版ARMv7Cortex系列ARMv7版體系結(jié)構(gòu)定義了3種不同的微處理器系列:?A系列為面向應(yīng)用的微處理器核,支持復(fù)雜操作系統(tǒng)和用戶應(yīng)用?R系列為深度嵌入的微處理器核,針對實時系統(tǒng)應(yīng)用?M系列為微控制核,針對成本敏感的嵌入式控制應(yīng)用ARMv7Cortex系列ARMv7版體系結(jié)構(gòu)定義了3種不同內(nèi)核特點M4KTM系列針對多CPU集成的SOC應(yīng)用領(lǐng)域為下一代消費類產(chǎn)品、下一代網(wǎng)絡(luò)和寬帶產(chǎn)品M4KTM系列4KpTM、4KcTM內(nèi)核針對SOC系統(tǒng)優(yōu)化,其內(nèi)存、指令緩存和數(shù)據(jù)緩存都可以根據(jù)具體應(yīng)用調(diào)整大小M4KTM系列4KEpTM、4KEmTM和4KEcTM內(nèi)核與4KTM系列類似,但能提供更高性能,在同樣時鐘頻率下指令執(zhí)行周期更短4KSTM系列4KScTM和4KSdTM內(nèi)核針對數(shù)據(jù)通信的應(yīng)用。其特點是采用了SmartMIPSTM結(jié)構(gòu),擁有反黑客的特性,可以讓數(shù)據(jù)加密更加快速,在網(wǎng)絡(luò)處理、智能卡、機頂盒等方面有廣泛應(yīng)用MIPS32位處理器內(nèi)核系列和特點內(nèi)核特點M4KTM系列針對多CPU集成的SOC應(yīng)用領(lǐng)域為下一ProSeriesTM系列M4KProTM、4KEProTM、4KEmProTM、4KEcProms和4KSdProTM內(nèi)核該系列內(nèi)核允許SOC的設(shè)計者創(chuàng)造自己的CorExtendTM擴展指令集。這樣可以根據(jù)具體應(yīng)用設(shè)計出性能更好,效率更高的產(chǎn)品24KTM系列針對圖形、JAVA應(yīng)用,包含了最快的浮點乘法器,也支持CorExtendTM擴展指令集,是數(shù)字電視、機頂盒和DVD等多媒體應(yīng)用的理想選擇ProSeriesTM系列M4KProTM、4KEPr2.1ARM簡介ARMCortex系列簡介

基于ARMv7版本的ARMCortex系列產(chǎn)品由A、R、M三個系列組成,具體分類延續(xù)了一直以來ARM面向具體應(yīng)用設(shè)計CPU的思路。ARMCortexA應(yīng)用處理器(ApplicationProcessor

)系列R實時控制處理(RealTimeControl)系列M微控制器(MicroController)系列2.1ARM簡介ARMCortex系列簡介2.1ARM簡介CortexTM-M3處理器簡介

該處理器是首款基于ARMv7-M架構(gòu)的處理器,采用

溫馨提示

  • 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

提交評論