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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

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

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

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

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

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

ARM7系列廣泛應用于多媒體和嵌入式設備,包括Internet設備、網絡和調制解調器設備,以及移動電話、PDA等無線設備。2.1ARM簡介ARM7系列簡介該系列包2.1ARM簡介

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

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

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

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

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

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

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

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

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

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

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

在Thumb狀態(tài)下,流水線上各指令的地址為:PCPC-4PC-8PCPC-2PC-42.2ARM9TDMI三級流水線ARM處2.2ARM9TDMI三級流水線結構的指令執(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進入三級流水線的取指階段。1

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

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

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

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

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

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

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

使用BX指令將ARM內核的操作狀態(tài)在ARM狀態(tài)和Thumb狀態(tài)之間進行切換。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)跳轉地址標號執(zhí)行完BX指令,處理器切換到Thumb狀態(tài),開始執(zhí)行Thumb指令程序代碼指令集關系

從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體系結構支持7種處理器模式,分別為:用戶模式、快中斷模式、中斷模式、管理模式、中止模式、未定義模式和系統(tǒng)模式。這樣的好處是可以更好的支持操作系統(tǒng)并提高工作效率。ARM9TDMI完全支持這七種模式。2.5ARM處理器模式簡介ARM體系結構

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

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

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

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

在ARM處理器內部共有37個用戶可訪問的寄存器,分別為31個通用32位寄存器和6個狀態(tài)寄存器。ARM處理器共有7種不同的處理器模式,每種模式都有一組相應的寄存器組,最多可以18個活動的寄存器。2.6ARM內部寄存器簡介在ARM處理器內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為未分組的通用寄存器,它們在任何處理器模式都對應于相同的32位物理寄存器。第一類分組的通用寄存器寄存器R8~R12有兩個分組的物理寄存器。一個用于除FIQ模式之外的所有寄存器模式,另一個用于FIQ模式。在發(fā)生FIQ中斷后,處理器不必為保護寄存器而浪費時間,從而加速了FIQ的處理速度。第二類分組的通用寄存器寄存器R13、R14分別有6個分組的物理寄存器。1個用于用戶和系統(tǒng)模式,其余5個分別用于5種異常模式。寄存器R13通常作為堆棧指針(SP),用于保存待使用的寄存器的內容。寄存器R14稱為鏈接寄存器(LR),在結構上有兩個特殊功能:當使用BL指令調用子程序時,返回地址將自動存入R14中;當發(fā)生異常時,將R14對應的異常模式版本設置為異常返回地址(有些異常有一個小的固定偏移量)。程序計數(shù)器寄存器R15稱為程序計數(shù)器(PC),它指向正在“取指”的指令。狀態(tài)寄存器寄存器CPSR為當前程序狀態(tài)寄存器,在異常模式中,另外一個寄存器“程序狀態(tài)保存寄存器(SPSR)”可以被訪問。每種異常都有自己的SPSR,在進入異常時它保存CPSR的當前值,異常退出時可通過它恢復CPSR。未分組的通用寄存器寄存器寄存器在匯各模式下實際訪問的寄存器用2.6ARM內部寄存器在Thumb狀態(tài)各模式下實際訪問的寄存器Thumb狀態(tài)寄存器集是ARM狀態(tài)集的子集,程序員可以直接訪問的寄存器為:8個通用寄存器R0~R7;程序計數(shù)器(PC);堆棧指針(SP);鏈接寄存器(LR);當前程序狀態(tài)寄存器(CPSR)。2.6ARM內部寄存器在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為通用寄存器,對于任何處理器模式,它們中的每一個都對應于相同的32為物理寄存器。堆棧指針SP對應ARM狀態(tài)的寄存器R13。每個異常模式都有其自身的SP分組版本,SP通常指向各異常模式所專用的堆棧。注意:在發(fā)生異常時,處理器自動進入ARM狀態(tài)。鏈接寄存器LR對應ARM狀態(tài)寄存器R14。注意:在發(fā)生異常時,處理器自動進入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ù)據的快速暫存。ARM狀態(tài)Thumb寄存器在ARM狀態(tài)寄存器上的映射R0R1ARMThumbARMResetBXBXARM中斷服務程序正常程序事件ARMARMISR1ISR2ISRn…狀態(tài)切換過程異常發(fā)生進入退出

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

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

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

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

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

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

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

警告:絕對不要強制改變CPSR寄存器中的控制位T。如果這樣做,處理器將進入一個無法預測的狀態(tài)。2.7當前程序狀態(tài)寄存器控制位1、中斷禁止控制位I和F;2、處理器狀態(tài)位T;3、處理器模式位M0~M4。當控制位I置位時,IRQ中斷被禁止;當控制位F置位時,F(xiàn)IQ中斷被禁止。當控制位T置位時,處理器正在Thumb狀態(tài)下運行;當控制位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]中,處理器將進入一個無法恢復的模式。警告:絕對不要強制改變CPSR寄存器中的控制位2.7當前程序狀態(tài)寄存器保留位CPSR中的保留位被保留將來使用。當改變CPSR標志和控制位時,請確認沒有改變這些保留位。另外,請確保您的程序不依賴于包含特定值的保留位,因為將來的處理器可能會將這些位設置為1或者0。2.7當前程序狀態(tài)寄存器保留位CPSR中的2.8ARM體系的異常異常簡介

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

下表所示為異常返回地址值以及退出異常處理程序所推薦使用的指令。異常或入口返回指令返回地址SWIMOVSPC,R14_svcR14未定義的指令MOVSPC,R14_undR14預取中止SUBSPC,R14_abt,#4R14-4快速中斷SUBSPC,R14_fiq,#4R14-4中斷SUBSPC,R14_irq,#4R14-4數(shù)據中止SUBSPC,R14_abt,#8R14-8復位無-

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

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

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

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

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

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

程序運行在用戶模式下,當一個IRQ異常中斷發(fā)生時,內核切換到“中斷模式”,并自動的做如下處理:2.8ARM體系的異常進入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中斷產生,進入ARM狀態(tài),設置為IRQ模式。3

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

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

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

將SPSR_irq中的內容復制到CPSR。2

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

3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

中斷延遲即從外部中斷請求信號發(fā)出到執(zhí)行對應的中斷服務程序ISR的第1條指令所需要的時間。通過軟件程序設計來縮短中斷延遲的方法有:中斷優(yōu)先級和中斷嵌套。2.8ARM體系的異常中斷延遲中斷延遲即2.9ARM體系的存儲系統(tǒng)簡介ARM處理器采用馮·諾依曼(VonNeumann)結構,指令、數(shù)據和I/O統(tǒng)一編址(即存在同一個空間)。只有裝載、保存和交換指令可訪問存儲器中的數(shù)據。ARM芯片一般在處理器核和外部存儲器之間有一個存儲器管理部件將局部總線的信號和時序轉換為現(xiàn)實的外部總線信號和時序。ARM9處理器核存儲器存儲器管理器ARM7的規(guī)范定義了局部總線的信號和時序。各芯片生產廠商制定了自己的外部總線的信號和時序。2.9ARM體系的存儲系統(tǒng)簡介ARM處理器2.9ARM體系的存儲系統(tǒng)地址空間ARM結構使用單個平面的232個8位字節(jié)地址空間。地址空間可以看作是包含230個32位字,或231個16位半字。如果地址向上或向下溢出地址空間,通常會發(fā)生翻轉。注意:如果在取指操作時地址發(fā)生溢出,只要沒有執(zhí)行預取的無效指令,就不會導致異常。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ù)據的高字節(jié)存放在高地址中。大端存儲器系統(tǒng):在大端格式中,數(shù)據的高字節(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結構通常希望所有的存儲器訪問都合理的對齊,具體來說就是字訪問的地址通常是字對齊的,而半字訪問使用的地址是半字對齊的。不按這種方式對齊的存儲器訪問稱為非對齊的存儲器訪問。將一個非字(半字)對齊的地址寫入ARM(Thumb)狀態(tài)的R15寄存器,將引起非對齊的指令取指。在一個非字(半字)對齊的地址讀寫一個字(半字),將引起非對齊的數(shù)據訪問:2.9ARM體系的存儲系統(tǒng)非對齊的存儲器訪問本資料來源本資料來源第2章ARM7/ARM9體系結構主講人:吳貴芳2022/12/9第2章ARM7/ARM9體系結構主講人:吳貴芳1.ARM簡介2.ARM7/9TDMI3.ARM的模塊、內核和功能框圖4.ARM處理器狀態(tài)5.ARM處理器模式主要內容6.ARM內部寄存器7.當前程序狀態(tài)寄存器8.ARM體系的異常、中斷及其向量表9.ARM體系的存儲系統(tǒng)1.ARM簡介主要內容6.ARM內部寄存器2.1ARM簡介ARM公司簡介ARM是AdvancedRISCMachines的縮寫,它是一家微處理器行業(yè)的知名企業(yè),該企業(yè)設計了大量高性能、廉價、耗能低的RISC(精簡指令集)處理器。公司的特點是只設計芯片,而不生產。它將技術授權給世界上許多著名的半導體、軟件和OEM廠商,并提供服務。2.1ARM簡介ARM公司簡介ARM是A2.1ARM簡介ARM公司簡介將技術授權給其它芯片廠商形成各具特色的ARM芯片...2.1ARM簡介ARM公司簡介將技術授權給其它芯片廠商形2.1ARM簡介RISC結構特性RISC是精簡指令集計算機的縮寫,其目標是設計出在高時鐘頻率下單周期執(zhí)行,簡單而有效的指令集。ARM內核采用RISC體系結構,因此具有RISC的結構特點:具有大量的通用存儲器;獨特的裝載/保存(load-store)結構;簡單的尋址模式;統(tǒng)一和固定長度的指令格式。2.1ARM簡介RISC結構特性RISC2.1ARM簡介

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

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

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

該處理器是首款基于ARMv7-M架構的處理器,采用

溫馨提示

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

評論

0/150

提交評論