微處理器8CortexM3微處理器_第1頁
微處理器8CortexM3微處理器_第2頁
微處理器8CortexM3微處理器_第3頁
微處理器8CortexM3微處理器_第4頁
微處理器8CortexM3微處理器_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

微處理器基礎(chǔ)第8章Cortex-M3微處理器

Cortex-M3內(nèi)核概述與ARM7TDMI性能比較ARM7TDMICortex-M3架構(gòu)ARMv4T(馮.若依曼)ARMv7-M(哈佛)ISA支持Thumb/ARMThumb/Thumb-2流水線3級3級+分支預(yù)測中斷FIQ/IRQ240個(gè)物理中斷中斷延時(shí)24—42個(gè)時(shí)鐘周期12個(gè)時(shí)鐘(末尾連鎖僅6個(gè))休眠保護(hù)無內(nèi)置存儲器保護(hù)無8段存儲器保護(hù)單元硬件除法無2—12個(gè)時(shí)鐘周期運(yùn)行速度0.95DMIPS/MHz1.25DMIPS/MHz功耗0.28mW/MHz0.19mW/MHz面積0.62mm2(僅內(nèi)核)0.86mm2(內(nèi)核+外設(shè))Cortex-M3內(nèi)核概述優(yōu)化體系架構(gòu)內(nèi)核基于哈佛結(jié)構(gòu),指令和數(shù)據(jù)可以從存儲器中同時(shí)讀取,對多個(gè)操作可以并行執(zhí)行,加快了應(yīng)用程序執(zhí)行速度。與ARM7TDMI相比,比Thumb指令每兆赫的效率提高70%,比ARM指令提高35%Dhrystone相關(guān)測試的性能值1.25DMIPS0.95DMIPSCortex-M3內(nèi)核概述優(yōu)化指令系統(tǒng)由于Tumb-2指令是Thumb指令的擴(kuò)展,16位和32位指令共存于同一模式下,復(fù)雜性大幅下降,代碼密度和性能均得到提高。具有位操作能力,在汽車應(yīng)用中表現(xiàn)出色,在DFT等DSP運(yùn)算法則的應(yīng)用中非常有用。相關(guān)測試的代碼大小Cortex-M3內(nèi)核概述帶分支預(yù)測的3級流水線Cortex-M3的流水線分為3級,分別為:取指譯碼執(zhí)行取指譯碼執(zhí)行從存儲器裝載一條指令識別將要被執(zhí)行的指令處理指令并將結(jié)果寫回寄存器在譯碼時(shí)進(jìn)行分支預(yù)測,遇跳轉(zhuǎn)指令也不會打斷流水線PC值總是指向正在去取指的指令Cortex-M3內(nèi)核概述指令1指令2指令3指令4…………程序存儲器周期1周期2周期3周期4周期5周期6取指譯碼執(zhí)行取指譯碼執(zhí)行取指譯碼執(zhí)行取指譯碼執(zhí)行周期2周期1周期3周期4處理器執(zhí)行一條指令的三個(gè)階段

在第1個(gè)周期,PC指向指令1,此時(shí)指令1進(jìn)入三級流水線的取指階段。1三級流水線結(jié)構(gòu)的指令執(zhí)行順序Cortex-M3內(nèi)核概述指令1指令2指令3指令4…………程序存儲器周期1周期2周期3周期4周期5周期6取指譯碼執(zhí)行取指譯碼執(zhí)行取指譯碼執(zhí)行取指譯碼執(zhí)行周期2周期1周期3周期4處理器執(zhí)行一條指令的三個(gè)階段

在第2個(gè)周期,PC指向指令2,此時(shí)指令1進(jìn)入三級流水線的譯碼階段,同時(shí)取出指令2。2三級流水線結(jié)構(gòu)的指令執(zhí)行順序Cortex-M3內(nèi)核概述指令1指令2指令3指令4…………程序存儲器周期1周期2周期3周期4周期5周期6取指譯碼執(zhí)行取指譯碼執(zhí)行取指譯碼執(zhí)行取指譯碼執(zhí)行周期2周期1周期3周期4處理器執(zhí)行一條指令的三個(gè)階段

在第3個(gè)周期,PC指向指令3,此時(shí)指令1進(jìn)入三級流水線的執(zhí)行階段,指令2進(jìn)入譯碼階段,取出指令3。3三級流水線結(jié)構(gòu)的指令執(zhí)行順序Cortex-M3內(nèi)核概述指令1指令2指令3指令4…………程序存儲器周期1周期2周期3周期4周期5周期6取指譯碼執(zhí)行取指譯碼執(zhí)行取指譯碼執(zhí)行取指譯碼執(zhí)行周期2周期1周期3周期4處理器執(zhí)行一條指令的三個(gè)階段

在第4個(gè)周期,指令1執(zhí)行完成,指令2和指令3流水線推進(jìn)一級,同時(shí)開始指令4的取指處理。4三級流水線結(jié)構(gòu)的指令執(zhí)行順序Cortex-M3內(nèi)核概述ARM7不帶分支預(yù)測的3級流水線推演過程MOVR0,#00ADDSR0,R0,#1CMPR0,#0x7D0BNE0x00000202BX0X00000300LDRR1,#00……MOVR2,#200x02000x02020x02040x02080x020A0X020C……0x0300地址指令取指譯碼執(zhí)行MOV----step1ADDSMOV--step2CMPADDSMOVstep3BNECMPADDSstep4BXBNECMPstep5LDRBXBNEstep6ADDS----step6執(zhí)行時(shí)遇跳轉(zhuǎn)指令則清空流水線Cortex-M3內(nèi)核概述Cortex-M3帶分支預(yù)測的3級流水線推演過程MOVR0,#00ADDSR0,R0,#1CMPR0,#0x7D0BNE0x00000202BX0X00000300LDRR1,#00……MOVR2,#200x02000x02020x02040x02080x020A0X020C……0x0300地址指令取指譯碼執(zhí)行MOV----step1ADDSMOV--step2CMPADDSMOVstep3BNECMPADDSstep4ADDSBNECMPstep5因?yàn)閹Х种ьA(yù)測,跳轉(zhuǎn)指令在譯碼時(shí)就被識別,取指時(shí)流水線自動加載跳轉(zhuǎn)后地址的指令。CMPADDSBNEstep6BXBNECMPAPSR的Z=0APSR的Z!=0Cortex-M3的內(nèi)部寄存器32位通用寄存器R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)XPSRr0~r12,為13個(gè)通用寄存器低寄存器

,r0-r7可以被指定通用寄存器的所有指令訪問高寄存器

,r8-r12可以被指定通用寄存器的所有32位指令訪問,不能被16位指令訪問。SP_processSP_mainCortex-M3的內(nèi)部寄存器分組的堆棧指針(SP)R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)XPSRSP_mainSP_process處理模式線程模式可用MSP始終使用MSP也可用PSPCortex-M3的內(nèi)部寄存器鏈接寄存器(LR)R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)XPSR鏈接寄存器(LR)在執(zhí)行分支(branch)和鏈接(BL)指令或帶有交換的分支和鏈接指令(BLX)時(shí),LR用于保存PC的返回地址。

主要用于保存子程序的返回地址。

LR也用于異常返回。

Cortex-M3的內(nèi)部寄存器鏈接寄存器(LR)R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)XPSRintmain(){......delay();SetLED1();}voiddelay(){......}BL.Wdelay……delay:......BXlr

….0X20F00X20F4地址R14(LR)0X20F40X10F40X10F4執(zhí)行BL指令,LR的值同時(shí)更新Cortex-M3的內(nèi)部寄存器寄存器(PC、XPSR)R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)XPSR程序計(jì)數(shù)器(PC)程序計(jì)數(shù)器總是指向正在取指的指令。該寄存器的位0始終為0,因此,指令始終與字或半字邊界對齊。程序狀態(tài)寄存器(XPSR)用于指示程序的運(yùn)行狀態(tài)。程序狀態(tài)寄存器分為3個(gè)子狀態(tài)寄存器:應(yīng)用程序PSR(APSR)中斷狀態(tài)PSR(IPSR)執(zhí)行狀態(tài)PSR(EPSR)這3個(gè)PSR可單獨(dú)反問,也可組合訪問。Cortex-M3的內(nèi)部寄存器程序狀態(tài)寄存器對程序狀態(tài)寄存器的訪問只能使用MRS和MSR指令

MRS<c><q><Rd><spec_reg>MRS從特殊寄存器讀出數(shù)據(jù),并存入一通用寄存器指令碼條件執(zhí)行指示是16位還是32位指令通用寄存器(R0—R15)特殊功能寄存器Cortex-M3的內(nèi)部寄存器MRS<c><q><Rd><spec_reg>程序狀態(tài)寄存器對程序狀態(tài)寄存器的訪問只能使用MRS和MSR指令

MRS從特殊寄存器讀出數(shù)據(jù),并存入一通用寄存器指令碼條件執(zhí)行指示是16位還是32位指令通用寄存器(R0—R15)特殊功能寄存器MRSEQ.WR0,PSPCortex-M3的內(nèi)部寄存器Cortex-M3的內(nèi)部寄存器APSR的位分配負(fù)數(shù)或小于標(biāo)志:1:結(jié)果為負(fù)數(shù)或小于0:結(jié)果為正數(shù)或大于

零標(biāo)志:1:結(jié)果為00:結(jié)果為非0進(jìn)位/借位標(biāo)志:1:進(jìn)位或借位0:沒有進(jìn)位或借位

溢出標(biāo)志:1:溢出0:沒有溢出

粘著飽和(stickysaturation)標(biāo)志某變量達(dá)到上限/下限時(shí)置1

應(yīng)用狀態(tài)寄存器(APSR)3130292827260NZCVQ保留

應(yīng)用狀態(tài)寄存器(APSR)包含條件代碼標(biāo)志。在進(jìn)入異常之前,Cortex-M3處理器將條件代碼標(biāo)志保存在堆棧內(nèi)(硬件壓棧)。您可以使用MSR(2)和MRS(2)指令來訪問APSR。Cortex-M3的內(nèi)部寄存器

中斷狀態(tài)寄存器(IPSR)包含當(dāng)前激活的異常的ISR編號。IPSR的位分配ISRNUMBER基礎(chǔ)級別=0Reset=1NMI=2SVCall=11......31980保留中斷號Cortex-M3的內(nèi)部寄存器執(zhí)行狀態(tài)寄存器(EPSR)為什么需要執(zhí)行狀態(tài)寄存器EPSR?LDM、STM和If-then指令,為多周期指令,如果在執(zhí)行以上多周期指令時(shí)發(fā)生異常,處理器會暫時(shí)停止以上指令的操作,進(jìn)入異常,這時(shí)需要保護(hù)現(xiàn)場。LDM指令STEP1STEP2STEP3STEP4異常異常程序Cortex-M3的內(nèi)部寄存器執(zhí)行狀態(tài)寄存器PSR(EPSR)包含兩個(gè)重疊的區(qū)域:可中斷-可繼續(xù)指令(ICI)區(qū)

多寄存器加載(LDM)和存儲(STM)操作是可中斷的。EPSR的ICI區(qū)用來保存從產(chǎn)生中斷的點(diǎn)繼續(xù)執(zhí)行多寄存器加載和存儲操作時(shí)所必需的信息。If-then狀態(tài)區(qū)

EPSR的IT區(qū)包含了If-Then指令的執(zhí)行狀態(tài)位。注:ICI區(qū)和IT區(qū)是重疊的,因此,If-Then模塊內(nèi)的多寄存器加載或存儲操作不具有可中斷-可繼續(xù)功能。不能直接訪問EPSR,若想修改EPSR必須發(fā)生以下兩個(gè)事件之一:在執(zhí)行LDM或STM指令時(shí)產(chǎn)生一次中斷執(zhí)行If-Then指令Cortex-M3的內(nèi)部寄存器特殊功能寄存器中斷屏蔽寄存器(PRIMASK)相當(dāng)于中斷總開關(guān),為1,所有中斷被屏蔽;為0,中斷能正常響應(yīng)。PRIMASK所有中斷被屏蔽中斷屏蔽寄存器(只有1位)中斷能正常響應(yīng)10Cortex-M3的內(nèi)部寄存器特殊功能寄存器異常屏蔽寄存器(FAULTMASK)相當(dāng)于異??傞_關(guān),為1,除NMI外所有異常被屏蔽;為0,異常能正常響應(yīng)。FAULTMASK除NMI外所有異常被屏蔽異常屏蔽寄存器(只有1位)異常能正常響應(yīng)10Cortex-M3的內(nèi)部寄存器特殊功能寄存器BASEPRI定義屏蔽優(yōu)先級的閥值可屏蔽等于和低于某個(gè)優(yōu)先級的中斷。例如,把BASEPRI設(shè)置為0X40(即2<<5),則2和2以上優(yōu)先級的中斷被屏蔽,只有0和1優(yōu)先級的中斷不被屏蔽。注:BASEPRI與優(yōu)先級分組有關(guān),stellaris系列處理器使用高3位來配置。BASEPRI2優(yōu)先級0優(yōu)先級1優(yōu)先級2優(yōu)先級3優(yōu)先級4….中斷被屏蔽中斷可響應(yīng)Cortex-M3的內(nèi)部寄存器特殊功能寄存器BASEPRI_MAX與BASEPRI為同一寄存器BASEPRI可任意設(shè)置新的優(yōu)先級閥值。BASEPRI_MAX只允許新的閥值比原來的更小,即只能一次次的擴(kuò)大屏蔽范圍。Cortex-M3的內(nèi)部寄存器控制寄存器(CONTROL)CONTROL寄存器由兩個(gè)狀態(tài)位組成:CONTROL[0]CONTROL[1]0特權(quán)模式主堆棧1用戶模式進(jìn)程堆棧功能:定義特權(quán)級別,選擇堆棧指針Cortex-M3的內(nèi)部寄存器特殊用途程序狀態(tài)寄存器寄存器名稱功能編號APSR應(yīng)用狀態(tài)寄存器0IAPSRAPSR和IPSR的組合1EAPSR

APSR和EPSR的組合2XPSRAPSR、EPSR和IPSR的組合3IPSR中斷狀態(tài)寄存器

5EPSR執(zhí)行狀態(tài)寄存器6IEPSRIPSR和EPSR的組合7MSP主堆棧指針8PSP進(jìn)程堆棧指針9PRIMASK中斷屏蔽寄存器16BASEPRI可屏蔽等于和低于某個(gè)優(yōu)先級的中斷17BASEPRI_MAXBASEPRI允許設(shè)置的最大值18FAULTMASK異常屏蔽寄存器19CONTROL控制寄存器20Cortex-M3的編程模式特權(quán)訪問和用戶訪問處理模式線程模式特權(quán)訪問用戶訪問始終特權(quán)訪問兩種模式為處理(handler)模式和線程(thread)模式,這兩種模式是為了區(qū)別正在執(zhí)行代碼的類型。處理模式為異常處理例程的代碼;線程模式為普通應(yīng)用程序的代碼。Cortex-M3的編程模式特權(quán)執(zhí)行可以訪問所有資源。非特權(quán)執(zhí)行時(shí)對有些資源的訪問受到限制或不允許訪問。如部分指令的使用(設(shè)置FAULTMASK和PRIMASK的CPS指令)

對系統(tǒng)控制空間(SCS)的大部分寄存器的訪問。特權(quán)訪問和用戶訪問(非特權(quán)訪問)的區(qū)別FAULTMA

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論