2.2.6 TMS320C6000控制寄存器组
对控制寄存器组访问的功能单元为.S2。访问控制寄存器的指令为MVC,控制寄存器组包含的控制寄存器及其功能描述参见表2-3。
表2-3 TMS320C62x/C67x/C64xDSP的控制寄存器
通过其他方式可以访问控制寄存器的某些位。例如,可屏蔽中断到达外部中断引脚INTm,触发了IFR标志位的设置,接下来当中断被处理时,触发IFRm的清除和全局中断使能位GIE的清除,最后中断处理完成,中断服务程序中的BIRP指令将GIE复位。同样的,饱和指令SADD将设置CSR中的SAT位。
(1)控制寄存器访问的流水线/时序
所有MVC指令在完成访问E1流水线节拍中指明的寄存器时均为单周期指令。无论MVC是将通用寄存器的值移至控制寄存器,还是将控制寄存器的内容移到通用寄存器,均为单周期指令。在所有的情况下,源寄存器内容被读取,通过.S2单元写入到E1节拍所指定的目的寄存器。
MVC可以在单周期内修改某些控制寄存器,但是修改某些没有明确指定的寄存器时则需要更多的周期。比如,MVC不能直接修改IFR中的位,只能将1写入到ISR或ICR来分别指定设置或清除IFR中的位。因此,MVC在1个单周期内完成ISR/ICR的写入,但是IFR位的修改则需要滞后1个时钟周期。
饱和指令(如SADD),间接设置控制状态寄存器(CSR)中的饱和标志位(SAT),这些指令是在前一级的结果被写入寄存器组的1个时钟周期后才更新SAT位的。例如, SMPY指令在E2节拍结束时写结果,而前一级计算结果在1个延迟间隙后才能获得。又如,CSR中的SAT位的更新发生在将结果写入的1个时钟周期后,这一更新过程发生在2个延迟间隙后。
BIRP和BNRP指令分别直接更新GIE和NMIE。因为这些分支跳转指令分别直接修改CSR(控制状态寄存器)和IER(中断使能寄存器),在发生分支的跳转和控制寄存器更新生效之间没有延迟间隙。
(2)寻址模式寄存器(AMR)
AMR为8个可以执行线性和循环寻址的寄存器(A4~A7, B4~B7)来指定寻址模式。每个寄存器对应的1个两位字段,指定该寄存器的寻址模式:线性模式(默认模式)或循环模式。在循环模式时,这两位也指定哪个BK(块大小)段用于循环缓冲区。模式选择域和BK字段如图2-6所示,模式选择字段编码参见表2-4。
图2-6 寻址模式寄存器(AMR)
表2-4 寻址模式寄存器(AMR)模式选择字段编码
AMR的保留部分常为0,AMR在复位时初始化为0,块大小字段BK0和BK1包含5位的值,用于计算循环寻址块的大小计算式为
块大小(字节)=2(N+1)
式中 N——BK0和BK1中的5位值。
32种可能的块大小尺寸计算参见表2-5。
表2-5 块大小尺寸计算
注:当N为11111时,操作与线性寻址相同。
(3)控制状态寄存器(CSR)
控制状态寄存器(CSR)包括控制位和状态位,如图2-7所示。控制状态寄存器各位字段的功能参见表2-6。
图2-7 控制状态寄存器(CSR)
表2-6 控制状态寄存器各位字段的功能
(4)E1节拍程序计数器(PCE1)
如图2-8所示,E1节拍程序计数器(PCE1)用来保存在E1流水线节拍的取指包的32位地址。
图2-8 E1节拍程序计数器(PCE1)