第二章ARM9體系結構_第1頁
第二章ARM9體系結構_第2頁
第二章ARM9體系結構_第3頁
第二章ARM9體系結構_第4頁
第二章ARM9體系結構_第5頁
已閱讀5頁,還剩99頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

.,第2章ARM9體系結構,.,第2章ARM9體系結構,2.1ARM處理器簡介2.2ARM9體系結構2.3ARM存儲結構2.4ARM處理器的工作狀態(tài)和模式2.5ARM9寄存器2.6ARM9異常2.7ARM系統(tǒng)調(diào)試接口,.,2.1ARM處理器簡介,2.1.1ARM公司簡介2.1.2ARM體系結構特點2.1.3ARM指令系統(tǒng)版本2.1.4ARM體系結構演變2.1.5ARM微處理器簡介,.,2.1.1ARM公司簡介,ARM是AdvanceRISCMachine的縮寫,既可以認為是一個公司的名字,也可以認為是對一類微處理器的通稱,還可以認為是一種技術的名字。ARM公司于1990年11月在英國劍橋成立,前身為Acorn計算機公司。ARM公司是全球領先的16/32位嵌入式RISC微處理器解決方案供應商。,.,2.1.1ARM公司簡介,ARM公司是知識產(chǎn)權IP(IntellectualProperty)公司,本身不生產(chǎn)芯片,只轉(zhuǎn)讓設計許可,由合作伙伴公司來生產(chǎn)各具特色的芯片。目前,全世界有幾十家著名的半導體公司都使用ARM公司的授權,其中包括Intel、IBM、MOTOROLA、SONY、NEC、LG、ATMEL等,從而保證了大量的開發(fā)工具和豐富的第三方資源,它們共同保證了基于ARM處理器核的設計可以很快投入市場。ARM公司已成為移動通信、手持設備、多媒體數(shù)字消費嵌入式解決方案的RISC標準。,.,2.1.2ARM體系結構的特點,總體思想:在不犧牲性能的同時,盡量簡化處理器。同時從體系結構的層面上靈活支持處理器擴展。這種簡化和開放的思路使得ARM處理器采用了很簡單的結構來實現(xiàn)。ARM處理器是最先進的:目前,ARM32位體系結構被公認為業(yè)界領先的32位嵌入式RISC微處理器核,所有ARM處理器都共享這一體系結構。,.,嵌入式微處理器體系結構,馮諾依曼體系結構和哈佛體系機構馮諾依曼體系結構,也稱為普林斯頓結構,是一種將程序指令存儲器和數(shù)據(jù)存儲器合并在一起的存儲器結構。例如Intel的80 x86系列CPU、ARM早期系列微處理器及MIPS系列微處理器哈佛體系結構是將程序指令存儲器和數(shù)據(jù)存儲器分開的存儲器結構。例如摩爾羅拉公司的MC68系列、ATMEL公司的AVR系列及ARM9以上系列復雜指令集計算機CISC(ComplexInstructionSetComputer)和精簡指令集計算機RISC(ReducedInstructionSetComputer),.,2.1.2ARM體系結構的特點,RISC型處理器結構ARM采用RISC結構,在簡化處理器結構,減少復雜功能指令的同時,提高了處理器的速度。減少指令執(zhí)行時間:考慮到處理器與存儲器打交道的指令執(zhí)行時間遠遠大于在寄存器內(nèi)操作的指令執(zhí)行時間,RISC型處理器采用了Load/Store(加載/存儲)結構,即只有Load/Store指令可與存儲器打交道,其余指令都不允許進行存儲器操作。提高存取速度:為了進一步提高指令和數(shù)據(jù)的存取速度,RISC型處理器增加了指令高速緩沖I-Cache和數(shù)據(jù)高速緩沖D-Cache及多處理器結構,使指令的操作盡可能在寄存器之間進行。,.,2.1.2ARM體系結構的特點,.,2.1.2ARM體系結構的特點,多種處理器模式ARM體系結構定義了7種處理器模式:用戶、快中斷、中斷、管理、終止、未定義和系統(tǒng)模式,大大提高了ARM處理器的效率。兩種處理器工作狀態(tài)ARM狀態(tài)(32位指令)和Thumb狀態(tài)(16位指令)。雖然ARM處理器本身是32位設計,但考慮到RISC型處理器的指令功能相對較弱,新型的ARM體系結構中定義了16位的Thumb指令集。,.,2.1.2ARM體系結構的特點,嵌入式在線仿真調(diào)試ARM體系結構的處理器芯片都嵌入了在線仿真ICE-RT邏輯,便于通過JTAG來仿真調(diào)試,省去了價格昂貴的在線仿真器。靈活方便的協(xié)處理器接口ARM體系結構具有協(xié)處理器接口,允許接16個協(xié)處理器。既可以使基本的ARM處理器內(nèi)核盡可能小,方便地擴充ARM指令集,也可以通過未定義指令來支持協(xié)處理器的軟件仿真。低電壓功耗的設計考慮到ARM處理器主要用于手持式嵌入式系統(tǒng)中,在設計中就十分注意功耗的設計。,.,2.1.3ARM指令系統(tǒng)版本,ARM公司從最初的開發(fā)到現(xiàn)在,ARM指令集結構有了巨大的改進,并在不斷完善和發(fā)展。為了清楚地表達每個ARM內(nèi)核所使用的指令集,ARM公司定義了一系列的指令集體系結構版本,以vx表示某種版本。,.,2.1.4ARM體系結構的演變,Thumb指令集(T變種)長乘指令(M變種)支持片上調(diào)試(D變種)在線觀察(I變種)增強型DSP指令(E變種)Java加速器Jazelle(J變種)ARM媒體功能擴展(SIMD變種)ARM可綜合版本“-S”,.,2.1.5ARM系列處理器簡介,ARM有以下系列處理器:ARM7系列ARM9系列ARM9E系列ARM10系列ARM11系列SecurCore系列Inter的StrongARM和Xscale系列其中,ARM7、ARM9、ARM9E、ARM10和ARM11為5個通用處理器系列,每一個系列提供一套相對獨特的性能來滿足不同應用領域的需求。SecurCore系列專門為安全要求較高的應用而設計。,.,2.1.5ARM系列處理器簡介,ARM7系列ARM7采用馮諾依曼(Von-Neumann)結構,數(shù)據(jù)存儲器和程序存儲器使用同一存儲空間,用相同的指令訪問。此結構也被大多數(shù)計算機所采用。ARM7為三級流水線結構(取指,譯碼,執(zhí)行),平均功耗為0.6mW/MHz,時鐘速度為66MHz,每條指令平均執(zhí)行1.9個時鐘周期。ARM7系列微處理器包括如下幾種類型的核:ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ。ARM7TMDI是目前使用最廣泛的32位嵌入式RISC處理器,屬低端ARM處理器核。,.,2.1.5ARM系列處理器簡介,ARM9系列ARM7采用的Neumann結構,取指令和取操作數(shù)都是通過一條總線分時進行,這樣,在高速運算時,不但不能同時取指令和取操作數(shù),而且還會造成傳輸通道上的瓶頸現(xiàn)象。ARM9采用哈佛(Harvard)結構,程序存儲器與數(shù)據(jù)存儲器分開,提供了較大的存儲器帶寬。同時,大多數(shù)DSP都采用此結構。,.,2.1.5ARM系列處理器簡介,ARM9E系列ARM9E系列微處理器包括如下4種類型的核:ARM926EJ-S、ARM946E-S和ARM966E-S,ARM968E-S。見表2-3。ARM9E系列是一種包含有微控制器、DSP、Java功能的綜合處理器,并且具有嵌入式在線觀察功能(EmbededICE-RT邏輯),更好地適應了實時系統(tǒng)開發(fā)的需要。,.,2.1.5ARM系列處理器簡介,ARM10系列ARM10系列微處理器包括:ARM1020E和ARM1022E等型號,見表2-4。ARM10系列采用了新的體系結構,其核心為使用了向量浮點單元,有強大的浮點運算能力,并且增加了Cache容量和總線寬度,并且具有低功耗的特點。ARM10系列微處理器主要應用于下一代無線設備、視頻消費品等。,.,2.1.5ARM系列處理器簡介,ARMStrong/Xscale系列StrongARM是采用ARM體系結構高度集成的32位RISC微處理器。它融合了Intel公司的設計技術,以及ARM體系結構的電源效率,其體系結構在軟件上兼容ARMv4,同時又具有Intel技術優(yōu)點。StrongARM是Intrl公司為手持消費類電子和移動計算與通信設備生產(chǎn)的嵌入式處理器。采用StrongARM架構的處理器有:SA-1、SA-110、SA-1100、SA1110和IXP1200。,.,2.1.5ARM系列處理器簡介,Xscale是基于ARMv5體系結構的解決方案,是一款性能全、性價比高、功耗低的處理器,支持16位的Thumb和DSP指令集,主要應用于數(shù)字移動電話、個人數(shù)字助理和網(wǎng)絡產(chǎn)品等。Xscale架構的處理器有:PXA250、PXA255和PXA270等。,.,ARM系列產(chǎn)品命名規(guī)則,.,2.2ARM9體系結構,2.2.1ARM9體系結構2.2.2ARM9流水線結構2.2.3ARM9總線結構,.,2.2.1ARM9體系結構,ARM9內(nèi)核ARM9TDMI、指令接口、數(shù)據(jù)接口、JTAG接口、跟蹤接口等5部分,.,2.2.1ARM9體系結構,在ARM9中,最常用的是ARM920T內(nèi)核,后頁圖給出了ARM920T結構框圖。ARM920T結構主要部分有:ARM9TDMI內(nèi)核CPU、MMU、Cache、協(xié)處理器接口、運行跟蹤信息接口(ETM)、JTAG調(diào)試接口、總線接口等7部分構成。,.,ARM920T體系結構框圖,.,2.2.2ARM流水線結構,流水線方式:是把一個重復的過程分解為若干個子過程,每個子過程可以與其他子過程同時進行。由于這種工作方式與工廠中的生產(chǎn)流水線十分相似,因此,把它稱為流水線工作方式。處理器按照一系列步驟來執(zhí)行每一條指令。典型的步驟為:1)從存儲器讀取指令(fetch,取指)2)譯碼以鑒別它是哪一類指令(dec,譯碼)3)從寄存器組取得所需的操作數(shù)(reg,取操作數(shù))4)將操作數(shù)組合以得到結果或存儲器地址(exe,執(zhí)行)5)如果需要,則訪問存儲器存取數(shù)據(jù)(mem,存數(shù)據(jù))6)將結果回寫到寄存器組(res,存數(shù)據(jù)),.,2.2.2ARM流水線結構,ARM7的三級流水線取指:從程序存儲器中取指令,放入指令流水線。(占用存儲器訪問操作)譯碼:指令譯碼。(占用譯碼邏輯)執(zhí)行:執(zhí)行指令/讀寫REG。(占用ALU及數(shù)據(jù)路徑),.,2.2.2ARM流水線結構,下圖為3個單周期指令在流水線上的情況。一條指令需要3個時鐘執(zhí)行,但吞吐量是每個周期1條指令。,.,優(yōu)秀的流水線結構,Operation,Cycle,123456,Fetch,Decode,Execute,Fetch,Decode,Execute,Fetch,Decode,Execute,Fetch,Decode,Execute,Fetch,Decode,Execute,Decode,Execute,Fetch,Decode,Fetch,Fetch,.,2.2.2ARM流水線結構,ARM9TDMI的五級流水線,ARM7TDMI與ARM9TDMI流水線比較,.,2.2.2ARM流水線結構(8),ARM7和ARM9流水線比較5級流水線的ARM9內(nèi)核是哈佛架構,擁有獨立的指令和數(shù)據(jù)總線;指令和數(shù)據(jù)的讀取可以在同一周期進行;3級流水的ARM7內(nèi)核是指令和數(shù)據(jù)總線復用的馮.諾依曼架構,指令和數(shù)據(jù)的讀取不能在同一周期進行;5級流水線設計把寄存器讀取、邏輯運算、結果回寫分散在不同的流水當中,每一級流水的操作簡潔,提升了處理器的主頻。,.,2.2.2ARM流水線結構,隨著流水線深度(級數(shù))的增加,每一段的工作量被削減了,這使得處理器可以工作在更高的頻率,同時改進了處理器的性能;負面作用是增加了系統(tǒng)的延時,即內(nèi)核在執(zhí)行一條指令前,需要更多的周期來填充流水線;流水線級數(shù)的增加也意味著在某些段之間會產(chǎn)生數(shù)據(jù)相關。,.,ARM處理器性能比較,.,2.2.3ARM總線結構,ARM微控制器使用的是AMBA總線體系結構AMBA(AdvancedMicrocontrollerBusArchitecture)是ARM公司公布的總線標準,先進的AMBA規(guī)范定義了三種總線:AHB總線(AdvancedHigh-performanceBus):用于連接高性能系統(tǒng)模塊。它支持突發(fā)數(shù)據(jù)傳輸方式及單個數(shù)據(jù)傳輸方式,所有時序參考同一個時鐘沿。ASB總線(AdvancedSystemBus):用于連接高性能系統(tǒng)模塊,它支持突發(fā)數(shù)據(jù)傳輸模式。APB總線(AdvancePeripheralBus):是一個簡單接口支持低性能的外圍接口。,.,2.3ARM存儲結構,2.3.1ARM存儲結構2.3.2ARM存儲器組織2.3.3ARM存儲器層次,.,2.3.1ARM存儲結構,ARM處理器支持以下6種數(shù)據(jù)類型:8位有符號和無符號字節(jié)(Byte)。16位有符號和無符號半字(Halfword)它們必須以兩字節(jié)的邊界對齊(半字對齊)32位有符號和無符號字(Word)它們必須以4字節(jié)的邊界對齊(字對齊),.,2.3.2ARM存儲器組織,ARM存儲器以8位為一個單元存儲數(shù)據(jù)(一個字節(jié)),每個存儲單元分配一個存儲地址。ARM將存儲器看作是從零地址開始的字節(jié)的線性組合。作為32位的微處理器,ARM體系結構所支持的最大尋址空間為4GB(232字節(jié))。,.,2.3.2ARM存儲器組織,從零字節(jié)到三字節(jié)放置第一個存儲的字數(shù)據(jù),從第四個字節(jié)到第七個字節(jié)放置第二個存儲的字數(shù)據(jù),依次排列。32位的字數(shù)據(jù)要使用4個地址單元,16位半字數(shù)據(jù)要使用2個地址單元。這樣,就存在一個所存儲的字或半字數(shù)據(jù)的排列順序問題。ARM體系結構可以用兩種方法存儲字數(shù)據(jù),稱為大端格式和小端格式。,.,2.3.2ARM存儲器組織,大端格式(big-endian):字數(shù)據(jù)的高字節(jié)存儲在低地址中,而字數(shù)據(jù)的低字節(jié)則存放在高地址中。,.,2.3.2ARM存儲器組織,小端格式(low-endian):與大端存儲格式相反。低地址中存放的是字數(shù)據(jù)的低字節(jié),高地址存放的是字數(shù)據(jù)的高字節(jié)。缺省設置為小端格式。,.,2.3.3ARM存儲器層次,微處理器希望存儲器容量大、速度快。但容量大者速度慢;速度快者容量小。解決方法是構建一個由多級存儲器組成的復合存儲器系統(tǒng)。兩級存儲器方案一般包括:一個容量小但速度快的從存儲器一個容量大但速度慢的主存儲器宏觀上看這個存儲器系統(tǒng)像一個即大又快的存儲器。這個容量小但速度快的元件是Cache,它自動地保存處理器經(jīng)常用到的指令和數(shù)據(jù)的拷貝。,.,寄存器組:訪問時間約為幾個ns。片上RAM:片外RAM比速度快、功耗小、容量小。讀寫時間約為幾個ns。片上Cache:832KB,訪問時間約為十幾個ns。主存儲器:一般為幾兆字節(jié)數(shù)GB的動態(tài)存儲器,訪問時間約50ns。,多級存儲器系統(tǒng),.,2.4ARM處理器的工作狀態(tài)和模式,2.4.1ARM處理器的工作狀態(tài)2.4.2ARM處理器的工作模式,.,2.4ARM處理器的工作狀態(tài)和模式,為了能夠體現(xiàn)ARM的特點和性能,ARM處理器有2種工作狀態(tài)和7種工作模式。兩種工作狀態(tài):ARM狀態(tài):處理器執(zhí)行32位的字對齊的ARM指令;Thumb狀態(tài):處理器執(zhí)行16位的半字對齊的Thumb指令。兩種狀態(tài)可以切換。程序執(zhí)行過程中,通過執(zhí)行帶狀態(tài)切換的分支指令BX,隨時在兩種工作狀態(tài)之間進行切換。處理器工作狀態(tài)的轉(zhuǎn)變,并不影響處理器的工作模式和相應寄存器中的內(nèi)容。,.,2.4.1ARM處理器的工作狀態(tài),從ARM狀態(tài)切換到Thumb狀態(tài),有兩種情況處理器從ARM狀態(tài)切換到Thumb狀態(tài)。(1)執(zhí)行指令切換到Thumb狀態(tài):執(zhí)行BX指令(跳轉(zhuǎn)指令),當目標地址為奇數(shù)時,則微處理器從ARM狀態(tài)切換到Thumb狀態(tài)。此為主動切換。(2)中斷返回切換到Thumb狀態(tài):當處理器處于Thumb狀態(tài)時發(fā)生異常(如IRQ、FIQ、Undef等),處理完異常后,在異常處理返回時,自動切換回到Thumb狀態(tài)。此為自動切換。,.,2.4.1ARM處理器的工作狀態(tài),從Thumb狀態(tài)切換到ARM狀態(tài):有兩種情況處理器從Thumb狀態(tài)切換到ARM狀態(tài)。(1)執(zhí)行指令切換到ARM狀態(tài)執(zhí)行BX指令(跳轉(zhuǎn)指令),當目標地址為偶數(shù)時,則微處理器從Thumb狀態(tài)切換到ARM狀態(tài)。(2)中斷處理切換到ARM狀態(tài)當處理器在Thumb狀態(tài)時發(fā)生異常(如IRQ、FIQ、Undef等),則處理器從Thumb狀態(tài)自動切換到ARM狀態(tài)進行異常處理。自動切換。ARM和Thumb之間狀態(tài)的切換不影響處理器的模式或寄存器的內(nèi)容。ARM處理器在開始執(zhí)行代碼時,只能處于ARM狀態(tài),.,狀態(tài)切換的匯編程序?qū)嵗?AREAAddReg,CODE,READONLYENTRYmainADRr0,ThumbProg+1BXr0;切換到Thumb狀態(tài)CODE16ThumbProgMOVr2,#2MOVr3,#3ADDr2,r2,r3ADRr0,ARMProg;切換到ARM狀態(tài)BXr0,CODE32ARMProgMOVr4,#4MOVr5,#5ADDr4,r4,r5stopMOVr0,#0 x18LDRr1,=0 x20026SWI0X123456END,.,2.4.2ARM處理器的工作模式,ARM基于安全保護、中斷響應快捷、易于擴展考慮,設計有多種工作模式。用戶模式(USR):非特權模式,大部分任務執(zhí)行在這種模式。正常程序執(zhí)行的模式快速中斷模式(FIQ):當一個高優(yōu)先級(fast)中斷產(chǎn)生時將會進入這種模式。用于高速數(shù)據(jù)傳輸或通道處理普通中斷模式(IRQ):當一個低優(yōu)先級(normal)中斷產(chǎn)生時將會進入這種模式。用于普通的中斷處理,.,2.4.2ARM處理器的工作模式,管理模式(SVC):當復位或軟中斷指令執(zhí)行時將會進入這種模式。供操作系統(tǒng)使用的一種保護模式中止模式(ABT):當出現(xiàn)存取異常時將會進入這種模式,用于虛擬存儲及存儲保護。未定義模式(UND):當執(zhí)行未定義指令時會進入這種模式,用于軟件仿真硬件協(xié)處理器系統(tǒng)模式(SYS):供需要訪問系統(tǒng)資源的操作系統(tǒng)任務使用,用于特權級的操作系統(tǒng)任務,.,2.4.2ARM處理器的工作模式,7種工作模式總結,.,2.4.2ARM處理器的工作模式,特權模式,除用戶模式外,其它模式均為特權模式。ARM內(nèi)部寄存器和一些片內(nèi)外設在硬件設計上只允許(或者可選為只允許)特權模式下訪問。此外,特權模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。,.,2.4.2ARM處理器的工作模式,用戶和系統(tǒng)模式,這兩種模式都不能由異常進入,而且它們使用完全相同的寄存器組。系統(tǒng)模式是特權模式,不受用戶模式的限制。操作系統(tǒng)在該模式下訪問用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一些特權任務可以使用這個模式訪問一些受控的資源。,.,2.4.2ARM處理器的工作模式,處理器模式的切換方式:軟件控制進行切換(軟中斷、改變模式字)通過外部中斷和異常進行切換處理器啟動時的模式轉(zhuǎn)換圖:,管理模式,多種特權模式,用戶程序的運行模式,復位后的缺省模式,完成各模式的堆棧設置,注意不要進入用戶模式,一般為用戶模式User,.,2.5ARM9寄存器,2.5.1ARM寄存器2.5.2ARM通用寄存器2.5.3ARM狀態(tài)寄存器2.5.4Thumb狀態(tài)下的寄存器組織,.,2.5.1ARM9寄存器,ARM處理器v4及以上版本有37個32位的寄存器,其中31個為通用寄存器;6個為狀態(tài)寄存器。31個通用寄存器R0R15;R13_svc、R14_svc;R13_abt、R14_abt;R13_und、R14_und;R13_irq、R14_irq;R8_fiqR14_fiq6個狀態(tài)寄存器CPSRSPSR_svc、SPSR_abt、SPSR_und、SPSR_irq和SPSR_fiq,ARM狀態(tài)各模式下的寄存器,ARM狀態(tài)各模式下的寄存器,所有的37個寄存器,分成兩大類:31個通用32位寄存器;6個狀態(tài)寄存器。,ARM狀態(tài)各模式下可以訪問的寄存器,一般的通用寄存器,在匯編語言中寄存器R0R13為保存數(shù)據(jù)或地址值的通用寄存器。它們是完全通用的寄存器,不會被體系結構作為特殊用途,并且可用于任何使用通用寄存器的指令。,一般的通用寄存器,其中R0R7為未分組的寄存器,也就是說對于任何處理器模式,這些寄存器都對應于相同的32位物理寄存器。,一般的通用寄存器,寄存器R8R14為分組寄存器。它們所對應的物理寄存器取決于當前的處理器模式,幾乎所有允許使用通用寄存器的指令都允許使用分組寄存器,一般的通用寄存器,寄存器R8R12有兩個分組的物理寄存器。一個用于除FIQ模式之外的所有寄存器模式,另一個用于FIQ模式。這樣在發(fā)生FIQ中斷后,可以加速FIQ的處理速度。,一般的通用寄存器,寄存器R13、R14分別有6個分組的物理寄存器。一個用于用戶和系統(tǒng)模式,其余5個分別用于5種異常模式。,堆棧指針寄存器R13(SP),寄存器R13常作為堆棧指針(SP)。在ARM指令集當中,沒有以特殊方式使用R13的指令或其它功能,只是習慣上都這樣使用。但是在Thumb指令集中存在使用R13的指令。,鏈接寄存器R14(LR),R14為鏈接寄存器(LR),在結構上有兩個特殊功能:在每種模式下,模式自身的R14版本用于保存子程序返回地址;當發(fā)生異常時,將R14對應的異常模式版本設置為異常返回地址(有些異常有一個小的固定偏移量)。,.,2.5.2ARM9通用寄存器,MOVPC,LR,R14(地址A),?,1.程序A執(zhí)行過程中調(diào)用程序B;,操作流程,2.程序跳轉(zhuǎn)至標號Lable,執(zhí)行程序B。同時硬件將“BLLabel”指令的下一條指令所在地址存入R14(LR);,3.程序B執(zhí)行最后,將R14寄存器的內(nèi)容放入PC,返回程序A;,R14(LR)寄存器與子程序調(diào)用,程序計數(shù)器R15(PC),寄存器R15為程序計數(shù)器(PC),它指向正在取指的地址??梢哉J為它是一個通用寄存器,但是對于它的使用有許多與指令相關的限制或特殊情況。如果R15使用的方式超出了這些限制,那么結果將是不可預測的。,.,2.5.2ARM的通用寄存器,R15在ARM狀態(tài)下,位1:0為0,位31:2用于保存PC;在Thumb狀態(tài)下,位0為0,位15:1用于保存PC;關于PC的值:由于ARM采用多級流水線技術,所以PC總是指向正在取指的指令,而不是正在執(zhí)行的指令。對于ARM9的五級流水線,在第一級取指令,第三級執(zhí)行指令,因此PC總是指向當前指令(正在執(zhí)行的指令)的下兩條指令的地址,所以PC的值為當前指令的地址值加8個字節(jié)。,.,2.5.3ARM的狀態(tài)寄存器,在ARM微處理器中,有CPSR和SPSR兩種程序狀態(tài)寄存器。CPSR:當前程序狀態(tài)寄存器(CurrentProgramStatusRegister)用來保存當前的程序狀態(tài)。所有處理器模式下都可以訪問當前程序狀態(tài)寄存器CPSR。僅一個CPSR。,.,2.5.3ARM的狀態(tài)寄存器,SPSR_mode-保存程序狀態(tài)寄存器(SavedProgramStatusRegister)SPSR_mode用來進行異常處理,其功能包括:保存ALU中的當前操作信息當異常發(fā)生時,用來保存CPSR的值,從異常返回時,將SPSR_mode復制到CPSR中,恢復CPSR的值??刂圃试S和禁止中斷設置處理器的運行模式,.,2.5.3ARM的狀態(tài)寄存器,條件碼標志位(保存ALU中的當前操作信息)N:正負號/大小標志位(0表示:正數(shù)/大于;1表示:負數(shù)/小于)Z:零標志位(0表示:結果不為零;1表示:結果為零)C:進位/借位/移出位(0表示:未進位/借位/移出0;1表示:進位/未借位/移出1)V:溢出標志位(0表示:結果未溢出;1表示:結果溢出)Q:DSP指令運算溢出標志位(v5及以上版本的E變種),.,2.5.3ARM9的狀態(tài)寄存器,控制位I:IRQ中斷控制位(1:禁止中斷;0:允許中斷)、F:FIQ中斷控制位(1:禁止中斷;0:允許中斷T:處理器運行狀態(tài)標志位(T=1時,程序運行于Thumb狀態(tài);T=0時,程序運行于ARM狀態(tài))M:處理器運行模式控制位(當發(fā)生異常時這些位被改變;如果處理器運行在特權模式,這些位也可以由程序修改),.,2.5.3ARM9的狀態(tài)寄存器,保留位:CPSR中其余位為保留位。當修改CPSR時,保留位不要改變,在程序中也不要使用保留位來存儲數(shù)據(jù)。保留位將用于ARM版本的擴展。,.,2.5.4Thumb狀態(tài)下的寄存器組織,Thumb狀態(tài)下的寄存器集是ARM狀態(tài)下寄存器集的子集。程序員可以直接訪問8個通用的寄存器(R0R7),程序計數(shù)器PC、堆棧指針SP、鏈接寄存器LR和當前狀態(tài)寄存器CPSP。共有27個寄存器:21個通用寄存器和6個狀態(tài)寄存器。,.,2.5.4Thumb狀態(tài)下的寄存器組織,.,2.6ARM異常,2.6.1中斷和異常的概念2.6.2ARM異常中斷響應過程2.6.3ARM異常類型2.6.4ARM中斷向量和中斷優(yōu)先級,.,2.6.1中斷和異常的概念,中斷是一種過程,指CPU正常執(zhí)行的程序被某種臨時發(fā)生的事件所打斷,當前程序暫時停止執(zhí)行,CPU轉(zhuǎn)去處理所發(fā)生的事件,處理完畢再返回繼續(xù)執(zhí)行暫時停止的程序,這一過程稱為中斷。中斷事件:引起CPU產(chǎn)生中斷、并且與CPU當前所執(zhí)行的程序無關的、由外部硬件產(chǎn)生的事件,也叫中斷源。中斷事件也常稱為外中斷。中斷是計算機系統(tǒng)基本的功能。利用中斷,外設可以與CPU并行工作,當外設需要傳輸數(shù)據(jù)或控制時,向CPU發(fā)出中斷請求信號。CPU響應其請求進行處理。因此,使用中斷既可以實現(xiàn)CPU與外設并行工作,又可以實時處理各種緊急事件。,.,2.6.1中斷和異常的概念,異常是指CPU在執(zhí)行指令時出現(xiàn)的錯誤,即不正常的情況。異常是與當前所執(zhí)行的程序有關的。如存取數(shù)據(jù)或指令錯誤、計算結果溢出等。異常的處理:也用中斷的方式進行處理。計算機通常是用中斷來處理外中斷和異常,因此下面將二者均稱為異常。當系統(tǒng)運行時,異??赡軙S時發(fā)生,為保證在ARM處理器發(fā)生異常時不至于處于未知狀態(tài),在應用程序的設計中,首先要進行異常處理,當異常處理完成以后,返回到主程序繼續(xù)執(zhí)行。所有異常都需要處理,盡管有些異常處理程序可能是簡單的死循環(huán)或直接返回。,.,2.6.1中斷和異常的概念,ARM程序的三種執(zhí)行流程順序流程:每執(zhí)行一條ARM指令,程序計數(shù)器(PC)的值加4;每執(zhí)行一條Thumb指令,程序計數(shù)器寄存器(PC)的值加2,整個過程是按順序執(zhí)行。跳轉(zhuǎn)流程:程序執(zhí)行了跳轉(zhuǎn)指令,則要跳轉(zhuǎn)到特定的地址標號處執(zhí)行,包括跳轉(zhuǎn)到子程序。例如,跳轉(zhuǎn)指令,B、BL、BLX和BX。中斷流程:當異常中斷發(fā)生時,系統(tǒng)執(zhí)行完當前指令后,將跳轉(zhuǎn)到相應的異常中斷處理程序處執(zhí)行。在當異常中斷處理程序執(zhí)行完成后,程序返回到發(fā)生中斷的指令的下條指令處執(zhí)行。,.,2.6.2ARM異常中斷響應過程,進入異常:當發(fā)生異常時,處理器盡量完成當前指令,然后立即中止當前指令,脫離當前的程序去處理異常。ARM處理器對異常中斷的響應過程如下:1、保存返回地址將引起異常指令的下一條指令的地址保存到新的異常模式x下的R14,即R14-mode中,使異常處理程序執(zhí)行完后能正確返回原程序。2、保存當前狀態(tài)寄存器CPSR的內(nèi)容將CPSR的內(nèi)容保存到將要執(zhí)行的異常中斷對應的SPSR-mode中,便于中斷返回時恢復處理器當前的狀態(tài)位、中斷屏蔽位以及各條件標志位。,.,2.6.2ARM異常中斷響應過程,3、設置當前狀態(tài)寄存器CPSR中的相應位設置CPSR模式控制位CPSR4:0,使處理器進入相應的模式運行;設置IRQ中斷標志位(CPSR6=1)禁止IRQ中斷;設置FIQ中斷標志位(CPSR7=1)禁止FIQ中斷,當進入Reset或FIQ模式時。4、轉(zhuǎn)去執(zhí)行中斷處理程序取相應的中斷向量給程序計數(shù)器PC,使程序開始執(zhí)行中斷處理程序。異常矢量的地址處是一條指向相應程序的轉(zhuǎn)移指令,從而可跳轉(zhuǎn)到相應的異常中斷處理程序處,執(zhí)行異常中斷處理程序。,.,2.6.2ARM異常中斷響應過程,異常返回:異常處理完畢之后,需要執(zhí)行以下幾步操作從異常返回:1、將返回地址裝入PC把連接寄存器LR的值減去相應的偏移量,然后送到PC中。2、恢復CPSR的值將SPSR復制回CPSR中。3、清除中斷屏蔽位若在進入異常處理時設置了中斷禁止位,要在此清除。注意:復位異常處理程序不需要返回。,.,2.6.3ARM異常類型,.,2.6.3ARM異常類型,復位(RST)處理器上一旦出現(xiàn)復位信號,ARM處理器立刻停止執(zhí)行當前指令。復位后,ARM處理器轉(zhuǎn)換到禁止中斷的管理模式下,從地址0 x00000000處開始執(zhí)行指令。由此可見,復位也是一種異常。對于復位這種異常,不返回到異常前的程序。,.,2.6.3ARM異常類型,普通中斷(IRQ)異常當處理器的普通中斷請求引腳有效,且CPSR中的I=0,產(chǎn)生IRQ異常。無論是在ARM狀態(tài)還是Thumb狀態(tài),其返回指令應該為:SUBSPC,R14_irq,#4恢復CPSR的值(SPSR_mode),并返回執(zhí)行中斷前未被執(zhí)行的指令。,.,異常進入和退出,.,2.6.3ARM異常類型,快速中斷(FIQ)異常當處理器所設的快速中斷請求有效,且CPSR中的F=0,則產(chǎn)生快速中斷異常。FIQ支持數(shù)據(jù)傳送和通道處理,并有足夠的私有寄存器,從而可以減少對寄存器保存的開銷。無論是在ARM狀態(tài)還是Thumb狀態(tài),執(zhí)行以下指令從FIQ模式返回:SUBSPC,R14_fiq,#4恢復CPSR的值(SPSR_mode),并返回執(zhí)行中斷前未被執(zhí)行的指令。,.,指令預取中止(ABT)異常若處理器預取指令的地址不存在,或者該地址不允許當前指令訪問,存儲器會向CPU發(fā)出存儲器中止(Abort)信號,其指令被記為無效。但只有當CPU試圖執(zhí)行無效指令時,指令預取中止異常才會發(fā)生,否則不發(fā)生。對于指令預取中止異常,無論是在ARM狀態(tài)還是Thumb狀態(tài),其返回指令為:SUBSPC,R14_abt,#4恢復CPSR的值(SPSR_mode),并重新執(zhí)行被中止的指令。,2.6.3ARM異常類型,.,數(shù)據(jù)中止(ABT)異常如果處理器數(shù)據(jù)訪問指令的地址不存在,或者該地址不允許當前指令訪問時,產(chǎn)生數(shù)據(jù)中止異常。無論是在ARM狀態(tài)還是Thumb狀態(tài),中止異常返回指令為:SUBSPC,R14_abt,#8恢復CPSR的值(SPSR_mode),并重新執(zhí)行被中止的指令。,2.6.3ARM異常類型,.,軟件中斷(SWI)異常該異常由執(zhí)行軟件中斷指令SWI產(chǎn)生,用于進入管理模式,常用于請求執(zhí)行特定的管理功能、軟件仿真等。無論是在ARM狀態(tài)下還是在Thumb狀態(tài)下進入軟件中斷異常,都可以執(zhí)行以下指令從SWI模式返回:MOVSPC,R14_svc以上指令恢復PC(從R14_svc)和CPSR(從SPSR_svc)的值,并返回到SWI的下一條指令。,2.6.3ARM異常類型,.,2.6.3ARM異常類型,未定義指令(UND)異常1、發(fā)生未定義異常的兩種情況(1)遇到了一條ARM處理器和任何協(xié)處理器都無法識別的指令,則發(fā)生未定義指令異常。(2)當ARM處理器執(zhí)行協(xié)處理器指令時,它必須等待協(xié)處理器應答后,才能真正執(zhí)行這條指令。若協(xié)處理器沒有響應,就會出現(xiàn)未定義指令異常。,.,2.6.3ARM異常類型,處理器執(zhí)行以下程序返回,無論是在ARM狀態(tài)還是T

溫馨提示

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

評論

0/150

提交評論