ARM7體系結(jié)構(gòu)chapter3(1-8).ppt_第1頁(yè)
ARM7體系結(jié)構(gòu)chapter3(1-8).ppt_第2頁(yè)
ARM7體系結(jié)構(gòu)chapter3(1-8).ppt_第3頁(yè)
ARM7體系結(jié)構(gòu)chapter3(1-8).ppt_第4頁(yè)
ARM7體系結(jié)構(gòu)chapter3(1-8).ppt_第5頁(yè)
已閱讀5頁(yè),還剩87頁(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)介

第3章 ARM7體系結(jié)構(gòu),第3章 目錄,1.簡(jiǎn)介 2.ARM7TDMI 3.ARM7TDMI的模塊和內(nèi)部框圖 4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型 5.處理器狀態(tài) 6.處理器模式 7.內(nèi)部寄存器 8. 程序狀態(tài)寄存器,9.異常 10.中斷延遲 11.復(fù)位 12.存儲(chǔ)器及存儲(chǔ)器映射I/O 13.尋址方式簡(jiǎn)介 14.ARM7指令簡(jiǎn)介 15.協(xié)處理器接口 16.調(diào)試接口簡(jiǎn)介 17.ETM接口簡(jiǎn)介,第3章 目錄,1.簡(jiǎn)介 2.ARM7TDMI 3.ARM7TDMI的模塊和內(nèi)部框圖 4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型 5.處理器狀態(tài) 6.處理器模式 7.內(nèi)部寄存器 8. 程序狀態(tài)寄存器,9.異常 10.中斷延遲 11.復(fù)位 12.存儲(chǔ)器及存儲(chǔ)器映射I/O 13.尋址方式簡(jiǎn)介 14.ARM7指令簡(jiǎn)介 15.協(xié)處理器接口 16.調(diào)試接口簡(jiǎn)介 17.ETM接口簡(jiǎn)介,3.1 ARM簡(jiǎn)介,ARM公司簡(jiǎn)介,ARM是Advanced RISC Machines的縮寫,它是一家微處理器行業(yè)的知名企業(yè),該企業(yè)設(shè)計(jì)了大量高性能、廉價(jià)、耗能低的RISC (精簡(jiǎn)指令集)處理器。 公司的特點(diǎn)是只設(shè)計(jì)芯片,而不生產(chǎn)。它將技術(shù)授權(quán)給世界上許多著名的半導(dǎo)體、軟件和OEM廠商,并提供服務(wù)。,3.1 ARM簡(jiǎn)介,ARM公司簡(jiǎn)介,將技術(shù)授權(quán)給其它芯片廠商,形成各具特色的ARM芯片,3.1 ARM簡(jiǎn)介,ARM體系結(jié)構(gòu),ARM處理器為RISC芯片,其簡(jiǎn)單的結(jié)構(gòu)使ARM內(nèi)核非常小,這使得器件的功耗也非常低。它具有經(jīng)典RISC的特點(diǎn):,3.1 ARM簡(jiǎn)介,ARM體系結(jié)構(gòu),ARM體系結(jié)構(gòu)的特點(diǎn):,指令的條件執(zhí)行,ADD R0, R0, R1 R0+R1-R0 ADDS R0, R0, R1 ADDEQS R0, R0, R1 第一個(gè)例子是一個(gè)基本的加法(把 R1 的值增加到 R0),它不影響狀態(tài)寄存器。 第二個(gè)例子是同一個(gè)加法,只不過(guò)它導(dǎo)致更改狀態(tài)寄存器。 最后一個(gè)例子是同一個(gè)加法,更改狀態(tài)寄存器。不同在于它是一個(gè)有條件的指令。只有前一個(gè)操作的結(jié)果是 EQ (如果設(shè)置了 Z 標(biāo)志)的時(shí)候它才執(zhí)行。,3.1 ARM簡(jiǎn)介,各ARM體系結(jié)構(gòu)版本,ARM體系結(jié)構(gòu)從最初開發(fā)到現(xiàn)在有了巨大的改進(jìn),并仍在完善和發(fā)展。為了清楚的表達(dá)每個(gè)ARM應(yīng)用實(shí)例所使用的指令集,ARM公司定義了5種主要的ARM指令集體系結(jié)構(gòu)版本,以版本號(hào)V1V5表示。,3.1 ARM簡(jiǎn)介,各ARM體系結(jié)構(gòu)版本V1,該版本的ARM體系結(jié)構(gòu),只有26位的尋址空間,沒(méi)有商業(yè)化,其特點(diǎn)為: 基本的數(shù)據(jù)處理指令(不包括乘法); 字節(jié)、字和半字加載/存儲(chǔ)指令; 具有分支指令,包括在子程序調(diào)用中使用的分支和鏈接指令; 在操作系統(tǒng)調(diào)用中使用的軟件中斷指令。,3.1 ARM簡(jiǎn)介,各ARM體系結(jié)構(gòu)版本V2,同樣為26位尋址空間,現(xiàn)在已經(jīng)廢棄不再使用,它相對(duì)V1版本有以下改進(jìn): 具有乘法和乘加指令; 支持協(xié)處理器; 快速中斷模式中的兩個(gè)以上的分組寄存器; 具有原子性加載/存儲(chǔ)指令SWP和SWPB。,3.1 ARM簡(jiǎn)介,各ARM體系結(jié)構(gòu)版本V3,尋址范圍擴(kuò)展到32位(事實(shí)上也基本廢棄),具有獨(dú)立的程序: 具有乘法和乘加指令; 支持協(xié)處理器; 快速中斷模式中具有的兩個(gè)以上的分組寄存器; 具有原子性加載/存儲(chǔ)指令SWP和SWPB。,3.1 ARM簡(jiǎn)介,各ARM體系結(jié)構(gòu)版本V4,不在為了與以前的版本兼容而支持26位體系結(jié)構(gòu),并明確了哪些指令會(huì)引起未定義指令異常發(fā)生,它相對(duì)V3版本作了以下的改進(jìn): 半字加載/存儲(chǔ)指令; 字節(jié)和半字的加載和符號(hào)擴(kuò)展指令; 具有可以轉(zhuǎn)換到Thumb狀態(tài)的指令; 用戶模式寄存器的新的特權(quán)處理器模式。,3.1 ARM簡(jiǎn)介,各ARM體系結(jié)構(gòu)版本V5,在V4版本的基礎(chǔ)上,對(duì)現(xiàn)在指令的定義進(jìn)行了必要的修正,對(duì)V4版本的體系結(jié)構(gòu)進(jìn)行了擴(kuò)展并并增加了指令,具體如下: 改進(jìn)了ARM/Thumb狀態(tài)之間的切換效率; 允許非T變量和T變量一樣,使用相同的代碼生成技術(shù); 增加計(jì)數(shù)前導(dǎo)零指令和軟件斷點(diǎn)指令; 對(duì)乘法指令如何設(shè)置標(biāo)志作了嚴(yán)格的定義。,3.1 ARM簡(jiǎn)介,ARM處理器核簡(jiǎn)介,ARM公司開發(fā)了很多系列的ARM處理器核,目前最新的系列已經(jīng)是ARM11了,而ARM6核以及更早的系列已經(jīng)很罕見了。目前應(yīng)用比較廣泛的系列是:,3.1 ARM簡(jiǎn)介,ARM處理器核簡(jiǎn)介ARM7,該系列包括ARM7TDMI、ARM7TDMI-S、帶有高速緩存處理器宏單元的ARM720T和擴(kuò)充了Jazelle的ARM7EJ-S。該系列處理器提供Thumb 16位壓縮指令集和EmbededICE軟件調(diào)試方式,適用于更大規(guī)模的SoC設(shè)計(jì)中。 ARM7系列廣泛應(yīng)用于多媒體和嵌入式設(shè)備,包括Internet設(shè)備、網(wǎng)絡(luò)和調(diào)制解調(diào)器設(shè)備,以及移動(dòng)電話、PDA等無(wú)線設(shè)備。,3.1 ARM簡(jiǎn)介,ARM處理器核簡(jiǎn)介ARM9,該系列包括ARM9TDMI、ARM920T和帶有告訴緩存處理器宏單元的ARM940T。除了兼容ARM7系列,而且能夠更加靈活的設(shè)計(jì)。 ARM9系列主要應(yīng)用于引擎管理、儀器儀表、安全系統(tǒng)和機(jī)頂盒等領(lǐng)域。,3.1 ARM簡(jiǎn)介,ARM處理器核簡(jiǎn)介ARM10,該系列包括ARM1020E和ARM1020E處理器核,其核心在于使用向量浮點(diǎn)(VFP)單元VFP10提供高性能的浮點(diǎn)解決方案,從而極大提高了處理器的整型和浮點(diǎn)運(yùn)算性能。 可以用于視頻游戲機(jī)和高性能打印機(jī)等場(chǎng)合。,3.1 ARM簡(jiǎn)介,ARM處理器核簡(jiǎn)介SecurCore,該系列涵蓋了SC100、SC110、SC200和SC210處理核。該系列處理器主要針對(duì)新興的安全市場(chǎng),以一種全新的安全處理器設(shè)計(jì)為智能卡和其它安全I(xiàn)C開發(fā)提供獨(dú)特的32位系統(tǒng)設(shè)計(jì),并具有特定反偽造方法,從而有助于防止對(duì)硬件和軟件的盜版。,3.1 ARM簡(jiǎn)介,ARM處理器核簡(jiǎn)介Xscale,Intel Xscale微控制器則提供全性能、高性價(jià)比、低功耗的解決方案,支持16位Thumb指令并集成數(shù)字信號(hào)處理(DSP)指令。,第3章 目錄,1.簡(jiǎn)介 2.ARM7TDMI 3.ARM7TDMI的模塊和內(nèi)部框圖 4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型 5.處理器狀態(tài) 6.處理器模式 7.內(nèi)部寄存器 8. 程序狀態(tài)寄存器,9.異常 10.中斷延遲 11.復(fù)位 12.存儲(chǔ)器及存儲(chǔ)器映射I/O 13.尋址方式簡(jiǎn)介 14.ARM7指令簡(jiǎn)介 15.協(xié)處理器接口 16.調(diào)試接口簡(jiǎn)介 17.ETM接口簡(jiǎn)介,3.2 ARM7TDMI,簡(jiǎn)介,ARM7TDMI基于ARM體系結(jié)構(gòu)V4版本,是目前低端的ARM核。具有廣泛的應(yīng)用,其最顯著的應(yīng)用為數(shù)字移動(dòng)電話。,注意:“ARM核”并不是芯片,ARM核與其它部件如RAM、ROM、片內(nèi)外設(shè)組合在一起才能構(gòu)成現(xiàn)實(shí)的芯片。,3.2 ARM7TDMI,簡(jiǎn)介,ARM7TDMI支持32位尋址范圍,并彌補(bǔ)了ARM6不能在低于5V電源電壓下工作的不足。ARM7TDMI的后綴意義為:,3.2 ARM7TDMI,簡(jiǎn)介,ARM7TDMI處理器是ARM通用32位微處理器家族的成員之一。它具有優(yōu)異的性能,但功耗卻很低,使用門的數(shù)量也很少。它屬于精簡(jiǎn)指令集計(jì)算機(jī)(RISC),比復(fù)雜指令集計(jì)算機(jī)(CISC)要簡(jiǎn)單得多。這樣的簡(jiǎn)化實(shí)現(xiàn)了:,高的指令吞吐量; 出色的實(shí)時(shí)中斷響應(yīng); 小的、高性價(jià)比的處理器宏單元。,3.2 ARM7TDMI,三級(jí)流水線,ARM7TDMI處理器使用流水線來(lái)增加處理器指令流的速度。這樣可使幾個(gè)操作同時(shí)進(jìn)行,并使處理和存儲(chǔ)器系統(tǒng)連續(xù)操作,能提供0.9MIPS/MHz的指令執(zhí)行速度。 ARM7TDMI的流水線分3級(jí),分別為: 取指譯碼執(zhí)行,3.2 ARM7TDMI,三級(jí)流水線,正常操作過(guò)程中,在執(zhí)行一條指令的同時(shí)對(duì)下一條指令進(jìn)行譯碼,并將第三條指令從存儲(chǔ)器中取出。這三條指令之間的位置關(guān)系如下表所示:,3.2 ARM7TDMI,存儲(chǔ)器訪問(wèn),ARM7TDMI處理器使用了馮諾依曼(Von Neumann)結(jié)構(gòu),指令和數(shù)據(jù)共用一條32位總線。只有裝載、存儲(chǔ)和交換指令可以對(duì)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行訪問(wèn)。 數(shù)據(jù)可以是字節(jié)( 8位)、半字( 16位)或者字(32位)。,3.2 ARM7TDMI,存儲(chǔ)器訪問(wèn),計(jì)算機(jī)結(jié)構(gòu)說(shuō)明: “馮諾依曼” 結(jié)構(gòu):把代碼作為一種特殊的數(shù)據(jù)來(lái)操作,指令總線和數(shù)據(jù)總線及其存儲(chǔ)區(qū)域是統(tǒng)一的; “哈佛”結(jié)構(gòu):指令總線和數(shù)據(jù)總線及其存儲(chǔ)區(qū)是分開、獨(dú)立的。,3.2 ARM7TDMI,存儲(chǔ)器訪問(wèn),ARM7TDMI處理器的存儲(chǔ)器接口可以使?jié)撛诘男阅艿靡詫?shí)現(xiàn),這樣減少了存儲(chǔ)器的使用。對(duì)速度有嚴(yán)格要求的控制信號(hào)使用流水線,這樣使系統(tǒng)控制功能以標(biāo)準(zhǔn)的低功耗邏輯實(shí)現(xiàn)。ARM7TDMI處理器的存儲(chǔ)器周期有4個(gè)基本類型: 內(nèi)部周期; 非連續(xù)的周期; 連續(xù)的周期; 協(xié)處理器寄存器的傳輸周期。,第3章 目錄,1.簡(jiǎn)介 2.ARM7TDMI 3.ARM7TDMI的模塊和內(nèi)部框圖 4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型 5.處理器狀態(tài) 6.處理器模式 7.內(nèi)部寄存器 8. 程序狀態(tài)寄存器,9.異常 10.中斷延遲 11.復(fù)位 12.存儲(chǔ)器及存儲(chǔ)器映射I/O 13.尋址方式簡(jiǎn)介 14.ARM7指令簡(jiǎn)介 15.協(xié)處理器接口 16.調(diào)試接口簡(jiǎn)介 17.ETM接口簡(jiǎn)介,3.3 ARM7TDMI的模塊和內(nèi)核框圖,ARM7TDMI模塊,3.3 ARM7TDMI的模塊和內(nèi)核框圖,ARM7TDMI模塊,地址寄存器,寄存器組 31*32位寄存器 (6個(gè)狀態(tài)寄存器),地址增加器,乘法器,桶形移位器,32位ALU,寫數(shù)據(jù)寄存器,指令管線讀數(shù)據(jù)寄存器 Thumb指令譯碼器,指令譯碼 和 控制邏輯,ADDR31:0,CLK,CLEN,CFGBIGEND,nIRQ,nFIQ,nRESET,ABORT,LOCK,WRITE,SIZE1:0,PROT1:0,TRANS1:0,DBG輸出,DBG輸入,CP控制,CP握手,WDATA31:0,RDATA31:0,掃描調(diào)試 控制,3.3 ARM7TDMI的模塊和內(nèi)核框圖,ARM7TDMI模塊,第3章 目錄,1.簡(jiǎn)介 2.ARM7TDMI 3.ARM7TDMI的模塊和內(nèi)部框圖 4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型 5.處理器狀態(tài) 6.處理器模式 7.內(nèi)部寄存器 8. 程序狀態(tài)寄存器,9.異常 10.中斷延遲 11.復(fù)位 12.存儲(chǔ)器及存儲(chǔ)器映射I/O 13.尋址方式簡(jiǎn)介 14.ARM7指令簡(jiǎn)介 15.協(xié)處理器接口 16.調(diào)試接口簡(jiǎn)介 17.ETM接口簡(jiǎn)介,3.4 體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型,體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型,ARM處理器支持下列數(shù)據(jù)類型: 字節(jié) 8位 半字 16位(必須分配為占用兩個(gè)字節(jié)) 字 32為(必須分配為占用4各字節(jié)),體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型,注意: V4版本之后的ARM結(jié)構(gòu)都支持這3種結(jié)構(gòu)(包括V4版本),而以前的版本只支持字節(jié)和字; 當(dāng)數(shù)據(jù)類型定義為無(wú)符號(hào)型時(shí),N位數(shù)據(jù)值使用正常的二進(jìn)制格式表示范圍為02N-1的非負(fù)整數(shù); 當(dāng)數(shù)據(jù)類型定義為有符號(hào)型時(shí),N位數(shù)據(jù)值使用2的補(bǔ)碼格式表示范圍為-2N-1+2N-1-1的整數(shù);,3.4 體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型,體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型,注意: 所有數(shù)據(jù)操作,例如ADD,都以字為單位; 裝載和保存指令可以對(duì)字節(jié)、半字和字進(jìn)行操作,當(dāng)裝載字節(jié)或半字時(shí)自動(dòng)實(shí)現(xiàn)零擴(kuò)展或符號(hào)擴(kuò)展; ARM指令的長(zhǎng)度剛好是1個(gè)字(分配為占用4個(gè)字節(jié)),Thumb指令的長(zhǎng)度剛好是半字(占用2個(gè)字節(jié))。,3.4 體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型,第3章 目錄,1.簡(jiǎn)介 2.ARM7TDMI 3.ARM7TDMI的模塊和內(nèi)部框圖 4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型 5.處理器狀態(tài) 6.處理器模式 7.內(nèi)部寄存器 8. 程序狀態(tài)寄存器,9.異常 10.中斷延遲 11.復(fù)位 12.存儲(chǔ)器及存儲(chǔ)器映射I/O 13.尋址方式簡(jiǎn)介 14.ARM7指令簡(jiǎn)介 15.協(xié)處理器接口 16.調(diào)試接口簡(jiǎn)介 17.ETM接口簡(jiǎn)介,3.5 處理器狀態(tài),處理器狀態(tài),ARM7TDMI處理器內(nèi)核使用V4T版本的ARM結(jié)構(gòu),該結(jié)構(gòu)包含32位ARM指令集和16位Thumb指令集。因此ARM7TDMI處理器有兩種操作狀態(tài): ARM狀態(tài):32位,這種狀態(tài)下執(zhí)行的是字方式的ARM指令; Thumb狀態(tài):16位,這種狀態(tài)下執(zhí)行半字方式的Thumb指令。,注意:兩個(gè)狀態(tài)之間的切換并不影響處理器模式或寄存器內(nèi)容。,3.5 處理器狀態(tài),處理器狀態(tài),使用BX指令將ARM7TDMI內(nèi)核的操作狀態(tài)在ARM狀態(tài)和Thumb狀態(tài)之間進(jìn)行切換,程序如下所示。,;從Arm狀態(tài)切換到Thumb狀態(tài) LDR R0,=Lable+1 BX R0 ;從Thumb狀態(tài)切換到ARM狀態(tài) LDR R0,=Lable BX R0,地址最低位為1,表示切換到Thumb狀態(tài),地址最低位為0,表示切換到ARM狀態(tài),跳轉(zhuǎn)地址標(biāo)號(hào),第3章 目錄,1.簡(jiǎn)介 2.ARM7TDMI 3.ARM7TDMI的模塊和內(nèi)部框圖 4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型 5.處理器狀態(tài) 6.處理器模式 7.內(nèi)部寄存器 8. 程序狀態(tài)寄存器,9.異常 10.中斷延遲 11.復(fù)位 12.存儲(chǔ)器及存儲(chǔ)器映射I/O 13.尋址方式簡(jiǎn)介 14.ARM7指令簡(jiǎn)介 15.協(xié)處理器接口 16.調(diào)試接口簡(jiǎn)介 17.ETM接口簡(jiǎn)介,3.6 處理器模式,簡(jiǎn)介,ARM體系結(jié)構(gòu)支持7種處理器模式,分別為:用戶模式、快中斷模式、中斷模式、管理模式、中止模式、未定義模式和系統(tǒng)模式,如下表所示。這樣的好處是可以更好的支持操作系統(tǒng)并提高工作效率。ARM7TDMI完全支持這七種模式。,3.6 處理器模式,處理器模式,3.6 處理器模式,特權(quán)模式,除用戶模式外,其它模式均為特權(quán)模式。ARM內(nèi)部寄存器和一些片內(nèi)外設(shè)在硬件設(shè)計(jì)上只允許(或者可選為只允許)特權(quán)模式下訪問(wèn)。此外,特權(quán)模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。,3.6 處理器模式,異常模式,這五種模式稱為異常模式。它們除了可以通過(guò)程序切換進(jìn)入外,也可以由特定的異常進(jìn)入。當(dāng)特定的異常出現(xiàn)時(shí),處理器進(jìn)入相應(yīng)的模式。每種異常模式都有一些獨(dú)立的寄存器,以避免異常退出時(shí)用戶模式的狀態(tài)不可靠。,3.6 處理器模式,用戶和系統(tǒng)模式,這兩種模式都不能由異常進(jìn)入,而且它們使用完全相同的寄存器組。 系統(tǒng)模式是特權(quán)模式,不受用戶模式的限制。操作系統(tǒng)在該模式下訪問(wèn)用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一些特權(quán)任務(wù)可以使用這個(gè)模式訪問(wèn)一些受控的資源。,第3章 目錄,1.簡(jiǎn)介 2.ARM7TDMI 3.ARM7TDMI的模塊和內(nèi)部框圖 4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型 5.處理器狀態(tài) 6.處理器模式 7.內(nèi)部寄存器 8. 程序狀態(tài)寄存器,9.異常 10.中斷延遲 11.復(fù)位 12.存儲(chǔ)器及存儲(chǔ)器映射I/O 13.尋址方式簡(jiǎn)介 14.ARM7指令簡(jiǎn)介 15.協(xié)處理器接口 16.調(diào)試接口簡(jiǎn)介 17.ETM接口簡(jiǎn)介,3.7 內(nèi)部寄存器,簡(jiǎn)介,在ARM7TDMI處理器內(nèi)部有37個(gè)用戶可見的寄存器。 在不同的工作模式和處理器狀態(tài)下,程序員可以訪問(wèn)的寄存器也不盡相同。,ARM狀態(tài)各模式下的寄存器,ARM狀態(tài)各模式下的寄存器,所有的37個(gè)寄存器,分成兩大類: 31個(gè)通用32位寄存器; 6個(gè)狀態(tài)寄存器。,ARM狀態(tài)各模式下可以訪問(wèn)的寄存器,一般的通用寄存器,在匯編語(yǔ)言中寄存器R0R13為保存數(shù)據(jù)或地址值的通用寄存器。它們是完全通用的寄存器,不會(huì)被體系結(jié)構(gòu)作為特殊用途,并且可用于任何使用通用寄存器的指令。,一般的通用寄存器,其中R0R7為未分組的寄存器,也就是說(shuō)對(duì)于任何處理器模式,這些寄存器都對(duì)應(yīng)于相同的32位物理寄存器。,一般的通用寄存器,寄存器R8R14為分組寄存器。它們所對(duì)應(yīng)的物理寄存器取決于當(dāng)前的處理器模式,幾乎所有允許使用通用寄存器的指令都允許使用分組寄存器,一般的通用寄存器,寄存器R8R12有兩個(gè)分組的物理寄存器。一個(gè)用于除FIQ模式之外的所有寄存器模式,另一個(gè)用于FIQ模式。這樣在發(fā)生FIQ中斷后,可以加速FIQ的處理速度。,一般的通用寄存器,寄存器R13、R14分別有6個(gè)分組的物理寄存器。一個(gè)用于用戶和系統(tǒng)模式,其余5個(gè)分別用于5種異常模式。,堆棧指針寄存器R13(SP),寄存器R13常作為堆棧指針(SP)。在ARM指令集當(dāng)中,沒(méi)有以特殊方式使用R13的指令或其它功能,只是習(xí)慣上都這樣使用。但是在Thumb指令集中存在使用R13的指令。,鏈接寄存器R14(LR),R14為鏈接寄存器(LR),在結(jié)構(gòu)上有兩個(gè)特殊功能: 在每種模式下,模式自身的R14版本用于保存子程序返回地址; 當(dāng)發(fā)生異常時(shí),將R14對(duì)應(yīng)的異常模式版本設(shè)置為異常返回地址(有些異常有一個(gè)小的固定偏移量)。,3.7 內(nèi)部寄存器,R14寄存器與子程序調(diào)用,MOV PC,LR,R14(地址A),1.程序A執(zhí)行過(guò)程中調(diào)用程序B;,操作流程,2.程序跳轉(zhuǎn)至標(biāo)號(hào)Lable,執(zhí)行程序B。同時(shí)硬件將“BL Lable”指令的下一條指令所在地址存入R14;,3.程序B執(zhí)行最后,將R14寄存器的內(nèi)容放入PC,返回程序A;,3.7 內(nèi)部寄存器,R14寄存器與異常發(fā)生,異常發(fā)生時(shí),程序要跳轉(zhuǎn)至異常服務(wù)程序,對(duì)返回地址的處理與子程序調(diào)用類似,都是由硬件完成的。區(qū)別在于有些異常有一個(gè)小常量的偏移。,3.7 內(nèi)部寄存器,R14寄存器注意要點(diǎn),當(dāng)發(fā)生異常嵌套時(shí),這些異常之間可能會(huì)發(fā)生沖突。 例如:如果用戶在用戶模式下執(zhí)行程序時(shí)發(fā)生了IRQ中斷,用戶模式寄存器不會(huì)被破壞。但是如果允許在IRQ模式下的中斷處理程序重新使能IRQ中斷,并且發(fā)生了嵌套的IRQ中斷時(shí),外部中斷處理程序保存在R14_irq中的任何值都將被嵌套中斷的返回地址所覆蓋。,3.7 內(nèi)部寄存器,R14寄存器注意要點(diǎn),a,return,地址A,1.執(zhí)行用戶模式下的程序;,2.發(fā)生IRQ中斷,硬件將某個(gè)地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒(méi)有被破壞;,3. IRQ服務(wù)程序A執(zhí)行完畢,將R14_irq寄存器的內(nèi)容減去某個(gè)常量后存入PC,返回之前被中斷的程序;,未被破壞,3.7 內(nèi)部寄存器,R14寄存器注意要點(diǎn),a,地址A,1.執(zhí)行用戶模式下的程序;,2.發(fā)生IRQ中斷,硬件將某個(gè)地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒(méi)有被破壞;,3. IRQ服務(wù)程序A執(zhí)行完畢,將R14_irq寄存器的內(nèi)容減去某個(gè)常量后存入PC,返回之前被中斷的程序;,未被破壞,a,return,地址B,4. 如果在IRQ處理程序中打開IRQ中斷,并且再次發(fā)生IRQ中斷,或者調(diào)用子程序;,5. 硬件將返回地址保存在R14_irq寄存器中,原來(lái)保存的返回地址將被覆蓋,造成錯(cuò)誤;,被破壞,6. 在程序B返回到程序A,然后在返回到用戶模式下被中斷的程序時(shí),發(fā)生錯(cuò)誤,將不能正確返回;,return,return,解決辦法是確保R14的對(duì)應(yīng)版本在發(fā)生中斷嵌套時(shí)不再保存任何有意義的值(將R14入棧),或者切換到其它處理器模式下。,ARM 和Thumb的區(qū)別,Thumb代碼所需要的存儲(chǔ)空間約為ARM代碼的60%-70% Thumb使用的指令數(shù)比ARM代碼多約30%-40% 若使用32位存儲(chǔ)器,ARM代碼比Thumb代碼快約40% 若使用16位存儲(chǔ)器,Thumb代碼比ARM快約40%-50%,程序計(jì)數(shù)器R15(PC),寄存器R15為程序計(jì)數(shù)器(PC),它指向正在取指的地址??梢哉J(rèn)為它是一個(gè)通用寄存器,但是對(duì)于它的使用有許多與指令相關(guān)的限制或特殊情況。如果R15使用的方式超出了這些限制,那么結(jié)果將是不可預(yù)測(cè)的。,3.7 內(nèi)部寄存器,讀R15的限制,正常操作時(shí),從R15讀取的值是處理器正在取指的地址,即當(dāng)前正在執(zhí)行指令的地址加上8個(gè)字節(jié)(兩條ARM指令的長(zhǎng)度)。由于ARM指令總是以字為單位,所以R15寄存器的最低兩位總是為0。,3.7 內(nèi)部寄存器,讀R15的限制,當(dāng)使用STR或STM指令保存R15時(shí),會(huì)有一個(gè)例外。這些指令可能將當(dāng)前指令地址加8字節(jié)或加12字節(jié)保存(將來(lái)可能還有其它數(shù)字)。偏移量是8還是12取決于具體的ARM芯片,但是對(duì)于一個(gè)確定的芯片,這個(gè)值是一個(gè)常量。 所以最好避免使用STR和STM指令來(lái)保存R15,如果很難做到,那么應(yīng)當(dāng)在程序中計(jì)算出該芯片的偏移量。,3.7 內(nèi)部寄存器,讀R15的限制,計(jì)算偏移量程序代碼:,SUB R1,PC,#4 ;R1=下面STR指令的地址 STR PC,R0 ;保存STR指令地址+偏移量 LDR R0,R0 ;然后重裝 SUB R0,R0,R1 ;計(jì)算偏移量,3.7 內(nèi)部寄存器,寫R15的限制,正常操作時(shí),寫入R15 的值被當(dāng)作一個(gè)指令地址,程序從這個(gè)地址處繼續(xù)執(zhí)行(相當(dāng)于執(zhí)行一次無(wú)條件跳轉(zhuǎn))。,3.7 內(nèi)部寄存器,寫R15的限制,由于ARM指令以字節(jié)為邊界,因此寫入R15的值最低兩位通常為0b00。具體的規(guī)則取決于內(nèi)核結(jié)構(gòu)的版本: 在ARM結(jié)構(gòu)V3版及以下版本中,寫入R15的值的最低兩位被忽略,因此跳轉(zhuǎn)地址由指令的實(shí)際目標(biāo)地址(寫入R15的值)和0xFFFFFFFC相與得到; 在ARM結(jié)構(gòu)V4版及以上版本中,寫入R15的值的最低兩位為0,如果不是,結(jié)果將不可預(yù)測(cè)。,程序狀態(tài)寄存器CPSR,寄存器CPSR為程序狀態(tài)寄存器,在異常模式中,另外一個(gè)寄存器“程序狀態(tài)保存寄存器(SPSR)”可以被訪問(wèn)。每種異常都有自己的SPSR,在因?yàn)楫惓J录M(jìn)入異常時(shí)它保存CPSR的當(dāng)前值,異常退出時(shí)可通過(guò)它恢復(fù)CPSR。,3.7 內(nèi)部寄存器,Thumb狀態(tài)寄存器,Thumb狀態(tài)寄存器集是ARM狀態(tài)集的子集,程序員可以直接訪問(wèn)的寄存器為: 8個(gè)通用寄存器R0R7; 程序計(jì)數(shù)器(PC); 堆棧指針(SP); 鏈接寄存器(LR); 有條件訪問(wèn)程序狀態(tài)寄存器( CPSR)。,Thumb狀態(tài)各模式下的寄存器,注意:括號(hào)內(nèi)為ATPCS中寄存器的命名,可以使用RN匯編偽指令將寄存器定義多個(gè)名字。其中ADS1.2的匯編程序直接支持這些名稱,但注意a1a4,v1v4必須用小寫。,Thumb狀態(tài)下的通用寄存器,在匯編語(yǔ)言中寄存器R0R7為保存數(shù)據(jù)或地址值的通用寄存器。對(duì)于任何處理器模式,它們中的每一個(gè)都對(duì)應(yīng)于相同的32為物理寄存器。它們是完全通用的寄存器,不會(huì)被體系結(jié)構(gòu)作為特殊的用途,并且可用于任何使用通用寄存器的指令。,Thumb狀態(tài)下的堆棧指針寄存器(SP),堆棧指針SP對(duì)應(yīng)ARM狀態(tài)的寄存器R13。每個(gè)異常模式都有其自身的SP分組版本,SP通常指向各異常模式所專用的堆棧。 注意:在發(fā)生異常時(shí),處理器自動(dòng)進(jìn)入ARM狀態(tài)。,Thumb狀態(tài)下的鏈接寄存器R14(LR),鏈接寄存器LR對(duì)應(yīng)ARM狀態(tài)寄存器R14,在結(jié)構(gòu)上有兩個(gè)特殊功能,詳見“ARM狀態(tài)下的鏈接寄存器LR”。 注意:在發(fā)生異常時(shí),處理器自動(dòng)進(jìn)入ARM狀態(tài)。,3.7 內(nèi)部寄存器,ARM狀態(tài)和Thumb狀態(tài)之間寄存器的關(guān)系,Thumb狀態(tài)寄存器與ARM狀態(tài)寄存器有如下的關(guān)系: Thumb狀態(tài)R0R7與ARM狀態(tài)R0R7相同; 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)寄存器在Arm狀態(tài)寄存器上的映射,低寄存器,高寄存器,3.7 內(nèi)部寄存器,在Thumb狀態(tài)中訪問(wèn)高寄存器,在Thumb狀態(tài)中,高寄存器(R8R15)不是標(biāo)準(zhǔn)寄存器集的一部分。匯編語(yǔ)言程序員對(duì)它們的訪問(wèn)受到限制,但可以將它們用于快速暫存。 可以使用MOV、CMP和ADD指令對(duì)高寄存器操作。,第3章 目錄,1.簡(jiǎn)介 2.ARM7TDMI 3.ARM7TDMI的模塊和內(nèi)部框圖 4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型 5.處理器狀態(tài) 6.處理器模式 7.內(nèi)部寄存器 8. 程序狀態(tài)寄存器,9.異常 10.中斷延遲 11.復(fù)位 12.存儲(chǔ)器及存儲(chǔ)器映射I/O 13.尋址方式簡(jiǎn)介 14.ARM7指令簡(jiǎn)介 15.協(xié)處理器接口 16.調(diào)試接口簡(jiǎn)介 17.ETM接口簡(jiǎn)介,3.8 程序狀態(tài)寄存器,簡(jiǎn)介,ARM7TDMI內(nèi)核包含1個(gè)CPSR和5個(gè)供異常處理程序使用的SPSR。CPSR反映了當(dāng)前處理器的狀態(tài),其包含: 4個(gè)條件代碼標(biāo)志(負(fù)(N)、零(Z)、進(jìn)位(C)和溢出(V) ); 2個(gè)中斷禁止位,分別控制一種類型的中斷; 5個(gè)對(duì)當(dāng)前處理器模式進(jìn)行編碼的位; 1個(gè)用于指示當(dāng)前執(zhí)行指令(ARM還是Thumb)的位。,3.8 程序狀態(tài)寄存器,簡(jiǎn)介,條件代碼標(biāo)志,保留,控制位,溢出標(biāo)志,進(jìn)位或借位擴(kuò)展,零,負(fù)或小于,IRQ禁止,FIQ禁止,狀態(tài)位,模式位,N,Z,C,V,I,T,F,CPSR寄存器的格式,3.8 程序狀態(tài)寄存器,簡(jiǎn)介,每個(gè)異常模式還帶有一個(gè)程序狀態(tài)保存寄存器

溫馨提示

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