第三章 ARM體系結(jié)構(gòu)及編程模型_第1頁
第三章 ARM體系結(jié)構(gòu)及編程模型_第2頁
第三章 ARM體系結(jié)構(gòu)及編程模型_第3頁
第三章 ARM體系結(jié)構(gòu)及編程模型_第4頁
第三章 ARM體系結(jié)構(gòu)及編程模型_第5頁
已閱讀5頁,還剩67頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1提綱13245ARM技術(shù)的應(yīng)用領(lǐng)域及特點ARM 處理器的寄存器組織ARM處理器的工作模式ARM微處理器系列67第三章 ARM體系結(jié)構(gòu)及編程模型ARM 異常處理ARM處理器的工作狀態(tài)ARM處理器的存儲器格式2ARMAdvanced RISC Machines ARM(Advanced RISC Machines),既可以認(rèn)為是一個公司的名字,也可以認(rèn)為是對一類微處理器的通稱,還可以認(rèn)為是一種技術(shù)的名字。ARM技術(shù)的應(yīng)用領(lǐng)域及特點1991年ARM公司成立于英國劍橋,主要出售芯片設(shè)計技術(shù)的授權(quán)。3ARM 公司的Chip less模式世界各大半導(dǎo)體生產(chǎn)商從ARM公司購買其設(shè)計的ARM微處理器核,根據(jù)

2、各自不同的應(yīng)用領(lǐng)域,加入適當(dāng)?shù)耐鈬娐罚瑥亩纬勺约旱腁RM微處理器芯片進(jìn)入市場。ARM技術(shù)的應(yīng)用領(lǐng)域及特點基于ARM技術(shù)的微處理器應(yīng)用約占據(jù)了32位RISC微處 理器75以上的市場份額,ARM技術(shù)正在逐步滲入到我們生活的各個方面。我國的中興集成電路、大唐電訊、中芯國際和上海華虹,以及國外的一些公司如德州儀器、意法半導(dǎo)體、Philips、Intel、Samsung等都推出了自己設(shè)計的基于ARM核的處理器。4ARM微處理器的應(yīng)用領(lǐng)域 工業(yè)控制領(lǐng)域:作為32的RISC架構(gòu),基于ARM核的微控制器芯片不但占據(jù)了高端微控制器市場的大部分市場份額,同時也逐漸向低端微控制器應(yīng)用領(lǐng)域擴(kuò)展,ARM微控制器的低

3、功耗、高性價比,向傳統(tǒng)的8位/16位微控制器提出了挑戰(zhàn)。ARM技術(shù)的應(yīng)用領(lǐng)域及特點到目前為止,ARM微處理器及技術(shù)的應(yīng)用已經(jīng)廣泛深入到國民經(jīng)濟(jì)的各個領(lǐng)域5ARM微處理器的應(yīng)用領(lǐng)域ARM技術(shù)的應(yīng)用領(lǐng)域及特點網(wǎng)絡(luò)應(yīng)用:隨著寬帶技術(shù)的推廣,采用ARM技術(shù)的ADSL芯片正逐步獲得競爭優(yōu)勢。此外,ARM在語音及視頻處理上行了優(yōu)化,并獲得廣泛支持,也對DSP的應(yīng)用領(lǐng)域提出了挑戰(zhàn)。消費類電子產(chǎn)品:ARM技術(shù)在目前流行的數(shù)字音頻播放器、數(shù)字機(jī)頂盒和游戲機(jī)中得到廣泛采用。成像和安全產(chǎn)品:現(xiàn)在流行的數(shù)碼相機(jī)和打印機(jī)中絕大部分采用ARM技術(shù)。手機(jī)中的32位SIM智能卡也采用了ARM技術(shù)。6ARM微處理器的特點低功耗

4、、低成本、高性能采用RISC指令集ARM技術(shù)的應(yīng)用領(lǐng)域及特點低功耗、低成本、高性能使用大量的寄存器ARM/THUMB指令支持三/五級流水線7ARM微處理器的特點采用RISC體系結(jié)構(gòu)ARM技術(shù)的應(yīng)用領(lǐng)域及特點采用RISC架構(gòu)的ARM處理器一般具有如下特點:固定長度的指令格式,指令歸整、簡單、基 本尋址方式有23種;使用單周期指令,便于流水線操作執(zhí)行;大量使用寄存器,數(shù)據(jù)處理指令只對寄存器進(jìn)行操作,只有加載/存儲指令可以訪問存儲器,以提高指令的執(zhí)行效率。8ARM微處理器的特點大量使用寄存器ARM技術(shù)的應(yīng)用領(lǐng)域及特點ARM 處理器共有37個寄存器,被分為若干個組,這些寄存器包括:31個通用寄存器,包

5、括程序計數(shù)器(PC 指針),均為32位的寄存器;6個狀態(tài)寄存器,用以標(biāo)識CPU的工作狀態(tài)及程序的運行狀態(tài),均為32位。9ARM微處理器的特點高效的指令系統(tǒng)ARM技術(shù)的應(yīng)用領(lǐng)域及特點ARM微處理器支持兩種指令集:ARM指令集和Thumb指令集。ARM指令為32位的長度,Thumb指令為16位長度。Thumb指令集為ARM指令集的功能子集,但與等價的ARM代碼相比較,可節(jié)省3040以上的存儲空間,同時具備32位代碼的所有優(yōu)點。10ARM微處理器的特點其他技術(shù)ARM技術(shù)的應(yīng)用領(lǐng)域及特點除此以外,ARM體系結(jié)構(gòu)還采用了一些特別的技術(shù),在保證高性能的前提下盡量縮小芯片的面積,并降低功耗:所有的指令都可根

6、據(jù)前面的執(zhí)行結(jié)果決定是否被執(zhí)行,從而提高指令的執(zhí)行效率??捎眉虞d/存儲指令批量傳輸數(shù)據(jù),以提高數(shù)據(jù)的傳輸效率??稍谝粭l數(shù)據(jù)處理指令中同時完成邏輯處理和移位處理。在循環(huán)處理中使用地址的自動增減來提高運行效率。11ARM微處理器系列 ARM微處理器系列ARM7系列ARM9系列ARM9E系列ARM10E系列SecurCore系列Intel的Xscale其中,ARM7、ARM9、ARM9E和ARM10為4個通用處理器系列,每一個系列提供一套相對獨特的性能來滿足不同應(yīng)用領(lǐng)域的需求。SecurCore系列專門為安全要求較高的應(yīng)用而設(shè)計。 12ARM7微處理器系列 ARM7系列是為低功耗的32位RISC處理

7、器,最適合用于對價位和功耗要求較高的消費類應(yīng)用。ARM7系列有如下特點:具有嵌入式ICERT邏輯,調(diào)試開發(fā)方便;極低的功耗,適合對功耗要求較高的應(yīng)用,如便攜式產(chǎn)品;能夠提供0.9MIPS/MHz的三級流水線結(jié)構(gòu);代碼密度高,并兼容16位的Thumb指令集;對操作系統(tǒng)的支持廣泛,如Windows CE、Linux、Palm OS等;指令系統(tǒng)與ARM9系列、ARM9E系列和ARM10E系列兼容,便于用戶的產(chǎn)品升級換代;主頻最高可達(dá)130M,高速的運算處理能力能勝任絕大多數(shù)的復(fù)雜應(yīng)用。ARM微處理器系列13ARM7微處理器系列ARM微處理器系列主要應(yīng)用領(lǐng)域:工業(yè)控制、Internet設(shè)備、網(wǎng)絡(luò)和調(diào)制

8、解調(diào)器設(shè)備、移動電話等多種多媒體和嵌入式應(yīng)用。ARM7系列微處理器包括如下幾種類型的核:ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ。其中,ARM7TMDI是目前使用最廣泛的32位嵌入式RISC處理器,屬低端ARM處理器核。TDMI的基本含義為:T:支持16位壓縮指令集Thumb;D:支持片上Debug;M:內(nèi)嵌硬件乘法器(Multiplier)I:嵌入式ICE,支持片上斷點和調(diào)試點;14ARM9微處理器系列 ARM微處理器系列ARM9系列微處理器在高性能和低功耗特性方面提供最佳的表現(xiàn)。具有以下特點:5級整數(shù)流水線,指令執(zhí)行效率更高。提供1.1MIPS/MHz的哈佛結(jié)構(gòu)

9、。支持32位ARM指令集和16位Thumb指令集。支持32位的高速AMBA總線接口。全性能的MMU,支持Windows CE、Linux、Palm OS等多種主流嵌入式操作系統(tǒng)。MPU支持實時操作系統(tǒng)。支持?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的指令和數(shù)據(jù)處理能力。15ARM9微處理器系列ARM9系列微處理器主要應(yīng)用于無線設(shè)備、儀器儀表、安全系統(tǒng)、機(jī)頂盒、高端打印機(jī)、數(shù)字照相機(jī)和數(shù)字?jǐn)z像機(jī)等。ARM微處理器系列ARM9系列微處理器包含ARM920T、ARM922T和ARM940T三種類型,以適用于不同的應(yīng)用場合。16ARM9E微處理器系列 ARM微處理器系列ARM9E系列微處理器的主要特點如

10、下:支持DSP指令集,適合于需要高速數(shù)字信號處理的場合。5級整數(shù)流水線,指令執(zhí)行效率更高。支持32位ARM指令集和16位Thumb指令集。支持32位的高速AMBA總線接口。支持VFP9浮點處理協(xié)處理器。全性能的MMU,支持眾多主流嵌入式操作系統(tǒng)。支持?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的處理能力。主頻最高可達(dá)300M。17ARM9E微處理器系列ARM9E系列微處理器主要應(yīng)用于下一代無線設(shè)備、數(shù)字消費品、成像設(shè)備、工業(yè)控制、存儲設(shè)備和網(wǎng)絡(luò)設(shè)備等領(lǐng)域。ARM微處理器系列ARM9E系列微處理器包含ARM926EJ-S、ARM946E-S和ARM966E-S三種類型,以適用于不同的應(yīng)用場合。18A

11、RM10E微處理器系列 ARM微處理器系列ARM10E系列微處理器的主要特點如下:支持DSP指令集,適合于需要高速數(shù)字信號處理的場合。6級整數(shù)流水線,指令執(zhí)行效率更高。支持32位ARM指令集和16位Thumb指令集。支持32位的高速AMBA總線接口。支持VFP10浮點處理協(xié)處理器。全性能的MMU,支持眾多主流嵌入式操作系統(tǒng)。支持?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的處理能力主頻最高可達(dá)400M。內(nèi)嵌并行讀/寫操作部件。19ARM10E微處理器系列ARM10E系列微處理器主要應(yīng)用于下一代無線設(shè)備、數(shù)字消費品、成像設(shè)備、工業(yè)控制、通信和信息系統(tǒng)等領(lǐng)域。ARM微處理器系列ARM10E系列微處理器

12、包含ARM1020E、ARM1022E和ARM1026EJ-S三種類型,以適用于不同的應(yīng)用場合。20SecurCore微處理器系列 ARM微處理器系列SecurCore系列微處理器除了具有ARM體系結(jié)構(gòu)各種主要特點外,還在系統(tǒng)安全方面具有如下的特點:帶有靈活的保護(hù)單元,確保操作系統(tǒng)和應(yīng)用數(shù)據(jù)的安全。采用軟內(nèi)核技術(shù),防止外部對其進(jìn)行掃描探測??杉捎脩糇约旱陌踩匦院推渌麉f(xié)處理器。21SecurCore微處理器系列SecurCore系列微處理器主要應(yīng)用于一些對安全性要求較高的應(yīng)用產(chǎn)品及應(yīng)用系統(tǒng),如電子商務(wù)、電子政務(wù)、電子銀行業(yè)務(wù)、網(wǎng)絡(luò)和認(rèn)證系統(tǒng)等領(lǐng)域。ARM微處理器系列SecurCore系列微處

13、理器包含SecurCore SC100、SecurCore SC110、SecurCore SC200和SecurCore SC210四種類型,以適用于不同的應(yīng)用場合。22StrongARM微處理器系列 ARM微處理器系列Intel StrongARM處理器是便攜式通訊產(chǎn)品和消費類電子產(chǎn)品的理想選擇,已成功應(yīng)用于多家公司的掌上電腦系列產(chǎn)品。Intel StrongARM SA-1100處理器是采用ARM體系結(jié)構(gòu)高度集成的32位RISC微處理器。它融合了Intel公司的設(shè)計和處理技術(shù)以及ARM體系結(jié)構(gòu)的電源效率,采用在軟件上兼容ARMv4體系結(jié)構(gòu)、同時采用具有Intel技術(shù)優(yōu)點的體系結(jié)構(gòu)。23X

14、scale處理器 ARM微處理器系列Xscale 處理器是基于ARMv5TE體系結(jié)構(gòu)的解決方案,是一款全性能、高性價比、低功耗的處理器。它支持16位的Thumb指令和DSP指令集,已使用在數(shù)字移動電話、個人數(shù)字助理和網(wǎng)絡(luò)產(chǎn)品等場合。Xscale 處理器是Intel目前主要推廣的一款A(yù)RM微處理器。24ARM微處理器的工作狀態(tài) ARM微處理器的工作狀態(tài)從編程的角度看,ARM微處理器的工作狀態(tài)一般有兩種,并可在兩種狀態(tài)之間切換:ARM狀態(tài),此時處理器執(zhí)行32位的字對齊的ARM指令;Thumb狀態(tài),此時處理器執(zhí)行16位的、半字對齊的Thumb指令。 25ARM與THUMBTHUMB指令是ARM指令的

15、子集ARM微處理器的工作狀態(tài)可以相互調(diào)用,只要遵循一定的調(diào)用規(guī)則Thumb指令與ARM指令的時間效率和空間效率關(guān)系為:存儲空間約為ARM代碼的6070指令數(shù)比ARM代碼多約3040存儲器為32位時ARM代碼比Thumb代碼快約40存儲器為16位時Thumb比ARM代碼快約4050使用Thumb代碼,存儲器的功耗會降低約3026狀態(tài)切換方法 ARM指令集和Thumb指令集均有切換處理器狀態(tài)的指令,并可在兩種工作狀態(tài)之間切換,ARM微處理器的工作狀態(tài)在開始執(zhí)行代碼時,應(yīng)該處于ARM狀態(tài)。27進(jìn)入Thumb狀態(tài)當(dāng)操作數(shù)寄存器的狀態(tài)位(位0)為1時,可以采用執(zhí)行BX指令的方法,使微處理器從ARM狀態(tài)切

16、換到Thumb狀態(tài)。當(dāng)處理器處于Thumb狀態(tài)時發(fā)生異常(如IRQ、FIQ、Undef、Abort、SWI等),則異常處理返回時,自動切換到Thumb狀態(tài)。ARM微處理器的工作狀態(tài)28切換到ARM狀態(tài)當(dāng)操作數(shù)寄存器的狀態(tài)位為0時,執(zhí)行BX指令時可以使微處理器從Thumb狀態(tài)切換到ARM狀態(tài)。ARM微處理器的工作狀態(tài)在處理器進(jìn)行異常處理時,把PC指針放入異常模式鏈接寄存器中,并從異常向量地址開始執(zhí)行程序,也可以使處理器切換到ARM狀態(tài)。29處理器模式ARM微處理器的工作模式usr:ARM處理器正常的程序執(zhí)行狀態(tài)fiq:用于高速數(shù)據(jù)傳輸或通道處理irq:用于通用的中斷處理svc:操作系統(tǒng)使用的保護(hù)

17、模式abt:用于虛擬存儲及存儲保護(hù)sys:運行具有特權(quán)的操作系統(tǒng)任務(wù)und:當(dāng)出現(xiàn)未定義指令終止時進(jìn)入該模式30用戶模式和特權(quán)模式ARM微處理器的工作模式除了用戶模式之外的其他6種處理器模式稱為特權(quán)模式特權(quán)模式下,程序可以訪問所有的系統(tǒng)資源,也可以任意地進(jìn)行處理器模式的切換。特權(quán)模式中,除系統(tǒng)模式外,其他5種模式又稱為異常模式大多數(shù)的用戶程序運行在用戶模式下,此時,應(yīng)用程序不能夠訪問一些受操作系統(tǒng)保護(hù)的系統(tǒng)資源,應(yīng)用程序也不能直接進(jìn)行處理器模式的切換。用戶模式下,當(dāng)需要進(jìn)行處理器模式切換時,應(yīng)用程序可以產(chǎn)生異常處理,在異常處理中進(jìn)行處理器模式的切換。31模式切換ARM微處理器的工作模式處理器模

18、式可以通過軟件進(jìn)行切換,也可以通過外部中斷或者異常處理過程進(jìn)行切換。當(dāng)應(yīng)用程序發(fā)生異常中斷時,處理器進(jìn)入相應(yīng)的異常模式。在每一種異常模式下都有一組寄存器,供相應(yīng)的異常處理程序使用,這樣就可以保證在進(jìn)入異常模式時,用戶模式下的寄存器不被破壞。系統(tǒng)模式并不是通過異常進(jìn)入的,它和用戶模式具有完全一樣的寄存器。但是系統(tǒng)模式屬于特權(quán)模式,可以訪問所有的系統(tǒng)資源,也可以直接進(jìn)行處理器模式切換。它主要供操作系統(tǒng)任務(wù)使用。通常操作系統(tǒng)的任務(wù)需要訪問所有的系統(tǒng)資源,同時該任務(wù)仍然使用用戶模式的寄存器組,而不是使用異常模式下相應(yīng)的寄存器組,這樣可以保證當(dāng)異常中斷發(fā)生時任務(wù)狀態(tài)不被破壞。32ARM微處理器的存儲器格

19、式 ARM體系結(jié)構(gòu)所支持的最大尋址空間為4GB(232字節(jié))ARM微處理器的存儲器格式ARM體系結(jié)構(gòu)將存儲器看作是從零地址開始的字節(jié)的線性組合。從零字節(jié)到三字節(jié)放置第一個存儲的字?jǐn)?shù)據(jù),從第四個字節(jié)到第七個字節(jié)放置第二個存儲的字?jǐn)?shù)據(jù),依次排列。ARM體系結(jié)構(gòu)可以用兩種方法存儲字?jǐn)?shù)據(jù),稱之為大端格式和小端格式 33ARM體系結(jié)構(gòu)的存儲器格式大端格式 ARM微處理器的存儲器格式在這種格式中,字?jǐn)?shù)據(jù)的高字節(jié)存儲在低地址中,而字?jǐn)?shù)據(jù)的低字節(jié)則存放在高地址中34ARM體系結(jié)構(gòu)的存儲器格式小端格式 ARM微處理器的存儲器格式與大端存儲格式相反,在小端存儲格式中,低地址中存放的是字?jǐn)?shù)據(jù)的低字節(jié),高地址存放的是

20、字?jǐn)?shù)據(jù)的高字節(jié)35指令長度及數(shù)據(jù)類型 ARM微處理器的指令長度可以是32位(在ARM狀態(tài)下),也可以為16位(在Thumb狀態(tài)下)。ARM微處理器的存儲器格式ARM微處理器中支持字節(jié)(8位)、半字(16位)、字(32位)三種數(shù)據(jù)類型,其中,字需要4字節(jié)對齊(地址的低兩位為0)、半字需要2字節(jié)對齊(地址的最低位為0)36非對齊的存儲訪問操作 在ARM種,如果存儲單元的地址沒有遵守對齊規(guī)則,則稱為非對齊的存儲訪問操作。ARM微處理器的存儲器格式非對齊的指令預(yù)取操作非對齊的數(shù)據(jù)訪問操作37非對齊的指令預(yù)取操作 當(dāng)處理器處于ARM狀態(tài)期間,如果寫入到寄存器PC中的值是非字對齊的,要么指令執(zhí)行的結(jié)果不可

21、預(yù)知,要么地址值中最低兩位被忽略。ARM微處理器的存儲器格式當(dāng)處理器處于THUMB狀態(tài)期間,如果寫入到寄存器PC中的值是非半字對齊的,要么指令執(zhí)行的結(jié)果不可預(yù)知,要么地址值中最低位被忽略。38非對齊的數(shù)據(jù)訪問操作 對于Load/Store操作,如果是非對齊的數(shù)據(jù)訪問操作,系統(tǒng)定義了三種可能的結(jié)果:ARM微處理器的存儲器格式執(zhí)行的結(jié)果不可預(yù)知忽略字單元地址的低兩位的值,即訪問地址為(address AND 0XFFFFFFFC)的字單元;忽略半字單元地址的最低位的值,即訪問地址為(address AND 0XFFFFFFFE)的半字單元。忽略字單元地址的低兩位的值;忽略半字單元地址的最低位的值;

22、由存儲系統(tǒng)實現(xiàn)這種忽略。也就是說,這時該地址值原封不動地送到存儲系統(tǒng)。當(dāng)發(fā)生非對齊地數(shù)據(jù)訪問時,到底采用上述三種方法中的哪一種,是由各指令指定的。39寄存器組織 ARM微處理器共有37個32位寄存器,其中31個為通用寄存器,6個為狀態(tài)寄存器。但是這些寄存器不能被同時訪問,具體哪些寄存器是可編程訪問的,取決微處理器的工作狀態(tài)及具體的運行模式。但在任何時候,通用寄存器R14R0、程序計數(shù)器PC、一個或兩個狀態(tài)寄存器都是可訪問的。 ARM微處理器的寄存器格式40ARM狀態(tài)下的寄存器組織 通用寄存器:通用寄存器包括R0R15,可以分為三類:未分組寄存器R0R7分組寄存器R8R14程序計數(shù)器PC(R15

23、)ARM微處理器的寄存器格式41ARM狀態(tài)下的寄存器組織ARM微處理器的寄存器格式42未分組寄存器R0R7ARM微處理器的寄存器格式在所有的運行模式下,未分組寄存器都指向同一個物理寄存器,他們未被系統(tǒng)用作特殊的用途,因此,在中斷或異常處理進(jìn)行運行模式轉(zhuǎn)換時,由于不同的處理器運行模式均使用相同的物理寄存器,可能會造成寄存器中數(shù)據(jù)的破壞,這一點在進(jìn)行程序設(shè)計時應(yīng)引起注意。43分組寄存器R8R12ARM微處理器的寄存器格式每次所訪問的物理寄存器與處理器當(dāng)前的運行模式有關(guān)R8R12:每個寄存器對應(yīng)兩個不同的物理寄存器當(dāng)使用fiq模式時,訪問寄存器R8_fiqR12_fiq;當(dāng)使用除fiq模式以外的其他

24、模式時,訪問寄存器R8_usrR12_usr。44分組寄存器R13R14ARM微處理器的寄存器格式R13、R14:每個寄存器對應(yīng)6個不同的物理寄存器其中的一個是用戶模式與系統(tǒng)模式共用,另外5個物理寄存器對應(yīng)于其他5種不同的運行模式采用以下的記號來區(qū)分不同的物理寄存器:R13_R14_mode為以下幾種之一:usr、fiq、irq、svc、abt、und。45堆棧指針R13ARM微處理器的寄存器格式R13在ARM指令中常用作堆棧指針,但這只是一種習(xí)慣用法,用戶也可使用其他的寄存器作為堆棧指針。在Thumb指令集中,某些指令強(qiáng)制性的要求使用R13作為堆棧指針。由于處理器的每種運行模式均有自己獨立的

25、物理寄存器R13,在初始化部分,都要初始化每種模式下的R13,這樣,當(dāng)程序的運行進(jìn)入異常模式時,可以將需要保護(hù)的寄存器放入R13所指向的堆棧,而當(dāng)程序從異常模式返回時,則從對應(yīng)的堆棧中恢復(fù)。 46子程序連接寄存器R14ARM微處理器的寄存器格式R14也稱作子程序連接寄存器或連接寄存器LR。當(dāng)執(zhí)行BL子程序調(diào)用指令時,可以從R14中得到R15(程序計數(shù)器PC)的備份。其他情況下,R14用作通用寄存器。在每一種運行模式下,都可用R14保存子程序的返回地址,當(dāng)用BL或BLX指令調(diào)用子程序時,將PC的當(dāng)前值拷貝給R14,執(zhí)行完子程序后,又將R14的值拷貝回PC,即可完成子程序的調(diào)用返回。BLSUB1S

26、UB1:STMFDSP!, , LR /*將R14存入堆棧*/LDMFDSP!,PC/*完成子程序返回 */47程序計數(shù)器PC(R15)ARM微處理器的寄存器格式ARM狀態(tài)下,位1:0為0,位31:2用于保存PC;Thumb狀態(tài)下,位0為0,位31:1用于保存PC;R15雖然也可用作通用寄存器,但一般不這么使用,因為對R15的使用有一些特殊的限制,當(dāng)違反了這些限制時,程序的執(zhí)行結(jié)果是未知的。由于ARM體系結(jié)構(gòu)采用了多級流水線技術(shù),對于ARM指令集而言,PC總是指向當(dāng)前指令的下兩條指令的地址,即PC的值為當(dāng)前指令的地址值加8個字節(jié)。48程序狀態(tài)寄存器(CPSR/SPSR)寄存器R16用作CPSR

27、(當(dāng)前程序狀態(tài)寄存器),CPSR可在任何運行模式下被訪問,它包括條件標(biāo)志位、中斷禁止位、當(dāng)前處理器模式標(biāo)志位,以及其他一些相關(guān)的控制和狀態(tài)位。ARM微處理器的寄存器格式每一種運行模式下又都有一個專用的物理狀態(tài)寄存器,稱為SPSR(備份的程序狀態(tài)寄存器),異常發(fā)生時,SPSR用于保存CPSR的值,從異常退出時則可由SPSR來恢復(fù)CPSR。由于用戶模式和系統(tǒng)模式不屬于異常模式,他們沒有SPSR,當(dāng)在這兩種模式下訪問SPSR,結(jié)果是未知的。49Thumb狀態(tài)下的寄存器組織 Thumb狀態(tài)下的寄存器集是ARM狀態(tài)下寄存器集的一個子集ARM微處理器的寄存器格式程序可以直接訪問8個通用寄存器(R7R0)、

28、程序計數(shù)器(PC)、堆棧指針(SP)、連接寄存器(LR)和CPSR。同樣,每一種特權(quán)模式下都有一組SP、LR和SPSR。 50Thumb狀態(tài)下的寄存器組織圖ARM微處理器的寄存器格式51Thumb狀態(tài)下的寄存器與ARM狀態(tài)下的寄存器關(guān)系A(chǔ)RM微處理器的寄存器格式Thumb狀態(tài)下和ARM狀態(tài)下的R0R7是相同的。Thumb狀態(tài)下和ARM狀態(tài)下的CPSR和所有的SPSR是相同的。Thumb狀態(tài)下的SP對應(yīng)于ARM狀態(tài)下的R13。Thumb狀態(tài)下的LR對應(yīng)于ARM狀態(tài)下的R14。Thumb狀態(tài)下的程序計數(shù)器對應(yīng)于ARM狀態(tài)下R15。52Thumb狀態(tài)下的寄存器與ARM狀態(tài)下的寄存器關(guān)系圖ARM微處理

29、器的寄存器格式53訪問THUMB狀態(tài)下的高位寄存器(Hi-registers) 在Thumb狀態(tài)下,高位寄存器R8R15并不是標(biāo)準(zhǔn)寄存器集的一部分,但可使用匯編語言程序受限制的訪問這些寄存器,將其用作快速的暫存器。ARM微處理器的寄存器格式使用帶特殊變量的MOV指令,數(shù)據(jù)可以在低位寄存器和高位寄存器之間進(jìn)行傳送;高位寄存器的值可以使用CMP和ADD指令進(jìn)行比較或加上低位寄存器中的值。 54程序狀態(tài)寄存器 ARM微處理器的寄存器格式ARM體系結(jié)構(gòu)包含一個當(dāng)前程序狀態(tài)寄存器(CPSR)和五個備份的程序狀態(tài)寄存器(SPSRs)。備份的程序狀態(tài)寄存器用來進(jìn)行異常處理,其功能包括:保存ALU中的當(dāng)前操作

30、信息控制允許和禁止中斷設(shè)置處理器的運行模式55程序狀態(tài)寄存器的每一位的安排 ARM微處理器的寄存器格式56程序狀態(tài)寄存器的條件碼標(biāo)志 N、Z、C、V均為條件碼標(biāo)志位。它們的內(nèi)容可被算術(shù)或邏輯運算的結(jié)果所改變,并且可以決定某條指令是否被執(zhí)行ARM微處理器的寄存器格式在ARM狀態(tài)下,絕大多數(shù)的指令都是有條件執(zhí)行的。在Thumb狀態(tài)下,僅有分支指令是有條件執(zhí)行的。 57影響標(biāo)志位的指令標(biāo)志位含 義N當(dāng)用兩個補(bǔ)碼表示的帶符號數(shù)進(jìn)行運算時,N=1 表示運算的結(jié)果為負(fù)數(shù);N=0 表示運算的結(jié)果為正數(shù)或零;ZZ=1 表示運算的結(jié)果為零;Z=0表示運算的結(jié)果為非零;C加法運算結(jié)果進(jìn)位時,C=1,減法運算借位時

31、,C=0;移位操作的非加/減運算指令,C為移出的最后一位;其他的非加/減運算指令,C的值通常不改變。V加/減法運算指令,V=1表示符號位溢出。對于其他的非加/減運算指令,C的值通常不改變。Q在ARM v5及以上版本的E系列處理器中,Q標(biāo)志指示DSP運算指令是否溢出。在其他版本中,Q標(biāo)志位無定義。ARM微處理器的寄存器格式58程序狀態(tài)寄存器的控制位 狀態(tài)寄存器的低8位(I、F、T和M4:0)稱為控制位,發(fā)生異常時這些位可以被改變。如果處理器運行特權(quán)模式,這些位也可以由程序修改。ARM微處理器的寄存器格式中斷禁止位I、F:I=1 禁止IRQ中斷;F=1 禁止FIQ中斷。T標(biāo)志位:該位反映處理器的運

32、行狀態(tài)ARM體系結(jié)構(gòu)v5及以上的版本的T系列處理器,當(dāng)該位為1時,程序運行于Thumb狀態(tài),否則運行于ARM狀態(tài)。ARM體系結(jié)構(gòu)v5及以上的版本的非T系列處理器,當(dāng)該位為1時,執(zhí)行下一條指令以引起為定義的指令異常;當(dāng)該位為0時,表示運行于ARM狀態(tài)。運行模式位M4:0是模式位,決定處理器的運行模式 59處理器運行模式及可以訪問的寄存器M4:0處理器模式可訪問的寄存器0b10000用戶模式PC,CPSR,R0-R140b10001FIQ模式PC,CPSR, SPSR_fiq,R14_fiq-R8_fiq, R7R00b10010IRQ模式PC,CPSR, SPSR_irq,R14_irq, R1

33、3_irq, R12R00b10011管理模式PC,CPSR, SPSR_svc,R14_svc, R13_svc, R12R0,0b10111中止模式PC,CPSR, SPSR_abt,R14_abt,R13_abt, R12R0,0b11011未定義模式PC,CPSR, SPSR_und,R14_und, R13_und, R12R0,0b11111系統(tǒng)模式PC,CPSR(ARM v4及以上版本), R14R0ARM微處理器的寄存器格式60異常(Exceptions) 當(dāng)正常的程序執(zhí)行流程發(fā)生暫時的停止時,稱之為異常,例如處理一個外部的中斷請求。在處理異常之前,當(dāng)前處理器的狀態(tài)必須保留,這

34、樣當(dāng)異常處理完成之后,當(dāng)前程序可以繼續(xù)執(zhí)行。處理器允許多個異常同時發(fā)生,它們將會按固定的優(yōu)先級進(jìn)行處理。ARM異常處理ARM體系結(jié)構(gòu)中的異常,與8位/16位體系結(jié)構(gòu)的中斷有很大的相似之處,但異常與中斷的概念并不完全等同。 61ARM體系結(jié)構(gòu)所支持的異常類型 異常類型具體含義復(fù)位復(fù)位電平有效時,產(chǎn)生復(fù)位異常,程序跳轉(zhuǎn)到復(fù)位處理程序處執(zhí)行。未定義指令遇到不能處理的指令時,產(chǎn)生未定義指令異常。軟件中斷執(zhí)行SWI指令產(chǎn)生,用于用戶模式下的程序調(diào)用特權(quán)操作指令。指令預(yù)取中止處理器預(yù)取指令的地址不存在,或該地址不允許當(dāng)前指令訪問,產(chǎn)生指令預(yù)取中止異常。數(shù)據(jù)中止處理器數(shù)據(jù)訪問指令的地址不存在,或該地址不允許

35、當(dāng)前指令訪問時,產(chǎn)生數(shù)據(jù)中止異常。IRQ外部中斷請求有效,且CPSR中的I位為0時,產(chǎn)生IRQ異常。FIQ快速中斷請求引腳有效,且CPSR中的F位為0時,產(chǎn)生FIQ異常。ARM異常處理62對異常的響應(yīng) ARM異常處理當(dāng)一個異常出現(xiàn)以后,ARM微處理器會執(zhí)行以下幾步操作將下一條指令的地址存入相應(yīng)連接寄存器LR,以便程序在處理異常返回時能從正確的位置重新開始執(zhí)行。將CPSR復(fù)制到相應(yīng)的SPSR中。根據(jù)異常類型,強(qiáng)制設(shè)置CPSR的運行模式位。強(qiáng)制PC從相關(guān)的異常向量地址取下一條指令執(zhí)行,從而跳轉(zhuǎn)到相應(yīng)的異常處理程序處。 63R14_ = Return LinkSPSR_ = CPSRCPSR4:0

36、= Exception Mode NumberCPSR5 = 0If = Reset or FIQ thenCPSR6 = 1CPSR7 = 1PC = Exception Vector Address異常響應(yīng)偽代碼ARM異常處理處理器處于Thumb狀態(tài),則當(dāng)異常向量地址加載入PC時,處理器自動切換到ARM狀態(tài)。ARM微處理器對異常的響應(yīng)過程用偽碼可以描述為:在ARM狀態(tài)下執(zhí)行禁止快速中斷禁止正常中斷轉(zhuǎn)入異常入口地址64從異常返回ARM異常處理異常處理完畢之后,ARM微處理器會執(zhí)行以下幾步操作從異常返回: 將連接寄存器LR的值減去相應(yīng)的偏移量后送到PC中。將SPSR復(fù)制回CPSR中。若在進(jìn)入異

37、常處理時設(shè)置了中斷禁止位,要在此清除??梢哉J(rèn)為應(yīng)用程序總是從復(fù)位異常處理程序開始執(zhí)行的,因此復(fù)位異常處理程序不需要返回。65FIQ(Fast Interrupt Request)FIQ異常是為了支持?jǐn)?shù)據(jù)傳輸或者通道處理而設(shè)計的。ARM異常處理若將CPSR的F位置為1,則會禁止FIQ中斷,若將CPSR的F位清零,處理器會在指令執(zhí)行時檢查FIQ的輸入。注意只有在特權(quán)模式下才能改變F位的狀態(tài)。 可由外部通過對處理器上的nFIQ引腳輸入低電平產(chǎn)生FIQ。不管是在ARM狀態(tài)還是在Thumb狀態(tài)下進(jìn)入FIQ模式,F(xiàn)IQ處理程序均可以執(zhí)行以下指令從FIQ模式返回:SUBS PC,R14_fiq ,#466IRQ(Interrupt Request) IRQ異常屬于正常的中斷請求,可通過對處理器的nIRQ引腳輸入低電平產(chǎn)生,IRQ的優(yōu)先級低于FIQ,當(dāng)程序執(zhí)行進(jìn)入FIQ異常時,IRQ可能被屏蔽。ARM異常處理若將CPSR的I位置為1,則會禁止IRQ中斷,若將CPSR的I位清零,處理器會在指令執(zhí)行完之前檢查IRQ的輸入。注意只有在特權(quán)模式下才能改變I位的狀態(tài)。不管是在ARM狀態(tài)還是在Thumb狀態(tài)下進(jìn)入IRQ模式,IRQ處理程序均可以執(zhí)行以下指令從IRQ模式返回:SUBS PC ,

溫馨提示

  • 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

提交評論