11第三章2流水线_第1页
11第三章2流水线_第2页
11第三章2流水线_第3页
11第三章2流水线_第4页
11第三章2流水线_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章DSP的指令系统(2),3.2程序存储器地址生成方式,程序地址生成器(PAGEN)组成:程序计数器(PC)重复计数器(RC)(用于单条指令重复执行)块重复计数器(BRC)块重复起始地址寄存器(RSA)块重复结束地址寄存器(REA),将程序存储器地址加载到程序计数器的途径,1、分支转移操作,功能:可执行分支转移,循环控制以及子程序操作。方法:通过分支转移指令改写PC,来改变程序的流向。分类:有条件转移和无条件转移;延迟和不延迟操作。分支转移的目的地址:指令中给出的16位立即数或:累加器的低位,分支转移指令:,例3-2:1)BANZ0FFEH,*AR3-(Sind)(指令执行前)(指令执行后)PC=1000HPC=0FFEHAR3=5HAR3=4H2)BANZ0FFEH,*AR3-(指令执行前)(指令执行后)PC=1000HPC=1002HAR3=0HAR3=FFFFH3)BACCDB(指令执行前)(指令执行后)B=0000003000B=0000003000PC=1F45HPC=3000H,2调用和返回,功能:当采用调用指令进行子程序或函数调用时,DSP中断当前运行的程序,转移到程序存储器的其它地址继续运行。方法:转移前,原程序的下条指令的地址被压入堆栈,而在返回时则将这个地址弹出至PC,使被中断了的原程序能继续执行。分类:有条件调用与返回和无条件调用与返回延迟操作和不延迟操作。,指令说明:,调用指令:,CALA-(PC)+1-TOSCALAD-(PC)+3-TOS,返回指令:,3条件指令中的条件判断,在条件分支转移和条件调用与返回指令中,所涉及的条件:,例3-3:1)BC2000H,AGT(A0zhixing)(执行前)(执行后)A=0000000053HA=0000000053HPC=1000HPC=2000H2)BC2000H,AGT(执行前)(执行后)A=FFFFFFFF53HA=FFFFFFFF53HPC=1000HPC=1002H,(1)第一组:可以从A类中选一个条件,同时可以从B类中选择一个条件。但是不能从同一类中选择两个条件。另外,两种条件测试的累加器必须是同一个。例如:可以同时测试AGT和AOV,但不能同时测试AGT和BGT。(2)第二组:可以在A、B、C三类中各选择一个条件,但不能从同一类中选择两个条件。例如:可以同时测试TC、C、BIO,但不能同时测试TC和NTC(3)第一组与第二组之间的条件只能“或”不能“与”。条件的“与”关系:BCpmad,cond,cond,cond条件的“或”关系:BCpmad,condBCpmad,cond,条件指令中的多重条件:,(4)特殊情况:如果条件分支转移出去的地方只有12字的程序段,则可以用一条单周期条件执行指令(XC)来代替分支转移指令:XCn,cond,cond,cond当n=1,且条件得到满足,就执行紧随此条件指令后的个字指令。当n=2,且条件得到满足,就执行紧随此指令后的1个双字指令或者2条单字指令。当条件不满足,就依n的值执行1条或2条NOP指令。,例3-4:编写计算的主要程序段。.mmregs;将所有MMR定义为全局符号.bssx,4;为变量x预留4个存储单元,;放置x1、x2、x3、x4.bssy,1;为变量y预留1个存储单元,放置ySTM#x,AR1;将变量x的首地址传给AR1STM#3,AR2;将循环次数3传给AR2LD#0,A;累加器A清零loop:ADD*AR1+,A;对x1、x2、x3、x4循环累;加,结果放A中BANZloop,*AR2-;检查循环是否应结束STLA,y;将累加结果存入y中,4单条指令的重复操作,功能:重复执行下一条指令特点:1)一旦重复指令被取指、译码,直到重复循环完成以前,对所有的中断(包括NMI,但不包括/RS)均不响应。2)重复执行(RC)+1次。RC内容不能编程设置,只能由重复指令(RPT和RPTZ)中的操作数加载。操作数n的最大值为65535,最大重复执行次数为65535+1。3)在执行重复操作期间,如果C54x响应保持输入信号HOLD,重复操作是否执行取决于状态寄存器ST1中的HM位,如果HM=0,则继续操作,否则暂停操作。,指令语法说明:RPT#lk;循环执行下条指令lk+1次RPTZdst,#lk;目标累加器清0,循环执行下;条指令lk+1次当RPT指令执行时:首先把循环的次数装入循环计数器(RC),其循环次数n由一个16位单数据存储器操作数Smem或一个8位或16位常数k或lk给定。这样,紧接着的下一条指令会循环执行n+1次。循环,RC在执行减1操作时不能被访问。注意:RPT循环内不能套用循环。,表中的多周期指令在重复操作时将变成单周期指令,例3-5:利用单条指令的重复操作对数组x5=0,0,0,0,0进行初始化。(1)用RPT指令.mmregs.bssx,5;为数组x分配5个存储单元STM#x,AR1;将x的首地址赋给AR1LD#0,A;对A清零RPT#4;设置重复执行下条指令5次STLA,*AR1+;对x5各单元清零(2)用RPTZ指令.mmregs.bssx,5;为数组x分配5个存储单元STM#x,AR1;将x的首地址赋给AR1RPTZA,#4;对A清零,并设置重复执行下条指令5次STLA,*AR1+;对x5各单元清零,块重复操作,语法:RPTBpmad功能:将重复操作的范围扩大到任意长度的循环回路。特点:利用C54x内部的块重复计数器(BRC)、块重复起始地址寄存器(RSA)、块重复结束地址寄存器(REA)与程序块重复指令RPTB结合,可对紧随RPTB、由若干条指令构成的程序块进行重复操作。注意:1、RPT指令一旦执行,不会停止操作,即使有中断请求也不响应;2、RPTB指令可以响应中断;3、运用块重复指令,首先要对BRC进行初始化。,例如:STM#99,BRC;99=BRC(PC)RPTBNEXT-1(PC+2).NEXT:执行上述指令,意味着对程序块重复执行99+1=100次,执行RPTB时:1=BRAF(ST1的块重复标志位)(PC)+2(4)=RSA(延迟指令+4)NEXT-1=REABRC做-1操作,等到BRC=0时,块重复操作完成0=BRAF,6循环的嵌套,嵌套原则:参与嵌套循环的寄存器不能重复使用。原因如下:执行RPT指令时占用RC寄存器(重复计数器),而RC寄存器只有一个,所以RPT指令内部不能再套用RPT循环。由于RPTB与RPT用了不同的寄存器,因此RPT指令可以嵌套在RPTB指令中,实现循环的嵌套。RPTB指令也可以嵌套在另一条RPTB指令中,但效率不高,不常用。,(1)执行BANZ指令只占用辅助寄存器ARx。不会与RPTRPTB指令相冲突。(2)图中的程序结构采用三层循环,采用RPT、RPTB和BANZ,重复执行N*M*L次。,3.3C54x的流水线操作:,TMS320VC54x处理器支持6级深度的流水线操作,也就是说,处理器可以并行处理6条指令,每条指令处于流水线上的不同阶段。在六级流水线操作中,预取指、取指、译码、访问、读数和执行操作可以独立地处理,这可使指令的执行能够重叠进行。这样就增强了处理器的处理能力,提高了运行速度。,1、单条指令的6级流水线操作不同阶段的工作内容,2、理想的6级流水线操作,一旦形成流水线操作,在任何一个周期内,可以有1-6条不同的指令同时工作,每条指令工作在不同的流水线上。,3、流水线中的分支转移指令(B),周期1:PAB装载了跳转指令的地址周期2和3:跳转指令的指令字被读取周期4和5:后续的两条指令i3和i4被读取,但是它们不允许通过译码阶段而被丢弃。当跳转指令的第二个指令字被译码后,PAB立即装载这个新的地址b1(第5周期)周期6和7:跳转指令进入执行期,同时j1在第6周期被读取周期8和9:这两个空闲周期被跳转指令占用,i3和i4不允许执行,所以跳转指令占用了4个周期周期10:执行j1指令,说明:,流水线中的延迟分支转移指令的执行(BD),4、流水线中的调用指令(CALL),周期1:PAB装载了调用指令的地址周期2和3:两个字的调用指令被读取周期4:因为返回地址被压入堆栈,所以SP递减(SP-)指令i3被读取,但不允许它通过译码阶段而被丢弃周期5:写地址总线EAB装载SP的内容并且片内的快速返回寄存器RTN装载返回地址a3。当调用指令(b1)的第二个指令字被译码后,PAB就在第5周期装载这个新地址。周期6和7:RTN的内容通过EB写入堆栈,地址b1处的指令j1被读取,2个字的调用指令在6、7周期进入执行阶段周期8和9:这两个周期被调用指令占用周期10:执行j1指令,说明:,流水线中的延迟调用指令(CALLD),5、流水线中的返回指令(RET),(SP)-DAB,从DB读取返回地址,周期1:PAB装载了返回指令的地址周期2:返回指令的操作码被读取周期3和4:两条后续指令i2和i3被读取,在周期4,SP递增(SP+),DAB装载了SP的内容,以便从堆栈中读返回地址周期5:使用DB将栈顶的内容读出周期6:返回指令进入流水线执行阶段,从堆栈取出的地址被送上PAB,以便从返回地址中取下一条指令周期7和8:这两个周期也被返回指令占用周期9和10:由于周期4和5没有取指令,所以是哑周期周期11:执行j1指令,说明:,流水线中带延迟的返回指令(RETD),执行RETD后面的2条1字节指令或1条2字节指令,6、流水线中带有中断使能的返回指令(RETE),开放全局中断,流水线中执行带有中断使能的返回指令时,流水线的操作方式与执行标准的返回指令相同,并且使用的周期数也相同,不同的是RETE指令在流水线的执行阶段通过复位INTM=0来开放全局中断。,7、流水线中的条件执行指令(XC),周期1、2、3:用于i1、i2和i3指令。注意在求解XC指令的条件时,i2和i3并没有执行完,由于XC指令是检查前面指令的执行结果,因此i2和i3对XC的操作没有影响。周期4:PAB装载了XC指令的地址。周期5:XC指令的指令码被读取。周期7:当XC指令进入流水线的访问阶段时,XC指令中说明的任何条件都被检测,如果条件为真,则后面的两条指令i5和i6被译码并允许执行,如果条件为假,则i5和i6不被译码。,说明:,8、中断和流水线(流水线的中断响应),周期1和2:i1的地址和指令被装载。周期3:结束时中断被响应,但不影响i1在周期6被执行。周期4:一条INTR指令自动插入流水线,i2不能译码。周期7、8和9:被指令INTR占用,可见中断带来的附加开销是3个时钟周期,由于中断向量表只能存放4个字,如果一个中断处理程序(ISR)需要存放多于4个字的指令,那些多余的字必须放在其他地方,ISR中就要有挑转指令,必将带来更多的时钟开销。周期10、11、12:执行中断向量表指令。周期13、14、15、16:被返回指令RET占用。周期17:执行被中断的i2指令。,说明:,9、双存取存储器DARAM和流水线,双存取存储器可以在单周期内进行两次存取,这种双存取存储器被分成几个独立的块,如C5402就被分成两个8K的块。DARAM支持对不同存储器块的同时存取,不会发生冲突,就是说流水线中的一条指令访问一块存储器时,相同流水线中的另一条指令可以访问另一块存储器而不会发生冲突。每一块的存储器在单周期中支持2次存取,就是说处于流水线不同段的2条指令可以同时访问相同的存储器块。,流水线冲突问题,(1)取指令与读操作数:当一块DARAM既分配到程序空间又分配到数据空间时,如果同时对该存储器取指和读操作数时,就会发生冲突。,(2)写操作数和读双操作数之间的冲突:如果读操作数指令所访问的是即将进行写操作的同一块片内存储器时,CPU就会直接从内部总线上读取数据,而不从存储器单元中读数。所以当一个写操作后跟随的指令要从相同的存储器块读取数据时,该写操作的时间要延迟。,上面的例子中,如果第二条指令是一条写操作数指令,那么第一条指令的写访问就不能被推迟到下一个周期,CPU解决这种冲突的方法是在第一条指令后插入一个哑周期。,10、单存取存储器和流水线,单寻址存储器也是分块的,CPU可以在单周期内对每个存储器块访问一次,同时访问不同的单操作存储器块不会发生冲突。当同时访问同一个存储器块时就会出现时序上的错误。此时,在这个周期只执行第一个访问,而在下一个周期执行第二个访问,这使得流水线有一个周期的延迟。当出现不能自动解决的冲突时,插入NOP是解决问题的好方法。,对于下面的MMR,如果在流水线中同时寻址,可能发生不能防止的冲突。,1、辅助寄存器(AR0-AR7)2、重复块长度寄存器(BK)3、堆栈指针(SP)4、暂存器(T)5、处理器工作方式状态寄存器(PMST)6、状态寄存器(ST0和ST1)7、块重复计数器(BRC)8、存储器映象累加器(AG,AH,AL,BG,BH,BL)当访问以上存储器映射寄存器时,有可能发生不能自动解决的流水线冲突,为了避免这种情况,对上述寄存器写操作时可以参考等待周期表,见本课程教材的附录D(P311)。,流水线冲突情况分析:,CALU-CentralArithmeticLogicUnit,例3-6:,第一条指令流水线中的“W”是写到AR1;第二条指令流水线中的“N”表示指令需要AR1中的值。STLM指令在执行阶段进行写操作的,而LD指令是在访问阶段生成地址,所以当第二条指令需要第一条指令写入的数据作地址时,就需要插入等待周期。,前面的例子如果把第一条指令改成STM指令,情况就会发生变化,由于STM指令是一种保护性操作,一旦常数被译码后,马上就写到AR1中。接下来的LD指令就可以顺利得到正确的地址。STLM是一个周期,STM是二个周期,还有一些指令也有与STM类似的作用:如MVDK、MVMM、MVMD等。,例3-7:,例3-8:NOP的使用,STLM指令在执行段将累加器A的内容写到AR0,STM指令在读阶段要把常数#10写到AR1,两条指令都利用E总线进行写操作,此时CPU可以自动的延迟一个周期,但第三条指令需要AR1的内容,由于AR1的内容还没有修改好,所以会有冲突发生。,解决冲突的办法是在STLM指令后插入一条NOP指令或任意一条与程序无关的单字指令,使NOP指令后面的流水线延迟一个阶段。,例3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论