版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四章DSP的指令系统(2)4.3 流水线操作: TMS320VC54x处理器支持6级深度的流水线操作, 也就是说,处理器可以并行处理6条指令,每条指令处于 流水线上的不同阶段。在六级流水线操作中,预取指、 取指、译码、访问、读数和执行操作可以独立地处理, 这可使指令的执行能够重叠进行。这样就增强了处理器 的处理能力,提高了运行速度。1、单条指令的6级流水线操作不同阶段的工作内容 一旦形成流水线操作,在任何一个周期内,可以有1-6条不同的指令同时工作,每条指令工作在不同的流水线上。2、理想的6级流水线操作3、流水线中的跳转指令(B) 周期1:PAB装载了跳转指令的地址 周期2和3:跳转指令的指
2、令字被读取周期4和5:后续的两条指令i3和i4被读取,但是它们不允许 通过译码阶段而被丢弃。当跳转指令的第二个指令字被译码后,PAB立即装载这个新的地址b1(第5周期)周期6和7:跳转指令进入执行期,同时j1在第6周期被读取周期8和9:这两个空闲周期被跳转指令占用,i3和i4不允许执行,所以跳转指令占用了4个周期周期10:执行j1指令流水线中的延迟跳转指令的执行(BD)4、流水线中的条件执行指令(XC)说说: 周期1、2、3:分别执行i1、i2和i3指令。注意在求解XC指 令的条件时,i2和i3并没有执行完,由于XC指令是检查前 面指令的执行结果,因此i2和i3对XC的操作没有影响。周期4:P
3、AB装载了XC指令的地址。周期5: XC指令的指令码被读取。周期7:当XC指令进入流水线的访问阶段时,XC指令中说说的任何条件都被检测,如果条件为真,则后面的两条指 令i5和i6被译码并允许执行,如果条件为假,则i5和i6不被译码。5、双存取存储器和流水线 双存取存储器可以在单周期内支持两次存取,这种双 存取存储器被分成几个独立的块,如C5402就被分成两个 8K的块。 DARAM支持对不同存储器块的同时存取,不会发生冲 突,就是说流水线中的一条指令访问一块存储器时,相同流水线中的另一条指令可以访问另一块存储器而不会发生冲突。 每一块的存储器在单周期中支持2次存取,就是说处于 流水线不同段的2
4、条指令可以同时访问相同的存储器块。流水线冲突问题 (1)取指令与读操作数:当一块DARAM既分配到程序空间又分配到数据空间时,如果同时对该存储器取指和读操作数时,就会发生冲突。 (2)写操作数和读双操作数之间的冲突:如果读操作数指令所访问的是即将进行写操作的同一块片内存储器时,CPU就会直接从内部总线上读取数据,而不从存储器单元中读数。所以当一个写操作后跟随的指令要从相同的存储器块读取数据时,该写操作的时间要延迟。 上面的例子中,如果第二条指令是一条写操作数指令,那么第一条指令的写访问就不能被推迟到下一个周期,CPU解决这种冲突的方法是在第一条指令后插入一个哑周期。6、单存取存储器和流水线 单
5、寻址存储器也是分块的,CPU可以在单周期内对每个存储器块访问一次,同时访问不同的单操作存储器块不会发生冲突。当同时访问同一个存储器块时就会出现时序上的错误。此时,在这个周期只执行第一个访问,而在下一个周期执行第二个访问,这使得流水线有一个周期的延迟。当出现不能自动解决的冲突时,插入NOP是解决问题的好方法。对于下面对于下面MMR,如果在流水线中同时寻址,可能发生不能防止的冲突。,如果在流水线中同时寻址,可能发生不能防止的冲突。 1、辅助寄存器、辅助寄存器(AR0-AR7) 2、重复块长度寄存器、重复块长度寄存器(BK) 3、堆栈指针、堆栈指针(SP) 4、暂存器、暂存器(T) 5、处理器工作方
6、式状态寄存器、处理器工作方式状态寄存器(PMST) 6、状态寄存器、状态寄存器(ST0和和ST1) 7、块重复计数器、块重复计数器(BRC) 8、存储器映象累加器、存储器映象累加器(AG,AH,AL,BG,BH,BL) 当访问以上存储器映射寄存器时,有可能发生不能自动解决的流水线当访问以上存储器映射寄存器时,有可能发生不能自动解决的流水线冲突,为了避免这种情况,对上述寄存器写操作时可以参考等待周期表,冲突,为了避免这种情况,对上述寄存器写操作时可以参考等待周期表,许多参考书都有附录。本教材的附录许多参考书都有附录。本教材的附录D。流水线冲突情况分析:w例4-6: 第一条指令流水线中的“W”是写
7、到AR1; 第二条指令流水线中的“N”表示指令需要AR1中的值。 STLM指令在执行阶段进行写操作的,而LD指令是在 寻址阶段生成地址,所以当第二条指令需要第一条指令写入 的数据作地址时,就有插入等待周期问题。 前面的例子如果把第一条指令改成STM指令,情况就会发生变化,由于STM指令是一种保护性操作,一旦常数被译码后,马上就写到AR1中。接下来的LD指令就可以顺利得到正确的地址。STLM是一个周期,STM是二个周期,还有一些指令也有与STM类似的作用:如MVDK、MVMM、MVMD等。例4-7:例4-8:NOP的使用 STLM指令在执行段将累加器A的内容写到AR0,STM指令在读阶段要把常数
8、#10写到AR1,两条指令都利用E总线进行写操作,此时CPU可以自动的延迟一个周期,但第三条指令需要AR1的内容,由于AR1的内容还没有修改好,所以会有冲突发生。 解决冲突的办法是在STLM指令后插入一条NOP指令或任意一条与程序无关的单字指令,使NOP指令后面的流水线延迟一个阶段。 等待周期表的使用(对于双字和三字指令都会提供隐含的保 护周期) 例4-9: SSBX SXM NOP LD x, B ; 该指令是一条单字直接寻址指令,没有隐含的保护周期根据等待周期表,对于SXM字段后面跟存储指令时需要插入一个等待周期。 可以改成: SSBX SXM LD *(x), B ; 是一条双字决对寻址
9、指令,隐含1个保护周期;可以省 去NOP指令。教材p312例4-10: LD GAIN, T STM #input, AR1 MPY *AR1+, A(查等待周期表,对于T字段,后面的存储指令需要插入一个 等待周期,由于STM是一条双字指令,隐含1个等待周期, 所以不用再插入等待周期)。例4-11: STLM B, AR2 NOP STM #input, AR3 MPY *AR2+, *AR3+, A 查等待周期表,AR2后面有STM指令时不用插入等待,但注2表说在后面的STM指令之前,不能有在执行阶段对ARx的写操作,而前面的STLM指令正是在执行阶段写AR2,所以应插入1个等待周期。4.4
10、 指令系统概述 TMS320C54xDSP的指令系统共有指令130条,由于操作数的寻址方式不同,派生到205条,按功能可以分成四类: 算术运算指令79 逻辑运算指令26 程序控制指令36 装入和存储指令641、算术运算指令79 加法指令13 减法指令13 乘法指令10 乘加指令14 乘减指令8 双数/双精度指令6 专用指令15(1)加法指令13例4-12:ADD *AR3+ , 14, A(2)减法指令13(3)乘法指令)乘法指令10例4-13:MPY 13, A(4)乘加指令)乘加指令14例4-14:MAC #345h, A, B(5)乘减指令8(6)双精度(32位操作数)指令6例4-15:
11、DADD *AR3+, A, B(7)专用指令15例4-16:CMPL A, B (B=A)2、逻辑运算指令26 与逻辑运算指令5 或逻辑运算指令5 异或逻辑运算指令5 移位指令6 测试指令5(1)与或逻辑运算指令10(2)异或逻辑运算指令5(3)移位与测试指令113、程序控制指令36 分支转换指令6 调用指令5 中断指令2 返回指令6 重复指令5 堆栈管理指令5 其他程序控制指令7(1)分支转换与调用指令11(2)中断、返回、重复指令13例4-17:RETF(3)堆栈管理和其他程序控制指令124、加载和存储指令、加载和存储指令64 加载指令加载指令21 存储指令存储指令14 条件存储指令条件存储指令4 并行加载和存储指令并行加载和存储指令2 并行加载和乘法指令并行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论