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