ARM微處理器的結(jié)構(gòu).ppt
《ARM微處理器的結(jié)構(gòu).ppt》由會員分享,可在線閱讀,更多相關《ARM微處理器的結(jié)構(gòu).ppt(42頁珍藏版)》請在裝配圖網(wǎng)上搜索。
ARM處理器編程模型,第2章,本章目標,了解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),,,異常,,,,,對異常的響應,從異常返回,,,異常類型,,2-1ARM微處理器的工作狀態(tài),處理器狀態(tài):ARM處理器內(nèi)核包含2套指令系統(tǒng),分別為ARM指令集和Thumb指令,并且各自對應1種處理器的狀態(tài):ARM狀態(tài):32位,處理器執(zhí)行字方式的ARM指令,處理器默認為此狀態(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指令,程序代碼,指令集關系,從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)外設在硬件設計上只允許(或者可選為只允許)特權(quán)模式下訪問。此外,特權(quán)模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。,,,,處理器模式,這兩種模式都不能由異常進入,想要進入必須修改CPSR,而且它們使用完全相同的寄存器組。系統(tǒng)模式是特權(quán)模式,不受用戶模式的限制。操作系統(tǒng)在該模式下訪問用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一些特權(quán)任務可以使用這個模式訪問一些受控的資源。,這五種模式稱為異常模式。它們除了可以通過程序切換進入外,也可以由特定的異常進入。當特定的異常出現(xiàn)時,處理器進入相應的模式。每種異常模式都有一些獨立的寄存器,以避免異常退出時用戶模式的狀態(tài)不可靠。,何時進入異常模式,具體規(guī)定如下:處理器復位之后進入管理模式,操作系統(tǒng)內(nèi)核通常處于管理模式;當處理器訪問存儲器失敗時,進入數(shù)據(jù)訪問中止模式;當處理器遇到?jīng)]有定義或不支持的指令時,進入未定義模式;中斷模式與快速中斷模式分別對ARM處理器2種不同級別的中斷作出響應。,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為未分組的寄存器,也就是說對于任何處理器模式,這些寄存器都對應于相同的32位物理寄存器。,2-3-1ARM狀態(tài)下的寄存器組織,寄存器R8~R14為分組寄存器。它們所對應的物理寄存器取決于當前的處理器模式,幾乎所有允許使用通用寄存器的指令都允許使用分組寄存器,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指令集當中,沒有以特殊方式使用R13的指令或其它功能,只是習慣上都這樣使用。但是在Thumb指令集中存在使用R13的指令。,2-3-1ARM狀態(tài)下的寄存器組織,,,R14為鏈接寄存器(LR),在結(jié)構(gòu)上有兩個特殊功能:在每種模式下,模式自身的R14版本用于保存子程序返回地址;當發(fā)生異常時,將R14對應的異常模式版本設置為異常返回地址(有些異常有一個小的固定偏移量)。,2-3-1ARM狀態(tài)下的寄存器組織,在Thumb狀態(tài)各模式下實際訪問的寄存器,Thumb狀態(tài)寄存器集是ARM狀態(tài)集的子集,程序員可以直接訪問的寄存器為:8個通用寄存器R0~R7;程序計數(shù)器(PC);堆棧指針(SP);鏈接寄存器(LR);當前程序狀態(tài)寄存器(CPSR)。,2-3-2Thumb狀態(tài)下的寄存器組織,,在Thumb狀態(tài)各模式下的寄存器,,,,未分組的通用寄存器,第二類分組的通用寄存器,在匯編語言中寄存器R0~R7為通用寄存器,對于任何處理器模式,它們中的每一個都對應于相同的32為物理寄存器。,堆棧指針SP對應ARM狀態(tài)的寄存器R13。每個異常模式都有其自身的SP分組版本,SP通常指向各異常模式所專用的堆棧。注意:在發(fā)生異常時,處理器自動進入ARM狀態(tài)。,鏈接寄存器LR對應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)切換過程,,,程序在正常運行的過程中,復位事件產(chǎn)生,導致系統(tǒng)復位。,2-3-2Thumb狀態(tài)下的寄存器組織,簡介,ARM內(nèi)核包含1個CPSR和5個僅供異常處理程序使用的SPSR。CPSR反映當前處理器的狀態(tài),其包含:4個條件代碼標志(負標志N、零標志Z、進位標志C和溢出標志V);2個中斷禁止位(IRQ禁止與FIQ禁止);5個對當前處理器模式進行編碼的位(M[4:0]);1個用于指示當前執(zhí)行指令的位(ARM指令還是Thumb指令)。,2-3-3程序狀態(tài)寄存器CPSR,程序狀態(tài)寄存器的格式,條件代碼標志,保留,控制位,溢出標志,進位或借位擴展,零,負或小于,IRQ禁止,FIQ禁止,狀態(tài)位,模式位,N,Z,C,V,I,T,F,2-3-3程序狀態(tài)寄存器CPSR,條件代碼標志,各標志位的含義如下:負標志N:運算結(jié)果的第31位值,記錄標志設置操作的結(jié)果;零標志Z:如果標志設置的操作為0,則置位;進位標志C:記錄無符號加法溢出,減法無借位,循環(huán)移位;溢出標志V:記錄標志設置操作的有符號溢出。,2-3-3程序狀態(tài)寄存器CPSR,警告:絕對不要強制改變CPSR寄存器中的控制位T。如果這樣做,處理器將進入一個無法預測的狀態(tài)。,控制位,1、中斷禁止控制位I和F;,2、處理器狀態(tài)位T;,3、處理器模式位M0~M4。,注意:不是所有模式位的組合都定義了有效的處理器模式,如果將非法值寫入M[4:0]中,處理器將進入一個無法恢復的模式。,2-3-3程序狀態(tài)寄存器CPSR,保留位,CPSR中的保留位被保留將來使用。當改變CPSR標志和控制位時,請確認沒有改變這些保留位。另外,確保程序不依賴于包含特定值的保留位,因為將來的處理器可能會將這些位設置為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é)序格式:字數(shù)據(jù)的高字節(jié)存儲在低地址中,而字數(shù)據(jù)的低字節(jié)則存放在高地址中。小字節(jié)序格式:字數(shù)據(jù)的高字節(jié)存儲在高地址中,而字數(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異常,簡介:只要正常的程序流被暫時中止,處理器將進入異常模式。例如響應一個來自外設的中斷。在處理異常之前,ARM9內(nèi)核保存當前的處理器狀態(tài)(CPSR->SPSR),這樣當處理程序結(jié)束時可以恢復執(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ā)事件的快速響應,這得益于在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對異常的響應(進入異常),在異常發(fā)生后,ARM9內(nèi)核會作以下工作:在LR中保存當前執(zhí)行指令的下一條指令的地址,即:LR=PC-4;將CPSR復制到適當?shù)腟PSR中;將CPSR模式位強制設置為與異常類型相對應的值;強制PC從相關的異常向量處取指。ARM9內(nèi)核在處理中斷異常時置位中斷禁止標志,這樣可以防止不受控制的異常嵌套。,,BackAddr,JumpAddr,,,,“?”表示對該位不關心,2-6-2對異常的響應(進入異常),進入異常過程:1.程序在系統(tǒng)模式下運行用戶程序,允許IRQ中斷;將CPSR寄存器內(nèi)容存入IRQ模式的SPSR寄存器置位I位(禁止IRQ中斷)清零T位(進入ARM狀態(tài))設置MOD位,切換處理器模式至IRQ模式將下一條指令的地址存入IRQ模式的LR寄存器將跳轉(zhuǎn)地址存入PC,實現(xiàn)跳轉(zhuǎn),2-6-3從異常返回(退出異常),當異常結(jié)束時,異常處理程序必須:將LR(R14)中的值減去偏移量后存入PC,偏移量根據(jù)異常的類型而有所不同;將SPSR的值復制回CPSR;清零在入口置位的中斷禁止標志。,,BackAddr,JumpAddr,,return,,,BackAddr-4,“?”表示對該位不關心,2-6-3從異常返回(退出異常),在異常處理結(jié)束后,異常處理程序完成以下動作:將SPSR寄存器的值復制回CPSR寄存器;將LR寄存的值減去一個常量后復制到PC寄存器,跳轉(zhuǎn)到被中斷的用戶程序。,本章總結(jié),,,,ARM狀態(tài)下寄存器,Thumb狀態(tài)下寄存器,寄存器組織,,,,ARM微處理器的工作模式,,,ARM微處理器編程模型,ARM微處理器的工作狀態(tài),,程序狀態(tài)寄存器,數(shù)據(jù)存儲格式,指令長度及數(shù)據(jù)結(jié)構(gòu),,,異常,,,,,對異常的響應,從異常返回,,,異常類型,,- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關 鍵 詞:
- ARM 微處理器 結(jié)構(gòu)
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權(quán),請勿作他用。
相關資源
更多
正為您匹配相似的精品文檔
相關搜索
鏈接地址:http://m.zhongcaozhi.com.cn/p-3388319.html