2020/3/6东华理工大学机械与电子工程学院1TMS320C55x的指令系统•寻址方式•TMS320C55x的指令系统2020/3/6东华理工大学机械与电子工程学院2•指令中使用的语法元素符号如下:•Smem:来自数据、I/O空间或存储器映射寄存器的16bit数据;•Lmem:来自数据空间或存储器映射寄存器的32bit数据;•Xmem&Ymem:同时来自数据空间的两个16bit数据;•Cmem:来自内部数据空间的16bit数据;•Baddr:代表累加器AC0-AC3、辅助寄存器AR0-AR7、暂存器T0-T3的位域,对位域的置1、清0、测试、求补等位运算用到该元素。(Bit-Address)2020/3/6东华理工大学机械与电子工程学院3•指令中涉及的寄存器如下:1.累加器(AC0-AC340bitACxG:ACxH:ACxL)2.扩展数据页寄存器(XDP,DPH,DP)XDP的高7位是DPH,DP是数据页寄存器。DPH和DP都可作为存储器映射寄存器(MMR)访问,但是XDP不可作为MMR访问。2020/3/6东华理工大学机械与电子工程学院43.辅助寄存器(AR0-7)与扩展辅助寄存器(XAR0-7)•ARn可作为存储器映射寄存器(MMR)访问;•ARnH是扩展辅助寄存器的高位,不可单独访问,只能通过访问XARn进行。•XARn不是存储器映射寄存器。2020/3/6东华理工大学机械与电子工程学院5地址寄存器名位域000000/1hIER0/IFR015-2000045/46hIER1/IFR110-00000/02/4B/03/04hST0/1/2/3_5515-0000006/7hST0/ST1(C54)15-0000008/9/AhAC0L/H/G15-0/16-31/39-3200000B/C/DhAC1L/H/G15-0/16-31/39-32000024h-26hAC2L/H/G15-0/16-31/39-32000028h-2AhAC3L/H/G15-0/16-31/39-3200000F/38hTRN0/1(传输)15-000001Dh(C54兼容)PMST状态寄存器315-000001Eh(C54兼容)XPC扩展程序计数器7-0000020h-23(0E)hT0-T3(T3第2地址)15-0000049h-4AhIVPD/IVPH:DSP/主机中断向量指针15-0000044hRPTC:单循环计数器15-0000047-48DBIER0-1:调试中断使能寄存器0-115-2/10-04.常用存储器映射寄存器(MMR)地址表(00h-5Fh)2020/3/6东华理工大学机械与电子工程学院6地址寄存器名位域000010h-17hAR0-715-0000018h/4DhSP(数据堆栈指针)15-000002BhDPH扩展数据页高字6-000002EhDP数据页寄存器15-000002FhPDP外设数据页寄存器8-000004ChSSP系统堆栈指针15-000004EhSPH扩展堆栈指针高字6-0000027hCDP系数数据指针15-000004FhCDPH系数数据指针高字6-0000019/30/47hBK03/BK47/BKC:CDP循环缓冲区大小寄存器15-000001A/39hBRC0/BRC1块重复计数器0/115-000001B/1ChRSA0L/REA0L块重复首/尾地址寄存器的低字15-00000/32h-35hBSA01/23/45/67:ARn循环缓冲区首地址寄存器(AR0-1,2-3,4-5,6-7)15-0000036hBSAC:CDP的循环缓冲区首地址寄存器15-000003C-3DhRSA0H(23-16)/RSA0L:块重复首地址寄存器015-000003E-3FhREA0H(23-16)/REA0L:块重复末地址寄存器015-02020/3/6东华理工大学机械与电子工程学院7寻址方式•寻址方式是指如何指定指令和操作数所在存储空间的地址。•C55xDSP支持三种寻址模式–绝对寻址:模式指令中的常数作为地址或部分地址完成寻址,共有三种方式:K16,K23,I/O;–直接寻址模式:使用地址的偏移地址寻址,共有四种方式:DP(ST1-55CPL=0),SP(ST1-55CPL=1),寄存器位,PDP(外设数据页指针);–间接寻址模式:使用指针完成寻址,共有四种方式:AR,双AR,CDP,系数间接寻址。2020/3/6东华理工大学机械与电子工程学院8绝对寻址模式•k16绝对寻址–其操作数为*abs16(#k16),[k16:16位的无符号常数]–将7位的寄存器DPH和k16级联形成一个23位的地址,用于对数据空间的访问K16绝对寻址模式2020/3/6东华理工大学机械与电子工程学院9•k23绝对寻址–操作数为*(#k23),[k23:23位的无符号常数]•I/O绝对寻址–操作数是*port(#k16),[k16:16位无符号常数]–使用助记符指令,操作数是port(#k16)(操作数前没有*)k23绝对寻址模式I/O绝对寻址2020/3/6东华理工大学机械与电子工程学院10直接寻址方式描述DP直接寻址用DPH和DP合并的扩展数据页指针寻址存储空间和存储器映射寄存器。(ST1_55CPL=0)SP直接寻址用SPH和SP合并为扩展堆栈指针寻址存储空间中的堆栈。(ST1_55CPL=1)寄存器位直接寻址用偏移地址指定一个位地址,用于寻址特定寄存器中的一个或两个相邻的位,与CPL无关。PDP直接寻址用PDP和一个偏移地址寻址I/O空间,与CPL无关。DP:DataPagePointerSP:dataStackPointerPDP:PeripheralDatapagePointer直接寻址方式需使用DP、SP、PDP、ARn。直接寻址模式2020/3/6东华理工大学机械与电子工程学院11–高7位由DPH提供,用来确定主数据页–低16位由两部分组成:•DP•7位偏移量(Doffset)DP直接寻址模式DP直接寻址2020/3/6东华理工大学机械与电子工程学院12•SP直接寻址–SPH确定高7位地址–16位地址由SP和7位偏移量决定,偏移量范围是0~127–由SPH和SP构成了扩展数据堆栈指针XSPSP直接寻址模式2020/3/6东华理工大学机械与电子工程学院13•寄存器位寻址–操作数是@bitoffset,为寄存器最低位开始的偏移值–只有寄存器的位测试、置位、清零、取反指令支持这种寻址模式•PDP直接寻址(64K×16位I/O空间,128字/512页,PDP的9位)PDP直接寻址模式2020/3/6东华理工大学机械与电子工程学院14间接寻址方式寻址方式描述AR间接寻址(AuxiliaryRegister)使用AR0-AR7中的任一寄存器访问数据。CPU使用辅助寄存器产生地址的方式取决于访问数据的来源:数据空间、存储器映射寄存器(MMRs)、I/O空间或是独立的寄存器位。双AR间接寻址与AR间接寻址相似,但借助两个辅助寄存器,可同时访问两个或更多的数据。CDP间接寻址(CoefficientDataPointer)使用系数数据指针(CDP)访问数据。CPU使用CDP产生地址的方式取决于访问数据的来源:数据空间,MMR,I/O或是独立的寄存器位。系数间接寻址(coefficient)与CDP间接寻址方式相似,它可以在访问数据空间某一系数的同时,借助两个辅助寄存器(双AR)可在数据空间访问另外两个数据。CPU支持的间接寻址方式有4种,都支持线性/循环寻址2020/3/6东华理工大学机械与电子工程学院15间接寻址模式•AR间接寻址模式–通过一个辅助寄存器ARn(n=0~7)访问数据空间–ST2-55的ARMS位决定AR间接寻址的操作类型•ARMS=0,DSP模式:CPU提供增强应用的高效执行功能•ARMS=1,控制模式:CPU能够优化代码的长度AR间接寻址DSP模式2020/3/6东华理工大学机械与电子工程学院16•双AR间接寻址模式–通过辅助寄存器(AR0~AR7)同时访问两个数据存储单元–实现功能:•执行一条可完成两个16位数据空间访问的指令X/Ymen•并行执行两条指令,每条指令访问一个存储数据S/Lmen双AR间接寻址操作数2020/3/6东华理工大学机械与电子工程学院17•CDP间接寻址模式–使用系数数据指针(CDP)对数据空间、寄存器位和I/O空间进行访问CDP间接寻址操作数2020/3/6东华理工大学机械与电子工程学院18•系数间接寻址模式–支持以下算术指令:•FIR滤波•乘法•乘加•乘减•双乘加或双乘减系数间接寻址操作数2020/3/6东华理工大学机械与电子工程学院193.2.1C55x指令的并行执行•指令并行的特征–单指令中内置并行方式—隐含并行方式•例如:MPY*AR0,*CDP,AC0::MPY*AR1,*CDP,AC1–用户自定义的两条指令间的并行方式•例如:MPYM*AR1–,*CDP,AC1||XORAR2,T1–内置与用户自定义混合的并行方式•例如:MPYMT3=*AR3+,AC1,AC2||MOV#5,AR1•指令并行的规则–两条指令的总长度不能超过6个字节;–在指令的执行过程中不存在操作器、地址产生单元、总线等资源冲突;–其中一条指令必须有并行使能位或两条指令符合软-双并行条件。2020/3/6东华理工大学机械与电子工程学院20•不能使用并行方式的情况–使用立即数寻址方式•例如:*abs16(#k16);*(#k23);port(#k16);*ARn(K16);*+ARn(K16);*CDP(K16);*+CDP(K16)–条件跳转、条件调用、中断、复位等程序控制指令•例如:BCCP24,cond;CALLCCP24,cond;IDLE;INTRk5;RESET;TRAPk5–使用下列指令或者操作修饰符•例如:mmap();port();instruction.CR;instruction.LR2020/3/6东华理工大学机械与电子工程学院21•资源冲突–C55x的资源•运算器–可使用的操作器有:D单元的ALU、D单元的移位器、D单元的交换器、A单元的交换器、A单元的ALU和P单元。•地址产生单元–两个数据地址(DA)产生单元、一个系数地址(CA)产生单元和一个堆栈地址(SA)产生单元。–只能使用给定数量的数据地址产生单元。•总线–两个数据读(DR)总线、一个系数读(CA)总线、两个数据写(DW)总线、1个ACB总线(将D单元寄存器的内容传送给A单元和P单元的操作器)、一个KAB总线(立即数总线)和一个KDB总线(立即数总线)–只能使用给定数量的总线2020/3/6东华理工大学机械与电子工程学院22•软-双并行条件–两个存储器操作数必须是双AR间接寻址模式–指令不能包含high_byte(Smem)和low_byte(Smem)–指令不能读、写同一个存储器单元–如果指令中的k4的值是0~8,就会改变XDP的值,所以,不能与加载DP的指令组成并行指令–读重复计数寄存器(RPTC)指令不能和如下的任何一个单重复指令组成并行指令RPT,RPTADD,RPTSUB,RPTCC。2020/3/6东华理工大学机械与电子工程学院233.2.2TMS320C55XDSP的汇编指令指令集中使用的术语、符号和缩写2020/3/6东华理工大学机械与电子工程学院24指令集中使用的运算符2020/3/6东华理工大学机械与电子工程学院25TMS320C55x指令集按操作类型分类•算术运算指令•位操作指令•扩展辅助寄存器操作指令•逻辑运算指令•移动指令•程序控制指令注:一条指令的属性包括:指令,执行的操作,是否有并行使能位,长度,周期,在流水线上的执行阶段以及执行的功能单元等。2020/3/6东华理工大学机械与电子工程学院26•算术运算指令–加法指令•加法指令有几点说明:–如果目的操作数是累加器ACx,在D单元的ALU中进行运算操作;–如果目的操作数是辅助或临时寄存器TAx,在A单元