TMS320C55x的指令系统

来源:互联网 发布:免流网站源码 编辑:程序博客网 时间:2024/06/10 04:28

C55x通过以下三种寻址方式访问数据空间、存储器映射寄存器、寄存器位和I/O空间:

 
绝对寻址方式
通过在指令中指定一个常数地址完成寻址
 
直接寻址方式
使用地址偏移量寻址
 
间接寻址方式
使用指针完成寻址

1.绝对寻址方式

   C55x有绝对寻址方式:   

   1.1 k16绝对寻址
        其操作数为*abs16(#k16),【k16:16位的无符号常数】
        将7位的寄存器DPH和k16级联形成一个23位的地址,用于对数据空间的访问 

   1.2 k23绝对寻址
         操作数为*(#k23),【k23:23位的无符号常数】 
   1.3 I/O绝对寻址
         操作数是*port(#k16),【k16:16位无符号常数】
         使用助记符指令,其操作数是port(#k16)(操作数前没有*)

2.直接寻址方式

        注意:DP和SP互相排斥,通过ST1_55的CPL位来选择。0 DP,1 SP、

   2.1 DP直接寻址

         高7位由DPH提供,用来确定主数据页

         低16位由两部分组成:

                  DP

                  7位偏移量(Doffset)

    2.2 SP直接寻址

           SPH确定高7位地址

          16位地址由SP和7位偏移量决定,偏移量范围是0~127

           由SPH和SP构成了扩展数据堆栈指针XSP

      2.3寄存器位寻址

            操作数是@bitoffset
           只有寄存器的位测试、置位、清零、取反指令支持这种寻址模式

      2.4 PDP直接寻址 

            port()限定,指定访问的是I/O空间。而不是数据存储单元。

3.间接寻址方式

3.1 AR间接寻址 

通过一个辅助寄存器ARn(n=0,1,2,3,4,5,6,7)访问数据空间
ST2-55的ARMS位决定AR间接寻址的操作类型
     ARMS=0,DSP模式:CPU提供DSP增强应用的高效执行功能
     ARMS=1,控制模式:CPU能够优化代码的长度

3.2 双AR间接寻址

通过8个辅助寄存器(AR0~AR7)同时访问两个数据存储单元
实现功能:
执行一条可完成两个16位数据空间访问的指令
并行执行两条指令 

3.3 CDP间接寻址

使用系数数据指针(CDP)对数据空间、寄存器位和I/O空间进行访问 

3.4 系数间接寻址

支持以下算术指令:
FIR滤波
乘法
乘加
乘减
双乘加或双乘减 
 

指令系统

1 并行执行

指令并行的特征

单指令中内置并行方式 —隐含并行方式
      例如:MPY *AR0, *CDP, AC0
::MPY *AR1, *CDP, AC1
用户自定义的两条指令间的并行方式
     例如: MPYM *AR1–, *CDP, AC1
|| XOR AR2, T1
内置与用户自定义混合的并行方式
     例如: MPYM T3=*AR3+, AC1, AC2
|| MOV #5, AR1
指令并行的规则
     两条指令的总长度不能超过6个字节
     在指令的执行过程中不存在操作器、地址产生单元、总线等资源冲突
     其中一条指令必须有并行使能位或两条指令符合软-双并行条件
不能使用并行方式的情况
    使用立即数寻址方式
例如: *abs16(#k16);*(#k23);port(#k16); *ARn(K16);*+ARn(K16);*CDP(K16); *+CDP(K16)
    条件跳转、条件调用、中断、复位等程序控制指令
例如: BCC P24, cond;CALLCC P24, cond; IDLE;INTR k5;RESET;TRAP k5
    使用下列指令或者操作修饰符
例如: mmap( );port( );<instruction>.CR; <instruction>.LR
资源冲突
C55x的资源
    运算器
使用的操作器有:D单元的ALU、D单元的移位器、D单元的交换器、A单元的交换器、A单元的ALU和P单元
    地址产生单元
两个数据地址(DA)产生单元、一个系数地址(CA)产生单元和一个堆栈地址(SA)产生单元
只能使用给定数量的数据地址产生单元 
    总线
两个数据读(DR)总线、一个系数读(CA)总线、两个数据写(DW)总线、1个ACB总线(将D单元寄存器的内容传送给A单元和P单元的操作器)、一个KAB总线(立即数总线)和一个KDB总线(立即数总线)
只能使用给定数量的总线  
软-双并行条件
    两个存储器操作数必须是双AR间接寻址模式
    指令不能包含high_byte(Smem)和low_byte(Smem)
    指令不能读、写同一个存储器单元
    如果指令中的k4的值是0~8,就会改变XDP 的值,所以,不能与加载DP的指令组成并行指令
    读重复计数寄存器(RPTC)指令不能和如下的任何一个单重复指令组成并行指令

2 C55x指令集按操作类型可分为6种:

注:一条指令的属性包括:指令,执行的操作,是否有并行使能位,长度,周期,在流水线上的执行阶段以及执行的功能单元等
    算术运算指令
    位操作指令
    扩展辅助寄存器操作指令
    逻辑运算指令
    移动指令
    程序控制指令

 

原创粉丝点击