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