




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
會計學1DSP指令系統及特點第三章DSP指令系統與特點第一節尋址方式第二節程序地址的生成第三節流水線操作技術(了解)第四節指令系統概述第1頁/共62頁Smem:16位單尋址操作數。Xmem:16位雙尋址操作數,從DB數據總線上讀出。Ymem:16位雙尋址操作數,從CB數據總線上讀出。dmad:16位立即數,數據存儲器地址。pmad:16位立即數,程序存儲器地址。PA:16位立即數,I/O口地址。src:源累加器(A或B)。dst:目的累加器(A或B)。lk:16位長立即數。第一節TMS320C54x的尋址方式
第2頁/共62頁1.立即數尋址2.絕對地址尋址3.累加器尋址4.直接尋址5.間接尋址6.存儲器映象寄存器尋址7.堆棧尋址尋址分類第3頁/共62頁
1.立即數尋址
在操作數前面需要加#字號來說明該操作數為立即數。否則會把該操作數誤認為是一個地址,從而把立即數尋址變成絕對地址尋址。
特點指令中包含有執行指令所需要的操作數。立即數分為3、5、8或9位的短立即數和16位的長立即數兩種。短立即數可包含在單字或雙字指令中,長立即數在雙字指令中。
注意LD#93h,A
LD93h,A舉例第4頁/共62頁
2.絕對地址尋址特點在指令中包含有所要尋址的存儲單元的16位地址。這個16位的地址可以用其所在單元的地址標號或者16位符號常數來表示。
(1)數據存儲器地址(damd)尋址
用一個符號或一個數來確定數據空間的一個地址。
方法MVKDSAMPLE,*AR3
舉例第5頁/共62頁用一個符號或一個具體的數來確定程序存儲器中的一個地址
(2)程序存儲器地址(pmad)尋址方法MVPDTABLE,*AR4
舉例第6頁/共62頁用一個符號或一個常數來確定外部I/O口地址
(3)PA尋址端口(PA)方法PORTRFIFO,*AR5舉例第7頁/共62頁用一個符號或一個常數來確定數據存儲器中的一個地址
(4)*(lk)尋址方法LD*(BUFFER),A舉例特點允許所有使用Smem尋址的指令去訪問數據空間的任意單元而不改變數據頁指針(DP)的值,也不用對ARx進行初始化
第8頁/共62頁用累加器中的數值作為地址來讀寫程序存儲器。方法READASmemWRITASmem舉例特點可用來完成程序存儲器單元的數據與數據存儲器單元的數據進行交換
3.累加器尋址第9頁/共62頁可以在不改變DP或SP的情況下,隨機地尋址128個存儲單元中的任何一個單元。
用一個符號或一個常數來確定7位偏移值,與DP或SP共同形成16位的數據存儲器實際地址。4.直接尋址方法LD#x,DPLD@u,AADD@v,A===========SSBXCPLLD@X1,AADD@Y2,A舉例特點第10頁/共62頁CPL=07位dma域與9bit的DP相結合形成16位的數據存儲器地址。CPL=17位dma域加上(正偏移)SP的值形成16位的數據存儲器地址。
DP值是從0~511(29-1),以DP為基準的直接尋址把存儲器分成512頁,7位的dma范圍從0~127,每頁有128個可訪問的單元。
第11頁/共62頁5.間接尋址方法特點(AR0~AR7)→ARAU0/ARAU1→16位無符號算術運算→尋址范圍為64K
能在一個指令中訪問兩個數據存儲器單元兩個獨立的存儲器單元讀數據讀一個、寫另一個存儲器單元讀寫兩個連續的存儲器單元
第12頁/共62頁5.間接尋址(1)單操作數尋址定義間接尋址的類型定義尋址所使用的輔助寄存器ST1CMPT=0標準方式
ARF確定輔助寄存器,ST0中ARP=0
CMPT=1兼容方式如ARF=0,用ARP選擇輔助寄存器,否則,用ARF來確定輔助寄存器。ARF的值裝入ARP。LD*AR1,B第13頁/共62頁單操作數間接尋址的硬件框圖第14頁/共62頁MOD域操作碼語法功能說明0000*ARxaddr=ARxARx包含了數據存儲器地址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中的地址以循環尋址的方式減1①1001*ARx-0%addr=ARxARx=circ(ARx-AR0)訪問后,從ARx中以循環尋址的方式減去AR01010*ARx+%addr=ARxARx=circ(ARx+1)訪問后,ARx中的地址以循環尋址的方式加1①1011*ARx+0%addr=ARxARx=circ(ARx+AR0)訪問后,把AR0以循環尋址的方式加到ARx中1100*ARx(lk)addr=ARx+lkARx=ARxARx和16位的長偏移(lk)的和用來作為數據存儲器地址。ARx本身不被修改1101*+ARx(lk)addr=ARx+lkARx=ARx+lk在尋址前,把一個帶符號的16位的長偏移(lk)加到ARx中,然后用新的ARx的值作為數據存儲器的地址③1110*+ARx(lk)%addr=circ(ARx+lk)ARx=circ(ARx+lk)在尋址前,把一個帶符號的16位的長偏移以循環尋址的方式加到ARx中,然后再用新的ARx的值作為數據存儲器的地址③1111*(lk)addr=lk一個無符號的16位的長偏移(lk)用來作為數據存儲器的絕對地址。(也屬絕對尋址)③單數據存儲器操作數間接尋址類型
第15頁/共62頁1)循環尋址循環緩沖區的長度值存放在循環緩沖區長度寄存器BK中,BK中的數值由指令設定。長度為R的循環緩沖器必須從一個N位地址的邊界開始,即循環緩沖器基地址的最低N位必須為0。N是滿足2N>R的最小整數。R的值必須裝入BK。例如,含有31個字的循環緩沖器必須從最低5位為0的地址開始,即xxxxxxxxxxx000002,N=5,2N=25>R=31,且31必須裝入BK。如:STM#1k,BK如果R=32,則最小的N值為6,循環緩沖區的起始地址必須有6個最低有效位為0,即××××××××××0000002。第16頁/共62頁2)位倒序尋址在這種尋址方式中,用AR0存放FFT點數的一半整數N,用另一輔助寄存器指向一數據存放的物理單元。當使用位倒序尋址把AR0加到輔助寄存器中時,地址以位倒序的方式產生,即進位是從左向右,而不是從右向左進位。例如:01101000+00001000
01100100以8位輔助寄存器為例,AR1表示了在存儲器中數據的基地址(01100000)2,AR0的值為(00001000)2。利用以下兩條語句可以向外設口(口地址為PA)輸出整序后的FFT變換結果:RPT#15重復執行下條指令15+1次PORTW*AR1+0B,PA向外設口PA輸出整結果第17頁/共62頁AR1修改循環值存儲單元地址整序前FFT變換結果位倒序AR1更新的地址值AR0=000010002整序后PA輸出的FFT變換結果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)位倒序對FFT變換結果的序號調整
第18頁/共62頁5.間接尋址(2)雙操作數尋址方式確定包含Xmem地址的輔助寄存器
確定包含Ymem地址的輔助寄存器定義用于訪問Ymem操作數的間接尋址方式的類型定義用于訪問Xmem操作數的間接尋址方式的類型MPY*AR2,*AR3,A第19頁/共62頁Xar或Yar輔助寄存器
00AR2
01AR3
10AR4
11AR5
輔助寄存器選擇Xmod或Ymod操作碼語法功能說明00*ARxaddr=ARxARx是數據存儲器地址01*ARx-addr=ARxARx=ARx-1訪問后,ARx中的地址減110*ARx+addr=ARxARx=ARx+1訪問后,ARx中的地址加111*ARx+0%addr=ARxARx=circ(ARx+AR0)訪問后,AR0以循環尋址的方式加到ARx中雙數據存儲器操作數尋址的類型第20頁/共62頁0頁尋址。不影響當前DP或SP值。用于直接尋址和間接尋址用來修改存儲器映象寄存器
6.存儲器映象寄存器尋址功能LDMPRD,A舉例特點方法高9位數據存儲器地址被置0,利用指令中的低7位地址訪問MMR。第21頁/共62頁7.堆棧尋址從高地址向低地址方向生長,SP)來管理堆棧,SP始終指向堆棧中所存放的最后一個數據,即SP指針始終指向棧頂。在壓入操作時,先減小SP的值,再將數據壓入堆棧;在彈出操作時,先從堆棧彈出數據,再增加SP的值。用來在中斷和子程序調用時自動保存程序計數器(PC)中的數值,也能用來保護現場或傳送參數功能特點PSHD*AR2
POPD*AR3第22頁/共62頁第二節程序地址的生成程序地址生成器(PAGEN)構成程序計數器(PC)重復計數器(RC)塊重復計數器(BRC)塊重復起始地址寄存器(RSA)塊重復結束地址寄存器(REA)核心16位程序計數器(PC)內中保存某個內部或外部程序存儲器的地址。地址內容為:
即將取指的某條指令;
某個16位立即操作數;
系數表。在程序存儲器中的地址第23頁/共62頁操作加載到PC的地址復位PC=FF80h。順序執行指令PC=PC+1。分支轉移用緊跟在分支轉移指令后面的16位立即數加載PC。由累加器分支轉移用累加器A或B的低16位立即數加載PC。塊重復循環假如ST1中的塊重復有效位BRAF=1,當PC+1等于塊重復結束地址(REA)+1,將塊重復起始地址(RSA)加載PC。子程序調用將PC+2壓入堆棧,并用緊跟在調用指令后面的16位立即數加載PC。返回指令將棧頂彈出至PC,回到原先的程序處繼續執行。從累加器調用子程序將PC+1壓入椎棧,用累加器A或B的低16位加載PC。返回指令將棧頂彈出至PC,回到原先的程序處繼續執行。硬件中斷或軟件中斷將PC壓入堆棧,用適當的中斷向量地址加載PC。中斷返回時,將棧頂彈出至PC,繼續執行被中斷了的子程序。將程序存儲器地址加載到程序計數器的途徑第24頁/共62頁1.分支轉移操作通過分支轉移指令改寫PC,可以改變程序的流向。而子程序調用指令則通過將一個返回地址壓入堆棧,執行返回時恢復原地址??蓤绦?分支轉移循環控制子程序操作功能方法第25頁/共62頁條件分支轉移無條件分支轉移
B[D]用指令中所給出的地址加載PCBACC[D]用所指定的累加器的低16位作為地址加載PC。
帶延遲不帶延遲操作轉移種類BC[D]如果指令中所規定的條件得到滿足,就用指令中所給出的地址加載PC;BANZ[D]如果當前輔助寄存器不等于0,就用指令中所規定的地址加載PC。BCnew,AOV
BANZloop,*AR2-BnextBACCA第26頁/共62頁2.調用和返回轉移前,原程序的下條指令的地址被壓入堆棧,而在返回時則將這個地址彈出至PC,使被中斷了的原程序能繼續執行。
當采用調用指令進行子程序或函數調用時,DSP中斷當前運行的程序,轉移到程序存儲器的其它地址繼續運行。功能方法無條件調用與返回有條件調用與返回帶延遲不帶延遲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頁特例如果條件分支轉移出去的地方只有1~2字的程序段,則可以用一條單周期條件執行指令(XC)來代替分支轉移指令:XCn,cond[,cond[,cond]]當n=1,且條件得到滿足,就執行緊隨此條件指令后的1個字指令。當n=2,且條件得到滿足,就執行緊隨此指令后的1個雙字指令或者2條單字指令。當條件不滿足,就依n的值執行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;將循環次數3傳給AR2
LD#0,A;對A清零loop:ADD*AR1+,A;對X1、X2、X3、X4循環累;加,結果放A中
BANZloop,*AR2-;檢查循環是否應結束
STLA,y;將累加結果存入Y中第33頁/共62頁特點2特點14.單條指令的重復操作重復執行(RC)+1次。RC內容不能編程設置,只能由重復指令(RPT和RPTZ)中的操作數加載。操作數n的最大值為65535,最大重復執行次數為65535+1。
一旦重復指令被取指、譯碼,直到重復循環完成以前,對所有的中斷(包括,但不包括)均不響應。功能重復執行下一條指令第34頁/共62頁重復過程當RPT指令執行時:①首先把循環的次數裝入循環計數器(RC),②其循環次數n由一個16位單數據存儲器操作數
Smem或一個8位或16位常數k或lk給定。這樣,緊接著的下一條指令會循環執行n+1次。③循環,RC在執行減1操作時不能被訪問。注意:該循環內不能套用循環。當RPTZ指令執行時:對目的累加器dst清0,循環執行下一條指令n+1次。
第35頁/共62頁例3-5利用單條指令的重復操作對數組x[5]={0,0,0,0,0}進行初始化。.bssx,5;為數組x分配5個存儲單元STM#x,AR1;將x的首地址賦給AR1LD#0,A;對A清零RPT#4;設置重復執行下條指令5次STLA,*AR1+;對x[5]各單元清零或者.bssx,5STM#x,AR1RPTZA,#4;對A清零并設置重復執行下條指令5次STLA,*AR1+第36頁/共62頁特點5.塊重復操作利用C54x內部的塊重復計數器(BRC,加載值可為0~65535)、塊重復起始地址寄存器(RSA)、塊重復結束地址寄存器(REA)與程序塊重復指令RPTB,可對緊隨RPTB、由若干條指令構成的程序塊進行重復操作。功能將重復操作的范圍擴大到任意長度的循環回路注意1.RPT指令一旦執行,不會停止操作,即使有中斷請求也不響應;2.RPTB指令可以響應中斷;第37頁/共62頁例3-6
對數據組x[5]中的每個元素加1。
.bssx,5;為數組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地址的內容左移16位加;B的高端字,結果放A
STHA,*AR4+;將A的高端字存入x單元,;完成加1操作next:LD#0,B;對B清零
…;必需next-1作為結束地址第38頁/共62頁對寄存器的占用6.循環的嵌套執行RPT指令時占用RPTC寄存器(重復計數器);執行RPTB指令時要用到BRC、RSA和RSE寄存器。只有一套塊重復寄存器,故塊重復操作不能嵌套。由于RPT與RPTB兩者用了不同的寄存器,因此RPT指令可以嵌套在RPTB指令中,實現循環的嵌套。執行BANZ指令只占用輔助寄存器ARx。不會與RPTRPTB指令相沖突。嵌套原則參與嵌套循環的寄存器不能重復使用
第39頁/共62頁圖3-3一個三重循環嵌套結構第40頁/共62頁第三節流水線操作技術
流水線操作在執行多條指令時,將每條指令的預取指、取指、譯碼、尋址、讀取操作數、執行等階段,相差一個階段地重疊地執行。流水線操作的優點一條k段流水能在k+(n-1)個周期內處理n條指令。其前k個周期用于完成第一條指令,其余n-1條指令的執行需要n-1個周期。而非流水處理器上執行n條指令則需要nk
個周期。當指令條數n較大時,可認為每個周期內執行的最大指令個數為k。第41頁/共62頁預取指P取指F譯碼D尋址A讀取操作數R執行X流水線操作
在第一個機器周期用PC中的內容加載PAB
在第二個機器周期用讀取到的指令字加載PB。
第三個周期用PB的內容加載指令寄存器IR,對IR內的指令進行譯碼,產生執行指令所需要的一系列控制信號。第42頁/共62頁預取指P取指F譯碼D尋址A讀取操作數R執行X流水線操作
用數據1讀地址加載DAB,或用數據2讀地址加載CAB,修正輔助寄存器和堆棧指針。讀數據1加載DB,或讀數據2加載CB;用數據3寫地址加載到EAB,以便在流水線的最后一級將數據送到數據存儲空間。
執行指令,或用寫數據加載EB。第43頁/共62頁空轉浪費周期1.延遲分支轉移的流水線圖無延遲流水線分支轉移的問題地址指令a1,a2
Bb1這是一個四周期、二字分支指令a3
i3這是任意的一周期、一字指令a4
i4這是任意的一周期、一字指令......b1j1例3-7第44頁/共62頁分支轉移指令流水線圖用分支轉移指令的地址a1加載PAB。
取得雙字分支轉移指令取得雙字分支轉移指令第45頁/共62頁分支轉移指令流水線圖i3和i4指令取指。由于這兩條指令處在分支轉移指令的后面,雖然已經取指,但不能進入譯碼級,且最終被丟棄。分支轉移指令進入譯碼級用新的值b1加載PAB第46頁/共62頁分支轉移指令流水線圖j1指令取指雙字分支轉移指令進入流水線的執行級
執行j1指令
雙字分支轉移指令進入流水線的執行級
由于i3和i4指令是不允許執行的,所以這兩個周期均花在分支轉移指令的執行上。第47頁/共62頁允許跟在延遲分支轉移指令之后的兩條單字或一條雙字指令可以被執行
延遲分支轉移注意1.延遲操作指令后面只有兩個字的空隙,因此不能在此空隙中安排任何一類分支轉移指令或重復指令;2.在CALLD或RETD的空隙中還不能安排PUSH和POP指令。3.延遲操作指令比它們的非延遲型指令要快,在調試延遲型指令時,直觀性稍差一些,因此希望在大多數情況下還是采用非延遲型指令。第48頁/共62頁例3-8在完成R=(x+y)*z操作后轉至next??梢苑謩e編出如下兩段程序:利用普通分支轉移指令B利用延遲分支轉移指令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)在空閑的隨后兩周期中執行下兩條指令
第49頁/共62頁XCn,cnd[,cnd[,cnd]
如果條件滿足,則執行下面n(n=1或2)條指令,否則下面n條指令改為執行n條NOP指令。
2.條件執行指令的流水線圖條件執行指令XC
有下列程序:地址指令a1i1a2i2a3i3a4XC2,conda5i5a6i6第50頁/共62頁條件執行指令流水線圖XC指令的地址a4加載到PAB取XC指令的操作碼求解XC指令所規定的條件。如果條件滿足,則后面指令i5和i6進入譯碼級并執行;否則不對i5和i6指令譯碼。第51頁/共62頁1.XC是一條單字單周期指令,與條件跳轉指令相比,具有快速選擇其后1或2
條指令是否執行的優點;2.XC指令在執行前2個周期就已經求出條件,如果在這之后到執行前改變條件(如發生中斷),將會造成無期望的結果。3.要盡力避免在XC指令執行前2個周期改變所規定的條件。4.并沒有規定XC指令后的一條或兩條指令必須是單周期指令。注意第52頁/共62頁CPU在單個周期內兩次訪問雙尋址存儲器3.雙尋址存儲器的流水線沖突流水線沖突原因不會產生流水線沖突的情況
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 上海市靜安區、青浦區2024-2025學年高三下學期入學考試題生物試題文試題含解析
- 吉林省五地六市聯盟2025屆高三下學期第二次高考模擬語文試題含解析
- 江西省撫州市臨川2024-2025學年初三下學期一??荚嚁祵W試題含解析
- 吉林省白城市洮北區第一中學2025屆高考診斷性測試物理試題含解析
- 溫州市蒼南縣重點中學2024-2025學年初三第五次調研考試語文試題含解析
- 云南省昆明市晉寧縣2025屆數學四下期末預測試題含解析
- 山東省臨沂市蘭山區2025屆初三第二次教學質量檢測試題語文試題含解析
- 米蘭家居全屋定制合同范本
- 吉林省通化市梅河口五中2025屆高三上學期12月月考-物理試題(含答案)
- 員工股權激勵合同
- 心力衰竭患者的自我管理課件
- 足球比賽記錄表格
- 鉗工工藝與技能訓練中職PPT完整全套教學課件
- 辦公軟件高級應用與實踐Office2016全套完整PPT教學課件
- 山西省太原市尖草坪區第一中學高三數學理月考試卷含解析
- 工商企業管理畢業論文范文六篇
- 中石油職稱考試俄語選讀第01-27課
- 沃爾沃發展史
- 流行病學 第十三章傷害流行病學
- 管理核心五任務原版
- 年度店長銷售工作總結5篇
評論
0/150
提交評論