《DSP指令系统及特点.pptx》由会员分享,可在线阅读,更多相关《DSP指令系统及特点.pptx(62页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第三章DSP指令系统与特点第一节寻址方式第二节程序地址的生成第三节流水线操作技术(了解)第四节指令系统概述第1页/共62页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位长立即数。第一节 TMS320C54xTM
2、S320C54x的寻址方式 第2页/共62页1 1立即数寻址2绝对地址寻址绝对地址寻址3累加器寻址累加器寻址4直接寻址直接寻址5间接寻址间接寻址6存储器映象寄存器寻址存储器映象寄存器寻址7堆栈寻址堆栈寻址寻址分类第3页/共62页 1 1立即数寻址 在操作数前面需要加字号来说明该操作数为立即数。否则会把该操作数误认为是一个地址,从而把立即数寻址变成绝对地址寻址。特点指令中包含有执行指令所需要的操作数。立即数分为3 3、5 5、8 8或9 9位的短立即数和1616位的长立即数两种。短立即数可包含在单字或双字指令中,长立即数在双字指令中。注意LD#93hLD#93h,A ALD 93hLD 93h,
3、A A 举例第4页/共62页 2绝对地址寻址绝对地址寻址特点在指令中包含有所要寻址的存储单元的1616位地址。这个1616位的地址可以用其所在单元的地址标号或者1616位符号常数来表示。(1 1)数据存储器地址(damddamd)寻址 用一个符号或一个数来确定数据空间的一个地址。方法MVKD SAMPLEMVKD SAMPLE,*AR3AR3 举例第5页/共62页用一个符号或一个具体的数来确定程序存储器中的一个地址(2 2)程序存储器地址(pmadpmad)寻址 方法MVPD TABLEMVPD TABLE,*AR4AR4 举例第6页/共62页用一个符号或一个常数来确定外部I/OI/O口地址(
4、3 3)PAPA寻址 端口(PAPA)方法PORTR FIFOPORTR FIFO,*AR5 AR5 举例第7页/共62页用一个符号或一个常数来确定数据存储器中的一个地址 (4 4)*(lklk)寻址 方法LD *LD *(BUFFERBUFFER),A A 举例特点允许所有使用SmemSmem寻址的指令去访问数据空间的任意单元而不改变数据页指针(DPDP)的值,也不用对ARxARx进行初始化 第8页/共62页用累加器中的数值作为地址来读写程序存储器。方法READA Smem READA Smem WRITA Smem WRITA Smem 举例特点可用来完成程序存储器单元的数据与数据存储器单
5、元的数据进行交换 3累加器寻址累加器寻址第9页/共62页可以在不改变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 举例特点第10页/共62页CPL=0 CPL=0 7 7位 dmadma域 与 9bit9bit的 DPDP相 结 合 形成1616位的数据存储器
6、地址。CPL=1 7CPL=1 7位dmadma域加上(正偏移)SPSP的值形成1616位的数据存储器地址。DPDP值是从0511(2 29 9-1-1),以DPDP为基准的直接寻址把存储器分成512512页,7 7位的dmadma范围从0127,每页有128128个可访问的单元。第11页/共62页5间接寻址间接寻址方法特点(AR0AR0AR7AR7)ARAU0/ARAU1 ARAU0/ARAU1 1616位无符号算术运算寻址范围为64K 64K 能在一个指令中访问两个数据存储器单元两个独立的存储器单元读数据读一个、写另一个存储器单元读写两个连续的存储器单元 第12页/共62页5间接寻址间接寻
7、址(1 1)单操作数寻址 定义间接寻址的类型定义寻址所使用的辅助寄存器 ST1ST1CMPT=0 CMPT=0 标准方式ARFARF确定辅助寄存器,ST0ST0中ARPARP0 0 CMPT=1 CMPT=1 兼容方式如ARF=0ARF=0,用ARPARP选择辅助寄存器,否则,用ARFARF来确定辅助寄存器。ARFARF的值装入ARPARP。LD*AR1,BLD*AR1,B第13页/共62页单操作数间接寻址的硬件框图第14页/共62页MOD域操作码语法功能说明0000*ARxaddr=ARxARx包含了数据存储器地址0001*ARx-addr=ARxARx=ARx-1访问后,ARx中的地址减1
8、0010*ARx+addr=ARxARx=ARx+1访问后,ARx中的地址加10011*+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
9、=ARxARx=circ(ARx-1)访问后,ARx中的地址以循环寻址的方式减11001*ARx-0%addr=ARxARx=circ(ARx-AR0)访问后,从ARx中以循环寻址的方式减去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+
10、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)1)循环寻址 循环缓冲区的长度值存放在循环缓冲区长度寄存器BKBK中,BKBK中的数值由指令设定。长度为R
11、R的循环缓冲器必须从一个N N位地址的边界开始,即循环缓冲器基地址的最低N N位必须为0 0。N N是满足2 2N NR R的最小整数。R R的值必须装入BKBK。例如,含有3131个字的循环缓冲器必须从最低5 5位为0 0的地址开始,即xxxx xxxx xxxx xxxx xxx0 xxx0 000000002 2,N=5N=5,2 2N N=2=25 5R=31R=31,且3131必须装入BKBK。如:STM#1kSTM#1k,BKBK如果R=32R=32,则最小的N N值为6 6,循环缓冲区的起始地址必须有6 6个最低有效位为0 0,即 00 000000 00002 2。第16页/共
12、62页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
13、)输出整序后的FFTFFT变换结果:RPT#15 RPT#15 重复执行下条指令15+115+1次PORTW *AR1+0BPORTW *AR1+0B,PA PA 向外设口PAPA输出整结果第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
14、(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)位倒序对FFTFFT变换结果
15、的序号调整第18页/共62页5间接寻址间接寻址(2 2)双操作数寻址方式 确定包含XmemXmem地址的辅助寄存器确定包含YmemYmem地址的辅助寄存器定义用于访问YmemYmem操作数的间接寻址方式的类型 定义用于访问XmemXmem操作数的间接寻址方式的类型 MPY*AR2,*AR3,AMPY*AR2,*AR3,A第19页/共62页Xar或Yar辅助寄存器00AR201AR310AR411AR5辅助寄存器选择Xmod或Ymod操作码语法功能说明00*ARxaddr=ARxARx是数据存储器地址01*ARx-addr=ARxARx=ARx-1访问后,ARx中的地址减110*ARx+addr
16、=ARxARx=ARx+1访问后,ARx中的地址加111*ARx+0%addr=ARxARx=circ(ARx+AR0)访问后,AR0以循环寻址的方式加到ARx中双数据存储器操作数寻址的类型双数据存储器操作数寻址的类型第20页/共62页0 0页寻址。不影响当前DPDP或SPSP值。用于直接寻址和间接寻址用来修改存储器映象寄存器 6存储器映象寄存器寻址存储器映象寄存器寻址功能LDM PRD,ALDM PRD,A举例特点方法高9 9位数据存储器地址被置0 0,利用指令中的低位地址访问MMRMMR。第21页/共62页7堆栈寻址堆栈寻址从高地址向低地址方向生长,SPSP)来管理堆栈,SPSP始终指向堆
17、栈中所存放的最后一个数据,即SPSP指针始终指向栈顶。在压入操作时,先减小SPSP的值,再将数据压入堆栈;在弹出操作时,先从堆栈弹出数据,再增加SPSP的值。用来在中断和子程序调用时自动保存程序计数器(PCPC)中的数值,也能用来保护现场或传送参数 功能特点PSHD*AR2PSHD*AR2 POPD*AR3POPD*AR3第22页/共62页第二节 程序地址的生成程序地址生成器(PAGENPAGEN)构成程序计数器(PCPC)重复计数器(RCRC)块重复计数器(BRCBRC)块重复起始地址寄存器(RSARSA)块重复结束地址寄存器(REAREA)核心1616位程序计数器(PCPC)内中保存某个内
18、部或外部程序存储器的地址。地址内容为:即将取指的某条指令;某个1616位立即操作数;系数表。在程序存储器中的地址第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压
19、入椎栈,用累加器A或B的低16位加载PC。返回指令将栈顶弹出至PC,回到原先的程序处继续执行。硬件中断或软件中断将PC压入堆栈,用适当的中断向量地址加载PC。中断返回时,将栈顶弹出至PC,继续执行被中断了的子程序。将程序存储器地址加载到程序计数器的途径第24页/共62页1分支转移操作分支转移操作通过分支转移指令改写PCPC,可以改变程序的流向。而子程序调用指令则通过将一个返回地址压入堆栈,执行返回时恢复原地址。可执行:分支转移循环控制子程序操作 功能方法第25页/共62页条件分支转移分支转移无条件分支转移BDBD用指令中所给出的地址加载PCPCBACCDBACCD用所指定的累加器的低1616位
20、作为地址加载PCPC。带延迟不带延迟操作转移种类BCDBCD如果指令中所规定的条件得到满足,就用指令中所给出的地址加载PCPC;BANZDBANZD如果当前辅助寄存器不等于0 0,就用指令中所规定的地址加载PCPC。BC newBC new,AOVAOV BANZ loop,*AR2-BANZ loop,*AR2-B nextB nextBACC ABACC A第26页/共62页2调用和返回调用和返回转移前,原程序的下条指令的地址被压入堆栈,而在返回时则将这个地址弹出至PCPC,使被中断了的原程序能继续执行。当采用调用指令进行子程序或函数调用时,DSPDSP中断当前运行的程序,转移到程序存储器
21、的其它地址继续运行。功能方法无条件调用与返回有条件调用与返回带延迟不带延迟CALLd lopCALLd lopRET mainRET main第27页/共62页3条件指令中的条件判断条件指令中的条件判断第28页/共62页多重条件判断第1组第2组A类B类A类B类C类EQOVTCCBIONEQNOVNTCNCNBIOLTLEQGTGEQ第29页/共62页第1 1组 例如 可以从A A类中选一个条件,同时可以从B B类中选择一个条件。但是不能从同一类中选择两个条件。另外,两种条件测试的累加器必须是同一个。可以同时测试AGTAGT和AOVAOV,但不能同时测试AGTAGT和BGTBGT。第30页/共6
22、2页第2 2组 例如 可以在A A、B B、C C三类中各选择一个条件,但不能从同一类中选择两个条件 可以在A A、B B、C C三类中各选择一个条件,但不能从同一类中选择两个条件 第31页/共62页特例如果条件分支转移出去的地方只有1 12 2字的程序段,则可以用一条单周期条件执行指令(XCXC)来代替分支转移指令:XC nXC n,condcond,condcond,condcond当 n=1n=1,且 条 件 得 到 满 足,就 执 行 紧 随 此 条件指令后的个字指令。当 n=2n=2,且 条 件 得 到 满 足,就 执 行 紧 随 此 指 令 后 的 1 1个 双 字 指 令 或 者
23、 2 2条 单 字指令。当 条 件 不 满 足,就 依 n n的 值 执 行 1 1 条或2 2条NOPNOP指令。第32页/共62页例例3-3 编写计算 的主要程序部分。.bss x,4 .bss x,4 ;为X X建立4 4个单元,;放置X1X1、X2X2、X3X3、X4X4 .bss y,1 .bss 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
24、+,A A ;对X1X1、X2X2、X3X3、X4X4循环累 ;加,结果放A A中 BANZ loop,*AR2-BANZ loop,*AR2-;检查循环是否应结束 STL ASTL A,y y ;将累加结果存入Y Y中第33页/共62页特点2 2特点1 14单条指令的重复操作单条指令的重复操作重复执行(RCRC)+1+1次。RCRC内容不能编程设置,只能由重复指令(RPTRPT和RPTZRPTZ)中的操作数加载。操作数n n的最大值为65 65 535535,最大重复执行次数为65 535+165 535+1。一旦重复指令被取指、译码,直到重复循环完成以前,对所有的中断(包括 ,但不包括 )
25、均不响应。功能重复执行下一条指令 第34页/共62页重复过程当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次。第35页/共62页例例3-5利用单条指令的重复操作对数组x5=0 x5=0,0 0,0 0,0 0,00进行初始化。.bss x
26、,5 .bss 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+;对x5x5各单元清零或者.bss x,5.bss x,5STM#x,AR1STM#x,AR1RPTZ A,#4RPTZ A,#4;对A A清零并设置重复执行下条指令5 5次STL A,*AR1+STL A,*AR1+第36页/共62页特点5块重复操作块重复操作利用C54xC54x内部的块重复计数器(BRCBRC,加载值可为0
27、065 65 535535)、块重复起始地址寄存器(RSARSA)、块重复结束地址寄存器(REAREA)与程序块重复指令RPTBRPTB,可对紧随RPTBRPTB、由若干条指令构成的程序块进行重复操作。功能将重复操作的范围扩大到任意长度的循环回路 注意1.1.RPTRPT指令一旦执行,不会停止操作,即使有中断请求也不响应;2.RPTB2.RPTB指令可以响应中断;第37页/共62页例例3-6 对数据组x5x5中的每个元素加1 1。.bss x,5 .bss x,5 ;为数组x x分配5 5个存储单元begin:LD#1,16,B begin:LD#1,16,B;将1 1左移1616位放入B B
28、的 ;高端字的最低位STM#4,BRC STM#4,BRC ;4BRC4BRC,(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 ASTH A,*AR4+STH A,*AR4+;将A A的高端字存入x x单元,;完成加1 1操作next:LD#0,B next:LD#0,B ;对B B清零 ;必需next-1next-1作为结
29、束地址第38页/共62页对寄存器的占用6循环的嵌套循环的嵌套执行RPTRPT指令时占用RPTCRPTC寄存器(重复计数器);执行RPTBRPTB指令时要用到BRCBRC、RSARSA和RSERSE寄存器。只有一套块重复寄存器,故块重复操作不能嵌套。由于RPTRPT与RPTBRPTB两者用了不同的寄存器,因此RPTRPT指令可以嵌套在RPTBRPTB指令中,实现循环的嵌套。执行BANZBANZ指令只占用辅助寄存器ARxARx。不会与RPT RPT RPTBRPTB指令相冲突。嵌套原则嵌套原则参与嵌套循环的寄存器不能重复使用 第39页/共62页图3-3 一个三重循环嵌套结构第40页/共62页第三节
30、 流水线操作技术 流水线操作在执行多条指令时,将每条指令的预取指、取指、译码、寻址、读取操作数、执行等阶段,相差一个阶段地重叠地执行。流水线操作的优点一条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。第41页/共62页预取指P取指F译码D寻址A读取操作数R执行X流水线操作 在第一个机器周期用PCPC中的内容加载PABPAB 在第二个机器周期用读取到的指令字加载
31、PBPB。第三个周期用PBPB的内容加载指令寄存器IRIR,对IRIR内的指令进行译码,产生执行指令所需要的一系列控制信号。第42页/共62页预取指P取指F译码D寻址A读取操作数R执行X流水线操作 用数据1 1读地址加载DABDAB,或用数据读地址加载CABCAB,修正辅助寄存器和堆栈指针。读数据1 1加载DBDB,或读数据2 2加载CBCB;用数据3 3写地址加载到EABEAB,以便在流水线的最后一级将数据送到数据存储空间。执行指令,或用写数据加载EBEB。第43页/共62页空转浪费周期1延迟分支转移的流水线图延迟分支转移的流水线图无延迟流水线分支转移的问题无延迟流水线分支转移的问题地址 指
32、令a1a1,a2 a2 B b1 B b1 这是一个四周期、二字分支指令a3 a3 i3 i3 这是任意的一周期、一字指令a4 a4 i4 i4 这是任意的一周期、一字指令.b1 j1b1 j1例3-73-7第44页/共62页分支转移指令流水线图用分支转移指令的地址a1a1加 载 PABPAB。取得双字分支转移指令取得双字分支转移指令第45页/共62页分支转移指令流水线图i3i3和i4i4指令取指。由于这两条指令处在分支转移指令的后面,虽然已经取指,但不能进入译码级,且最终被丢弃。分支转移指令进入译码级用新的值b1b1加载PABPAB第46页/共62页分支转移指令流水线图j1j1指令取指 双字
33、分支转移指令进入流水线的执行级 执行j1j1指令 双字分支转移指令进入流水线的执行级 由于i3i3和i4i4指令是不允许执行的,所以这两个周期均花在分支转移指令的执行上。第47页/共62页允许跟在延迟分支转移指令之后的两条单字或一条双字指令可以被执行 延迟分支转移延迟分支转移注意1.1.延迟操作指令后面只有两个字的空 隙,因此不能在此空隙中安排任何 一类分支转移指令或重复指令;2.2.在CALLDCALLD或RETDRETD的空隙中还不能安 排PUSHPUSH和POPPOP指令。3 3.延迟操作指令比它们的非延迟型 指令要快,在调试延迟型指令时,直观性稍差一些,因此希望在大多 数情况下还是采用
34、非延迟型指令。第48页/共62页例例3-8在完成R=R=(x+yx+y)*z z操作后转至nextnext。可以分别编出如下两段程序:利用普通分支转移指令B B 利用延迟分支转移指令BDBDLD xLD x,A LD xA LD x,A AADD yADD y,A ADD yA ADD y,A ASTL ASTL A,s STL As STL A,ssLD sLD s,T LD sT LD s,T TMPY zMPY z,A BD next A BD next STL ASTL A,r MPY zr MPY z,A A B next STL AB next STL A,rr(共8 8个字,10
35、10个T T)(共8 8个字,8 8个T T)在空闲的随后两周期中执行下两条指令 第49页/共62页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 第50页/共62页条件执行指令流水线图XCXC指令的地址a4a4加载到PAB PAB 取 X
36、CXC指 令的操作码 求解XCXC指令所规定的条件。如果条件满足,则后面指令i5i5和i6i6进入译码级并执行;否则不对i5i5和i6i6指令译码。第51页/共62页1.1.XCXC是一条单字单周期指令,与条件跳 转指令相比,具有快速选择其后1 1或2 2 条指令是否执行的优点 ;2.XC2.XC指令在执行前2 2个周期就已经求出 条件,如果在这之后到执行前改变条 件(如发生中断),将会造成无期望 的结果 。3 3.要尽力避免在XCXC指令执行前2 2个周期 改变所规定的条件 。4 4.并没有规定XCXC指令后的一条或两条指 令必须是单周期指令。注意第52页/共62页CPUCPU在单个周期内两
37、次访问双寻址存储器3双寻址存储器的流水线冲突双寻址存储器的流水线冲突流水线冲突原因流水线冲突原因不会产生流水线冲突的情况(1 1)在单周期内允许同时访问DARAMDARAM的不同块。(2 2)当流水线中的一条指令访问某一存储器块时,允许流水线中处于同一级的另一条指令访问 另一个存储器块。(3 3)允许处于流水线不同级上的两条指令同时访 问同一个存储器块。第53页/共62页是利用一次访问中对前、后半个周期分时进行访问的缘故。CPU能够在单周期内对DARAM进行两次访问而不冲突对PAB/PBPAB/PB取指 利用前半周期对DAB/DBDAB/DB读取第一个数据 利用前半周期对CAB/CBCAB/C
38、B读取第二个数据 利用后半周期对EAB/EBEAB/EB将数据写存储器 利用后半周期第54页/共62页(1)(1)同时从同一存储器块中取指和取操作数(都在前半个周期);2.2.同时对同一存储器块进行写操作和读(第二个数)操作(都在后半周期)。解决冲突办法人为合理安排指令,错开访问时序 CPUCPU通过写操作延迟一个周期,或者通过插入一个空周期的办法,自动地解决 CPUCPU同时访问DARAMDARAM的同一存储器块就会发生时序上的冲突。第55页/共62页从DARAMDARAM块中同时取指和取操作数冲突延迟一个周期 第56页/共62页4解决流水线冲突的方法解决流水线冲突的方法(1)可能发生流水线
39、冲突的情况1)1)辅助寄存器(AR0AR0AR7AR7)。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)。第57页/共62页4解决流水线冲突的方法解决流水线冲突的方法(2)用等待周期表解决流水线冲突等待周期表给出了对存储器映象寄存器以及ST0ST0、ST1ST1、PMSTPMST的控制字段进行写操作的各种指令所需插入的等待周期。对双字
40、或三字指令,都会提供隐含的保护周期。利用这些指令提供的隐含的保护周期,有时可以不插NOPNOP指令。第58页/共62页第四节 指令系统概述TMS320C54xTMS320C54x是TMS320TMS320系列中的一种定点数字信号处理器,它的指令系统分助记符形式和代数式形式两种。共有指令129129条,由于操作数的寻址方式不同,派生至205205条。第59页/共62页可同时读入2 2或3 3个操作数;支持双精度运算的3232位长操作数指令;可进行单条指令重复和块指令重复操作;有块存储器传送指令和并行操作(如并行存储和加载、并行存储和加/减法、并行存储和乘法、并行加载和乘法)指令;设有条件存储指令及延迟操作指令、有从中断快速返回指令;有为特殊用途设计的指令(如支持FIRFIR滤波、最小均方算法LSMLSM、多项式计算以及浮点运算);有为省电安排的空转指令。TMS320C54xTMS320C54x指令系统的主要特点第60页/共62页61第61页/共62页62感谢您的欣赏!第62页/共62页