《程序控制和中斷管理.ppt》由會員分享,可在線閱讀,更多相關(guān)《程序控制和中斷管理.ppt(40頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第四章 程序控制和中斷管理,1.程序地址產(chǎn)生結(jié)構(gòu) 2.轉(zhuǎn)移,調(diào)用和返回 3.指令重復(fù) 4.中斷系統(tǒng),1.程序地址產(chǎn)生結(jié)構(gòu),,CPU芯片的程序地址產(chǎn)生邏輯,(1)程序計數(shù)(PC):16位PC對內(nèi)部和外部程序存儲 器尋址。 (2)程序地址寄存器(PAR):16位的程序地址寄存器(PAR)驅(qū)動程序地址總線(PAB),提供程序的讀、寫地址。 (3)堆棧:16位寬、8級深的硬件堆棧最多可保存8個返回地址。此外,也可將堆棧用做暫存存儲器。 (4)微堆棧(MSTACK):有時程序地址產(chǎn)生邏輯使用這個16位寬、1級深的堆棧保存1個返回地址。。 (5)重復(fù)計數(shù)器(RPTC):16位的RPTC與重復(fù)指令(RTP
2、)一起,用來確定RTP后面的一條指令重復(fù)執(zhí)行次數(shù)。,程序地址的產(chǎn)生有7種情況,(1)順序操作:程序的地址來源于PC計數(shù)器(程序地址+1)。 (2)空(啞)周期:程序的地址來源于PAR(程序地址+1)。 (3)從子程序返回:程序的地址來源于棧頂(TOS)。 (4)從表傳送或塊傳送返回:程序的地址來源于微堆棧(MSTACK)。 (5)轉(zhuǎn)移到或調(diào)用指令中指定的地址:程序的地址來源于轉(zhuǎn)移或調(diào)用指令,即利用程序讀總線(PRDB)的方式獲取程序地址。 (6)轉(zhuǎn)移到或調(diào)用累加器低半部分指定的地址:程序的地址來源于累加器的低半部分,即利用數(shù)據(jù)讀總線(DRDB)的方式獲取程序地址。 (7)轉(zhuǎn)移到中斷服務(wù)程序:程
3、序的地址來源于中斷矢量單元,即利用程序讀總線(PRDB)的方式獲取程序地址。,加載到程序計數(shù)器(PC)的地址,1.順序執(zhí)行 2.分支(轉(zhuǎn)移) 3.子程序調(diào)用和返回 4.軟件或硬件中斷 5.計算轉(zhuǎn)移,堆棧,16位寬、8級深的硬件堆棧。調(diào)用了程序或發(fā)生中斷時程序地址產(chǎn)生邏輯,利用該堆棧保存返回地址。 當CPU進入子程序或中斷服務(wù)程序時,返回地址自動裝入堆棧的棧頂,這一操作不需要附加的周期。 當子程序或中斷服務(wù)程序完成時,返回指令將返回地址從棧頂傳送到程序計數(shù)器。 當不需要用8級返回地址時,該堆棧也可以用來保存子程序或中斷服務(wù)程序中的相關(guān)數(shù)據(jù)或用于其他目的。 PUSH和POP 累加器低16位拷
4、貝到棧頂;反之棧頂拷貝到累加器低16位 PUSHD和POPD 數(shù)據(jù)存儲區(qū)中的值拷貝到棧頂或棧頂?shù)闹悼截惖綌?shù)據(jù)存儲區(qū)。,微堆棧(MSTACK) 16位寬、1級深的堆棧保存1個返回地址。與堆棧不同,它的操作是不可見的。也就是說沒有可以使用微堆棧保存信息的指令,只有程序地址產(chǎn)生邏輯才能夠使用微堆棧。 程序地址產(chǎn)個邏輯在執(zhí)行BLDD,BLPD,MAC, MACD,TBLR和TBLW這些串(塊)操作指令時利用微堆棧保存返回地址。當執(zhí)行這些指令時,首先把PC+2的地址送到微堆棧保存,當這些指令重復(fù)執(zhí)行時,PC可使第一個操作數(shù)的地址自動增量,同時使第二個操作數(shù)的地址改變,到所重復(fù)的指令完成時再將微堆棧彈回到
5、程序地址產(chǎn)生邏輯。,2.轉(zhuǎn)移,調(diào)用和返回,轉(zhuǎn)移、調(diào)用和返回將改變指令流的順序,轉(zhuǎn)到新的地址單元去執(zhí)行指令。 轉(zhuǎn)移僅使控制轉(zhuǎn)換到新的地址單元,調(diào)用還要將返間地址(調(diào)用指令后面的那條指令的地址)保存到硬件堆棧的棧頂。 每個被調(diào)用的子程序或中斷服務(wù)程序都以返回指令結(jié)束,返回指令將堆棧中的返回地址彈到程序計數(shù)器(PC)。 具有無條件和有條件兩種類型的轉(zhuǎn)移、調(diào)用和返回指令。,無條件轉(zhuǎn)移,當執(zhí)行無條件轉(zhuǎn)移(B,BACC)和無條件調(diào)用子程序(CALL,CALA)指令時,將指定的程序儲器的地址加載到PC,并從該地址開始執(zhí)行程序。 執(zhí)行無條件返回(RET)指令時,將棧項的值(返回地址)加載到PC,并從該地址繼續(xù)
6、執(zhí)行程序。,有條件指令,組1:最多可選兩個條件。每個條件必須來自不同的類(A或B),個能從向 一類中選擇兩個條件。 組2:最多可選3個條件,每個條件必須來自不同的類(A,B或C),不能有兩個條件來自同一類。 BCND pma,cond1,cond2,... 轉(zhuǎn)移pma開始的指令 cc pma,cond1,cond2,... 調(diào)用pma開始的子程序,重復(fù)指令,重復(fù)指令(RPT)允許一條指令的重復(fù)次數(shù)為N+1次。N為RPT指令的操作數(shù)。 當執(zhí)行RPT時,計數(shù)值N被裝入重復(fù)計數(shù)器(RPTC),然后,被重復(fù)的指令每執(zhí)行一次,RPTC就減1,直至RPTC為0。如果計數(shù)值N是從一個數(shù)據(jù)存儲器讀取,RPTC
7、作為16位計數(shù)器,如果N被設(shè)定為一個操作常數(shù),則RPTC為8位計數(shù)器。 這種重復(fù)功能對于NORM(累加器內(nèi)容規(guī)一化)、MACD(乘、累加及數(shù)據(jù)移動)和SUBC(條件減)等指令很有用。在指令重復(fù)時,程序存儲器的地址總線和數(shù)據(jù)總線是空閑的,可與數(shù)據(jù)存儲器的地址總線和數(shù)據(jù)總線并行地取第2個操作數(shù)。這就使得被重復(fù)的指令每重復(fù)一次,都能夠在一個單周期內(nèi)完成操作。,NORM指令把累加器中的有符號數(shù)規(guī)格化。 對定點數(shù)進行規(guī)格化即把他們分成指數(shù)和尾數(shù)。,TMS320C2000中斷系統(tǒng),1中斷類型 支持軟件中斷和硬件中斷。 軟件中斷由程序指令產(chǎn)生(INTR、TRAP或RESET)。 硬件中斷由設(shè)備的一個信號產(chǎn)生
8、,包括兩種類型:外部硬件中斷由外部中斷口的信號觸發(fā);內(nèi)部硬件中斷由片內(nèi)外設(shè)的信號觸發(fā)。 無論是硬件中斷還是軟件中斷,都屬于以下兩種類型:1)可屏蔽中斷 (2)非屏蔽中斷,硬件中斷和軟件中斷從CPU管理的角度又分為可屏蔽中斷和不可屏蔽中斷兩類。 可屏蔽中斷:均為硬件中斷,可以用軟件設(shè)置使它們禁止(屏蔽)或允許(不屏蔽)。當硬件設(shè)備或外部引腳成功地請求了可屏蔽中斷時,與其相應(yīng)的一個或幾個標志被激活,無論處理器是否響應(yīng)此中斷,這些標志都被設(shè)置為1。 不可屏蔽中斷:包括所有的軟件中斷(由INTR,NMI和 TRAP指令請求)和兩種外部硬件中斷(RS和NMI)。對于不可屏蔽中斷,總是要響應(yīng)并從主程序轉(zhuǎn)移
9、到中斷服務(wù)程序。,中斷類型,中斷源,中斷結(jié)構(gòu),中斷源的中斷向量及硬件中斷優(yōu)先權(quán),,外設(shè)中斷,PIQn,PIACKRn,n=0,1,2,,,,,,,2中斷標志寄存器(IFR)和中斷屏蔽寄存器(IMR),中斷標志寄存器(IFR)是存儲器映象的CPU寄存器。中斷標志寄存器(IFR)結(jié)構(gòu)圖。中斷屏蔽寄存器(IMR)也是存儲器映象的CPU寄存器,用來屏蔽外部和內(nèi)部的可屏蔽中斷,其結(jié)構(gòu)圖同IFR完全一致。,中斷標志寄存器(IFR)結(jié)構(gòu)圖,中斷屏蔽寄存器(IMR),全局開關(guān),綜合圖示,中斷響應(yīng)過程,4,5,6要點(對應(yīng)下下頁),,1,2,3要點(對應(yīng)下頁),可屏蔽中斷回顧,中斷響應(yīng)過程,管理中斷有3個主要階段。 (1)接受中斷請求:來自程序代碼的軟件中斷請求、來自引腳或片內(nèi)設(shè)備硬件中斷請求到達CPU時(若為可屏蔽中斷,將使中斷標志寄存器的相應(yīng)標志置1),該中斷掛起,或說正在等待響應(yīng)。 (2)響應(yīng)中斷:如果是可屏蔽中斷,則必須滿足某些條件時CPU才會響應(yīng);對非屏蔽中斷則立即響應(yīng)。 (3)執(zhí)行中斷服務(wù)程序:一旦中斷被響應(yīng),CPU就根據(jù)放在中斷矢量地址中的轉(zhuǎn)移指令,按照器件的要求轉(zhuǎn)移到相應(yīng)的中斷服務(wù)程序中去執(zhí)行。,中斷操作流程圖,外設(shè)中斷管理,標志及屏蔽位,可屏蔽中斷響應(yīng),中斷服務(wù)流程,