好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

3DSP指令系统及特点.ppt

62页
  • 卖家[上传人]:s9****2
  • 文档编号:588459552
  • 上传时间:2024-09-08
  • 文档格式:PPT
  • 文档大小:2.52MB
  • / 62 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1DSPDSP技术及应用技术及应用Digital Signal Processor数字信号处理器数字信号处理器 第三章第三章  DSP指令系统与特点指令系统与特点 第一节第一节  寻址方式寻址方式第二节第二节  程序地址的生成程序地址的生成第三节第三节  流水线操作技术流水线操作技术(了解了解)第四节第四节  指令系统概述指令系统概述 SmemSmem::1616位单寻址操作数位单寻址操作数XmemXmem::1616位双寻址操作数,从位双寻址操作数,从DBDB数据总线上读出数据总线上读出YmemYmem::1616位双寻址操作数,从位双寻址操作数,从CBCB数据总线上读出数据总线上读出dmaddmad::1616位立即数,数据存储器地址位立即数,数据存储器地址pmadpmad::1616位立即数,程序存储器地址位立即数,程序存储器地址PAPA:: 1616位立即数,位立即数,I/OI/O口地址srcsrc:: 源累加器(源累加器(A A或或B B)dstdst:: 目的累加器(目的累加器(A A或或B B)lklk:: 1616位长立即数位长立即数第一第一节 TMS320C54xTMS320C54x的的寻址方式址方式 1 1.立即数寻址.立即数寻址2.绝对地址寻址.绝对地址寻址3.累加器寻址.累加器寻址4.直接寻址.直接寻址5.间接寻址.间接寻址6.存储器映象寄存器寻址.存储器映象寄存器寻址7.堆栈寻址.堆栈寻址寻址寻址分类分类 1 1.立即数寻址.立即数寻址   在操作数前面需要加#字号来说明该操作数在操作数前面需要加#字号来说明该操作数为立即数。

      否则会把该操作数误认为是一个地为立即数否则会把该操作数误认为是一个地址,从而把立即数寻址变成绝对地址寻址址,从而把立即数寻址变成绝对地址寻址 特特点点指令中包含有执行指令所需要的操作数指令中包含有执行指令所需要的操作数立即数分立即数分为3 3、、5 5、、8 8或或9 9位的短立即数和位的短立即数和1616位位的的长立即数两种立即数两种短立即数可包含在短立即数可包含在单字或双字指令中,字或双字指令中,长立立即数在双字指令中即数在双字指令中 注注意意LD #93hLD #93h,,A A LD 93hLD 93h,,A A 举例举例 2.绝对地址寻址.绝对地址寻址特特点点在指令中包含有所要在指令中包含有所要寻址的存址的存储单元的元的1616位位地址这个个1616位的地址可以用其所在位的地址可以用其所在单元的地元的地址址标号或者号或者1616位符号常数来表示位符号常数来表示 ((1 1)数据存)数据存储器地址(器地址(damddamd))寻址址 用一个符号或一用一个符号或一个数来确定数据个数来确定数据空间的一个地址空间的一个地址 方法方法MVKD SAMPLEMVKD SAMPLE,,* *AR3AR3 举例举例 用一个符号或一用一个符号或一个具体的数来确个具体的数来确定程序存储器中定程序存储器中的一个地址的一个地址 ((2 2)程序存)程序存储器地址(器地址(pmadpmad))寻址址 方法方法MVPD TABLEMVPD TABLE,,* *AR4AR4 举例举例 用一个符用一个符号或一个号或一个常数来确常数来确定外部定外部I/OI/O口地口地址址 ((3 3))PAPA寻址址 端口(端口(PAPA)) 方法方法PORTR FIFOPORTR FIFO,,* *AR5 AR5 举例举例 用一个符号用一个符号或一个常数或一个常数来确定数据来确定数据存存储器中的器中的一个地址一个地址 ((4 4))* *((lklk))寻址址 方法方法LD *LD *((BUFFERBUFFER),),A A 举例举例特点特点允允许所有使所有使用用SmemSmem寻址址的指令去的指令去访问数据空数据空间的任意的任意单元元而不改而不改变数数据据页指指针((DPDP))的的值,,也不用也不用对ARxARx进行初始化行初始化 用累加用累加器中的器中的数数值作作为地址地址来来读写写程序存程序存储器。

      器 方法方法READA READA SmemSmem WRITA WRITA SmemSmem 举例举例特点特点可用来可用来完成完成程序存程序存储器器单元的数据元的数据与与数据存数据存储器器单元的数元的数据据进行交换进行交换 3.累加器寻址.累加器寻址 可以在不改可以在不改变DPDP或或SPSP的的情况下,随情况下,随机地机地寻址址128128个存个存储单元元中的任何一中的任何一个个单元 用一个符号或用一个符号或一个常数来确一个常数来确定定7 7位偏移位偏移值,,与与DPDP或或SPSP共同共同形成形成1616位的数位的数据存据存储器器实际地址4.直接寻址.直接寻址 方法方法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 举例举例特点特点 CPL=0 CPL=0 7 7位位 dmadma域域 与与 9bit9bit的的 DPDP相相 结结 合合               形成形成1616位的数据存储器地址。

      位的数据存储器地址CPL=1 7CPL=1 7位位dmadma域加上(正偏移)域加上(正偏移)SPSP          的值形成的值形成1616位的数据存储器地址位的数据存储器地址 DPDP值是从值是从0~511((2 29 9-1-1),以),以DPDP为基准的直接寻址把存储器分为基准的直接寻址把存储器分成成512512页,页,7 7位的位的dmadma范围从范围从0~127,每页有,每页有128128个可访问的单元个可访问的单元  5.间接寻址.间接寻址 方法方法特点特点((AR0AR0~AR7AR7))→→ARAU0/ARAU1 ARAU0/ARAU1 →→1616位无符号算位无符号算术运运算算→→寻址范址范围为64K 64K 能在一个指令中能在一个指令中访问两个数据存两个数据存储器器单元元两个独立的存两个独立的存储器器单元元读数据数据读一个一个、、写另一个存写另一个存储器器单元元读写两个写两个连续的存的存储器器单元元 5.间接寻址.间接寻址 ((1 1))单操作数操作数寻址址 定定义间接接寻址的址的类型型定定义寻址所使用址所使用的的辅助寄存器助寄存器 ST1ST1CMPT=0 CMPT=0 标准方式准方式  ARFARF确定确定辅助寄存器助寄存器,,ST0ST0中中ARPARP==0 0 CMPT=1 CMPT=1 兼容方式兼容方式 如 如ARF=0ARF=0,用,用ARPARP选择辅助寄存器,选择辅助寄存器,  否则,用  否则,用ARFARF来确定辅助寄存器。

      来确定辅助寄存器ARFARF的值装入的值装入ARPARPLD *AR1,BLD *AR1,B 单操作数间接寻址的硬件框图 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))用用来来作作为为数数据据存存储储器器的的绝对地址也属绝对寻址)绝对地址也属绝对寻址)③③单数据存储器操作数间接寻址类型单数据存储器操作数间接寻址类型  1) 1) 循循环环寻寻址址 循循环环缓缓冲冲区区的的长长度度值值存存放放在在循循环环缓缓冲冲区区长长度度寄寄存存器器BKBK中中,,BKBK中中的的数数值值由由指指令令设设定定。

      长长度度为为R R的的循循环环缓缓冲冲器器必必须须从从一一个个N N位位地地址址的的边边界界开开始始,,即即循循环环缓缓冲冲器器基基地地址址的的最最低低N N位位必必须须为为0 0N N是是满满足足2 2N N>>R R的的最最小小整数R R的值必须装入的值必须装入BKBK例例如如,,含含有有3131个个字字的的循循环环缓缓冲冲器器必必须须从从最最低低5 5位位为为0 0的的地地址址开开始始,,即即xxxxxxxx xxxxxxxx xxx0 xxx0 000000002 2,,N=5N=5,,2 2N N=2=25 5>>R=31R=31,,且且3131必须装入必须装入BKBK如:如:STM #1kSTM #1k,,BKBK如如果果R=32R=32,,则则最最小小的的N N值值为为6 6,,循循环环缓缓冲冲区区的的起起始始地地址址必必须须有有6 6个个最最低低有有效效位位为为0 0,,即即×××× ×××× ×××× ×××× ××00 0000××00 00002 2 2) 2) 位位倒倒序序寻寻址址 在在这这种种寻寻址址方方式式中中,,用用AR0AR0存存放放FFTFFT点点数数的的一一半半整整数数N N,,用用另另一一辅辅助助寄寄存存器器指指向向一一数数据据存存放放的的物物理理单单元元。

      当当使使用用位位倒倒序序寻寻址址把把AR0AR0加加到到辅辅助助寄寄存存器器中中时时,,地地址址以以位位倒倒序序的的方方式式产产生生,,即即进进位位是是从从左左向右,而不是从右向左进位向右,而不是从右向左进位 例如: 例如:  0110 10000110 1000 + 0000 1000 + 0000 1000         0110 01000110 0100以以8 8位辅助寄存器为例,位辅助寄存器为例,AR1AR1表示了在存储器中数据表示了在存储器中数据的基地址(的基地址(0110 00000110 0000))2 2,,AR0AR0的值为(的值为(0000 10000000 1000))2 2利用以下两条语句可以向外设口(口地址为利用以下两条语句可以向外设口(口地址为PAPA))输输出整序后的出整序后的FFTFFT变换结果:变换结果:RPT #15 RPT #15 重复执行下条指令重复执行下条指令15+115+1次次PORTW *AR1+0BPORTW *AR1+0B,,PA PA 向外设口向外设口PAPA输出整结果输出整结果 AR1修改修改循环值循环值存储单存储单元地址元地址整序前整序前FFT  变换结果变换结果位倒序位倒序AR1更新的地址值更新的地址值AR0=0000 10002整序后整序后PA输出的输出的FFT变换结果变换结果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))101010X((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))位倒序对位倒序对FFTFFT变换结果的序号调整变换结果的序号调整  5.间接寻址.间接寻址 ((2 2)双操作数)双操作数寻址方式址方式 确定确定包含包含XmemXmem地址地址的辅的辅助寄助寄存器存器 确定确定包含包含YmemYmem地址地址的的辅助寄助寄存存器器定定义用于用于访问YmemYmem操作数的操作数的间接接寻址址方式的方式的类型型 定定义用于用于访问XmemXmem操作数的操作数的间接接寻址址方式的方式的类型型 MPY *AR2,*AR3,AMPY *AR2,*AR3,A Xar或或Yar       辅助寄存器辅助寄存器  00              AR2  01              AR3  10              AR4  11              AR5  辅助辅助寄存器寄存器选择选择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中中双数据存储器操作数寻址的类型双数据存储器操作数寻址的类型双数据存储器操作数寻址的类型双数据存储器操作数寻址的类型 0 0页寻址。

      页寻址不影响不影响当前当前DPDP或或SPSP值值 用于用于直接寻直接寻址和间址和间接寻址接寻址用来修用来修改存改存储器映象器映象寄存器寄存器 6.存储器映象寄存器寻址.存储器映象寄存器寻址功能功能LDM PRD,ALDM PRD,A举例举例特点特点方法方法高高9 9位数据位数据存储器地址存储器地址被置被置0 0,利,利用指令中的用指令中的低7位地址低7位地址访问访问MMRMMR 7.堆栈寻址.堆栈寻址 从从高高地地址址向向低低地地址址方方向向生生长长,,SPSP))来来管管理理堆堆栈栈,,SPSP始始终终指指向向堆堆栈栈中中所所存存放放的的最最后后一一个个数数据据,,即即SPSP指指针针始始终终指指向向栈栈顶顶在在压压入入操操作作时时,,先先减减小小SPSP的的值值,,再再将将数数据据压压入入堆堆栈栈;;在在弹弹出出操操作作时时,,先先从从堆堆栈栈弹弹出出数数据据,,再再增增加加SPSP的值用来在中断和用来在中断和子程序子程序调用用时自自动保存程序保存程序计数器(数器(PCPC))中的数中的数值,,也也能用来保能用来保护现场或或传送参数送参数 功能功能特点特点PSHD *AR2PSHD *AR2 POPD *AR3POPD *AR3 第二节第二节 程序地址的生成程序地址的生成程序地址程序地址生成器生成器((PAGENPAGEN))构成构成程序程序计数器(数器(PCPC))重复重复计数器(数器(RCRC))块重复重复计数器(数器(BRCBRC))块重复起始地址寄存器(重复起始地址寄存器(RSARSA))块重复重复结束地址寄存器(束地址寄存器(REAREA))核心核心1616位程序位程序计数器(数器(PCPC))内中保存某个内部或外内中保存某个内部或外部程序存部程序存储器的地址器的地址。

      地址地址内容为:内容为:  即将取指的某条指令即将取指的某条指令;;  某个某个1616位立即操作数位立即操作数;;  系数表系数表在程序存在程序存储器中的地址器中的地址 操作操作加载到加载到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,,继续执行被中断了的子程序继续执行被中断了的子程序将程序存储器地址加载到程序计数器的途径将程序存储器地址加载到程序计数器的途径 1.分支转移操作.分支转移操作 通通过过分分支支转转移移指指令令改改写写PCPC,,可可以以改改变变程程序序的的流流向向而而子子程程序序调调用用指指令令则则通通过过将将一一个个返返回回地地址址压压入入堆堆栈栈,,执执行行返返回回时时恢恢复复原地址可可执行行: :分支分支转移移循循环控制控制子程序操子程序操作作 功能功能方法方法 条件条件分支转移分支转移无条件分支无条件分支转移移 B[D]B[D]用用指指令令中中所所给出出的的地址加地址加载PCPCBACC[D]BACC[D]用用所所指指定定的的累累加加器器的的低低1616位位作作为地地址址加加载PCPC 带延延迟不不带延延迟操作操作转移种类转移种类BC[D]BC[D]如如果果指指令令中中所所规定定的的条条件件得得到到满足足,,就就用用指指令令中中所所给出出的的地地址址加加载PCPC;;BANZ[D]BANZ[D]如如果果当当前前辅助助寄寄存存器器不不等等于于0 0,,就就用用指指令令中中所所规定定的地址加的地址加载PCPC。

      BC newBC new,,AOVAOV BANZ loop,*AR2-BANZ loop,*AR2-B nextB nextBACC ABACC A 2.调用和返回.调用和返回 转移移前前,,原原程程序序的的下下条条指指令令的的地地址址被被压入入堆堆栈,,而而在在返返回回时则将将这个个地地址址弹出出至至PCPC,,使使被被中中断断了了的的原原程程序能序能继续执行 当采用当采用调用指令用指令进行子程序或函数行子程序或函数调用用时,,DSPDSP中断当前中断当前运行的程序,运行的程序,转移移到程序存到程序存储器的其器的其它地它地址址继续运行功能功能方法方法无条件无条件调用与返回用与返回有条件有条件调用与返回用与返回带延延迟不不带延延迟CALL[d] lopCALL[d] lopRET mainRET main 3.条件指令中的条件判断.条件指令中的条件判断 多重条件判断多重条件判断 第第1组组第第2组组A  类类B  类类A  类类B  类类C  类类EQOVTCCBIONEQNOVNTCNCNBIOLT    LEQ    GT    GEQ     第第1 1组 例如例如 可可以以从从A A类中中选一一个个条条件件,,同同时可可以以从从B B类中中选择一一个个条条件件。

      但但是是不不能能从从同同一一类中中选择两两个条件另另外外,,两两种种条条件件测试的的累累加加器必器必须是同一个是同一个可以同可以同时测试AGTAGT和和AOVAOV,,但但不能同不能同时测试AGTAGT和和BGTBGT 第第2 2组 例如例如 可可以以在在A A、、B B、、C C三三类中中各各选择一一个个条条件件,,但但不不能能从从同一同一类中中选择两个条件两个条件 可以在可以在A A、、B B、、C C三三类中各中各选择一个条件,但不能从同一个条件,但不能从同一一类中中选择两个条件两个条件 特特例例如如果果条条件件分分支支转转移移出出去去的的地地方方只只有有1 1~~2 2字字的的程程序序段段,,则则可可以以用用一一条条单单周周期期条条件件执执行行指指令令((XCXC))来代替分支转移指令:来代替分支转移指令:XC nXC n,,condcond[ [,,condcond[ [,,condcond]]]]当当 n=1n=1,, 且且 条条 件件 得得 到到 满满 足足 ,, 就就 执执 行行 紧紧 随随 此此               条件指令后的1个字指令条件指令后的1个字指令。

      当当 n=2n=2,, 且且 条条 件件 得得 到到 满满 足足 ,, 就就 执执 行行 紧紧 随随 此此               指指 令令 后后 的的 1 1个个 双双 字字 指指 令令 或或 者者 2 2条条 单单               字指令        当当 条条 件件 不不 满满 足足 ,, 就就 依依 n n的的 值值 执执 行行 1 1              条或条或2 2条条NOPNOP指令 例例3-3 编写计算   编写计算    的主要程序部分的主要程序部分   . .bssbss x,4 x,4 ;为;为X X建立建立4 4个单元,个单元, ;;放置放置X1X1、、X2X2、、X3X3、、X4X4   . .bssbss y,1 y,1 ;为;为Y Y建立建立1 1个单元,放置个单元,放置Y Y     STM #xSTM #x,,AR1 AR1 ;将;将X1X1的地址传给的地址传给AR1AR1     STM #3STM #3,,AR2 AR2 ;;将循环次数将循环次数3 3传给传给AR2AR2     LD #0LD #0,,A A ;对;对A A清零清零loop:ADD *AR1+loop:ADD *AR1+,,A A ;对;对X1X1、、X2X2、、X3X3、、X4X4循环累循环累 ;;加,结果放加,结果放A A中中   BANZ loop,*AR2- BANZ loop,*AR2- ;;检查循环是否应结束检查循环是否应结束   STL ASTL A,,y y ;;将累加结果存入将累加结果存入Y Y中中 特点特点2 2特点特点1 14.单条指令的重复操作.单条指令的重复操作 重重复复执行行((RCRC))+1+1次次。

      RCRC内内容容不不能能编程程设置置,,只只能能由由重重复复指指令令((RPTRPT和和RPTZRPTZ))中中的的操操作作数数加加载操操作作数数n n的的最最大大值为65 65 535535,,最最大大重重复复执行行次次数数为65 535+165 535+1 一旦重复指令被取一旦重复指令被取指、指、译码,直到重,直到重复循复循环完成以前,完成以前,对所有的中断(包所有的中断(包括括 ,但不包括,但不包括 )均不响)均不响应 功能功能重复重复执行下一条指令行下一条指令 重复过程重复过程当当RPTRPT指令指令执行行时::①①首先把循首先把循环的次数装入循的次数装入循环计数器(数器(RCRC),),②②其循其循环次数次数n n由一个由一个1616位位单数据存数据存储器操作数器操作数 SmemSmem或一个或一个8 8位或位或1616位常数位常数k k或或lklk给定这样,, 紧接着的下一条指令会循接着的下一条指令会循环执行行n+1n+1次③③循循环,,RCRC在在执行减行减1 1操作操作时不能被不能被访问注意:注意:该循循环内不能套用循内不能套用循环。

      当当RPTZRPTZ指令指令执行行时::对目的累加器目的累加器dstdst清清0 0,, 循循环执行下一条指令行下一条指令n+1n+1次 例例3-5  利利用用单单条条指指令令的的重重复复操操作作对对数数组组x[5]={0x[5]={0,,0 0,,0 0,,0 0,,0}0}进行初始化进行初始化 .bssbss x,5 x,5 ;;为数组为数组x x分配分配5 5个存储单元个存储单元STM #x,AR1 STM #x,AR1 ;将;将x x的首地址赋给的首地址赋给AR1AR1LD #0,A LD #0,A ;对;对A A清零清零RPT #4 RPT #4 ;;设置重复执行下条指令设置重复执行下条指令5 5次次STL A,*AR1+STL A,*AR1+;对;对x[5]x[5]各单元清零各单元清零或者或者. .bssbss x,5 x,5STM #x,AR1STM #x,AR1RPTZ A,#4RPTZ A,#4;对;对A A清零并设置重复执行下条指令清零并设置重复执行下条指令5 5次次STL A,*AR1+STL A,*AR1+ 特点特点5.块重复操作.块重复操作 利利用用C54xC54x内内部部的的块块重重复复计计数数器器((BRCBRC,,加加载载值值可可为为0 0~~65 65 535535))、、块块重重复复起起始始地地址址寄寄存存器器((RSARSA))、、块块重重复复结结束束地地址址寄寄存存器器((REAREA))与与程程序序块块重重复复指指令令RPTBRPTB,,可可对对紧紧随随RPTBRPTB、、由由若若干干条条指令构成的程序块进行重复操作。

      指令构成的程序块进行重复操作功能功能将重复操作的范将重复操作的范围扩大到任意大到任意长度的循度的循环回路回路 注意注意1.1.RPTRPT指令一旦指令一旦执行,不会停止操作,行,不会停止操作,即使有中断即使有中断请求也不响求也不响应;;2.RPTB2.RPTB指令可以响指令可以响应中断;中断; 例例3-6  对数据组对数据组x[5]x[5]中的每个元素加中的每个元素加1 1      . .bssbss x,5 x,5    ;;为数组为数组x x分配分配5 5个存储单元个存储单元begin: LD #1,16,B begin: LD #1,16,B ;;将将1 1左移左移1616位放入位放入B B的的                   ;;高端字的最低位高端字的最低位      STM #4,BRC STM #4,BRC ;; 4→BRC4→BRC,,((PCPC))+2 +2 →→RSARSA       STM #x,AR4STM #x,AR4 ;将 ;将x x的首地址赋给的首地址赋给AR4 AR4       RPTB next-1RPTB next-1 ; ;将将NEXT-1 NEXT-1 →→REAREA       ADD *AR4,16,B,A ADD *AR4,16,B,A ;;x x地址的内容左移地址的内容左移1616位加位加 ;; B B的高端字,结果放的高端字,结果放A A      STH A,*AR4+ STH A,*AR4+ ;将;将A A的高端字存入的高端字存入x x单元,单元, ;;完成加完成加1 1操作操作next: LD #0,B next: LD #0,B ;对;对B B清零清零      ……           ;;必必需需next-1next-1作作为结束地址束地址 对寄存器的占用对寄存器的占用6.循环的嵌套.循环的嵌套 执行行RPTRPT指令指令时占用占用RPTCRPTC寄存器(重复寄存器(重复计数器);数器);执行行RPTBRPTB指指令令时要要用用到到BRCBRC、、RSARSA和和RSERSE寄寄存存器器。

      只只有有一套一套块重复寄存器,重复寄存器,故故块重复操作不能嵌套重复操作不能嵌套 由由于于RPTRPT与与RPTBRPTB两两者者用用了了不不同同的的寄寄存存器器,,因因此此RPTRPT指指令可以嵌套在令可以嵌套在RPTBRPTB指令中,指令中,实现循循环的嵌套执行行BANZBANZ指指令令只只占占用用辅辅助助寄寄存存器器ARxARx不不会会与与RPT RPT RPTBRPTB指令指令相冲突嵌套原则嵌套原则参与嵌套循环的寄存器不能重复使用参与嵌套循环的寄存器不能重复使用 图3-3 一个三重循环嵌套结构 第三第三节 流水流水线操作技操作技术 流水流水线操作操作在在执执行行多多条条指指令令时时,,将将每每条条指指令令的的预预取取指指、、取取指指、、译译码码、、寻寻址址、、读读取取操操作作数数、、执执行行等等阶阶段段,,相相差差一一个个阶阶段段地地重叠重叠地执行流水流水线操操作作的的优点优点一条一条k k段流水能在段流水能在k k+ +((n n-1-1))个周期内个周期内处理理n n条条指令其前指令其前k k个周期用于完成第一条指令,个周期用于完成第一条指令,其余其余n n-1-1条指令的条指令的执行需要行需要n n-1-1个周期。

      而非个周期而非流水流水处理器上理器上执行行n n条指令条指令则需要需要nknk 个周期当指令条数当指令条数n n较大大时,可,可认为每个周期内每个周期内执行的最大指令个数行的最大指令个数为k k 预取指预取指P取指取指F译码译码D寻址寻址A读取操作数读取操作数R执行执行X流水流水线操作操作 在在第第一一个个机机器器周周期期用用PCPC中中的的内内容容加加载PABPAB 在在第第二二个个机机器器周周期期用用读取取到到的的指指令字加令字加载PBPB 第第三三个个周周期期用用PBPB的的内内容容加加载指指令令寄寄存存器器IRIR,,对IRIR内内的的指指令令进行行译码,,产生生执行行指令所需要的一系列控制信号指令所需要的一系列控制信号 预取指预取指P取指取指F译码译码D寻址寻址A读取操作数读取操作数R执行执行X流水流水线操作操作 用用数数据据1 1读读地地址址加加载载DABDAB,,或或用用数数据据22读读地地址址加加载载CABCAB,,修修正正辅辅助助寄存器和堆栈指针寄存器和堆栈指针读数数据据1 1加加载DBDB,,或或读数数据据2 2加加载CBCB;;用用数数据据3 3写写地地址址加加载到到EABEAB,,以以便便在在流流水水线的的最最后后一一级将将数数据送到数据存据送到数据存储空空间。

      执行行指指令令,,或或用用写数据加写数据加载EBEB 空转浪费周期空转浪费周期1.延迟分支转移的流水线图.延迟分支转移的流水线图 无延迟流水线分支转移的问题无延迟流水线分支转移的问题地址地址 指令指令a1a1,,a2 a2   B b1 B b1 这是一个四周期、二字分支指令这是一个四周期、二字分支指令a3 a3   i3 i3 这是任意的一周期、一字指令这是任意的一周期、一字指令a4 a4    i4 i4 这是任意的一周期、一字指令这是任意的一周期、一字指令... ...... ...b1 j1b1 j1例例3-73-7 分支转移指令流水线图分支转移指令流水线图用用分分支支转移移指指令令的的地地址址a1a1加加载PABPAB 取取得得双双字字分分支支转移指令移指令取取得得双双字字分分支支转移指令移指令 分支转移指令流水线图分支转移指令流水线图i3i3和和i4i4指指令令取取指指由由于于这两两条条指指令令处在在分分支支转移移指指令令的的后后面面,,虽然然已已经取取指指,,但但不不能能进入入译码级,,且最且最终被被丢弃。

      弃 分分支支转转移移指指令令进入译码级进入译码级用新的值用新的值b1b1加载加载PABPAB 分支转移指令流水线图分支转移指令流水线图j1j1指令取指指令取指 双双字字分分支支转移移指指令令进入入流流水水线的的执行行级 执行行j1j1指令指令 双双字字分分支支转移移指指令令进入入流流水水线的的执行行级 由由于于i3i3和和i4i4指指令令是是不不允允许许执执行行的的,,所所以以这这两两个个周周期期均均花花在在分分支支转转移移指指令的执行上令的执行上 允允许跟在延跟在延迟分支分支转移指令之后的两移指令之后的两条条单字字或一条双字或一条双字指令可以被指令可以被执行行 延迟分支转移延迟分支转移注意注意1.1.延延迟操作指令后面只有两个字的空操作指令后面只有两个字的空 隙,因此不能在此空隙中安排任何隙,因此不能在此空隙中安排任何 一一类分支分支转移指令或重复指令;移指令或重复指令;2.2.在在CALLDCALLD或或RETDRETD的空隙中还不能安的空隙中还不能安 排排PUSHPUSH和和POPPOP指令3 3. .延延迟操作指令比它操作指令比它们的非延的非延迟型型 指令要快,在指令要快,在调试延延迟型指令型指令时,, 直直观性稍差一些,因此希望在大多性稍差一些,因此希望在大多 数情况下数情况下还是采用非延是采用非延迟型指令。

      型指令 例例3-8  在完成在完成R=R=((x+yx+y))* *z z操作后转至操作后转至nextnext  可以分别编出如下两段程序:  可以分别编出如下两段程序:利用普通分支转移指令利用普通分支转移指令B B  利用延迟分支转移指令 利用延迟分支转移指令BDBD    LD @xLD @x,,A LD @xA LD @x,,A A    ADD @yADD @y,,A ADD @yA ADD @y,,A A    STL ASTL A,, @s STL A@s STL A,, @s@s    LD @sLD @s,,T LD @sT LD @s,,T T    MPY @zMPY @z,,A BD next A BD next     STL ASTL A,, @r MPY @z@r MPY @z,,A A     B next STL AB next STL A,, @r@r((共共8 8个字,个字,1010个个T T)) ((共共8 8个字,个字,8 8个个T T))在空闲的随后两周期中执行下两条指令在空闲的随后两周期中执行下两条指令 XC nXC n,,cndcnd[ [,,cndcnd[ [,,cndcnd] ]    如果条件如果条件满足,足,则执行下面行下面n n((n=1n=1或或2 2)条指令,)条指令,否否则下面下面n n条指令改条指令改为执行行n n条条NOPNOP指令。

      指令 2.条件执行指令的流水线图.条件执行指令的流水线图 条件条件执行指令行指令XC 有下列程序:有下列程序:地址地址 指令指令a1 i1a1 i1a2 i2a2 i2a3 i3a3 i3a4 XC 2a4 XC 2,, condconda5 i5a5 i5a6 i6 a6 i6 条件执行指令流水线图条件执行指令流水线图XCXC指指令令的的地地址址a4a4加加载到到PAB PAB 取取 XCXC指指 令令的操作的操作码 求求解解XCXC指指令令所所规规定定的的条条件件如如果果条条件件满满足足,,则则后后面面指指令令i5i5和和i6i6进进入入译译码码级级并并执执行;否则不对行;否则不对i5i5和和i6i6指令译码指令译码 1. 1. XCXC是一条是一条单字字单周期指令,与条件跳周期指令,与条件跳 转指令相比,具有快速指令相比,具有快速选择其后其后1 1或或2 2 条指令是否条指令是否执行的行的优点点 ;;2. XC2. XC指令在指令在执行前行前2 2个周期就已个周期就已经求出求出 条件,如果在条件,如果在这之后到之后到执行前改行前改变条条 件(如件(如发生中断),将会造成无期望生中断),将会造成无期望 的的结果果 。

      3 3. . 要尽力避免在要尽力避免在XCXC指令指令执行前行前2 2个周期个周期 改改变所所规定的条件定的条件 4 4. . 并没有规定并没有规定XCXC指令指令后的一条或两条指后的一条或两条指 令必须是单周期指令令必须是单周期指令注注意意 CPUCPU在在单单个个周周期期内内两两次次访问双寻址存储器访问双寻址存储器3.双寻址存储器的流水线冲突.双寻址存储器的流水线冲突 流水线冲突原因流水线冲突原因不会产生流水线冲突的情况不会产生流水线冲突的情况((1 1)在单周期内允许同时访问)在单周期内允许同时访问DARAMDARAM的不同块的不同块2 2)当流水线中的一条指令访问某一存储器块时,)当流水线中的一条指令访问某一存储器块时, 允许流水线中处于同一级的另一条指令访问允许流水线中处于同一级的另一条指令访问 另一个存储器块另一个存储器块3 3)允)允许处于流水于流水线不同不同级上的两条指令同上的两条指令同时访 问同一个存同一个存储器器块 是是利利用用一一次次访访问问中中对对前前、、后后半半个个周周期期分分时时进行访问的缘故。

      进行访问的缘故CPU能能够在在单周期周期内内对DARAM进行行两次两次访问而不冲突而不冲突 对对PAB/PBPAB/PB取指取指 利用前半周期利用前半周期对对DAB/DBDAB/DB读取第一个数据读取第一个数据 利用前半周期利用前半周期对对CAB/CBCAB/CB读取第二个数据读取第二个数据 利用后半周期利用后半周期对对EAB/EBEAB/EB将数据写存储器将数据写存储器 利用后半周期利用后半周期 (1) (1) 同同时从同一存从同一存储器器块中取指和中取指和取操作数(都在前半个周期);取操作数(都在前半个周期);2.2.同同时对同一存同一存储器器块进行写操作和行写操作和读(第二个数)(第二个数)操作(都在后半周期)操作(都在后半周期)解决解决冲突冲突办法办法人人为为合合理理安安排排指指令令,,错开访问时序错开访问时序 CPUCPU通通过写写操操作作延延迟一一个个周周期期,,或或者者通通过插插入入一一个个空空周周期的期的办法,自法,自动地解决地解决 CPUCPU同同时访问DARAMDARAM的同一存的同一存储器器块就会就会发生生时序上的冲突序上的冲突。

      从从DARAMDARAM块中同时取指和取操作数块中同时取指和取操作数冲突冲突延延迟一个周期一个周期 4.解决流水线冲突的方法.解决流水线冲突的方法 ((1)可能)可能发生流水生流水线冲突的情况冲突的情况 1) 1) 辅助寄存器(辅助寄存器(AR0AR0~~AR7AR7)2) 2) 重复块长度寄存器(重复块长度寄存器(BKBK)3) 3) 堆栈指针堆栈指针4) 4) 暂存器(暂存器(T T)5) 5) 处理器工作方式状态寄存器(处理器工作方式状态寄存器(PMSTPMST)6) 6) 状态寄存器(状态寄存器(ST0ST0和和ST1ST1)7 7))块重复计数器(块重复计数器(BRCBRC)8 8))存储器映象累加器(存储器映象累加器(AGAG、、AHAH、、ALAL、、BGBG、、BHBH、、BLBL) 4.解决流水线冲突的方法.解决流水线冲突的方法 ((2)用等待周期表解决流水)用等待周期表解决流水线冲突冲突 等等待待周周期期表表给给出出了了对对存存储储器器映映象象寄寄存存器器以以及及ST0ST0、、ST1ST1、、PMSTPMST的的控控制制字字段段进进行行写写操操作作的的各各种种指指令令所所需需插插入入的的等等待周期。

      待周期对对双双字字或或三三字字指指令令,,都都会会提提供供隐隐含含的的保保护护周周期期利利用用这这些些指指令令提提供供的的隐隐含含的的保保护护周周期期,,有有时时可可以以不不插插NOPNOP指指令 第四节第四节 指令系统概述指令系统概述TMS320C54xTMS320C54x是是TMS320TMS320系系列列中中的的一一种种定定点点数数字字信信号号处处理理器器,,它它的的指指令令系系统统分分助助记记符符形形式和代数式形式两种式和代数式形式两种共共有有指指令令129129条条,,由由于于操操作作数数的的寻寻址址方方式式不同,派生至不同,派生至205205条 可同时读入可同时读入2 2或或3 3个操作数;个操作数;支持双精度运算的支持双精度运算的3232位长操作数指令;位长操作数指令;可进行单条指令重复和块指令重复操作;可进行单条指令重复和块指令重复操作;有有块块存存储储器器传传送送指指令令和和并并行行操操作作((如如并并行行存存储储和和加加载载、、并并行行存存储储和和加加/ /减减法法、、并并行行存存储储和和乘乘法法、、并并行行加加载载和和乘乘法)指令;法)指令;设设有有条条件件存存储储指指令令及及延延迟迟操操作作指指令令、、有有从从中中断断快快速速返返回指令;回指令;有有为为特特殊殊用用途途设设计计的的指指令令((如如支支持持FIRFIR滤滤波波、、最最小小均均方方算法算法LSMLSM、、多项式计算以及浮点运算);多项式计算以及浮点运算);有为省电安排的空转指令。

      有为省电安排的空转指令 TMS320C54xTMS320C54x指令系统的主要特点指令系统的主要特点 62 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.