DSP指令系统及特点实用教案

上传人:博****1 文档编号:568893421 上传时间:2024-07-27 格式:PPT 页数:63 大小:2.37MB
返回 下载 相关 举报
DSP指令系统及特点实用教案_第1页
第1页 / 共63页
DSP指令系统及特点实用教案_第2页
第2页 / 共63页
DSP指令系统及特点实用教案_第3页
第3页 / 共63页
DSP指令系统及特点实用教案_第4页
第4页 / 共63页
DSP指令系统及特点实用教案_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《DSP指令系统及特点实用教案》由会员分享,可在线阅读,更多相关《DSP指令系统及特点实用教案(63页珍藏版)》请在金锄头文库上搜索。

1、第三章DSP指令系统(zhlnxtn)与特点第一节寻址方式(fngsh)第二节程序地址(dzh)的生成第三节流水线操作技术(了解)第四节指令系统概述第1页/共62页第一页,共63页。SmemSmem:1616位单寻址操作数。XmemXmem:1616位双寻址操作数,从DBDB数据总线上读出。YmemYmem:1616位双寻址操作数,从CBCB数据总线上读出。dmaddmad:1616位立即数,数据存储器地址(dzh)(dzh)。pmadpmad:1616位立即数,程序存储器地址(dzh)(dzh)。PAPA: 16 16位立即数,I/OI/O口地址(dzh)(dzh)。srcsrc: 源累加器

2、(A A或B B)。dstdst: 目的累加器(A A或B B)。lklk: 16 16位长立即数。第一节 TMS320C54x TMS320C54x的寻址方式(fngsh) (fngsh) 第2页/共62页第二页,共63页。1 1立即(lj)(lj)数寻址2 2绝对地址寻址3 3累加器寻址4 4直接寻址5 5间接寻址6 6存储器映象寄存器寻址7 7堆栈寻址寻址分类(fn li)(fn li)第3页/共62页第三页,共63页。 1 1立即(lj)(lj)数寻址 在操作数前面需要加字号来说明(shumng)(shumng)该操作数为立即数。否则会把该操作数误认为是一个地址,从而把立即数寻址变成绝

3、对地址寻址。 特点指令(zhlng)(zhlng)中包含有执行指令(zhlng)(zhlng)所需要的操作数。立即数分为3 3、5 5、8 8或9 9位的短立即数和1616位的长立即数两种。短立即数可包含在单字或双字指令(zhlng)(zhlng)中,长立即数在双字指令(zhlng)(zhlng)中。 注意LD #93hLD #93h,A ALD 93hLD 93h,A A 举例第4页/共62页第四页,共63页。 2 2绝对(judu)(judu)地址寻址特点在指令中包含(bohn)(bohn)有所要寻址的存储单元的1616位地址。这个1616位的地址可以用其所在单元的地址标号或者1616位符

4、号常数来表示。 (1 1)数据)数据(sh(sh j j ) )存存储器地址器地址(damddamd)寻址址 用一个符号或一个数来确定数据空间的一个地址。方法MVKD SAMPLEMVKD SAMPLE,* *AR3AR3 举例第5页/共62页第五页,共63页。用一个符号或一个具体(j(j t)t)的数来确定程序存储器中的一个地址 (2 2)程序)程序(ch(ch ngxngx ) )存存储器地址器地址(pmadpmad)寻址址 方法(fngf)(fngf)MVPD TABLEMVPD TABLE,* *AR4AR4 举例第6页/共62页第六页,共63页。用一个符号或一个常数(ch(ch ng

5、shngsh ) )来确定外部I/OI/O口地址 (3 3)PAPA寻址址 端口(端口(PAPA) 方法(fngf)(fngf)PORTR FIFOPORTR FIFO,* *AR5 AR5 举例(j (j l)l)第7页/共62页第七页,共63页。用一个符号或用一个符号或一个常数来确一个常数来确定数据定数据(sh(sh j j ) )存存储器中的一器中的一个地址个地址 (4 4)* *(lklk)寻址址 方法(fngf)(fngf)LD *LD *(BUFFERBUFFER),),A A 举例(j (j l)l)特点允许所有使用SmemSmem寻址的指令去访问数据空间的任意单元而不改变数据页

6、指针(DPDP)的值,也不用对ARxARx进行初始化 第8页/共62页第八页,共63页。用累加用累加器中的器中的数数值作作为(zu(zu w w i)i)地址来地址来读写程写程序存序存储器。器。 方法(fngf)(fngf)READA Smem READA Smem WRITA Smem WRITA Smem 举例(j (j l)l)特点可用来完成程序存储器单元的数据与数据存储器单元的数据进行交换 3累加器寻址累加器寻址第9页/共62页第九页,共63页。可以在不改可以在不改变(gibi(gibi n)DPn)DP或或SPSP的情况下的情况下,随机地,随机地寻址址128128个存个存储单元中的任

7、何一元中的任何一个个单元。元。 用一个符号或用一个符号或一个常数来确一个常数来确定定7 7位偏移位偏移值,与与DPDP或或SPSP共同共同(g(g ngtngt ng)ng)形形成成1616位的数据位的数据存存储器器实际地地址。址。4直接直接(zhji)寻址寻址方法LD #xLD #x,DPDPLD uLD u,A A ADD vADD v,A A =SSBX CPLSSBX CPL LD X1 LD X1,A A ADD Y2 ADD Y2,A A 举例特点第10页/共62页第十页,共63页。CPL=0 CPL=0 7 7位 dmadma域 与 9bit9bit的 DPDP相 结 合 形成(

8、xngchng)16(xngchng)16位的数据存储器地址。CPL=1 CPL=1 7 7位 dmadma域 加 上 ( 正 偏 移 ) SPSP 的值形成(xngchng)16(xngchng)16位的数据存储器地址。 DPDP值是从05110511(29-129-1),以DPDP为基准(jzhn)(jzhn)的直接寻址把存储器分成512512页,7 7位的dmadma范围从01270127,每页有128128个可访问的单元。 第11页/共62页第十一页,共63页。5间接间接(jinji)寻址寻址方法(fn(fngf)gf)特点(t(t didin)n)(AR0AR0AR7AR7)ARAU

9、0/ARAU1 ARAU0/ARAU1 1616位无符号算术运算寻址范围为64K 64K 能在一个指令中访问两个数据存储器单元两个独立的存储器单元读数据读一个、写另一个存储器单元读写两个连续的存储器单元 第12页/共62页第十二页,共63页。5间接间接(jinji)寻址寻址(1 1)单操作数操作数寻址址 定定义(d(d ngyngy ) )间接接寻址的址的类型型定定义寻址所使用址所使用(shy(shy ng)ng)的的辅助助寄存器寄存器 ST1ST1CMPT=0 CMPT=0 标准方式ARFARF确定辅助寄存器,ST0ST0中ARPARP0 0 CMPT=1 CMPT=1 兼容方式如ARF=0

10、ARF=0,用ARPARP选择辅助寄存器,否则,用ARFARF来确定辅助寄存器。ARFARF的值装入ARPARP。LD *AR1,BLD *AR1,B第13页/共62页第十三页,共63页。单操作数间接寻址的硬件(yn jin)框图第14页/共62页第十四页,共63页。MOD域操作码语法功能说明0000*ARxaddr=ARxARx包含了数据存储器地址0001*ARx-addr=ARxARx=ARx-1访问后,ARx中的地址减10010*ARx+addr=ARxARx=ARx+1访问后,ARx中的地址加10011*+ARxaddr=ARx+1ARx=ARx+1在寻址前,ARx中的地址加1,然后再

11、寻址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中的地址以循环寻址的方式减11001*ARx-0%addr=ARxARx=circ(ARx-AR0)访问后,从ARx中

12、以循环寻址的方式减去AR01010*ARx+%addr=ARxARx=circ(ARx+1)访问后,ARx中的地址以循环寻址的方式加11011*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

13、(ARx+lk)ARx=circ(ARx+lk)在寻址前,把一个带符号的16位的长偏移以循环寻址的方式加到ARx中,然后再用新的ARx的值作为数据存储器的地址1111*(lk)addr=lk一个无符号的16位的长偏移(lk)用来作为数据存储器的绝对地址。(也属绝对寻址)单数据存储器操作数间接(jin ji)(jin ji)寻址类型 第15页/共62页第十五页,共63页。1) 1) 循环寻址 循环缓冲区的长度值存放在循环缓冲区长度寄存器BKBK中,BKBK中的数值由指令设定(sh (sh dn)dn)。长度为R R的循环缓冲器必须从一个N N位地址的边界开始,即循环缓冲器基地址的最低N N位必须

14、为0 0。N N是满足2N2NR R的最小整数。R R的值必须装入BKBK。例如,含有3131个字的循环缓冲器必须从最低5 5位为0 0的地址开始,即xxxx xxxx xxxx xxxx xxx0 xxx0 0000200002,N=5N=5,2N=252N=25R=31R=31,且3131必须装入BKBK。如:STM #1kSTM #1k,BKBK如果R=32R=32,则最小的N N值为6 6,循环缓冲区的起始地址必须有6 6个最低有效位为0 0,即 00 0000200 00002。第16页/共62页第十六页,共63页。2) 2) 位倒序寻址 在这种寻址方式中,用AR0AR0存放FFTF

15、FT点数的一半整数N N,用另一辅助寄存器指向一数据存放的物理单元。当使用位倒序寻址把AR0AR0加到辅助寄存器中时,地址以位倒序的方式产生,即进位是从左向右,而不是(b shi)(b shi)从右向左进位。 例如: 0110 1000 0110 1000 + 0000 1000 + 0000 1000 0110 01000110 0100以8 8位辅助寄存器为例,AR1AR1表示了在存储器中数据的基地址(0110 00000110 0000)2 2,AR0AR0的值为(0000 10000000 1000)2 2。利用以下两条语句(yj)(yj)可以向外设口(口地址为PAPA)输出整序后的F

16、FTFFT变换结果:RPT #15 RPT #15 重复执行下条指令15+115+1次PORTW *AR1+0BPORTW *AR1+0B,PA PA 向外设口PAPA输出整结果第17页/共62页第十七页,共63页。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)50

17、101X(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)位倒序(do x)(

18、do x)对FFTFFT变换结果的序号调整 第18页/共62页第十八页,共63页。5间接间接(jinji)寻址寻址(2 2)双操作数)双操作数寻址方式址方式(fngsh(fngsh ) ) 确定包含XmemXmem地址(d(d zh)zh)的辅助寄存器 确定确定包含包含YmemYmem地址地址的的辅助寄助寄存存器定定义用于用于访问YmemYmem操作操作数的数的间接接寻址方式的址方式的类型型 定定义用于用于访问XmemXmem操作数的操作数的间接接寻址址方式的方式的类型型 MPY *AR2,*AR3,AMPY *AR2,*AR3,A第19页/共62页第十九页,共63页。Xar或Yar辅助(fz

19、h)寄存器00AR201AR310AR411AR5辅助(fzh)寄存器选择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中双数据(shj)(shj)存储器操作数寻址的类型第20页/共62页第二十页,共63页。0 0页寻址。不影响(yngxi(yngxing)ng)当前DPDP或SPSP值 。用于直接寻址

20、和间接寻址用来修用来修改改(xigi)(xigi)存存储器器映象寄映象寄存器存器 6 6存储器映象(yn xin)(yn xin)寄存器寻址功能LDM PRD,ALDM PRD,A举例特点方法高9 9位数据存储器地址被置0 0,利用指令中的低位地址访问MMRMMR。第21页/共62页第二十一页,共63页。7堆栈堆栈(duzhn)寻址寻址从高地址向低地址方向生长,SPSP) 来 管 理 堆 栈 , SPSP始 终(shzhng)(shzhng)指向堆栈中所存放的最后一个数据,即SPSP指针始终(shzhng)(shzhng)指向栈顶。在压入操作时,先减小SPSP的值,再将数据压入堆栈;在弹出操作

21、时,先从堆栈弹出数据,再增加SPSP的值。用来在中断和用来在中断和子程序子程序调用用(di(di oyoy ng)ng)时自自动保存程序保存程序计数器(数器(PCPC)中的数中的数值,也,也能用来保能用来保护现场或或传送参数送参数 功能特点PSHD *AR2PSHD *AR2 POPD *AR3POPD *AR3第22页/共62页第二十二页,共63页。第二节 程序(chngx)(chngx)地址的生成程序地址(dzh)(dzh)生成器(PAGENPAGEN)构成程序程序(ch(ch ngxngx ) )计数器(数器(PCPC)重复重复计数器(数器(RCRC)块重复重复计数器(数器(BRCBRC

22、)块重复起始地址寄存器(重复起始地址寄存器(RSARSA)块重复重复结束地址寄存器(束地址寄存器(REAREA)核心1616位程序计数器(PCPC)内中保存某个内部或外部程序存储器的地址。地址地址内容为:即将取指的某条指令即将取指的某条指令;某个某个1616位立即操作数位立即操作数;系数表系数表。在程序存在程序存储器中的地址器中的地址第23页/共62页第二十三页,共63页。操作加载到PC的地址复位PC=FF80h。顺序执行指令PC=PC+1。分支转移用紧跟在分支转移指令后面的16位立即数加载PC。由累加器分支转移用累加器A或B的低16位立即数加载PC。块重复循环假如ST1中的块重复有效位BRA

23、F=1,当PC+1等于块重复结束地址(REA)+1,将块重复起始地址(RSA)加载PC。子程序调用将PC+2压入堆栈,并用紧跟在调用指令后面的16位立即数加载PC。返回指令将栈顶弹出至PC,回到原先的程序处继续执行。从累加器调用子程序将PC+1压入椎栈,用累加器A或B的低16位加载PC。返回指令将栈顶弹出至PC,回到原先的程序处继续执行。硬件中断或软件中断将PC压入堆栈,用适当的中断向量地址加载PC。中断返回时,将栈顶弹出至PC,继续执行被中断了的子程序。将程序(chngx)(chngx)存储器地址加载到程序(chngx)(chngx)计数器的途径第24页/共62页第二十四页,共63页。1分支

24、分支(fnzh)转移操作转移操作通过分支转移指令改写PCPC,可以改变程序的流向。而子程序调用指令则通过将一个返回地址(d(d zh)zh)压入堆栈,执行返回时恢复原地址(d(d zh)zh)。可可执行行: :分支分支转移移(zhuny(zhuny ) )循循环控制控制子程序操作子程序操作 功能方法第25页/共62页第二十五页,共63页。条件(tiojin)分支转移无条件(tiojin)分支转移BDBD用用指指令令中中所所给出出的的地地址址(d(d zh)zh)加加 载PCPCBACCDBACCD用用 所所指指定定的的累累加加器器的的低低1616位位作作为地地 址址 (d(d zh)zh)加加

25、载PCPC。 带延延迟(y(y nchnch ) )不不带延延迟(y(y nchnch ) )操操作作转移种类BCDBCD如如果果指指令令中中所所规定定的的条条件件得得到到满足足,就就用用指指令令中中所所给出出的的地地址加址加载PCPC;BANZDBANZD如如果果当当前前辅助助寄寄存存器器不不等等于于0 0,就就用用指指令令中中所所规定定的的地址加地址加载PCPC。 BC newBC new,AOVAOV BANZ loop,*AR2-BANZ loop,*AR2-B nextB nextBACC ABACC A第26页/共62页第二十六页,共63页。2调用调用(dioyng)和返回和返回转

26、移移前前,原原程程序序的的下下条条指指令令(zhl(zhl ng)ng)的的地地址址被被压入入堆堆栈,而而在在返返回回时则将将这个个地地址址弹出出至至PCPC,使使被被中中断断了了的的原原程程序序能能继续执行。行。 当采用当采用调用指令用指令进行子程序或函数行子程序或函数调用用时,DSPDSP中断当前中断当前(dngqi(dngqi n)n)运行的程运行的程序,序,转移到程序存移到程序存储器的其它地址器的其它地址继续运行。运行。功能方法无条件调用与返回有条件调用与返回带延迟不带延迟CALLd lopCALLd lopRET mainRET main第27页/共62页第二十七页,共63页。3条件

27、指令条件指令(zhlng)中的条件判断中的条件判断第28页/共62页第二十八页,共63页。多重条件(tiojin)判断第1组第2组A类B类A类B类C类EQOVTCCBIONEQNOVNTCNCNBIOLTLEQGTGEQ第29页/共62页第二十九页,共63页。第第1 1组 例如例如(l(l r r ) ) 可可以以从从A A类中中选一一个个条条件件,同同时可可以以从从B B类中中选择一一个个条条件件。但但是是不不能能从从同同一一类中中选择两两个条件。个条件。另另外外(l(l n n w w i)i),两两种种条条件件测试的累加器必的累加器必须是同一个。是同一个。可以同可以同时(t(t ngsh

28、ngsh ) )测试AGTAGT和和AOVAOV,但不能同,但不能同时(t(t ngshngsh ) )测试AGTAGT和和BGTBGT。 第30页/共62页第三十页,共63页。第第2 2组 例如例如(l(l r r ) ) 可可以以在在A A、B B、C C三三类中中各各选择一一个个条条件件(ti(ti ojioji n)n),但但不不能能从从同同 一一 类 中中 选 择 两两 个个 条条 件件(ti(ti ojioji n) n) 可以在可以在A A、B B、C C三三类中各中各选择一个一个(y (y ) )条件,但不能从同条件,但不能从同一一类中中选择两个条件两个条件 第31页/共62页

29、第三十一页,共63页。特例如果条件分支转移出去的地方只有1 12 2字的程序段,则可以用一条单周期(zhuq)(zhuq)条件执行指令(XCXC)来代替分支转移指令:XC nXC n,condcond,condcond,condcond当n=1n=1,且条件得到满足,就执行紧随此 条件指令后的个字指令。当n=2n=2,且条件得到满足,就执行紧随此 指令后的1 1个双字指令或者2 2条单字指令。当 条 件 不 满 足 , 就 依 n n的 值 执 行 1 1 条或2 2条NOPNOP指令。第32页/共62页第三十二页,共63页。例例3-3编写计算编写计算的主要程序部分。的主要程序部分。.bssx

30、,4;为;为X建立建立4个单元,个单元,;放置;放置X1、X2、X3、X4.bssy,1;为;为Y建立建立1个单元,放置个单元,放置YSTM#x,AR1;将;将X1的地址传给的地址传给AR1STM#3,AR2;将将循循环环(xnhun)次次数数3传传给给AR2LD#0,A;对;对A清零清零loop:ADD*AR1+,A;对对X1、X2、X3、X4循循环环(xnhun)累累;加,结果放;加,结果放A中中BANZloop,*AR2-;检检查查循循环环(xnhun)是是否否应应结束结束STLA,y;将累加结果存入;将累加结果存入Y中中第33页/共62页第三十三页,共63页。特点(tdin)2(tdi

31、n)2特点(tdin)1(tdin)14单条单条(dntio)指令的重复操作指令的重复操作重重复复执行行(RCRC)+1+1次次。RCRC内内容容不不能能编程程设置置,只只能能由由重重复复指指令令(RPTRPT和和RPTZRPTZ)中中的的操操作作数数加加载。操操作作数数n n的的最最大大值为65 65 535535,最最大大 重重 复复 执 行行 次次 数数 为65 65 535+1535+1。 一旦重复指令被取一旦重复指令被取指、指、译码,直到重,直到重复循复循环完成以前,完成以前,对所有的中断(包所有的中断(包括括 ,但不包括,但不包括 )均不响)均不响应。 功能重复执行下一条指令 第3

32、4页/共62页第三十四页,共63页。重复(chngf)(chngf)过程当当RPTRPT指令指令执行行时:首先把循首先把循环的次数装入循的次数装入循环计数器(数器(RCRC),),其循其循环次数次数n n由一个由一个1616位位单数据存数据存储器操作数器操作数 Smem Smem或一个或一个8 8位或位或1616位常数位常数k k或或lklk给定。定。这样, 紧接着的下一条指令会循接着的下一条指令会循环执行行n+1n+1次。次。循循环,RCRC在在执行减行减1 1操作操作时不能被不能被访问(fngw(fngw n)n)。注意:注意:该循循环内不能套用循内不能套用循环。 当当RPTZRPTZ指令

33、指令执行行时:对目的累加器目的累加器dstdst清清0 0, 循循环执行下一条指令行下一条指令n+1n+1次。次。 第35页/共62页第三十五页,共63页。例例3-5利利用用单单条条指指令令的的重重复复操操作作对对数数组组x5=0,0,0,0,0进行初始化。进行初始化。.bssx,5;为数组;为数组x分配分配5个存储单元个存储单元STM#x,AR1;将;将x的首地址的首地址(dzh)赋给赋给AR1LD#0,A;对;对A清零清零RPT#4;设置重复执行下条指令;设置重复执行下条指令5次次STLA,*AR1+;对;对x5各单元清零各单元清零或者或者.bssx,5STM#x,AR1RPTZA,#4;

34、对;对A清零并设置重复执行下条指令清零并设置重复执行下条指令5次次STLA,*AR1+第36页/共62页第三十六页,共63页。特点(tdin)(tdin)5块重复块重复(chngf)操作操作利用C54xC54x内部的块重复(ch(ch ngfngf ) )计数器(BRCBRC,加载值可为0 065 65 535535)、块重复(ch(ch ngfngf ) )起始地址寄存器(RSARSA)、块重复(ch(ch ngfngf ) )结束地址寄存器(REAREA)与程序块重复(ch(ch ngfngf ) )指令RPTBRPTB,可对紧随RPTBRPTB、由若干条指令构成的程序块进行重复(ch(c

35、h ngfngf ) )操作。功能将重复操作的范围扩大到任意长度的循环回路 注意1.1.RPTRPT指令一旦指令一旦执行,不会停止操作,即行,不会停止操作,即使有中断使有中断请求也不响求也不响应;2.RPTB2.RPTB指令可以响指令可以响应中断;中断;第37页/共62页第三十七页,共63页。例例3-6对数据组对数据组x5中的每个元素加中的每个元素加1。.bssx,5;为数组;为数组x分配分配5个存储单元个存储单元begin:LD#1,16,B;将;将1左移左移16位放入位放入B的的;高端字的最低位;高端字的最低位STM#4,BRC;4BRC,(,(PC)+2RSASTM#x,AR4;将;将x

36、的首地址赋给的首地址赋给AR4RPTBnext-1;将;将NEXT-1REAADD*AR4,16,B,A;x地址的内容左移地址的内容左移16位加位加;B的高端字,结果放的高端字,结果放ASTHA,*AR4+;将;将A的高端字存入的高端字存入(cnr)x单元,单元,;完成加;完成加1操作操作next:LD#0,B;对;对B清零清零;必需;必需next-1作为结束地址作为结束地址第38页/共62页第三十八页,共63页。对寄存器的占用(zhn yn)(zhn yn)6循环循环(xnhun)的嵌套的嵌套执行行RPTRPT指令指令时占用占用RPTCRPTC寄存器(重复寄存器(重复计数器);数器);执行行

37、RPTBRPTB指指令令时要要用用到到BRCBRC、RSARSA和和RSERSE寄寄存存器器。只只有有一一套套块重复寄存器,故重复寄存器,故块重复操作不能嵌套。重复操作不能嵌套。 由由于于RPTRPT与与RPTBRPTB两两者者用用了了不不同同(b(b t t n)n)的的寄寄存存器器,因因此此RPTRPT指令可以嵌套在指令可以嵌套在RPTBRPTB指令中,指令中,实现循循环的嵌套。的嵌套。执行行BANZBANZ指指令令只只占占用用辅助助寄寄存存器器ARxARx。不不会会与与RPT RPT RPTBRPTB指指令相冲突。令相冲突。嵌套原则嵌套原则参与嵌套循环的寄存器不能重复使用 第39页/共6

38、2页第三十九页,共63页。图3-3 一个三重(sn zhn)循环嵌套结构第40页/共62页第四十页,共63页。第三节 流水线操作(cozu)(cozu)技术 流水线操作(cozu)(cozu)在执行多条指令(zhl(zhl ng)ng)时,将每条指令(zhl(zhl ng)ng)的预取指、取指、译码、寻址、读取操作数、执行等阶段,相差一个阶段地重叠地执行。流水流水线操操作作的优点一条一条k k段流水能在段流水能在k k+ +(n n-1-1)个周期内)个周期内处理理n n条指条指令。其前令。其前k k个周期用于完成第一条指令,其余个周期用于完成第一条指令,其余n n- -1 1条指令的条指令的

39、执行需要行需要n n-1-1个周期。而非流水个周期。而非流水处理器理器上上执行行n n条指令条指令则需要需要nknk 个周期。当指令条数个周期。当指令条数n n较大大时,可,可认为每个周期内每个周期内执行的最大指令个数行的最大指令个数为k k。 第41页/共62页第四十一页,共63页。预取指P P取指F F译码D D寻址A A读取操作数R R执行(zhxng)X(zhxng)X流水线操作(cozu) (cozu) 在在第第一一个个机机器器周周期期(zhuq)(zhuq)用用PCPC中中的的内内容容加加载PAB PAB 在在第第二二个个机机器器周周期期用用读取取到到的的指指令字加令字加载PBPB

40、。 第第三三个个周周期期用用PBPB的的内内容容加加载指指令令寄寄存存器器IRIR,对IRIR内内的的指指令令进行行译码,产生生执行行指指令令所所需需要的一系列控制信号。要的一系列控制信号。 第42页/共62页第四十二页,共63页。预取指P P取指F F译码D D寻址A A读取操作数R R执行(zhxng)X(zhxng)X流水线操作(cozu) (cozu) 用数据1 1读地址加载DABDAB,或用数据读地址加载 CABCAB, 修 正 辅 助(fzh(fzh ) )寄存器和堆栈指针。读数数据据1 1加加载DBDB,或或读数数据据2 2加加载CBCB;用用数数据据3 3写写地地址址加加载到到

41、EABEAB,以以便便在在流流水水线的的最最后后一一级将将数数据据送送到数据存到数据存储空空间。 执行行指指令令,或或用用写写数据加数据加载EBEB。 第43页/共62页第四十三页,共63页。空转浪费(l(l ngfngf i)i)周期1延迟延迟(ynch)分支转移的流水线图分支转移的流水线图无延迟流水线分支无延迟流水线分支(fnzh)转转移的问题移的问题地址 指令a1a1,a2 a2 B b1 B b1 这是一个四周期、二字分支指令a3 a3 i3 i3 这是任意的一周期、一字指令a4 a4 i4 i4 这是任意的一周期、一字指令. . .b1 j1b1 j1例3-73-7第44页/共62页

42、第四十四页,共63页。分支转移指令流水线图用用分分支支(fnzh)(fnzh)转移移指指令令的的地地址址a1a1加加载PABPAB。 取取得得双双字字分分支支转移移(zhuny(zhuny ) )指令指令取取得得双双字字分分支支(fnzh)(fnzh)转移指令移指令第45页/共62页第四十五页,共63页。分支(fnzh)(fnzh)转移指令流水线图i3i3和和i4i4指指令令取取指指。由由于于这两两条条指指令令处在在分分支支转移移指指令令的的后后面面,虽然然已已 经 (y (y jing)jing)取取指指,但但不不能能进入入译码级,且且最最终被被丢弃。弃。 分 支 转 移 指 令(zhl(z

43、hl ng)ng)进入译码级用新的值b1b1加载PABPAB第46页/共62页第四十六页,共63页。分支转移(zhuny)(zhuny)指令流水线图j1j1指指令令(zhl(zhl ng)ng)取指取指 双双 字字 (shun (shun z z ) )分分支支转移移指指令令进入入流流水水线的的执行行级 执行行j1j1指令指令 双双字字分分支支转移移指指令令进入入流流水水线的的执行行级 由于i3i3和i4i4指令是不允许执行的,所以这两个周期均花在分支转移指令的执行上。第47页/共62页第四十七页,共63页。允允许跟在延跟在延迟分支分支转移指令之后移指令之后(zhh(zhh u)u)的的两条两

44、条单字或一条双字字或一条双字指令可以被指令可以被执行行 延迟延迟(ynch)分支转移分支转移注意(zh y)(zh y)1.1.延延迟操作指令后面只有两个字的空操作指令后面只有两个字的空 隙,因此不能在此空隙中安排任何隙,因此不能在此空隙中安排任何 一一类分支分支转移指令或重复指令;移指令或重复指令;2.2.在CALLDCALLD或RETDRETD的空隙中还不能安 排PUSHPUSH和POPPOP指令。3 3. .延延迟操作指令比它操作指令比它们的非延的非延迟型型 指令要快,在指令要快,在调试延延迟型指令型指令时, 直直观性稍差一些,因此希望在大多性稍差一些,因此希望在大多 数情况下数情况下还

45、是采用非延是采用非延迟型指令。型指令。 第48页/共62页第四十八页,共63页。例例3-8在完成在完成R=(x+y)*z操作后转至操作后转至next。可以分别编出如下两段程序:可以分别编出如下两段程序:利利用用普普通通(ptng)分分支支转转移移指指令令B利利用用延延迟迟分分支支转转移移指令指令BDLDx,ALDx,AADDy,AADDy,ASTLA,sSTLA,sLDs,TLDs,TMPYz,ABDnextSTLA,rMPYz,ABnextSTLA,r(共(共8个字,个字,10个个T)(共(共8个字,个字,8个个T)在空闲的随后两周期(zhuq)(zhuq)中执行下两条指令 第49页/共62

46、页第四十九页,共63页。XC nXC n,cndcnd,cndcnd,cndcnd如果条件如果条件满足,足,则执行下行下面面n n(n=1n=1或或2 2)条指令,否)条指令,否则(fuz(fuz ) )下面下面n n条指令改条指令改为执行行n n条条NOPNOP指令。指令。 2条件执行条件执行(zhxng)指令的流水线图指令的流水线图条件(tiojin)执行指令XC有下列程序:地址 指令a1 i1a1 i1a2 i2a2 i2a3 i3a3 i3a4 XC 2a4 XC 2, condconda5 i5a5 i5a6 i6 a6 i6 第50页/共62页第五十页,共63页。条件执行(zhxn

47、g)(zhxng)指令流水线图XCXC指指令令(zhl(zhl ng)ng)的的地地址址a4a4加加载到到PAB PAB 取取 XCXC指指 令令(zhl(zhl ng)ng)的的操作操作码 求解XCXC指令所规定的条件。如果条件满足,则后面指令i5i5和i6i6进入译码级并执行;否则不对i5i5和i6i6指令译码。第51页/共62页第五十一页,共63页。1. XC1. XC是一条单字单周期指令,与条件跳 转指令相比,具有快速选择其后1 1或2 2 条指令是否执行的优点 ;2. XC2. XC指令在执行前2 2个周期就已经求出 条件,如果在这之后到执行前改变条 件(如发生中断(zhngdu(z

48、hngdu n)n)),将会造成无期望 的结果 。3. 3. 要尽力避免在XCXC指令执行前2 2个周期 改变所规定的条件 。 4. 4. 并没有规定XCXC指令后的一条或两条指 令必须是单周期指令。注意第52页/共62页第五十二页,共63页。CPUCPU在 单 个 周 期(zhuq)(zhuq)内两次访问双寻址存储器3双寻址存储器的流水线冲突双寻址存储器的流水线冲突(chngt)流水线冲突流水线冲突(chngt)原因原因不会产生流水线冲突的情况(1 1)在单周期内允许同时访问DARAMDARAM的不同块。(2 2)当流水线中的一条指令访问某一存储器块时, 允许流水线中处于同一级的另一条指令访

49、问 另一个存储器块。(3 3)允许处于流水线不同级上的两条指令同时访 问同一个存储器块。 第53页/共62页第五十三页,共63页。是利用一次访问中对前、后半个周期(zhuq)(zhuq)分时进行访问的缘故。CPU能够在单周期(zhuq)内对DARAM进行两次访问而不冲突对PAB/PBPAB/PB取指 利用(lyng)(lyng)前半周期对DAB/DBDAB/DB读取第一个数据 利用(lyng)(lyng)前半周期对CAB/CBCAB/CB读取第二个数据 利用(lyng)(lyng)后半周期对EAB/EBEAB/EB将数据写存储器 利用(lyng)(lyng)后半周期第54页/共62页第五十四页

50、,共63页。(1) (1) 同时从同一存储器块中取指和取操作数(都在前半个周期);2.2.同时对同一存储器块进行(j(j nxnx ng)ng)写操作和读(第二个数)操作(都在后半周期)。解决解决冲冲突突(chn(chngt)gt)办法法人为合理安排指令(zhl(zhl ng)ng),错开访问时序 CPUCPU通通过写写操操作作延延迟一一个个周周期期,或或者者通通过插插入入一一个个空空周周期期的的办法,自法,自动地解决地解决 CPUCPU同同时访问DARAMDARAM的同一存的同一存储器器块就会就会发生生时序上的冲突序上的冲突。第55页/共62页第五十五页,共63页。从DARAMDARAM块中

51、同时(tngsh)(tngsh)取指和取操作数冲突(chngt)(chngt)延延迟一一个个(y (y ) )周期周期 第56页/共62页第五十六页,共63页。4解决解决(jiju)流水线冲突的方法流水线冲突的方法(1)可能发生(fshng)流水线冲突的情况1) 1) 辅助寄存器(AR0AR0AR7AR7)。2) 2) 重复块长度寄存器(BKBK)。3) 3) 堆栈指针(zhzhn)(zhzhn)。4) 4) 暂存器(T T)。5) 5) 处理器工作方式状态寄存器(PMSTPMST)。6) 6) 状态寄存器(ST0ST0和ST1ST1)。7 7)块重复计数器(BRCBRC)。8 8)存储器映象

52、累加器(AGAG、AHAH、ALAL、BGBG、BHBH、BLBL)。第57页/共62页第五十七页,共63页。4解决流水线冲突解决流水线冲突(chngt)的方法的方法(2)用等待周期表解决(jiju)流水线冲突等待周期表给出了对存储器映象寄存器以及ST0ST0、ST1ST1、PMSTPMST的控制字段进行写操作的各种指令所需插入的等待周期。对双字或三字指令,都会提供隐含的保护周期。利用(lyng)(lyng)这些指令提供的隐含的保护周期,有时可以不插NOPNOP指令。第58页/共62页第五十八页,共63页。第四节 指令系统(zh (zh ln x tn)ln x tn)概述TMS320C54x

53、TMS320C54x是TMS320TMS320系列中的一种定点数字信号处理器,它的指令(zhl(zhl ng)ng)系统分助记符形式和代数式形式两种。共有指令(zhl(zhl ng)129ng)129条,由于操作数的寻址方式不同,派生至205205条。第59页/共62页第五十九页,共63页。可同时读入2 2或3 3个操作数;支持双精度运算的3232位长操作数指令;可进行单条指令重复和块指令重复操作;有块存储(c(c n n ch)ch)器传送指令和并行操作(如并行存储(c(c n n ch)ch)和加载、并行存储(c(c n n ch)ch)和加/ /减法、并行存储(c(c n ch)n ch

54、)和乘法、并行加载和乘法)指令;设有条件存储(c(c n n ch)ch)指令及延迟操作指令、有从中断快速返回指令;有为特殊用途设计的指令(如支持FIRFIR滤波、最小均方算法LSMLSM、多项式计算以及浮点运算);有为省电安排的空转指令。 TMS320C54xTMS320C54x指 令 系 统 的 主 要(zhyo)(zhyo)特点第60页/共62页第六十页,共63页。61第61页/共62页第六十一页,共63页。62感谢您的欣赏(xnshng)!第62页/共62页第六十二页,共63页。内容(nirng)总结第三章 DSP指令系统与特点。CMPT=0 标准方式ARF确定辅助寄存器,ST0中ARP0。利用以下两条语句可以向外设口(口地址为PA)输出(shch)整序后的FFT变换结果:。用来在中断和子程序调用时自动保存程序计数器(PC)中的数值,也能用来保护现场或传送参数。将PC+2压入堆栈,并用紧跟在调用指令后面的16位立即数加载PC。将PC+1压入椎栈,用累加器A或B的低16位加载PC。硬件中断或软件中断。感谢您的欣赏第六十三页,共63页。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号