ARM微處理器的結(jié)構(gòu).ppt
《ARM微處理器的結(jié)構(gòu).ppt》由會員分享,可在線閱讀,更多相關(guān)《ARM微處理器的結(jié)構(gòu).ppt(42頁珍藏版)》請在裝配圖網(wǎng)上搜索。
ARM處理器編程模型,第2章,本章目標(biāo),了解ARM的結(jié)構(gòu)特點了解ARM的編程的工作模式了解ARM的內(nèi)部資源了解ARM異常的處理機制,本章結(jié)構(gòu),,,,ARM狀態(tài)下寄存器,Thumb狀態(tài)下寄存器,寄存器組織,,,,ARM微處理器的工作模式,,,ARM微處理器編程模型,ARM微處理器的工作狀態(tài),,程序狀態(tài)寄存器,數(shù)據(jù)存儲格式,指令長度及數(shù)據(jù)結(jié)構(gòu),,,異常,,,,,對異常的響應(yīng),從異常返回,,,異常類型,,2-1ARM微處理器的工作狀態(tài),處理器狀態(tài):ARM處理器內(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)容。,,狀態(tài)切換的一個例子,使用BX指令將ARM內(nèi)核的操作狀態(tài)在ARM狀態(tài)和Thumb狀態(tài)之間進行切換。,ARM指令集,Thumb指令集,,CODE32LDRR0,=Lable+1BXR0CODE16LableMOVR1,#12,CODE16LDRR0,=LableBXR0CODE32LableMOVR1,#10,執(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-1ARM微處理器的工作狀態(tài),ARM體系結(jié)構(gòu)支持7種處理器模式,分別為:用戶模式、快中斷模式、中斷模式、管理模式、中止模式、未定義模式和系統(tǒng)模式。這樣的好處是可以更好的支持操作系統(tǒng)并提高工作效率。ARM完全支持這七種模式。,2-2寄存器工作模式,,除用戶模式外,其它模式均為特權(quán)模式。ARM內(nèi)部寄存器和一些片內(nèi)外設(shè)在硬件設(shè)計上只允許(或者可選為只允許)特權(quán)模式下訪問。此外,特權(quán)模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。,,,,處理器模式,這兩種模式都不能由異常進入,想要進入必須修改CPSR,而且它們使用完全相同的寄存器組。系統(tǒng)模式是特權(quán)模式,不受用戶模式的限制。操作系統(tǒng)在該模式下訪問用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一些特權(quán)任務(wù)可以使用這個模式訪問一些受控的資源。,這五種模式稱為異常模式。它們除了可以通過程序切換進入外,也可以由特定的異常進入。當(dāng)特定的異常出現(xiàn)時,處理器進入相應(yīng)的模式。每種異常模式都有一些獨立的寄存器,以避免異常退出時用戶模式的狀態(tài)不可靠。,何時進入異常模式,具體規(guī)定如下:處理器復(fù)位之后進入管理模式,操作系統(tǒng)內(nèi)核通常處于管理模式;當(dāng)處理器訪問存儲器失敗時,進入數(shù)據(jù)訪問中止模式;當(dāng)處理器遇到?jīng)]有定義或不支持的指令時,進入未定義模式;中斷模式與快速中斷模式分別對ARM處理器2種不同級別的中斷作出響應(yīng)。,2-2寄存器工作模式,階段小結(jié),ARM9處理器支持的7種寄存器工作模式,2-3寄存器組織,ARM9處理器內(nèi)部寄存器組織:在ARM9處理器內(nèi)部有37個用戶可見的寄存器。在不同的工作模式和處理器狀態(tài)下,程序員可以訪問的寄存器也不盡相同。,ARM狀態(tài)各模式下的寄存器,2-3-1ARM狀態(tài)下的寄存器組織,所有的37個寄存器,分成兩大類:31個通用32位寄存器;6個狀態(tài)寄存器。,2-3-1ARM狀態(tài)下的寄存器組織,2-3-1ARM狀態(tài)下的寄存器組織,在匯編語言中寄存器R0~R13為保存數(shù)據(jù)或地址值的通用寄存器。它們是完全通用的寄存器,不會被體系結(jié)構(gòu)作為特殊用途,并且可用于任何使用通用寄存器的指令。,2-3-1ARM狀態(tài)下的寄存器組織,其中R0~R7為未分組的寄存器,也就是說對于任何處理器模式,這些寄存器都對應(yīng)于相同的32位物理寄存器。,2-3-1ARM狀態(tài)下的寄存器組織,寄存器R8~R14為分組寄存器。它們所對應(yīng)的物理寄存器取決于當(dāng)前的處理器模式,幾乎所有允許使用通用寄存器的指令都允許使用分組寄存器,2-3-1ARM狀態(tài)下的寄存器組織,,,寄存器R8~R12有兩個分組的物理寄存器。一個用于除FIQ模式之外的所有寄存器模式,另一個用于FIQ模式。這樣在發(fā)生FIQ中斷后,可以加速FIQ的處理速度。,2-3-1ARM狀態(tài)下的寄存器組織,,,寄存器R13、R14分別有6個分組的物理寄存器。一個用于用戶和系統(tǒng)模式,其余5個分別用于5種異常模式。,2-3-1ARM狀態(tài)下的寄存器組織,,,寄存器R13常作為堆棧指針(SP)。在ARM指令集當(dāng)中,沒有以特殊方式使用R13的指令或其它功能,只是習(xí)慣上都這樣使用。但是在Thumb指令集中存在使用R13的指令。,2-3-1ARM狀態(tài)下的寄存器組織,,,R14為鏈接寄存器(LR),在結(jié)構(gòu)上有兩個特殊功能:在每種模式下,模式自身的R14版本用于保存子程序返回地址;當(dāng)發(fā)生異常時,將R14對應(yīng)的異常模式版本設(shè)置為異常返回地址(有些異常有一個小的固定偏移量)。,2-3-1ARM狀態(tài)下的寄存器組織,在Thumb狀態(tài)各模式下實際訪問的寄存器,Thumb狀態(tài)寄存器集是ARM狀態(tài)集的子集,程序員可以直接訪問的寄存器為:8個通用寄存器R0~R7;程序計數(shù)器(PC);堆棧指針(SP);鏈接寄存器(LR);當(dāng)前程序狀態(tài)寄存器(CPSR)。,2-3-2Thumb狀態(tài)下的寄存器組織,,在Thumb狀態(tài)各模式下的寄存器,,,,未分組的通用寄存器,第二類分組的通用寄存器,在匯編語言中寄存器R0~R7為通用寄存器,對于任何處理器模式,它們中的每一個都對應(yīng)于相同的32為物理寄存器。,堆棧指針SP對應(yīng)ARM狀態(tài)的寄存器R13。每個異常模式都有其自身的SP分組版本,SP通常指向各異常模式所專用的堆棧。注意:在發(fā)生異常時,處理器自動進入ARM狀態(tài)。,鏈接寄存器LR對應(yīng)ARM狀態(tài)寄存器R14。注意:在發(fā)生異常時,處理器自動進入ARM狀態(tài)。,2-3-2Thumb狀態(tài)下的寄存器組織,ARM狀態(tài),,Thumb寄存器在ARM狀態(tài)寄存器上的映射,Thumb狀態(tài),在Thumb狀態(tài)中,高端寄存器的訪問是受到限制的,只有MOV、CMP和ADD指令可以對其訪問,2-3-2Thumb狀態(tài)下的寄存器組織,,,,,,狀態(tài)切換過程,,,程序在正常運行的過程中,復(fù)位事件產(chǎn)生,導(dǎo)致系統(tǒng)復(fù)位。,2-3-2Thumb狀態(tài)下的寄存器組織,簡介,ARM內(nèi)核包含1個CPSR和5個僅供異常處理程序使用的SPSR。CPSR反映當(dāng)前處理器的狀態(tài),其包含:4個條件代碼標(biāo)志(負(fù)標(biāo)志N、零標(biāo)志Z、進位標(biāo)志C和溢出標(biāo)志V);2個中斷禁止位(IRQ禁止與FIQ禁止);5個對當(dāng)前處理器模式進行編碼的位(M[4:0]);1個用于指示當(dāng)前執(zhí)行指令的位(ARM指令還是Thumb指令)。,2-3-3程序狀態(tài)寄存器CPSR,程序狀態(tài)寄存器的格式,條件代碼標(biāo)志,保留,控制位,溢出標(biāo)志,進位或借位擴展,零,負(fù)或小于,IRQ禁止,FIQ禁止,狀態(tài)位,模式位,N,Z,C,V,I,T,F,2-3-3程序狀態(tài)寄存器CPSR,條件代碼標(biāo)志,各標(biāo)志位的含義如下:負(fù)標(biāo)志N:運算結(jié)果的第31位值,記錄標(biāo)志設(shè)置操作的結(jié)果;零標(biāo)志Z:如果標(biāo)志設(shè)置的操作為0,則置位;進位標(biāo)志C:記錄無符號加法溢出,減法無借位,循環(huán)移位;溢出標(biāo)志V:記錄標(biāo)志設(shè)置操作的有符號溢出。,2-3-3程序狀態(tài)寄存器CPSR,警告:絕對不要強制改變CPSR寄存器中的控制位T。如果這樣做,處理器將進入一個無法預(yù)測的狀態(tài)。,控制位,1、中斷禁止控制位I和F;,2、處理器狀態(tài)位T;,3、處理器模式位M0~M4。,注意:不是所有模式位的組合都定義了有效的處理器模式,如果將非法值寫入M[4:0]中,處理器將進入一個無法恢復(fù)的模式。,2-3-3程序狀態(tài)寄存器CPSR,保留位,CPSR中的保留位被保留將來使用。當(dāng)改變CPSR標(biāo)志和控制位時,請確認(rèn)沒有改變這些保留位。另外,確保程序不依賴于包含特定值的保留位,因為將來的處理器可能會將這些位設(shè)置為1或者0。,2-3-3程序狀態(tài)寄存器CPSR,2-4ARM體系結(jié)構(gòu)的數(shù)據(jù)存儲格式,注意:ARM體系結(jié)構(gòu)較新的版本對這兩種數(shù)據(jù)存儲方式都支持。某些較老的版本只支持小字節(jié)序存儲方式,編程的時候需要注意。,處理器用于存儲數(shù)據(jù)的方式有兩種,分別為大字節(jié)序格式和小字節(jié)序格式:大字節(jié)序格式:字?jǐn)?shù)據(jù)的高字節(jié)存儲在低地址中,而字?jǐn)?shù)據(jù)的低字節(jié)則存放在高地址中。小字節(jié)序格式:字?jǐn)?shù)據(jù)的高字節(jié)存儲在高地址中,而字?jǐn)?shù)據(jù)的低字節(jié)則存放在低地址中。,存儲器格式,存儲器系統(tǒng)有兩種映射機制:小端存儲器系統(tǒng):在小端格式中,數(shù)據(jù)的高字節(jié)存放在高地址中。大端存儲器系統(tǒng):在大端格式中,數(shù)據(jù)的高字節(jié)存放在低地址中。,0 x120 x340 x560 x78,0 x780 x560 x340 x12,2-4ARM體系結(jié)構(gòu)的數(shù)據(jù)存儲格式,2-5指令長度及數(shù)據(jù)類型,ARM9處理器指令長度:在ARM狀態(tài)下,ARM微處理器的指令長度是32位;在Thumb狀態(tài)下,指令長度為16位。ARM9處理器數(shù)據(jù)類型:ARM微處理器中支持字節(jié)(8位)、半字(16位)、字(32位)三種數(shù)據(jù)類型,其中,字需要4字節(jié)對齊(地址的低兩位為0)、半字需要2字節(jié)對齊(地址的最低位為0)。,如果一個數(shù)據(jù)是從偶地址開始的連續(xù)存儲,那么它就是半字對齊,否則就是非半字對齊;如果一個數(shù)據(jù)是以能被4整除的地址開始的連續(xù)存儲,那么它就是字對齊,否則就是非字對齊。,存儲器的存儲方式,2-5指令長度及數(shù)據(jù)類型,2-6異常,簡介:只要正常的程序流被暫時中止,處理器將進入異常模式。例如響應(yīng)一個來自外設(shè)的中斷。在處理異常之前,ARM9內(nèi)核保存當(dāng)前的處理器狀態(tài)(CPSR->SPSR),這樣當(dāng)處理程序結(jié)束時可以恢復(fù)執(zhí)行原來的程序(SPSR->CPSR)。,2-6-1ARM所支持的異常,,2-6-1ARM所支持的異常,,IRQ(InterruptRequest):中斷請求(IRQ)異常是一個由nIRQ輸入端的低電平所產(chǎn)生的正常中斷。IRQ的優(yōu)先級低于FIQ。對于FIQ序列它是被屏蔽的。任何時候在一個特權(quán)模式下,都可通過置位CPSR中的I位來禁止IRQ。不管異常入口是來自ARM狀態(tài)還是Thumb狀態(tài),IRQ處理程序都會通過執(zhí)行下面的指令從中斷返回:,SUBSPC,R14_irq,#4,2-6-1ARM所支持的異常,,IRQ(InterruptRequest):,,,FIQ,IRQ,(Reserved),DataAbort,PrefetchAbort,SoftwareInterrupt,UndefinedInstruction,Reset,,2-6-1ARM所支持的異常,,FIQ(FastInterruptRequest):快速中斷請求(FIQ)適用于對一個突發(fā)事件的快速響應(yīng),這得益于在ARM狀態(tài)中,快中斷模式有8個專用的寄存器可用來滿足寄存器保護的需要(這可以加速上下文切換的速度)。不管異常入口是來自ARM狀態(tài)還是Thumb狀態(tài),F(xiàn)IQ處理程序都會通過執(zhí)行下面的指令從中斷返回:在一個特權(quán)模式中,可以通過置位CPSR中的F位來禁止FIQ異常。,SUBSPC,R14_fiq,#4,2-6-2對異常的響應(yīng)(進入異常),在異常發(fā)生后,ARM9內(nèi)核會作以下工作:在LR中保存當(dāng)前執(zhí)行指令的下一條指令的地址,即:LR=PC-4;將CPSR復(fù)制到適當(dāng)?shù)腟PSR中;將CPSR模式位強制設(shè)置為與異常類型相對應(yīng)的值;強制PC從相關(guān)的異常向量處取指。ARM9內(nèi)核在處理中斷異常時置位中斷禁止標(biāo)志,這樣可以防止不受控制的異常嵌套。,,BackAddr,JumpAddr,,,,“?”表示對該位不關(guān)心,2-6-2對異常的響應(yīng)(進入異常),進入異常過程:1.程序在系統(tǒng)模式下運行用戶程序,允許IRQ中斷;將CPSR寄存器內(nèi)容存入IRQ模式的SPSR寄存器置位I位(禁止IRQ中斷)清零T位(進入ARM狀態(tài))設(shè)置MOD位,切換處理器模式至IRQ模式將下一條指令的地址存入IRQ模式的LR寄存器將跳轉(zhuǎn)地址存入PC,實現(xiàn)跳轉(zhuǎn),2-6-3從異常返回(退出異常),當(dāng)異常結(jié)束時,異常處理程序必須:將LR(R14)中的值減去偏移量后存入PC,偏移量根據(jù)異常的類型而有所不同;將SPSR的值復(fù)制回CPSR;清零在入口置位的中斷禁止標(biāo)志。,,BackAddr,JumpAddr,,return,,,BackAddr-4,“?”表示對該位不關(guān)心,2-6-3從異常返回(退出異常),在異常處理結(jié)束后,異常處理程序完成以下動作:將SPSR寄存器的值復(fù)制回CPSR寄存器;將LR寄存的值減去一個常量后復(fù)制到PC寄存器,跳轉(zhuǎn)到被中斷的用戶程序。,本章總結(jié),,,,ARM狀態(tài)下寄存器,Thumb狀態(tài)下寄存器,寄存器組織,,,,ARM微處理器的工作模式,,,ARM微處理器編程模型,ARM微處理器的工作狀態(tài),,程序狀態(tài)寄存器,數(shù)據(jù)存儲格式,指令長度及數(shù)據(jù)結(jié)構(gòu),,,異常,,,,,對異常的響應(yīng),從異常返回,,,異常類型,,- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- ARM 微處理器 結(jié)構(gòu)
鏈接地址:http://m.jqnhouse.com/p-3388319.html