DSP指令系統(tǒng)及特點_第1頁
DSP指令系統(tǒng)及特點_第2頁
DSP指令系統(tǒng)及特點_第3頁
DSP指令系統(tǒng)及特點_第4頁
DSP指令系統(tǒng)及特點_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

會計學(xué)1DSP指令系統(tǒng)及特點第三章DSP指令系統(tǒng)與特點第一節(jié)尋址方式第二節(jié)程序地址的生成第三節(jié)流水線操作技術(shù)(了解)第四節(jié)指令系統(tǒng)概述第1頁/共62頁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的尋址方式

第2頁/共62頁1.立即數(shù)尋址2.絕對地址尋址3.累加器尋址4.直接尋址5.間接尋址6.存儲器映象寄存器尋址7.堆棧尋址尋址分類第3頁/共62頁

1.立即數(shù)尋址

在操作數(shù)前面需要加#字號來說明該操作數(shù)為立即數(shù)。否則會把該操作數(shù)誤認(rèn)為是一個地址,從而把立即數(shù)尋址變成絕對地址尋址。

特點指令中包含有執(zhí)行指令所需要的操作數(shù)。立即數(shù)分為3、5、8或9位的短立即數(shù)和16位的長立即數(shù)兩種。短立即數(shù)可包含在單字或雙字指令中,長立即數(shù)在雙字指令中。

注意LD#93h,A

LD93h,A舉例第4頁/共62頁

2.絕對地址尋址特點在指令中包含有所要尋址的存儲單元的16位地址。這個16位的地址可以用其所在單元的地址標(biāo)號或者16位符號常數(shù)來表示。

(1)數(shù)據(jù)存儲器地址(damd)尋址

用一個符號或一個數(shù)來確定數(shù)據(jù)空間的一個地址。

方法MVKDSAMPLE,*AR3

舉例第5頁/共62頁用一個符號或一個具體的數(shù)來確定程序存儲器中的一個地址

(2)程序存儲器地址(pmad)尋址方法MVPDTABLE,*AR4

舉例第6頁/共62頁用一個符號或一個常數(shù)來確定外部I/O口地址

(3)PA尋址端口(PA)方法PORTRFIFO,*AR5舉例第7頁/共62頁用一個符號或一個常數(shù)來確定數(shù)據(jù)存儲器中的一個地址

(4)*(lk)尋址方法LD*(BUFFER),A舉例特點允許所有使用Smem尋址的指令去訪問數(shù)據(jù)空間的任意單元而不改變數(shù)據(jù)頁指針(DP)的值,也不用對ARx進行初始化

第8頁/共62頁用累加器中的數(shù)值作為地址來讀寫程序存儲器。方法READASmemWRITASmem舉例特點可用來完成程序存儲器單元的數(shù)據(jù)與數(shù)據(jù)存儲器單元的數(shù)據(jù)進行交換

3.累加器尋址第9頁/共62頁可以在不改變DP或SP的情況下,隨機地尋址128個存儲單元中的任何一個單元。

用一個符號或一個常數(shù)來確定7位偏移值,與DP或SP共同形成16位的數(shù)據(jù)存儲器實際地址。4.直接尋址方法LD#x,DPLD@u,AADD@v,A===========SSBXCPLLD@X1,AADD@Y2,A舉例特點第10頁/共62頁CPL=07位dma域與9bit的DP相結(jié)合形成16位的數(shù)據(jù)存儲器地址。CPL=17位dma域加上(正偏移)SP的值形成16位的數(shù)據(jù)存儲器地址。

DP值是從0~511(29-1),以DP為基準(zhǔn)的直接尋址把存儲器分成512頁,7位的dma范圍從0~127,每頁有128個可訪問的單元。

第11頁/共62頁5.間接尋址方法特點(AR0~AR7)→ARAU0/ARAU1→16位無符號算術(shù)運算→尋址范圍為64K

能在一個指令中訪問兩個數(shù)據(jù)存儲器單元兩個獨立的存儲器單元讀數(shù)據(jù)讀一個、寫另一個存儲器單元讀寫兩個連續(xù)的存儲器單元

第12頁/共62頁5.間接尋址(1)單操作數(shù)尋址定義間接尋址的類型定義尋址所使用的輔助寄存器ST1CMPT=0標(biāo)準(zhǔn)方式

ARF確定輔助寄存器,ST0中ARP=0

CMPT=1兼容方式如ARF=0,用ARP選擇輔助寄存器,否則,用ARF來確定輔助寄存器。ARF的值裝入ARP。LD*AR1,B第13頁/共62頁單操作數(shù)間接尋址的硬件框圖第14頁/共62頁MOD域操作碼語法功能說明0000*ARxaddr=ARxARx包含了數(shù)據(jù)存儲器地址0001*ARx-addr=ARxARx=ARx-1訪問后,ARx中的地址減1②0010*ARx+addr=ARxARx=ARx+1訪問后,ARx中的地址加1①0011*+ARxaddr=ARx+1ARx=ARx+1在尋址前,ARx中的地址加1,然后再尋址①②③0100*ARx-0Baddr=ARxARx=B(ARx-AR0)訪問后,從ARx中以位倒序進位的方式減去AR00101*ARx-0addr=ARxARx=ARx-AR0訪問后,從ARx中減去AR00110*ARx+0addr=ARxARx=ARx+AR0訪問后,把AR0加到ARx中去0111*ARx+0Baddr=ARxARx=B(ARx+AR0)訪問后,把AR0以位倒序進位的方式加到ARx中1000*ARx-%addr=ARxARx=circ(ARx-1)訪問后,ARx中的地址以循環(huán)尋址的方式減1①1001*ARx-0%addr=ARxARx=circ(ARx-AR0)訪問后,從ARx中以循環(huán)尋址的方式減去AR01010*ARx+%addr=ARxARx=circ(ARx+1)訪問后,ARx中的地址以循環(huán)尋址的方式加1①1011*ARx+0%addr=ARxARx=circ(ARx+AR0)訪問后,把AR0以循環(huán)尋址的方式加到ARx中1100*ARx(lk)addr=ARx+lkARx=ARxARx和16位的長偏移(lk)的和用來作為數(shù)據(jù)存儲器地址。ARx本身不被修改1101*+ARx(lk)addr=ARx+lkARx=ARx+lk在尋址前,把一個帶符號的16位的長偏移(lk)加到ARx中,然后用新的ARx的值作為數(shù)據(jù)存儲器的地址③1110*+ARx(lk)%addr=circ(ARx+lk)ARx=circ(ARx+lk)在尋址前,把一個帶符號的16位的長偏移以循環(huán)尋址的方式加到ARx中,然后再用新的ARx的值作為數(shù)據(jù)存儲器的地址③1111*(lk)addr=lk一個無符號的16位的長偏移(lk)用來作為數(shù)據(jù)存儲器的絕對地址。(也屬絕對尋址)③單數(shù)據(jù)存儲器操作數(shù)間接尋址類型

第15頁/共62頁1)循環(huán)尋址循環(huán)緩沖區(qū)的長度值存放在循環(huán)緩沖區(qū)長度寄存器BK中,BK中的數(shù)值由指令設(shè)定。長度為R的循環(huán)緩沖器必須從一個N位地址的邊界開始,即循環(huán)緩沖器基地址的最低N位必須為0。N是滿足2N>R的最小整數(shù)。R的值必須裝入BK。例如,含有31個字的循環(huán)緩沖器必須從最低5位為0的地址開始,即xxxxxxxxxxx000002,N=5,2N=25>R=31,且31必須裝入BK。如:STM#1k,BK如果R=32,則最小的N值為6,循環(huán)緩沖區(qū)的起始地址必須有6個最低有效位為0,即××××××××××0000002。第16頁/共62頁2)位倒序?qū)ぶ吩谶@種尋址方式中,用AR0存放FFT點數(shù)的一半整數(shù)N,用另一輔助寄存器指向一數(shù)據(jù)存放的物理單元。當(dāng)使用位倒序?qū)ぶ钒袮R0加到輔助寄存器中時,地址以位倒序的方式產(chǎn)生,即進位是從左向右,而不是從右向左進位。例如:01101000+00001000

01100100以8位輔助寄存器為例,AR1表示了在存儲器中數(shù)據(jù)的基地址(01100000)2,AR0的值為(00001000)2。利用以下兩條語句可以向外設(shè)口(口地址為PA)輸出整序后的FFT變換結(jié)果:RPT#15重復(fù)執(zhí)行下條指令15+1次PORTW*AR1+0B,PA向外設(shè)口PA輸出整結(jié)果第17頁/共62頁AR1修改循環(huán)值存儲單元地址整序前FFT變換結(jié)果位倒序AR1更新的地址值A(chǔ)R0=000010002整序后PA輸出的FFT變換結(jié)果00000X(0)000001100000X(0)10001X(8)100001101000X(1)20010X(4)010001100100X(2)30011X(12)110001101100X(3)40100X(2)001001100010X(4)50101X(10)101001101010X(5)60110X(6)011001100110X(6)70111X(14)111001101110X(7)81000X(1)000101100001X(8)91001X(9)100101101001X(9)101010X(5)010101100101X(10)111011X(13)110101101101X(11)121100X(3)001101100011X(12)131101X(11)101101101011X(13)141110X(7)011101100111X(14)151111X(15)111101101111X(15)位倒序?qū)FT變換結(jié)果的序號調(diào)整

第18頁/共62頁5.間接尋址(2)雙操作數(shù)尋址方式確定包含Xmem地址的輔助寄存器

確定包含Ymem地址的輔助寄存器定義用于訪問Ymem操作數(shù)的間接尋址方式的類型定義用于訪問Xmem操作數(shù)的間接尋址方式的類型MPY*AR2,*AR3,A第19頁/共62頁Xar或Yar輔助寄存器

00AR2

01AR3

10AR4

11AR5

輔助寄存器選擇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ù)尋址的類型第20頁/共62頁0頁尋址。不影響當(dāng)前DP或SP值。用于直接尋址和間接尋址用來修改存儲器映象寄存器

6.存儲器映象寄存器尋址功能LDMPRD,A舉例特點方法高9位數(shù)據(jù)存儲器地址被置0,利用指令中的低7位地址訪問MMR。第21頁/共62頁7.堆棧尋址從高地址向低地址方向生長,SP)來管理堆棧,SP始終指向堆棧中所存放的最后一個數(shù)據(jù),即SP指針始終指向棧頂。在壓入操作時,先減小SP的值,再將數(shù)據(jù)壓入堆棧;在彈出操作時,先從堆棧彈出數(shù)據(jù),再增加SP的值。用來在中斷和子程序調(diào)用時自動保存程序計數(shù)器(PC)中的數(shù)值,也能用來保護現(xiàn)場或傳送參數(shù)功能特點PSHD*AR2

POPD*AR3第22頁/共62頁第二節(jié)程序地址的生成程序地址生成器(PAGEN)構(gòu)成程序計數(shù)器(PC)重復(fù)計數(shù)器(RC)塊重復(fù)計數(shù)器(BRC)塊重復(fù)起始地址寄存器(RSA)塊重復(fù)結(jié)束地址寄存器(REA)核心16位程序計數(shù)器(PC)內(nèi)中保存某個內(nèi)部或外部程序存儲器的地址。地址內(nèi)容為:

即將取指的某條指令;

某個16位立即操作數(shù);

系數(shù)表。在程序存儲器中的地址第23頁/共62頁操作加載到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壓入椎棧,用累加器A或B的低16位加載PC。返回指令將棧頂彈出至PC,回到原先的程序處繼續(xù)執(zhí)行。硬件中斷或軟件中斷將PC壓入堆棧,用適當(dāng)?shù)闹袛嘞蛄康刂芳虞dPC。中斷返回時,將棧頂彈出至PC,繼續(xù)執(zhí)行被中斷了的子程序。將程序存儲器地址加載到程序計數(shù)器的途徑第24頁/共62頁1.分支轉(zhuǎn)移操作通過分支轉(zhuǎn)移指令改寫PC,可以改變程序的流向。而子程序調(diào)用指令則通過將一個返回地址壓入堆棧,執(zhí)行返回時恢復(fù)原地址。可執(zhí)行:分支轉(zhuǎn)移循環(huán)控制子程序操作功能方法第25頁/共62頁條件分支轉(zhuǎn)移無條件分支轉(zhuǎn)移

B[D]用指令中所給出的地址加載PCBACC[D]用所指定的累加器的低16位作為地址加載PC。

帶延遲不帶延遲操作轉(zhuǎn)移種類BC[D]如果指令中所規(guī)定的條件得到滿足,就用指令中所給出的地址加載PC;BANZ[D]如果當(dāng)前輔助寄存器不等于0,就用指令中所規(guī)定的地址加載PC。BCnew,AOV

BANZloop,*AR2-BnextBACCA第26頁/共62頁2.調(diào)用和返回轉(zhuǎn)移前,原程序的下條指令的地址被壓入堆棧,而在返回時則將這個地址彈出至PC,使被中斷了的原程序能繼續(xù)執(zhí)行。

當(dāng)采用調(diào)用指令進行子程序或函數(shù)調(diào)用時,DSP中斷當(dāng)前運行的程序,轉(zhuǎn)移到程序存儲器的其它地址繼續(xù)運行。功能方法無條件調(diào)用與返回有條件調(diào)用與返回帶延遲不帶延遲CALL[d]lopRETmain第27頁/共62頁3.條件指令中的條件判斷第28頁/共62頁多重條件判斷

第1組第2組A類B類A類B類C類EQOVTCCBIONEQNOVNTCNCNBIOLT

LEQ

GT

GEQ

第29頁/共62頁第1組

例如

可以從A類中選一個條件,同時可以從B類中選擇一個條件。但是不能從同一類中選擇兩個條件。另外,兩種條件測試的累加器必須是同一個。可以同時測試AGT和AOV,但不能同時測試AGT和BGT。第30頁/共62頁第2組

例如

可以在A、B、C三類中各選擇一個條件,但不能從同一類中選擇兩個條件可以在A、B、C三類中各選擇一個條件,但不能從同一類中選擇兩個條件第31頁/共62頁特例如果條件分支轉(zhuǎn)移出去的地方只有1~2字的程序段,則可以用一條單周期條件執(zhí)行指令(XC)來代替分支轉(zhuǎn)移指令:XCn,cond[,cond[,cond]]當(dāng)n=1,且條件得到滿足,就執(zhí)行緊隨此條件指令后的1個字指令。當(dāng)n=2,且條件得到滿足,就執(zhí)行緊隨此指令后的1個雙字指令或者2條單字指令。當(dāng)條件不滿足,就依n的值執(zhí)行1條或2條NOP指令。第32頁/共62頁例3-3

編寫計算的主要程序部分。

.bssx,4;為X建立4個單元,;放置X1、X2、X3、X4

.bssy,1;為Y建立1個單元,放置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中

BANZloop,*AR2-;檢查循環(huán)是否應(yīng)結(jié)束

STLA,y;將累加結(jié)果存入Y中第33頁/共62頁特點2特點14.單條指令的重復(fù)操作重復(fù)執(zhí)行(RC)+1次。RC內(nèi)容不能編程設(shè)置,只能由重復(fù)指令(RPT和RPTZ)中的操作數(shù)加載。操作數(shù)n的最大值為65535,最大重復(fù)執(zhí)行次數(shù)為65535+1。

一旦重復(fù)指令被取指、譯碼,直到重復(fù)循環(huán)完成以前,對所有的中斷(包括,但不包括)均不響應(yīng)。功能重復(fù)執(zhí)行下一條指令第34頁/共62頁重復(fù)過程當(dāng)RPT指令執(zhí)行時:①首先把循環(huán)的次數(shù)裝入循環(huán)計數(shù)器(RC),②其循環(huán)次數(shù)n由一個16位單數(shù)據(jù)存儲器操作數(shù)

Smem或一個8位或16位常數(shù)k或lk給定。這樣,緊接著的下一條指令會循環(huán)執(zhí)行n+1次。③循環(huán),RC在執(zhí)行減1操作時不能被訪問。注意:該循環(huán)內(nèi)不能套用循環(huán)。當(dāng)RPTZ指令執(zhí)行時:對目的累加器dst清0,循環(huán)執(zhí)行下一條指令n+1次。

第35頁/共62頁例3-5利用單條指令的重復(fù)操作對數(shù)組x[5]={0,0,0,0,0}進行初始化。.bssx,5;為數(shù)組x分配5個存儲單元STM#x,AR1;將x的首地址賦給AR1LD#0,A;對A清零RPT#4;設(shè)置重復(fù)執(zhí)行下條指令5次STLA,*AR1+;對x[5]各單元清零或者.bssx,5STM#x,AR1RPTZA,#4;對A清零并設(shè)置重復(fù)執(zhí)行下條指令5次STLA,*AR1+第36頁/共62頁特點5.塊重復(fù)操作利用C54x內(nèi)部的塊重復(fù)計數(shù)器(BRC,加載值可為0~65535)、塊重復(fù)起始地址寄存器(RSA)、塊重復(fù)結(jié)束地址寄存器(REA)與程序塊重復(fù)指令RPTB,可對緊隨RPTB、由若干條指令構(gòu)成的程序塊進行重復(fù)操作。功能將重復(fù)操作的范圍擴大到任意長度的循環(huán)回路注意1.RPT指令一旦執(zhí)行,不會停止操作,即使有中斷請求也不響應(yīng);2.RPTB指令可以響應(yīng)中斷;第37頁/共62頁例3-6

對數(shù)據(jù)組x[5]中的每個元素加1。

.bssx,5;為數(shù)組x分配5個存儲單元begin:LD#1,16,B;將1左移16位放入B的;高端字的最低位

STM#4,BRC;4→BRC,(PC)+2→RSA

STM#x,AR4;將x的首地址賦給AR4

RPTBnext-1;將NEXT-1→REA

ADD*AR4,16,B,A;x地址的內(nèi)容左移16位加;B的高端字,結(jié)果放A

STHA,*AR4+;將A的高端字存入x單元,;完成加1操作next:LD#0,B;對B清零

…;必需next-1作為結(jié)束地址第38頁/共62頁對寄存器的占用6.循環(huán)的嵌套執(zhí)行RPT指令時占用RPTC寄存器(重復(fù)計數(shù)器);執(zhí)行RPTB指令時要用到BRC、RSA和RSE寄存器。只有一套塊重復(fù)寄存器,故塊重復(fù)操作不能嵌套。由于RPT與RPTB兩者用了不同的寄存器,因此RPT指令可以嵌套在RPTB指令中,實現(xiàn)循環(huán)的嵌套。執(zhí)行BANZ指令只占用輔助寄存器ARx。不會與RPTRPTB指令相沖突。嵌套原則參與嵌套循環(huán)的寄存器不能重復(fù)使用

第39頁/共62頁圖3-3一個三重循環(huán)嵌套結(jié)構(gòu)第40頁/共62頁第三節(jié)流水線操作技術(shù)

流水線操作在執(zhí)行多條指令時,將每條指令的預(yù)取指、取指、譯碼、尋址、讀取操作數(shù)、執(zhí)行等階段,相差一個階段地重疊地執(zhí)行。流水線操作的優(yōu)點一條k段流水能在k+(n-1)個周期內(nèi)處理n條指令。其前k個周期用于完成第一條指令,其余n-1條指令的執(zhí)行需要n-1個周期。而非流水處理器上執(zhí)行n條指令則需要nk

個周期。當(dāng)指令條數(shù)n較大時,可認(rèn)為每個周期內(nèi)執(zhí)行的最大指令個數(shù)為k。第41頁/共62頁預(yù)取指P取指F譯碼D尋址A讀取操作數(shù)R執(zhí)行X流水線操作

在第一個機器周期用PC中的內(nèi)容加載PAB

在第二個機器周期用讀取到的指令字加載PB。

第三個周期用PB的內(nèi)容加載指令寄存器IR,對IR內(nèi)的指令進行譯碼,產(chǎn)生執(zhí)行指令所需要的一系列控制信號。第42頁/共62頁預(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寫地址加載到EAB,以便在流水線的最后一級將數(shù)據(jù)送到數(shù)據(jù)存儲空間。

執(zhí)行指令,或用寫數(shù)據(jù)加載EB。第43頁/共62頁空轉(zhuǎn)浪費周期1.延遲分支轉(zhuǎn)移的流水線圖無延遲流水線分支轉(zhuǎn)移的問題地址指令a1,a2

Bb1這是一個四周期、二字分支指令a3

i3這是任意的一周期、一字指令a4

i4這是任意的一周期、一字指令......b1j1例3-7第44頁/共62頁分支轉(zhuǎn)移指令流水線圖用分支轉(zhuǎn)移指令的地址a1加載PAB。

取得雙字分支轉(zhuǎn)移指令取得雙字分支轉(zhuǎn)移指令第45頁/共62頁分支轉(zhuǎn)移指令流水線圖i3和i4指令取指。由于這兩條指令處在分支轉(zhuǎn)移指令的后面,雖然已經(jīng)取指,但不能進入譯碼級,且最終被丟棄。分支轉(zhuǎn)移指令進入譯碼級用新的值b1加載PAB第46頁/共62頁分支轉(zhuǎn)移指令流水線圖j1指令取指雙字分支轉(zhuǎn)移指令進入流水線的執(zhí)行級

執(zhí)行j1指令

雙字分支轉(zhuǎn)移指令進入流水線的執(zhí)行級

由于i3和i4指令是不允許執(zhí)行的,所以這兩個周期均花在分支轉(zhuǎn)移指令的執(zhí)行上。第47頁/共62頁允許跟在延遲分支轉(zhuǎn)移指令之后的兩條單字或一條雙字指令可以被執(zhí)行

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

LD@x,ALD@x,A

ADD@y,AADD@y,A

STLA,@sSTLA,@s

LD@s,TLD@s,T

MPY@z,ABDnext

STLA,@rMPY@z,A

BnextSTLA,@r(共8個字,10個T)(共8個字,8個T)在空閑的隨后兩周期中執(zhí)行下兩條指令

第49頁/共62頁XCn,cnd[,cnd[,cnd]

如果條件滿足,則執(zhí)行下面n(n=1或2)條指令,否則下面n條指令改為執(zhí)行n條NOP指令。

2.條件執(zhí)行指令的流水線圖條件執(zhí)行指令XC

有下列程序:地址指令a1i1a2i2a3i3a4XC2,conda5i5a6i6第50頁/共62頁條件執(zhí)行指令流水線圖XC指令的地址a4加載到PAB取XC指令的操作碼求解XC指令所規(guī)定的條件。如果條件滿足,則后面指令i5和i6進入譯碼級并執(zhí)行;否則不對i5和i6指令譯碼。第51頁/共62頁1.XC是一條單字單周期指令,與條件跳轉(zhuǎn)指令相比,具有快速選擇其后1或2

條指令是否執(zhí)行的優(yōu)點;2.XC指令在執(zhí)行前2個周期就已經(jīng)求出條件,如果在這之后到執(zhí)行前改變條件(如發(fā)生中斷),將會造成無期望的結(jié)果。3.要盡力避免在XC指令執(zhí)行前2個周期改變所規(guī)定的條件。4.并沒有規(guī)定XC指令后的一條或兩條指令必須是單周期指令。注意第52頁/共62頁CPU在單個周期內(nèi)兩次訪問雙尋址存儲器3.雙尋址存儲器的流水線沖突流水線沖突原因不會產(chǎn)生流水線沖突的情況

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論