位置:51电子网 » 技术资料 » D S P

C代码在TMS320C54X上的手工汇编优化

发布时间:2008/8/18 0:00:00 访问次数:615

1 引言

  随着dsp技术的不断发展和完善,数字信号处理的应用范围越来越广泛。工控、计算机、通信和消费电子产品中,都会找到它的影子。

  近年来,随着多媒体通信的蓬勃发展,dsp也越来越多的应用在多媒体通信中,而在多媒体通信中dsp多用于语音压缩和图像处理等方面,而这些都需要巨大的计算量,在实时通信中一些低速dsp难以满足要求,而使用高速dsp会大大提高成本,所以对代码进行优化是现在dsp开发中常用的一种方法。由于dsp的特殊结构,编译器的编译效率都比较低,难以将dsp计算能力全部发挥出来,所以就必须根据dsp的特殊结构和指令集代码进行手工的汇编优化。

  本文结合笔者在ti公司的tms320vc5402 dsp上的对g.729算法的优化经验,提出一些优化的方法和建议,而这些方法也适用其他54系列的dsp。

2 芯片介绍

  tms320c54x是ti公司于1996年推出的新一代定点数字处理器,它具有功耗小、高度并行等优点,可以满足电信等众多领域的实时处理要求。54系列有很多不同型号的芯片,它们的结构都是一样的,只是在接口和存储器空间上有些不同。在54系列众多dsp芯片中 tms320vc5402是使用最广泛的一种芯片,接下来将以tms320vc5402为例介绍54系列dsp的性能特点:

  运算速度最高达100mips

  具有先进的多总线结构,三条16 位数据存储器总线和一条程序存储器总线

  40位算术逻辑单元(alu),包括一个40位桶形移位器和两个40位累加

   一个17bit×17bit乘法器和40位专用加法器,允许16位带/不带符号乘法

  8个辅助寄存器和一个软件栈

  内部采用改进的哈佛结构,程序空间和数据空间分开,允许同时取指令和取操作数,并且允许在程序和数据空间相互传送数据

  最大64k×16bit外部数据空间,最大1m×16bit外部程序空间,4k×16bit片内rom,16k×16bit片内ram
  内置可编程等待状态发生器、锁相环(pll)时钟发生器、两个多通道缓冲串口、一个8位并行与外部处理器通信的hpi口、两个16位定时器以及6通道dma控制器

  支持单指令循环和块循环,采用六级流水线,将一条指令执行所需要的取指、译码、取操作数并执行等几个步骤同时完成,是指令周期降到最小适合算法的优化

3 代码优化

  对c代码进行手工汇编优化有三种方法:1.对照c代码写出汇编代码,这种方法优化的效率很高,但是开发难度很大特别是当代码量很大,结构很复杂时优化很容易出错;2.先用编译器产生汇编代码,然后改写汇编代码,这种方法优化的效率较低,因为框架被限定了,但是开发难度降低了,不容易出错。

  由于现在常用的一些音频、图像处理算法都是结构很复杂的程序,所以建议使用第二种优化方法。

3.1产生汇编代码

  ti公司为dsp开发者提供一套编译开发平台叫ccs (code composer studio),该工具提供了编译器可以将c语言的程序编译为dsp的汇编语言程序,然后链接生成可以在dsp上执行的coff格式的out文件。

  而ccs自身也提供优化器可对c代码进行优化,并产生汇编语言程序,具体过程如图1所示。

  ccs提供了4级的文件优化方案,分别是o0、o1、o2、o3,以下具体说明。

(1) o0 寄存器级别

  执行控制流程简化
  用寄存器分配变量
  执行交替循环
  排除未用的代码
  简化公式和表述
  扩大对内连函数的调用

(2) o1 局部级别

  执行所有o0级别的优化,并且:

  执行局部常量的传播
  排除未用的赋值
  排除局部共用表达式

(3) o2 函数级别

  执行所有o1级别的优化,并且:

  执行循环优化
  排除全局共用子表达式
  排除全局不用的赋值
  执行打开循环

(4) o3 文件级别

  执行所有o1级别的优化,并且:

  排除未被调用的函数
  简化返回值没被使用的函数
  让小函数变成内联调用
  保存函数说明,以便主函数被优化时知道被调用 函数的属性
  识别文件级别的变量的特性

  在使用o3级别的优化时,还可以使用别的选项执行更细致的优化

  oln 得到标准库函数的文件
  onn 创造优化信息文件
  pm 执行程序级别优化,编译多个源文件


  而我们在做优化时,选的是o2级别的优化,因为使用o2级别优化后产生的汇编文件带有比较多的注释信息,比较容易看懂程序,建议对程序不太熟和对汇编语言不太熟练的人使用。

3.2手工汇编优化

  因为汇编语言可读性很差,并且代码量很大,所以手工优化工作量很大,并且容易出错。为了确保优化不出错,我们就先制

1 引言

  随着dsp技术的不断发展和完善,数字信号处理的应用范围越来越广泛。工控、计算机、通信和消费电子产品中,都会找到它的影子。

  近年来,随着多媒体通信的蓬勃发展,dsp也越来越多的应用在多媒体通信中,而在多媒体通信中dsp多用于语音压缩和图像处理等方面,而这些都需要巨大的计算量,在实时通信中一些低速dsp难以满足要求,而使用高速dsp会大大提高成本,所以对代码进行优化是现在dsp开发中常用的一种方法。由于dsp的特殊结构,编译器的编译效率都比较低,难以将dsp计算能力全部发挥出来,所以就必须根据dsp的特殊结构和指令集代码进行手工的汇编优化。

  本文结合笔者在ti公司的tms320vc5402 dsp上的对g.729算法的优化经验,提出一些优化的方法和建议,而这些方法也适用其他54系列的dsp。

2 芯片介绍

  tms320c54x是ti公司于1996年推出的新一代定点数字处理器,它具有功耗小、高度并行等优点,可以满足电信等众多领域的实时处理要求。54系列有很多不同型号的芯片,它们的结构都是一样的,只是在接口和存储器空间上有些不同。在54系列众多dsp芯片中 tms320vc5402是使用最广泛的一种芯片,接下来将以tms320vc5402为例介绍54系列dsp的性能特点:

  运算速度最高达100mips

  具有先进的多总线结构,三条16 位数据存储器总线和一条程序存储器总线

  40位算术逻辑单元(alu),包括一个40位桶形移位器和两个40位累加

   一个17bit×17bit乘法器和40位专用加法器,允许16位带/不带符号乘法

  8个辅助寄存器和一个软件栈

  内部采用改进的哈佛结构,程序空间和数据空间分开,允许同时取指令和取操作数,并且允许在程序和数据空间相互传送数据

  最大64k×16bit外部数据空间,最大1m×16bit外部程序空间,4k×16bit片内rom,16k×16bit片内ram
  内置可编程等待状态发生器、锁相环(pll)时钟发生器、两个多通道缓冲串口、一个8位并行与外部处理器通信的hpi口、两个16位定时器以及6通道dma控制器

  支持单指令循环和块循环,采用六级流水线,将一条指令执行所需要的取指、译码、取操作数并执行等几个步骤同时完成,是指令周期降到最小适合算法的优化

3 代码优化

  对c代码进行手工汇编优化有三种方法:1.对照c代码写出汇编代码,这种方法优化的效率很高,但是开发难度很大特别是当代码量很大,结构很复杂时优化很容易出错;2.先用编译器产生汇编代码,然后改写汇编代码,这种方法优化的效率较低,因为框架被限定了,但是开发难度降低了,不容易出错。

  由于现在常用的一些音频、图像处理算法都是结构很复杂的程序,所以建议使用第二种优化方法。

3.1产生汇编代码

  ti公司为dsp开发者提供一套编译开发平台叫ccs (code composer studio),该工具提供了编译器可以将c语言的程序编译为dsp的汇编语言程序,然后链接生成可以在dsp上执行的coff格式的out文件。

  而ccs自身也提供优化器可对c代码进行优化,并产生汇编语言程序,具体过程如图1所示。

  ccs提供了4级的文件优化方案,分别是o0、o1、o2、o3,以下具体说明。

(1) o0 寄存器级别

  执行控制流程简化
  用寄存器分配变量
  执行交替循环
  排除未用的代码
  简化公式和表述
  扩大对内连函数的调用

(2) o1 局部级别

  执行所有o0级别的优化,并且:

  执行局部常量的传播
  排除未用的赋值
  排除局部共用表达式

(3) o2 函数级别

  执行所有o1级别的优化,并且:

  执行循环优化
  排除全局共用子表达式
  排除全局不用的赋值
  执行打开循环

(4) o3 文件级别

  执行所有o1级别的优化,并且:

  排除未被调用的函数
  简化返回值没被使用的函数
  让小函数变成内联调用
  保存函数说明,以便主函数被优化时知道被调用 函数的属性
  识别文件级别的变量的特性

  在使用o3级别的优化时,还可以使用别的选项执行更细致的优化

  oln 得到标准库函数的文件
  onn 创造优化信息文件
  pm 执行程序级别优化,编译多个源文件


  而我们在做优化时,选的是o2级别的优化,因为使用o2级别优化后产生的汇编文件带有比较多的注释信息,比较容易看懂程序,建议对程序不太熟和对汇编语言不太熟练的人使用。

3.2手工汇编优化

  因为汇编语言可读性很差,并且代码量很大,所以手工优化工作量很大,并且容易出错。为了确保优化不出错,我们就先制

相关IC型号

热门点击

 

推荐技术资料

业余条件下PCM2702
    PGM2702采用SSOP28封装,引脚小而密,EP3... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!