DSP技術(shù)及應(yīng)用和方法DigitalSignalProcessor數(shù)字信號處理器_第1頁
DSP技術(shù)及應(yīng)用和方法DigitalSignalProcessor數(shù)字信號處理器_第2頁
DSP技術(shù)及應(yīng)用和方法DigitalSignalProcessor數(shù)字信號處理器_第3頁
DSP技術(shù)及應(yīng)用和方法DigitalSignalProcessor數(shù)字信號處理器_第4頁
DSP技術(shù)及應(yīng)用和方法DigitalSignalProcessor數(shù)字信號處理器_第5頁
已閱讀5頁,還剩56頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、DSP技術(shù)及應(yīng)用和方法Digital Signal Processor數(shù)字信號處理器1第三章 DSP指令系統(tǒng)與特點(diǎn) 第一節(jié) 尋址方式第二節(jié) 程序地址的生成第三節(jié) 流水線操作技術(shù)(了解)第四節(jié) 指令系統(tǒng)概述Smem:16位單尋址操作數(shù)。Xmem:16位雙尋址操作數(shù),從DB數(shù)據(jù)總線上讀出。Ymem:16位雙尋址操作數(shù),從CB數(shù)據(jù)總線上讀出。dmad:16位立即數(shù),數(shù)據(jù)存儲器地址。pmad:16位立即數(shù),程序存儲器地址。PA: 16位立即數(shù),I/O口地址。src: 源累加器(A或B)。dst: 目的累加器(A或B)。lk: 16位長立即數(shù)。第一節(jié) TMS320C54x的尋址方式 1立即數(shù)尋址2絕對地

2、址尋址3累加器尋址4直接尋址5間接尋址6存儲器映象寄存器尋址7堆棧尋址尋址分類 1立即數(shù)尋址 在操作數(shù)前面需要加字號來說明該操作數(shù)為立即數(shù)。否則會把該操作數(shù)誤認(rèn)為是一個(gè)地址,從而把立即數(shù)尋址變成絕對地址尋址。 特點(diǎn)指令中包含有執(zhí)行指令所需要的操作數(shù)。立即數(shù)分為3、5、8或9位的短立即數(shù)和16位的長立即數(shù)兩種。短立即數(shù)可包含在單字或雙字指令中,長立即數(shù)在雙字指令中。 注意LD #93h,A LD 93h,A 舉例 2絕對地址尋址特點(diǎn)在指令中包含有所要尋址的存儲單元的16位地址。這個(gè)16位的地址可以用其所在單元的地址標(biāo)號或者16位符號常數(shù)來表示。 (1)數(shù)據(jù)存儲器地址(damd)尋址 用一個(gè)符號或

3、一個(gè)數(shù)來確定數(shù)據(jù)空間的一個(gè)地址。 方法MVKD SAMPLE,*AR3 舉例用一個(gè)符號或一個(gè)具體的數(shù)來確定程序存儲器中的一個(gè)地址 (2)程序存儲器地址(pmad)尋址 方法MVPD TABLE,*AR4 舉例用一個(gè)符號或一個(gè)常數(shù)來確定外部I/O口地址 (3)PA尋址 端口(PA) 方法PORTR FIFO,*AR5 舉例用一個(gè)符號或一個(gè)常數(shù)來確定數(shù)據(jù)存儲器中的一個(gè)地址 (4)*(lk)尋址 方法LD *(BUFFER),A 舉例特點(diǎn)允許所有使用Smem尋址的指令去訪問數(shù)據(jù)空間的任意單元而不改變數(shù)據(jù)頁指針(DP)的值,也不用對ARx進(jìn)行初始化 用累加器中的數(shù)值作為地址來讀寫程序存儲器。 方法RE

4、ADA Smem WRITA Smem 舉例特點(diǎn)可用來完成程序存儲器單元的數(shù)據(jù)與數(shù)據(jù)存儲器單元的數(shù)據(jù)進(jìn)行交換 3累加器尋址可以在不改變DP或SP的情況下,隨機(jī)地尋址128個(gè)存儲單元中的任何一個(gè)單元。 用一個(gè)符號或一個(gè)常數(shù)來確定7位偏移值,與DP或SP共同形成16位的數(shù)據(jù)存儲器實(shí)際地址。4直接尋址 方法LD #x,DPLD u,A ADD v,A =SSBX CPL LD X1,A ADD Y2,A 舉例特點(diǎn)CPL=0 7位dma域與9bit的DP相結(jié)合形成16位的數(shù)據(jù)存儲器地址。CPL=1 7位dma域加上(正偏移)SP的值形成16位的數(shù)據(jù)存儲器地址。 DP值是從0511(29-1),以DP為

5、基準(zhǔn)的直接尋址把存儲器分成512頁,7位的dma范圍從0127,每頁有128個(gè)可訪問的單元。 5間接尋址 方法特點(diǎn)(AR0AR7)ARAU0/ARAU1 16位無符號算術(shù)運(yùn)算尋址范圍為64K 能在一個(gè)指令中訪問兩個(gè)數(shù)據(jù)存儲器單元兩個(gè)獨(dú)立的存儲器單元讀數(shù)據(jù)讀一個(gè)、寫另一個(gè)存儲器單元讀寫兩個(gè)連續(xù)的存儲器單元 5間接尋址 (1)單操作數(shù)尋址 定義間接尋址的類型定義尋址所使用的輔助寄存器 ST1CMPT=0 標(biāo)準(zhǔn)方式ARF確定輔助寄存器,ST0中ARP0 CMPT=1 兼容方式如ARF=0,用ARP選擇輔助寄存器,否則,用ARF來確定輔助寄存器。ARF的值裝入ARP。LD *AR1,B單操作數(shù)間接尋址

6、的硬件框圖MOD域操作碼語法功 能說 明0000*ARxaddr=ARxARx包含了數(shù)據(jù)存儲器地址0001*ARx-addr=ARxARx=ARx-1訪問后,ARx中的地址減10010*ARx+addr=ARxARx=ARx+1訪問后,ARx中的地址加10011*+ARxaddr=ARx+1ARx=ARx+1在尋址前,ARx中的地址加1,然后再尋址0100*ARx-0Baddr=ARxARx=B(ARx-AR0)訪問后,從ARx中以位倒序進(jìn)位的方式減去AR00101*ARx-0addr=ARxARx=ARx-AR0訪問后,從ARx中減去AR00110*ARx+0addr=ARxARx=ARx+

7、AR0訪問后,把AR0加到ARx中去0111*ARx+0Baddr=ARxARx=B(ARx+AR0)訪問后,把AR0以位倒序進(jìn)位的方式加到ARx中1000*ARx-%addr=ARxARx=circ(ARx-1)訪問后,ARx中的地址以循環(huán)尋址的方式減11001*ARx-0%addr=ARxARx=circ(ARx-AR0)訪問后,從ARx中以循環(huán)尋址的方式減去AR01010*ARx+%addr=ARxARx=circ(ARx+1)訪問后,ARx中的地址以循環(huán)尋址的方式加11011*ARx+0%addr=ARxARx=circ(ARx+AR0)訪問后,把AR0以循環(huán)尋址的方式加到ARx中11

8、00*ARx(lk)addr=ARx+lkARx=ARxARx和16位的長偏移(lk)的和用來作為數(shù)據(jù)存儲器地址。ARx本身不被修改1101*+ARx(lk)addr=ARx+lkARx=ARx+lk在尋址前,把一個(gè)帶符號的16位的長偏移(lk)加到ARx中,然后用新的ARx的值作為數(shù)據(jù)存儲器的地址1110*+ARx(lk)%addr=circ(ARx+lk)ARx=circ(ARx+lk)在尋址前,把一個(gè)帶符號的16位的長偏移以循環(huán)尋址的方式加到ARx中,然后再用新的ARx的值作為數(shù)據(jù)存儲器的地址1111*(lk)addr=lk一個(gè)無符號的16位的長偏移(lk)用來作為數(shù)據(jù)存儲器的絕對地址。

9、(也屬絕對尋址)單數(shù)據(jù)存儲器操作數(shù)間接尋址類型 1) 循環(huán)尋址 循環(huán)緩沖區(qū)的長度值存放在循環(huán)緩沖區(qū)長度寄存器BK中,BK中的數(shù)值由指令設(shè)定。長度為R的循環(huán)緩沖器必須從一個(gè)N位地址的邊界開始,即循環(huán)緩沖器基地址的最低N位必須為0。N是滿足2NR的最小整數(shù)。R的值必須裝入BK。例如,含有31個(gè)字的循環(huán)緩沖器必須從最低5位為0的地址開始,即xxxx xxxx xxx0 00002,N=5,2N=25R=31,且31必須裝入BK。如:STM #1k,BK如果R=32,則最小的N值為6,循環(huán)緩沖區(qū)的起始地址必須有6個(gè)最低有效位為0,即 00 00002。2) 位倒序?qū)ぶ?在這種尋址方式中,用AR0存放F

10、FT點(diǎn)數(shù)的一半整數(shù)N,用另一輔助寄存器指向一數(shù)據(jù)存放的物理單元。當(dāng)使用位倒序?qū)ぶ钒袮R0加到輔助寄存器中時(shí),地址以位倒序的方式產(chǎn)生,即進(jìn)位是從左向右,而不是從右向左進(jìn)位。 例如: 0110 1000 + 0000 1000 0110 0100以8位輔助寄存器為例,AR1表示了在存儲器中數(shù)據(jù)的基地址(0110 0000)2,AR0的值為(0000 1000)2。利用以下兩條語句可以向外設(shè)口(口地址為PA)輸出整序后的FFT變換結(jié)果:RPT #15 重復(fù)執(zhí)行下條指令15+1次PORTW *AR1+0B,PA 向外設(shè)口PA輸出整結(jié)果AR1修改循環(huán)值存儲單元地址整序前FFT 變換結(jié)果位倒序AR1更新的

11、地址值A(chǔ)R0=0000 10002整序后PA輸出的FFT變換結(jié)果00000X(0)00000110 0000X(0)10001X(8)10000110 1000X(1)20010X(4)01000110 0100X(2)30011X(12)11000110 1100X(3)40100X(2)00100110 0010X(4)50101X(10)10100110 1010X(5)60110X(6)01100110 0110X(6)70111X(14)11100110 1110X(7)81000X(1)00010110 0001X(8)91001X(9)10010110 1001X(9)10101

12、0X(5)01010110 0101X(10)111011X(13)11010110 1101X(11)121100X(3)00110110 0011X(12)131101X(11)10110110 1011X(13)141110X(7)01110110 0111X(14)151111X(15)11110110 1111X(15)位倒序?qū)FT變換結(jié)果的序號調(diào)整 5間接尋址 (2)雙操作數(shù)尋址方式 確定包含Xmem地址的輔助寄存器 確定包含Ymem地址的輔助寄存器定義用于訪問Ymem操作數(shù)的間接尋址方式的類型 定義用于訪問Xmem操作數(shù)的間接尋址方式的類型 MPY *AR2,*AR3,AXar

13、或Yar 輔助寄存器00 AR201 AR310 AR411 AR5輔助寄存器選擇Xmod或Ymod操作碼語法功 能說 明00*ARxaddr=ARxARx是數(shù)據(jù)存儲器地址01*ARx-addr=ARxARx=ARx-1訪問后,ARx中的地址減110*ARx+addr=ARxARx=ARx+1訪問后,ARx中的地址加111*ARx+0%addr=ARxARx=circ(ARx+AR0)訪問后,AR0以循環(huán)尋址的方式加到ARx中雙數(shù)據(jù)存儲器操作數(shù)尋址的類型0頁尋址。不影響當(dāng)前DP或SP值 。用于直接尋址和間接尋址用來修改存儲器映象寄存器 6存儲器映象寄存器尋址功能LDM PRD,A舉例特點(diǎn)方法高

14、9位數(shù)據(jù)存儲器地址被置0,利用指令中的低位地址訪問MMR。7堆棧尋址 從高地址向低地址方向生長,SP)來管理堆棧,SP始終指向堆棧中所存放的最后一個(gè)數(shù)據(jù),即SP指針始終指向棧頂。在壓入操作時(shí),先減小SP的值,再將數(shù)據(jù)壓入堆棧;在彈出操作時(shí),先從堆棧彈出數(shù)據(jù),再增加SP的值。用來在中斷和子程序調(diào)用時(shí)自動保存程序計(jì)數(shù)器(PC)中的數(shù)值,也能用來保護(hù)現(xiàn)場或傳送參數(shù) 功能特點(diǎn)PSHD *AR2 POPD *AR3第二節(jié) 程序地址的生成程序地址生成器(PAGEN)構(gòu)成程序計(jì)數(shù)器(PC)重復(fù)計(jì)數(shù)器(RC)塊重復(fù)計(jì)數(shù)器(BRC)塊重復(fù)起始地址寄存器(RSA)塊重復(fù)結(jié)束地址寄存器(REA)核心16位程序計(jì)數(shù)器

15、(PC)內(nèi)中保存某個(gè)內(nèi)部或外部程序存儲器的地址。地址內(nèi)容為:即將取指的某條指令;某個(gè)16位立即操作數(shù);系數(shù)表。在程序存儲器中的地址操作加載到PC的地址復(fù)位PC=FF80h。順序執(zhí)行指令PC=PC+1。分支轉(zhuǎn)移用緊跟在分支轉(zhuǎn)移指令后面的16位立即數(shù)加載PC。由累加器分支轉(zhuǎn)移用累加器A或B的低16位立即數(shù)加載PC。塊重復(fù)循環(huán)假如ST1中的塊重復(fù)有效位BRAF=1,當(dāng)PC+1等于塊重復(fù)結(jié)束地址(REA)+1,將塊重復(fù)起始地址(RSA)加載PC。子程序調(diào)用將PC+2壓入堆棧,并用緊跟在調(diào)用指令后面的16位立即數(shù)加載PC。返回指令將棧頂彈出至PC,回到原先的程序處繼續(xù)執(zhí)行。從累加器調(diào)用子程序?qū)C+1壓

16、入椎棧,用累加器A或B的低16位加載PC。返回指令將棧頂彈出至PC,回到原先的程序處繼續(xù)執(zhí)行。硬件中斷或軟件中斷將PC壓入堆棧,用適當(dāng)?shù)闹袛嘞蛄康刂芳虞dPC。中斷返回時(shí),將棧頂彈出至PC,繼續(xù)執(zhí)行被中斷了的子程序。將程序存儲器地址加載到程序計(jì)數(shù)器的途徑1分支轉(zhuǎn)移操作 通過分支轉(zhuǎn)移指令改寫PC,可以改變程序的流向。而子程序調(diào)用指令則通過將一個(gè)返回地址壓入堆棧,執(zhí)行返回時(shí)恢復(fù)原地址??蓤?zhí)行:分支轉(zhuǎn)移循環(huán)控制子程序操作 功能方法條件分支轉(zhuǎn)移無條件分支轉(zhuǎn)移 BD用指令中所給出的地址加載PCBACCD用所指定的累加器的低16位作為地址加載PC。 帶延遲不帶延遲操作轉(zhuǎn)移種類BCD如果指令中所規(guī)定的條件得到

17、滿足,就用指令中所給出的地址加載PC;BANZD如果當(dāng)前輔助寄存器不等于0,就用指令中所規(guī)定的地址加載PC。 BC new,AOV BANZ loop,*AR2-B nextBACC A2調(diào)用和返回 轉(zhuǎn)移前,原程序的下條指令的地址被壓入堆棧,而在返回時(shí)則將這個(gè)地址彈出至PC,使被中斷了的原程序能繼續(xù)執(zhí)行。 當(dāng)采用調(diào)用指令進(jìn)行子程序或函數(shù)調(diào)用時(shí),DSP中斷當(dāng)前運(yùn)行的程序,轉(zhuǎn)移到程序存儲器的其它地址繼續(xù)運(yùn)行。功能方法無條件調(diào)用與返回有條件調(diào)用與返回帶延遲不帶延遲CALLd lopRET main3條件指令中的條件判斷多重條件判斷 第1組第2組A 類B 類A 類B 類C 類EQOVTCCBIONEQ

18、NOVNTCNCNBIOLTLEQGTGEQ第1組 例如 可以從A類中選一個(gè)條件,同時(shí)可以從B類中選擇一個(gè)條件。但是不能從同一類中選擇兩個(gè)條件。另外,兩種條件測試的累加器必須是同一個(gè)。可以同時(shí)測試AGT和AOV,但不能同時(shí)測試AGT和BGT。 第2組 例如 可以在A、B、C三類中各選擇一個(gè)條件,但不能從同一類中選擇兩個(gè)條件 可以在A、B、C三類中各選擇一個(gè)條件,但不能從同一類中選擇兩個(gè)條件 特例如果條件分支轉(zhuǎn)移出去的地方只有12字的程序段,則可以用一條單周期條件執(zhí)行指令(XC)來代替分支轉(zhuǎn)移指令:XC n,cond,cond,cond當(dāng)n=1,且條件得到滿足,就執(zhí)行緊隨此條件指令后的個(gè)字指令。

19、當(dāng)n=2,且條件得到滿足,就執(zhí)行緊隨此指令后的1個(gè)雙字指令或者2條單字指令。當(dāng)條件不滿足,就依n的值執(zhí)行1條或2條NOP指令。例3-3 編寫計(jì)算 的主要程序部分。 .bss x,4 ;為X建立4個(gè)單元, ;放置X1、X2、X3、X4 .bss y,1 ;為Y建立1個(gè)單元,放置Y STM #x,AR1 ;將X1的地址傳給AR1 STM #3,AR2 ;將循環(huán)次數(shù)3傳給AR2 LD #0,A ;對A清零loop:ADD *AR1+,A ;對X1、X2、X3、X4循環(huán)累 ;加,結(jié)果放A中 BANZ loop,*AR2- ;檢查循環(huán)是否應(yīng)結(jié)束 STL A,y ;將累加結(jié)果存入Y中特點(diǎn)2特點(diǎn)14單條指令

20、的重復(fù)操作 重復(fù)執(zhí)行(RC)+1次。RC內(nèi)容不能編程設(shè)置,只能由重復(fù)指令(RPT和RPTZ)中的操作數(shù)加載。操作數(shù)n的最大值為65 535,最大重復(fù)執(zhí)行次數(shù)為65 535+1。 一旦重復(fù)指令被取指、譯碼,直到重復(fù)循環(huán)完成以前,對所有的中斷(包括 ,但不包括 )均不響應(yīng)。 功能重復(fù)執(zhí)行下一條指令 重復(fù)過程當(dāng)RPT指令執(zhí)行時(shí):首先把循環(huán)的次數(shù)裝入循環(huán)計(jì)數(shù)器(RC),其循環(huán)次數(shù)n由一個(gè)16位單數(shù)據(jù)存儲器操作數(shù) Smem或一個(gè)8位或16位常數(shù)k或lk給定。這樣, 緊接著的下一條指令會循環(huán)執(zhí)行n+1次。循環(huán),RC在執(zhí)行減1操作時(shí)不能被訪問。注意:該循環(huán)內(nèi)不能套用循環(huán)。 當(dāng)RPTZ指令執(zhí)行時(shí):對目的累加器

21、dst清0, 循環(huán)執(zhí)行下一條指令n+1次。 例3-5 利用單條指令的重復(fù)操作對數(shù)組x5=0,0,0,0,0進(jìn)行初始化。.bss x,5 ;為數(shù)組x分配5個(gè)存儲單元STM #x,AR1 ;將x的首地址賦給AR1LD #0,A ;對A清零RPT #4 ;設(shè)置重復(fù)執(zhí)行下條指令5次STL A,*AR1+;對x5各單元清零或者.bss x,5STM #x,AR1RPTZ A,#4;對A清零并設(shè)置重復(fù)執(zhí)行下條指令5次STL A,*AR1+特點(diǎn)5塊重復(fù)操作 利用C54x內(nèi)部的塊重復(fù)計(jì)數(shù)器(BRC,加載值可為065 535)、塊重復(fù)起始地址寄存器(RSA)、塊重復(fù)結(jié)束地址寄存器(REA)與程序塊重復(fù)指令RPT

22、B,可對緊隨RPTB、由若干條指令構(gòu)成的程序塊進(jìn)行重復(fù)操作。功能將重復(fù)操作的范圍擴(kuò)大到任意長度的循環(huán)回路 注意指令一旦執(zhí)行,不會停止操作,即使有中斷請求也不響應(yīng);指令可以響應(yīng)中斷;例3-6 對數(shù)據(jù)組x5中的每個(gè)元素加1。.bss x,5 ;為數(shù)組x分配5個(gè)存儲單元begin: LD #1,16,B ;將1左移16位放入B的 ;高端字的最低位STM #4,BRC ; 4BRC,(PC)+2 RSA STM #x,AR4;將x的首地址賦給AR4 RPTB next-1;將NEXT-1 REA ADD *AR4,16,B,A ;x地址的內(nèi)容左移16位加 ; B的高端字,結(jié)果放ASTH A,*AR4+

23、 ;將A的高端字存入x單元, ;完成加1操作next: LD #0,B ;對B清零 ;必需next-1作為結(jié)束地址對寄存器的占用6循環(huán)的嵌套 執(zhí)行RPT指令時(shí)占用RPTC寄存器(重復(fù)計(jì)數(shù)器);執(zhí)行RPTB指令時(shí)要用到BRC、RSA和RSE寄存器。只有一套塊重復(fù)寄存器,故塊重復(fù)操作不能嵌套。 由于RPT與RPTB兩者用了不同的寄存器,因此RPT指令可以嵌套在RPTB指令中,實(shí)現(xiàn)循環(huán)的嵌套。執(zhí)行BANZ指令只占用輔助寄存器ARx。不會與RPT RPTB指令相沖突。嵌套原則參與嵌套循環(huán)的寄存器不能重復(fù)使用 圖3-3 一個(gè)三重循環(huán)嵌套結(jié)構(gòu)第三節(jié) 流水線操作技術(shù) 流水線操作在執(zhí)行多條指令時(shí),將每條指令的

24、預(yù)取指、取指、譯碼、尋址、讀取操作數(shù)、執(zhí)行等階段,相差一個(gè)階段地重疊地執(zhí)行。流水線操作的優(yōu)點(diǎn)一條k段流水能在k+(n-1)個(gè)周期內(nèi)處理n條指令。其前k個(gè)周期用于完成第一條指令,其余n-1條指令的執(zhí)行需要n-1個(gè)周期。而非流水處理器上執(zhí)行n條指令則需要nk 個(gè)周期。當(dāng)指令條數(shù)n較大時(shí),可認(rèn)為每個(gè)周期內(nèi)執(zhí)行的最大指令個(gè)數(shù)為k。 預(yù)取指P取指F譯碼D尋址A讀取操作數(shù)R執(zhí)行X流水線操作 在第一個(gè)機(jī)器周期用PC中的內(nèi)容加載PAB 在第二個(gè)機(jī)器周期用讀取到的指令字加載PB。 第三個(gè)周期用PB的內(nèi)容加載指令寄存器IR,對IR內(nèi)的指令進(jìn)行譯碼,產(chǎn)生執(zhí)行指令所需要的一系列控制信號。 預(yù)取指P取指F譯碼D尋址A讀

25、取操作數(shù)R執(zhí)行X流水線操作 用數(shù)據(jù)1讀地址加載DAB,或用數(shù)據(jù)讀地址加載CAB,修正輔助寄存器和堆棧指針。讀數(shù)據(jù)1加載DB,或讀數(shù)據(jù)2加載CB;用數(shù)據(jù)3寫地址加載到EAB,以便在流水線的最后一級將數(shù)據(jù)送到數(shù)據(jù)存儲空間。 執(zhí)行指令,或用寫數(shù)據(jù)加載EB。 空轉(zhuǎn)浪費(fèi)周期1延遲分支轉(zhuǎn)移的流水線圖 無延遲流水線分支轉(zhuǎn)移的問題地址 指令a1,a2 B b1 這是一個(gè)四周期、二字分支指令a3 i3 這是任意的一周期、一字指令a4 i4 這是任意的一周期、一字指令. .b1 j1例3-7分支轉(zhuǎn)移指令流水線圖用分支轉(zhuǎn)移指令的地址a1加載PAB。 取得雙字分支轉(zhuǎn)移指令取得雙字分支轉(zhuǎn)移指令分支轉(zhuǎn)移指令流水線圖i3和

26、i4指令取指。由于這兩條指令處在分支轉(zhuǎn)移指令的后面,雖然已經(jīng)取指,但不能進(jìn)入譯碼級,且最終被丟棄。 分支轉(zhuǎn)移指令進(jìn)入譯碼級用新的值b1加載PAB分支轉(zhuǎn)移指令流水線圖j1指令取指 雙字分支轉(zhuǎn)移指令進(jìn)入流水線的執(zhí)行級 執(zhí)行j1指令 雙字分支轉(zhuǎn)移指令進(jìn)入流水線的執(zhí)行級 由于i3和i4指令是不允許執(zhí)行的,所以這兩個(gè)周期均花在分支轉(zhuǎn)移指令的執(zhí)行上。允許跟在延遲分支轉(zhuǎn)移指令之后的兩條單字或一條雙字指令可以被執(zhí)行 延遲分支轉(zhuǎn)移注意1.延遲操作指令后面只有兩個(gè)字的空 隙,因此不能在此空隙中安排任何 一類分支轉(zhuǎn)移指令或重復(fù)指令;2.在CALLD或RETD的空隙中還不能安 排PUSH和POP指令。3.延遲操作指令

27、比它們的非延遲型 指令要快,在調(diào)試延遲型指令時(shí), 直觀性稍差一些,因此希望在大多 數(shù)情況下還是采用非延遲型指令。 例3-8 在完成R=(x+y)*z操作后轉(zhuǎn)至next??梢苑謩e編出如下兩段程序:利用普通分支轉(zhuǎn)移指令B 利用延遲分支轉(zhuǎn)移指令BDLD x,A LD x,AADD y,A ADD y,ASTL A, s STL A, sLD s,T LD s,TMPY z,A BD next STL A, r MPY z,A B next STL A, r(共8個(gè)字,10個(gè)T) (共8個(gè)字,8個(gè)T)在空閑的隨后兩周期中執(zhí)行下兩條指令 XC n,cnd,cnd,cnd如果條件滿足,則執(zhí)行下面n(n=1

28、或2)條指令,否則下面n條指令改為執(zhí)行n條NOP指令。 2條件執(zhí)行指令的流水線圖 條件執(zhí)行指令XC 有下列程序:地址 指令a1 i1a2 i2a3 i3a4 XC 2, conda5 i5a6 i6 條件執(zhí)行指令流水線圖XC指令的地址a4加載到PAB 取XC指令的操作碼 求解XC指令所規(guī)定的條件。如果條件滿足,則后面指令i5和i6進(jìn)入譯碼級并執(zhí)行;否則不對i5和i6指令譯碼。1. XC是一條單字單周期指令,與條件跳 轉(zhuǎn)指令相比,具有快速選擇其后1或2 條指令是否執(zhí)行的優(yōu)點(diǎn) ;2. XC指令在執(zhí)行前2個(gè)周期就已經(jīng)求出 條件,如果在這之后到執(zhí)行前改變條 件(如發(fā)生中斷),將會造成無期望 的結(jié)果 。3. 要盡力避免在XC指令執(zhí)行前2個(gè)周期 改變所規(guī)定的條件 。 4. 并沒有規(guī)定XC指令后的一條或兩條指 令必須是單周期指令。注意CPU在單個(gè)周期內(nèi)兩次訪問雙尋址存儲器3雙尋址存儲器的流水線沖突 流水線沖突原因不會產(chǎn)生流水線沖突的情況(1)在單周期內(nèi)允許同時(shí)訪問DARAM的不同塊。(2)當(dāng)流水線中的一條指令訪問某一存儲器塊時(shí), 允許流水線中處于同一級的另一條指令

溫馨提示

  • 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

提交評論