|
引言
本文主要从内核结构及指令上介绍了C64+内核相对于C64内核的性能提升,使工程师在基于C64+的内核使用开发过程中,能够充足利于其性能。
TI 所推出的C64+内核完整兼容C64,这有利于基于C64的程序向C64+移植。结构上同样是64个通用寄放器,支持32位、40位、64位的数据类型,也支持8位和16位打包数据类型,其中A0~A2,B0~B2都可做条件寄放器。一侧的功效单元(A或B侧)可以走访到另外一侧(B或A侧)的通用寄放器中的操作数。 C64+兼容C64内核的所有指令,而在其它性能上做了相应提升。

图1 C64+与 C64的部分指令变更情形
新增49条指令
以乘法功效单元(M unit)为例,该单元的改善及新增指令加大了乘法运算带宽,支持32位乘法和复数乘法,使每周期16×16的MAC数达8个。如下面例子所示:
对于C64和C64+,复数乘法((dre+dim*i)*(cre+cim*i)=pre+pim*i)操作辨别如下: C64使用下列两条指令实现: DOTP2 dre_dim, cim_cre, pim ;dre_dim和cim_cre辨别是将两个复数的实 ;虚部两个16位的有符号数打包出来的结果 ;组成一个32位的数,放入一个通用寄放器中。 DOTPN2dre_dim, cre_cim, pre C64+只需下列一条指令就可以实现: CMPY dre_dim, cre_cim, pre:pim;pre:pim是一个寄放器对,辨别寄放复数乘法 ;结果的实部和虚部。
对于这种情形,如果流水线排好,可以看出C64+ 比C64减少大约一半左右的复数乘法周期,同时也会减少一条指令所占用的程序空间。其它还有如ADDSUB和ADDSUB2、数据打包/解包指令如 DPACKX2,也大大提升了DSP在处理DCT和FFT变换方面的性能。如果使用这些新指令,以处理256点的FFT变更为例,部分指令变更如图1所示,C64+须要803个履行周期,而C64须要1246个履行周期;C64+的程序大小为664字节,而C64为1000字节。由此可见,C64+大大提升了DSP在流媒体方面的处理能力。
新增软件流水缓存(SPLOOP Buffer)
C64 架构充足使用软件流水(Software Pipeline)进一步提升DSP的处理性能,它既可以战胜多周期指令延时对CPU处理性能的影响,还可以在流水线运行阶段的每个周期输出一个或多个处理结果。C64+延续该性能优点,并进行改善,形成SPLOOP (Software Pipelined Loop),在硬件上还有软件流水缓存(SPLOOP Buffer)对其进行支持。SPLOOP充足使用C64+内核中的SPLOOP Buffer,将软件流水中的循环核(Loop Kernel)拷入其中,有如下几个优势:
1. 由于prolog和epilog代码段不须要直接代码标识,所以可以减少代码的尺寸; 2. 不同于C64的软件流水,可以中断; 3. 由于循环核已经被拷入SPLOOP Buffer,一方面可以减少对L1P Cache的走访,由此节省CPU对L1P Cache的带宽,另一方面也可以降低CPU的功耗; 4. 每次循环内核的履行收场跳转到下次履行起头处时是绝对跳转,不须要跳转指令的支持。 SPLOOP Buffer最多可以放 14个履行包 (execute packets),在程序编译过程中,CCS会主动将可以放入CPU中SPLOOP Buffer的指令用特殊指令代替,因此对于C/C++代码来说,使用很方便。
支持紧凑指令(Compact Instructions)
C64 DSP只支持尺度的取指包(如图2A所示),而C64+支持带“头”的取指包(如图2B所示),指令包头标注了该指令包中其它7个字中,哪些是32位的操作码,哪些是16位的操作码。支持紧凑指令可以节省程序存储空间;也能增添程序Cache的命中率。

图2 C64和 C64+的取指包
支持特权系统
斟酌到目前越来越多的用户在TI的C6000系列DSP上运行操作系统,同时,越来越多的C6000系列DSP用于终端装备中(IP STB中使用DM642/3,DM6446/3),为支持处理系统异常及其存储空间非法走访的鲁棒性,C64+起头支持特权系统。

图3 采纳C64+内核的TMS320C6455的结构
特权系统将操作模式分为完整超级用户履行模式和两级系统模式。在完整超级用户履行模式下, 程序可以完整走访所有的把持寄放器,不需运行非特权的程序。而两级系统模式分为超级用户履行模式和普通用户模式。操作系统运行于超级用户履行模式,API运行于普通用户模式。
C64 +内核的性能提升具有必定的使用针对性,一方面增强在流媒体方面的处理能力;另一方面提升对操作系统支持的鲁棒性。同时也通过支持紧凑指令存储和取指的方法来减少编译出来的代码尺寸。图4为使用C64+内核的TMS320C6455的结构,可以看出该DSP除片上存储空间比C6416提高一倍之外(L2 Memory达到2MB,L1P和L1D都为32KB),其内核在履行性能和代码大小上辨别比C64内核提高20%和20%~30%。
|