2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩111頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第三章 DSP指令系統(tǒng)與特點(diǎn),第一節(jié) 數(shù)據(jù)尋址方式,第二節(jié) 程序存儲(chǔ)器地址的生成方式,第三節(jié) 流水線,第四節(jié) 指令系統(tǒng)概述,Smem:16位單尋址操作數(shù)。Xmem:16位雙尋址操作數(shù),從DB數(shù)據(jù)總線上讀出。Ymem:16位雙尋址操作數(shù),從CB數(shù)據(jù)總線上讀出。dmad:16位立即數(shù),數(shù)據(jù)存儲(chǔ)器地址。pmad:16位立即數(shù),程序存儲(chǔ)器地址。PA: 16位立即數(shù),I/O口地址。src: 源累加器(A或B)。dst:

2、目的累加器(A或B)。lk: 16位長(zhǎng)立即數(shù)。,第一節(jié) TMS320C54x的數(shù)據(jù)尋址方式,1.立即數(shù)尋址2.絕對(duì)地址尋址3.累加器尋址4.直接尋址5.間接尋址6.存儲(chǔ)器映象寄存器尋址7.堆棧尋址,尋址分類(lèi),,1.立即數(shù)尋址,在操作數(shù)前面需要加#字號(hào)來(lái)說(shuō)明該操作數(shù)為立即數(shù)。否則會(huì)把該操作數(shù)誤認(rèn)為是一個(gè)地址,從而把立即數(shù)尋址變成絕對(duì)地址尋址。,特點(diǎn),指令中包含有執(zhí)行指令所需要的操作數(shù)。立即數(shù)分為3、5、8或9位的短立

3、即數(shù)和16位的長(zhǎng)立即數(shù)兩種。短立即數(shù)可包含在單字或雙字指令中,長(zhǎng)立即數(shù)在雙字指令中。,注意,LD #93h,A LD 93h,A,舉例,,2.絕對(duì)地址尋址,特點(diǎn),在指令中包含有所要尋址的存儲(chǔ)單元的16位地址。這個(gè)16位的地址可以用其所在單元的地址標(biāo)號(hào)或者16位符號(hào)常數(shù)來(lái)表示。,(1)數(shù)據(jù)存儲(chǔ)器地址(damd)尋址,用一個(gè)符號(hào)或一個(gè)數(shù)來(lái)確定數(shù)據(jù)空間的一個(gè)地址。,方法,MVKD SAMPLE,*AR3,舉例,用一個(gè)符號(hào)或一個(gè)具

4、體的數(shù)來(lái)確定程序存儲(chǔ)器中的一個(gè)地址,2.絕對(duì)地址尋址,(2)程序存儲(chǔ)器地址(pmad)尋址,方法,MVPD TABLE,*AR4,舉例,用一個(gè)符號(hào)或一個(gè)常數(shù)來(lái)確定外部I/O口地址,2.絕對(duì)地址尋址,(3)PA尋址 端口(PA),方法,PORTR FIFO,*AR5,舉例,,用一個(gè)符號(hào)或一個(gè)常數(shù)來(lái)確定數(shù)據(jù)存儲(chǔ)器中的一個(gè)地址,2.絕對(duì)地址尋址,(4)*(lk)尋址,方法,LD *(BUFFER),A,舉例,特點(diǎn),允許所有使用Smem尋

5、址的指令去訪問(wèn)數(shù)據(jù)空間的任意單元而不改變數(shù)據(jù)頁(yè)指針(DP)的值,也不用對(duì)ARx進(jìn)行初始化,,用累加器中的數(shù)值作為地址來(lái)讀寫(xiě)程序存儲(chǔ)器。,方法,READA Smem WRITA Smem,舉例,特點(diǎn),可用來(lái)完成程序存儲(chǔ)器單元的數(shù)據(jù)與數(shù)據(jù)存儲(chǔ)器單元的數(shù)據(jù)進(jìn)行交換,3.累加器尋址,可以在不改變DP或SP的情況下,隨機(jī)地尋址128個(gè)存儲(chǔ)單元中的任何一個(gè)單元。,用一個(gè)符號(hào)或一個(gè)常數(shù)來(lái)確定7位偏移值,與DP或SP共同形成16位的數(shù)據(jù)存儲(chǔ)器實(shí)際

6、地址。,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ù)存儲(chǔ)器地址。CPL=1 7位dma域加上(正偏移)SP     的值形成16位的數(shù)據(jù)存儲(chǔ)器地址。,DP值是從0~511(29-1),以DP為基準(zhǔn)的直接尋址把存儲(chǔ)器分成51

7、2頁(yè),7位的dma范圍從0~127,每頁(yè)有128個(gè)可訪問(wèn)的單元。,,,5.間接尋址,方法,特點(diǎn),(AR0~AR7)→ARAU0/ARAU1 →16位無(wú)符號(hào)算術(shù)運(yùn)算→尋址范圍為64K,能在一個(gè)指令中訪問(wèn)兩個(gè)數(shù)據(jù)存儲(chǔ)器單元,兩個(gè)獨(dú)立的存儲(chǔ)器單元讀數(shù)據(jù)讀一個(gè)、寫(xiě)另一個(gè)存儲(chǔ)器單元讀寫(xiě)兩個(gè)連續(xù)的存儲(chǔ)器單元,,5.間接尋址,(1)單操作數(shù)尋址,LD *AR1,B,單操作數(shù)間接尋址的硬件框圖,單數(shù)據(jù)存儲(chǔ)器操作數(shù)間接尋址類(lèi)型,1) 循環(huán)尋址

8、 循環(huán)緩沖區(qū)的長(zhǎng)度值存放在循環(huán)緩沖區(qū)長(zhǎng)度寄存器BK中,BK中的數(shù)值由指令設(shè)定。長(zhǎng)度為R的循環(huán)緩沖器必須從一個(gè)N位地址的邊界開(kāi)始,即循環(huán)緩沖器基地址的最低N位必須為0。N是滿(mǎn)足2N>R的最小整數(shù)。R的值必須裝入BK。例如,含有31個(gè)字的循環(huán)緩沖器必須從最低5位為0的地址開(kāi)始,即xxxx xxxx xxx0 00002,N=5,2N=25>R=31,且31必須裝入BK。如:STM #1k,BK如果R=32,則最小的N值為6,循環(huán)緩沖

9、區(qū)的起始地址必須有6個(gè)最低有效位為0,即×××× ×××× ××00 00002。,2) 位倒序?qū)ぶ?在這種尋址方式中,用AR0存放FFT點(diǎn)數(shù)的一半整數(shù)N,用另一輔助寄存器指向一數(shù)據(jù)存放的物理單元。當(dāng)使用位倒序?qū)ぶ钒袮R0加到輔助寄存器中時(shí),地址以位倒序的方式產(chǎn)生,即進(jìn)位是從左向右,而不是從右向左進(jìn)位。 例如:  0110 10

10、00 + 0000 1000     0110 0100,以8位輔助寄存器為例,AR1表示了在存儲(chǔ)器中數(shù)據(jù)的基地址(0110 0000)2,AR0的值為(0000 1000)2。利用以下兩條語(yǔ)句可以向外設(shè)口(口地址為PA)輸出整序后的FFT變換結(jié)果:RPT #15 重復(fù)執(zhí)行下條指令15+1次PORTW *AR1+0B,PA 向外設(shè)口PA輸出整結(jié)果,位倒序?qū)FT變換結(jié)果的序號(hào)調(diào)整,0頁(yè)

11、尋址。不影響當(dāng)前DP或SP值 。用于直接尋址和間接尋址,用來(lái)修改存儲(chǔ)器映象寄存器,6.存儲(chǔ)器映象寄存器尋址,功能,LDM PRD,A,舉例,特點(diǎn),方法,高9位數(shù)據(jù)存儲(chǔ)器地址被置0,利用指令中的低7位地址訪問(wèn)MMR。,7.堆棧尋址,從高地址向低地址方向生長(zhǎng),SP)來(lái)管理堆棧,SP始終指向堆棧中所存放的最后一個(gè)數(shù)據(jù),即SP指針始終指向棧頂。在壓入操作時(shí),先減小SP的值,再將數(shù)據(jù)壓入堆棧;在彈出操作時(shí),先從堆棧彈出數(shù)據(jù),再增加SP的值。,用

12、來(lái)在中斷和子程序調(diào)用時(shí)自動(dòng)保存程序計(jì)數(shù)器(PC)中的數(shù)值,也能用來(lái)保護(hù)現(xiàn)場(chǎng)或傳送參數(shù),功能,特點(diǎn),PSHD *AR2 POPD *AR3,第二節(jié) 程序存儲(chǔ)器地址的生成,程序地址生成器(PAGEN)構(gòu)成,程序計(jì)數(shù)器(PC)重復(fù)計(jì)數(shù)器(RC)塊重復(fù)計(jì)數(shù)器(BRC)塊重復(fù)起始地址寄存器(RSA)塊重復(fù)結(jié)束地址寄存器(REA),核心,16位程序計(jì)數(shù)器(PC)內(nèi)中保存某個(gè)內(nèi)部或外部程序存儲(chǔ)器的地址。,,地址內(nèi)容為: 即將取指的某條指

13、令; 某個(gè)16位立即操作數(shù); 系數(shù)表。在程序存儲(chǔ)器中的地址,將程序存儲(chǔ)器地址加載到程序計(jì)數(shù)器的途徑,1.分支轉(zhuǎn)移操作,通過(guò)分支轉(zhuǎn)移指令改寫(xiě)PC,可以改變程序的流向。而子程序調(diào)用指令則通過(guò)將一個(gè)返回地址壓入堆棧,執(zhí)行返回時(shí)恢復(fù)原地址。,可執(zhí)行:分支轉(zhuǎn)移循環(huán)控制子程序操作,功能,方法,條件分支轉(zhuǎn)移無(wú)條件分支轉(zhuǎn)移,B[D]用指令中所給出的地址加載PCBACC[D]用所指定的累加器的低16位作為地址加載PC。,帶延遲不帶延遲操

14、作,轉(zhuǎn)移種類(lèi),BC[D]如果指令中所規(guī)定的條件得到滿(mǎn)足,就用指令中所給出的地址加載PC;BANZ[D]如果當(dāng)前輔助寄存器不等于0,就用指令中所規(guī)定的地址加載PC。,BC new,AOV BANZ loop,*AR2-,B nextBACC A,2.調(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)

15、移到程序存儲(chǔ)器的其它地址繼續(xù)運(yùn)行。,功能,方法,無(wú)條件調(diào)用與返回有條件調(diào)用與返回,帶延遲不帶延遲,CALL[d] lopRET main,3.條件指令中的條件判斷,多重條件判斷,BC pmad,cond[,cond[,cond]],相與關(guān)系,相或關(guān)系,BC pmad,condBC pmad,cond,第1組,例如,可以從A類(lèi)中選一個(gè)條件,同時(shí)可以從B類(lèi)中選擇一個(gè)條件。但是不能從同一類(lèi)中選擇兩個(gè)條件。另外,兩種條件測(cè)試的累

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

17、  條件指令后的1個(gè)字指令。當(dāng)n=2,且條件得到滿(mǎn)足,就執(zhí)行緊隨此     指令后的1個(gè)雙字指令或者2條單     字指令?!   ‘?dāng)條件不滿(mǎn)足,就依n的值執(zhí)行1     條或2條NOP指令。,特點(diǎn)2,特點(diǎn)1,4.單條指令的重復(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ù)循

18、環(huán)完成以前,對(duì)所有的中斷(包括 ,但不包括 )均不響應(yīng)。,功能,重復(fù)執(zhí)行下一條指令,重復(fù)過(guò)程,當(dāng)RPT指令執(zhí)行時(shí):①首先把循環(huán)的次數(shù)裝入循環(huán)計(jì)數(shù)器(RC),②其循環(huán)次數(shù)n由一個(gè)16位單數(shù)據(jù)存儲(chǔ)器操作數(shù) Smem或一個(gè)8位或16位常數(shù)k或lk給定。這樣, 緊接著的下一條指令會(huì)循環(huán)執(zhí)行n+1次。③循環(huán),RC在執(zhí)行減1操作時(shí)不能被訪問(wèn)。注意:該循環(huán)內(nèi)不能套用循環(huán)。 當(dāng)RPTZ指令執(zhí)行時(shí):對(duì)目的累加器dst清

19、0, 循環(huán)執(zhí)行下一條指令n+1次。,特點(diǎn),5.塊重復(fù)操作,利用C54x內(nèi)部的塊重復(fù)計(jì)數(shù)器(BRC,加載值可為0~65 535)、塊重復(fù)起始地址寄存器(RSA)、塊重復(fù)結(jié)束地址寄存器(REA)與程序塊重復(fù)指令RPTB,可對(duì)緊隨RPTB、由若干條指令構(gòu)成的程序塊進(jìn)行重復(fù)操作。,功能,將重復(fù)操作的范圍擴(kuò)大到任意長(zhǎng)度的循環(huán)回路,注意,1.RPT指令一旦執(zhí)行,不會(huì)停止操作,即使有中斷請(qǐng)求也不響應(yīng);2.RPTB指令可以響應(yīng)中斷;,例3-6

20、 對(duì)數(shù)據(jù)組x[5]中的每個(gè)元素加1?!  ?bss x,5   ;為數(shù)組x分配5個(gè)存儲(chǔ)單元begin: LD #1,16,B ;將1左移16位放入B的          ;高端字的最低位   STM #4,BRC ; 4→BRC,(PC)+2 →RSA    STM #x,AR4??;將x的首地址賦給AR4    RPTB next-1??;將NEXT-1 →REA    ADD *AR4,16,B,A ;x地址的內(nèi)

21、容左移16位加 ; B的高端字,結(jié)果放A   STH A,*AR4+ ;將A的高端字存入x單元, ;完成加1操作next: LD #0,B ;對(duì)B清零   …      ;必需next-1作為結(jié)束地址,,對(duì)寄存器的占用,6.循環(huán)的嵌套,執(zhí)行RPT指令時(shí)占用RPTC寄存器(重復(fù)計(jì)數(shù)器);執(zhí)行RPTB指令時(shí)要用到BRC、RSA和RSE寄存器。

22、只有一套塊重復(fù)寄存器,故塊重復(fù)操作不能嵌套。 由于RPT與RPTB兩者用了不同的寄存器,因此RPT指令可以嵌套在RPTB指令中,實(shí)現(xiàn)循環(huán)的嵌套。執(zhí)行BANZ指令只占用輔助寄存器ARx。不會(huì)與RPT RPTB指令相沖突。,嵌套原則,參與嵌套循環(huán)的寄存器不能重復(fù)使用,圖3-3 一個(gè)三重循環(huán)嵌套結(jié)構(gòu),第三節(jié) 流水線,流水線操作,在執(zhí)行多條指令時(shí),將每條指令的預(yù)取指、取指、譯碼、尋址、讀取操作數(shù)、執(zhí)行等階段,相差一個(gè)階段地重疊地執(zhí)行。

23、,流水線操作的優(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)容加載指令寄

24、存器IR,對(duì)IR內(nèi)的指令進(jìn)行譯碼,產(chǎn)生執(zhí)行指令所需要的一系列控制信號(hào)。,預(yù)取指P取指F譯碼D尋址A讀取操作數(shù)R執(zhí)行X,流水線操作,用數(shù)據(jù)1讀地址加載DAB,或用數(shù)據(jù)2讀地址加載CAB,修正輔助寄存器和堆棧指針。,讀數(shù)據(jù)1加載DB,或讀數(shù)據(jù)2加載CB;用數(shù)據(jù)3寫(xiě)地址加載到EAB,以便在流水線的最后一級(jí)將數(shù)據(jù)送到數(shù)據(jù)存儲(chǔ)空間。,執(zhí)行指令,或用寫(xiě)數(shù)據(jù)加載EB。,空轉(zhuǎn)浪費(fèi)周期,1.延遲分支轉(zhuǎn)移的流水線圖,無(wú)延遲流水線分支轉(zhuǎn)移的問(wèn)題,地

25、址 指令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和i4指令取指。由于這兩條指令處在

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

27、 隙,因此不能在此空隙中安排任何 一類(lèi)分支轉(zhuǎn)移指令或重復(fù)指令;2.在CALLD或RETD的空隙中還不能安 排PUSH和POP指令。3.延遲操作指令比它們的非延遲型 指令要快,在調(diào)試延遲型指令時(shí), 直觀性稍差一些,因此希望在大多 數(shù)情況下還是采用非延遲型指令。,例3-8 在完成R=(x+y)*z操作后轉(zhuǎn)至next。  可以分別編出如下兩段程序:利用普通分支轉(zhuǎn)移指令B  利用延遲分支轉(zhuǎn)移指令BD  LD

28、 @x,A LD @x,A  ADD @y,A ADD @y,A  STL A, @s STL A, @s  LD @s,T LD @s,T  MPY @z,A BD next   STL A, @r MPY @z,A   B next

29、 STL A, @r(共8個(gè)字,10個(gè)T) (共8個(gè)字,8個(gè)T),,在空閑的隨后兩周期中執(zhí)行下兩條指令,XC n,cnd[,cnd[,cnd]  如果條件滿(mǎn)足,則執(zhí)行下面n(n=1或2)條指令,否則下面n條指令改為執(zhí)行n條NOP指令。,2.條件執(zhí)行指令的流水線圖,條件執(zhí)行指令XC,有下列程序:地址 指令a1 i1a2 i2a3 i3

30、a4 XC 2, conda5 i5a6 i6,,,條件執(zhí)行指令流水線圖,XC指令的地址a4加載到PAB,取XC指令的操作碼,求解XC指令所規(guī)定的條件。如果條件滿(mǎn)足,則后面指令i5和i6進(jìn)入譯碼級(jí)并執(zhí)行;否則不對(duì)i5和i6指令譯碼。,1. XC是一條單字單周期指令,與條件跳 轉(zhuǎn)指令相比,具有快速選擇其后1或2 條指令是否執(zhí)行的優(yōu)點(diǎn) ;2. XC指令在執(zhí)行前2個(gè)周期就已經(jīng)求出

31、 條件,如果在這之后到執(zhí)行前改變條 件(如發(fā)生中斷),將會(huì)造成無(wú)期望 的結(jié)果 。3. 要盡力避免在XC指令執(zhí)行前2個(gè)周期 改變所規(guī)定的條件 。 4. 并沒(méi)有規(guī)定XC指令后的一條或兩條指 令必須是單周期指令。,注意,CPU在單個(gè)周期內(nèi)兩次訪問(wèn)雙尋址存儲(chǔ)器,3.雙尋址存儲(chǔ)器的流水線沖突,流水線沖突原因,,不會(huì)產(chǎn)生流水線沖突的情況,(1)在單周期內(nèi)允許同時(shí)訪問(wèn)DARAM的不同塊。(2)當(dāng)流水線中的一條

32、指令訪問(wèn)某一存儲(chǔ)器塊時(shí), 允許流水線中處于同一級(jí)的另一條指令訪問(wèn) 另一個(gè)存儲(chǔ)器塊。(3)允許處于流水線不同級(jí)上的兩條指令同時(shí)訪 問(wèn)同一個(gè)存儲(chǔ)器塊。,是利用一次訪問(wèn)中對(duì)前、后半個(gè)周期分時(shí)進(jìn)行訪問(wèn)的緣故。,CPU能夠在單周期內(nèi)對(duì)DARAM進(jìn)行兩次訪問(wèn)而不沖突,,對(duì)PAB/PB取指 利用前半周期對(duì)DAB/DB讀取第一個(gè)數(shù)據(jù) 利用前半周期對(duì)CAB/CB讀取第二個(gè)數(shù)據(jù)

33、 利用后半周期對(duì)EAB/EB將數(shù)據(jù)寫(xiě)存儲(chǔ)器 利用后半周期,(1) 同時(shí)從同一存儲(chǔ)器塊中取指和取操作數(shù)(都在前半個(gè)周期);2.同時(shí)對(duì)同一存儲(chǔ)器塊進(jìn)行寫(xiě)操作和讀(第二個(gè)數(shù))操作(都在后半周期)。,解決沖突辦法,人為合理安排指令,錯(cuò)開(kāi)訪問(wèn)時(shí)序,CPU通過(guò)寫(xiě)操作延遲一個(gè)周期,或者通過(guò)插入一個(gè)空周期的辦法,自動(dòng)地解決,CPU同時(shí)訪問(wèn)DARAM的同一存儲(chǔ)器塊就會(huì)發(fā)生時(shí)序上的沖突。,從DARAM塊中同時(shí)取指和取操作數(shù),,,沖突,

34、延遲一個(gè)周期,,4.解決流水線沖突的方法,(1)可能發(fā)生流水線沖突的情況,1) 輔助寄存器(AR0~AR7)。2) 重復(fù)塊長(zhǎng)度寄存器(BK)。3) 堆棧指針。4) 暫存器(T)。5) 處理器工作方式狀態(tài)寄存器(PMST)。6) 狀態(tài)寄存器(ST0和ST1)。7)塊重復(fù)計(jì)數(shù)器(BRC)。8)存儲(chǔ)器映象累加器(AG、AH、AL、BG、BH、BL)。,流水線沖突情況分析,發(fā)生流水線沖突的例子,在流水線的執(zhí)行階段進(jìn)行寫(xiě)操作,在流水

35、線的尋址階段生成地址,沖突,,無(wú)等待周期問(wèn)題,解決,數(shù)據(jù)未準(zhǔn)備好,,發(fā)生流水線沖突的例子,在流水線的執(zhí)行階段進(jìn)行寫(xiě)操作,讀數(shù)階段將常數(shù)10寫(xiě)到AR1,沖突,同時(shí)利用E總線,CPU自動(dòng)地將STM的寫(xiě)操作延遲一個(gè)周期,在流水線的尋址階段生成地址,新沖突,數(shù)據(jù)未準(zhǔn)備好,解決,發(fā)生流水線沖突的例子,STLM指令后面插入一條NOP指令,在流水線的執(zhí)行階段進(jìn)行寫(xiě)操作,讀數(shù)階段將常數(shù)10寫(xiě)到AR1,在流水線的尋址階段生成地址,,E總線錯(cuò)開(kāi),解決,,數(shù)

36、據(jù)準(zhǔn)備好,解決,4.解決流水線沖突的方法,(2)用等待周期表解決流水線沖突,等待周期表給出了對(duì)存儲(chǔ)器映象寄存器以及ST0、ST1、PMST的控制字段進(jìn)行寫(xiě)操作的各種指令所需插入的等待周期。對(duì)雙字或三字指令,都會(huì)提供隱含的保護(hù)周期。利用這些指令提供的隱含的保護(hù)周期,有時(shí)可以不插NOP指令。,等待周期表1,例3-11 利用表3-8等待周期表1選擇插入的NOP數(shù)。SSBX SXMNOPLD @x,B 由于LD @ x,

37、B是一條單字指令,不提供隱含的保護(hù)周期。根據(jù)表3-8的等待周期表1,應(yīng)當(dāng)在SSBX SXM 指令后插入一條NOP指令。而SSBX SXMLD *(x),B由于LD *(x),B是一條雙字的絕對(duì)尋址指令,它隱含一個(gè)等待周期,故SSBX指令就不要再插NOP指令了。,ST1第8位SXM=0禁止符號(hào)位擴(kuò)展SXM=1允許符號(hào)位擴(kuò)展,例3-12 利用隱含等待周期解決流水線沖突。LD @GAIN ,TSTM #inp

38、ut,AR1MPY *AR1+,A例3-13利用表3-8等待周期表3插入NOP周期解決流水線沖突。STLM B,AR2NOPSTM #input,AR3MPY AR2+,*AR3+,A,LD 中寫(xiě)T和STM中寫(xiě)AR1要用到E總線,由于STM是一條雙字指令,隱含一個(gè)等待周期,故對(duì)于AR1來(lái)說(shuō),等待周期為0。,STM中寫(xiě)AR3要用到E總線,會(huì)與STLM中寫(xiě)AR2用E總線相沖突,查表3-8等待周期表3的控制字段為A

39、R3,STLM指令后應(yīng)插入2個(gè)NOP,但由于下條指令STM隱含1個(gè)等待周期,故只需要插入一條NOP指令。,第四節(jié) 指令系統(tǒng)概述,TMS320C54x是TMS320系列中的一種定點(diǎn)數(shù)字信號(hào)處理器,它的指令系統(tǒng)分助記符形式和代數(shù)式形式兩種。共有指令129條,由于操作數(shù)的尋址方式不同,派生至205條。,1.可同時(shí)讀入2或3個(gè)操作數(shù);2.支持雙精度運(yùn)算的32位長(zhǎng)操作數(shù)指令;3.可進(jìn)行單條指令重復(fù)和塊指令重復(fù)操作;4.有塊存儲(chǔ)器傳送指令

40、和并行操作(如并行存儲(chǔ)和加載、并行存儲(chǔ)和加/減法、并行存儲(chǔ)和乘法、并行加載和乘法)指令;5.設(shè)有條件存儲(chǔ)指令及延遲操作指令、有從中斷快速返回指令;6.有為特殊用途設(shè)計(jì)的指令(如支持FIR濾波、最小均方算法LSM、多項(xiàng)式計(jì)算以及浮點(diǎn)運(yùn)算);7.有為省電安排的空轉(zhuǎn)指令。,TMS320C54x指令系統(tǒng)的主要特點(diǎn),TMS320C54x的指令集有近兩百條指令,按功能分為如下幾類(lèi): ?算術(shù)運(yùn)算指令?邏輯運(yùn)算指令?程

41、序控制指令?裝入和存儲(chǔ)指令,一、算術(shù)運(yùn)算指令,算術(shù)運(yùn)算指令可分為如下幾類(lèi): ? 加法指令 ? 減法指令 ? 乘法指令 ? 乘加指令 ? 乘減指令? 雙數(shù)/雙精度指令 ? 特殊操作指令,,1、加法指令,定點(diǎn)DSP中數(shù)據(jù)表示方法,當(dāng)它表示一個(gè)整數(shù)時(shí),其最低位(D0)表示1,D1位表示2的1次方,次高位(D14)表示2的14方。如果表示一個(gè)有符號(hào)數(shù)時(shí),最高位(D1

42、5)為符號(hào)位,0表示正數(shù),1表示負(fù)數(shù)。例如,07FFFH表示最大的正數(shù)32767(十進(jìn)制),而0FFFFH表示最大的負(fù)數(shù)-1(負(fù)數(shù)用2的補(bǔ)碼方式顯示)。當(dāng)需要表示小數(shù)時(shí),小數(shù)點(diǎn)的位置始終在最高為后,而最高位(D15)表示符號(hào)位。這樣次高位(D14)表示0.5,然后是0.25,最低位(D0)表示。所以4000H表示小數(shù)0.5,2000H表示小數(shù)0.25,而0001H表示16位定點(diǎn)DSP表示的最小的小數(shù)(有符號(hào))0.00003051757

43、8125。,實(shí)現(xiàn)16位定點(diǎn)加法,‘C54X中提供了多條用于加法的指令,如ADD,ADDC,ADDM和ADDS。其中ADDS用于無(wú)符號(hào)數(shù)的加法運(yùn)算,ADDC用于帶進(jìn)位的加法運(yùn)算(如32位擴(kuò)展精度加法),而ADDM專(zhuān)用于立即數(shù)的加法。,使用ADD完成加法,ld temp1,a;將變量temp1裝入寄存器A add temp2,a;將變量temp2與寄存器A相加

44、 ;結(jié)果放入A中 stla,temp3;將結(jié)果(低16位)存入變量 ;temp3中。 注意,這里完成計(jì)算temp3=temp1+temp2,我們沒(méi)有特意考慮temp1和temp2是整數(shù)還是小數(shù),在加法和下面的減法中整數(shù)運(yùn)算和定點(diǎn)的小數(shù)運(yùn)算都是一樣的。,ADD中尋址方式,ADD Smem [,SHIFT],src [,dst

45、] 例如: ADD *AR0,1,A,A ADD 60H,-1,A,A ADD *AR5,1,A,B ADD Xmem, SHFT, src 例如: ADD *AR5,1,AADD Xmem,Ymem, dst 例如: ADD *AR2,*AR3,A,2、減法指令,

46、實(shí)現(xiàn)16位定點(diǎn)減法,‘C54X中提供了多條用于減法的指令,如SUB,SUBB,SUBC和SUBS。其中SUBS用于無(wú)符號(hào)數(shù)的減法運(yùn)算,SUBB用于帶進(jìn)位的減法運(yùn)算(如32位擴(kuò)展精度的減法),而SUBC為移位減,DSP中的除法就是用該指令來(lái)實(shí)現(xiàn)的。,減法指令使用舉例,stm temp1,ar3;將變量temp1的地址裝入ar3寄存器 stm temp3,ar2;將變量temp3的地址裝入ar2寄存器 sub*ar2+, *a

47、r3,b;相減,結(jié)果放入寄存器B(高16位)中, ; 同時(shí)ar2加1。 sthb,63h;將相減的結(jié)果(高16位)存入變量63h,利用SUBC實(shí)現(xiàn)除法,在‘C54X中沒(méi)有提供專(zhuān)門(mén)的除法指令,一般有兩種方法來(lái)完成除法。一種是用乘法來(lái)代替,除以某個(gè)數(shù)相當(dāng)于乘以其倒數(shù),所以先求出其倒數(shù),然后相乘。這種方法對(duì)于除以常數(shù)特別適用。另一種方法是使用SUBC指令,

48、重復(fù)16次減法完成除法運(yùn)算。,利用SUBC完成除法運(yùn)算,ldtemp1,B;將被除數(shù)temp1裝入B寄存 ;器的低16位rpt#15 ;重復(fù)SUBC指令16次subctemp2,b;使用SUBC指令完成除法stlB,temp3;將商(B寄存器的低16位)

49、 ;存入變量temp3sthB,temp4;將余數(shù)(B寄存器的高16位) ;存入變量temp4 注: 實(shí)際上是完成整數(shù)除法,實(shí)現(xiàn)小數(shù)除法,在‘C54X中實(shí)現(xiàn)16位

50、的小數(shù)除法與前面的整數(shù)除法基本一致,也是使用SUBC指令來(lái)完成。但有兩點(diǎn)需要注意:第一,小數(shù)除法的結(jié)果一定是小數(shù)(小于1),所以被除數(shù)一定小于除數(shù)。在執(zhí)行SUBC指令前,應(yīng)將被除數(shù)裝入A或B寄存器的高16位,而不是低16位。其結(jié)果的格式與整數(shù)除法一樣。第二,應(yīng)考慮符號(hào)位對(duì)結(jié)果小數(shù)點(diǎn)的影響。所以應(yīng)對(duì)商右移一位,得到正確的有符號(hào)數(shù)。,3、乘法指令,實(shí)現(xiàn)16定點(diǎn)整數(shù)乘法,在‘C54X中提供了大量的乘法運(yùn)算指令,其結(jié)果都是32位,放在A或B寄存

51、器中。乘數(shù)在‘C54X的乘法指令很靈活,可以是T寄存器、立即數(shù)、存貯單元和A或B寄存器的高16位。如果是無(wú)符號(hào)數(shù)乘時(shí),請(qǐng)使用MPYU指令。這是一條專(zhuān)用于無(wú)符號(hào)數(shù)乘法運(yùn)算的指令,而其它指令都是有符號(hào)數(shù)的乘法。,整數(shù)乘法舉例,rsbxFRCT;清FRCT標(biāo)志,準(zhǔn)備整數(shù)乘ldtemp1,T;將變量temp1裝入T寄存器mpytemp2,a;完成temp2*temp1,結(jié)果放

52、 ;入A寄存器(32位),實(shí)現(xiàn)小數(shù)乘法,在‘C54X中,小數(shù)的乘法與整數(shù)乘法基本一致,只是由于兩個(gè)有符號(hào)的小數(shù)相乘,其結(jié)果的小數(shù)點(diǎn)的位置在次高的后面,所以必須左移一位,才能得到正確的結(jié)果?!瓹54X中提供了一個(gè)狀態(tài)位FRCT,將其設(shè)置為1時(shí),系統(tǒng)自動(dòng)將乘積結(jié)果左移移位。兩個(gè)小數(shù)(16位)相乘后結(jié)果為32位,如果精度允許的話(huà),可以只存高16位,將低16位丟棄,這樣仍可得到16位的結(jié)果。,小數(shù)乘法舉例,ssbx

53、FRCT ;FRCT=1,準(zhǔn)備小數(shù)乘法 ld temp1,16,a ;將變量temp1裝入寄存器A的高16位 mpya temp2 ;完成temp2乘寄存器A的高16位,結(jié) ;果在B中,同時(shí)將temp2裝入T寄存器 sth b,temp3 ;將乘積結(jié)果的高16位存入變量temp3如:0.1

54、(0x0ccd) x 0.7(0x599a) = 0.06997680664063(0x08f5)注:可以使用MPYR完成四舍五入。 比較如下結(jié)果 mpyr temp1,b ; T * temp1 -> b,4、乘加和乘減指令,5、雙精度/雙數(shù)操作指令,6、特殊指令,二、邏輯運(yùn)算指令,邏輯指令包括與、或、異或、移位和測(cè)試指令1、與指令(AND),2、或、異或指令,3、移位和測(cè)試指令,,三、程序控

55、制指令,程序控制指令包括:分支指令調(diào)用指令中斷指令返回指令重復(fù)指令堆棧操作指令混合程序控制指令,1、分支指令,2、調(diào)用與中斷指令,3、返回指令,4、重復(fù)指令和堆棧操作指令,5、混合程序控制指令,四、裝入和存儲(chǔ)指令,裝入和存儲(chǔ)指令包括:一般的裝入和存儲(chǔ)指令條件存儲(chǔ)指令并行裝入和存儲(chǔ)指令并行裝入和乘法指令并行存儲(chǔ)和加件乘指令混合裝入和存儲(chǔ)指令,1、一般的裝入指令

56、,2、存貯指令,3 并行裝入和存儲(chǔ)指令,4、條件存儲(chǔ)指令,5、并行存儲(chǔ)和加、減、乘法指令,6、并行裝入和乘法指令,7、混合裝入和存儲(chǔ)指令,注意:同一條指令在不同存儲(chǔ)器中可能有不同執(zhí)行時(shí)間,操作數(shù)在雙尋址空間、單尋址空間和外部程序代碼在雙尋址、單尋址和外部空間操作數(shù)和代碼在相同存儲(chǔ)器塊中數(shù)據(jù)空間插入了等待周期程序空間插入了等待周期,FIRS指令使用方法:FIRS *AR2+, *AR3+, COEF,,特殊指令使用說(shuō)

57、明,FIRS指令 FIRS指令用于線性相位濾波器的處理。一個(gè)如下圖的8階線性相位濾波器的輸出表達(dá)式:,FIR濾波的兩指令MAC、FIRS,RPTZ A,#(N-1) ;重復(fù)MAC指令N次,先將A清零MAC *FIR_DATA_P+0%,*FIR_COFF_P+0%,A

58、 ; 完成濾波計(jì)算。注意FIR濾波 ;系數(shù)存放在數(shù)據(jù)存儲(chǔ)區(qū),RPTZ B, #(N/2-1) ; 重復(fù)FIRS指令N/2次,先將B清零 FIRS *ar2+0%, *ar3+0%,filter_coff+N/2 ;完成濾波計(jì)算。注意FIR濾波系數(shù) ;存放在程序存貯filter_coff為 ;系數(shù)起始地址,,Viter

59、bi譯碼指令DADST、DSADT、CMPS,在信道均衡和解碼中經(jīng)常會(huì)使用到Viterbi算法,C54x為此提供了專(zhuān)門(mén)的硬件和指令。根據(jù)輸入信號(hào)確定分支似然概率增加量D1/D2,放在T寄存器中,TRN存儲(chǔ)可能信號(hào)譯碼輸出。,相關(guān)指令應(yīng)用,,最小均方運(yùn)算LMS,在進(jìn)行自適應(yīng)濾波等操作中經(jīng)常會(huì)使用LMS算法,C54x提供的LMS指令方便了編程。如下圖所示的自適應(yīng)濾波器設(shè)計(jì)中,濾波器系數(shù)修正公式為:,其中,e(i) = d(i) - y(i)

60、。濾波器輸出:,基于LMS的自適應(yīng)濾波編程,,數(shù)據(jù)歸一化相關(guān)指令EXP、NORM,歸一化一個(gè)數(shù)是先求其指數(shù),然后把它調(diào)整到最大精度格式。實(shí)現(xiàn)方法如下:,,,數(shù)據(jù)塊移動(dòng)MVDD、MVDP、MVPD,在C54x系列DSP,數(shù)據(jù)與數(shù)據(jù)存儲(chǔ)器、數(shù)據(jù)與程序存儲(chǔ)器之間可以方便的進(jìn)行數(shù)據(jù)傳輸,結(jié)合單指令循環(huán)可實(shí)現(xiàn)數(shù)據(jù)塊移動(dòng)。如16個(gè)系數(shù)的移動(dòng):,,指令效率的提高,C54x中有一些指令功能差不多,但編寫(xiě)出的程序效率不同,應(yīng)靈活使用,如:MPY[

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論