新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > G.723.1标准算法在DSP上的优化

G.723.1标准算法在DSP上的优化

作者:时间:2012-02-18来源:网络收藏

3.3汇编编程的

本文引用地址:http://www.eepw.com.cn/article/149632.htm

  线性汇编是TI提供的一种汇编语言,其指令系统和汇编语言的指令系统完全相同,但在编写时不需要指定寄存器和操作单元,也不需要考虑延时的问题,因此编写线性汇编相对要容易一些。

  经过以上的后,音频编码程序在DM642上的运行状况有了很大改善,但是经测试仍然没有到达可以接收的程度,而高级语言的效率几乎发挥到了极致,所以在具体分析耗时大的模块特点后,采用线性汇编语言重新编写C代码的低效率段程序,迸一步提高程序的执行效率。

  在编写线性汇编代码的过程中,为了提高代码执行效率,我们需要遵循以下原则:

  (1)写并行代码:通过使用汇编指令并行执行的方法减少循环内的执行周期数,优化线性汇编代码。这里的关键问题是弄清指令相关性,只有不相关的指令才能并行执行。辨别指令是否相关.可以使用相关图。

  (2)处理跳转指令和转移指令:汇编程序的一大特点就是频繁地跳转,当满足不同的条件时,要求程序进行不同的操作,或跳到相应的位置。对于“大于”、“大于等于”、“小于”、“小于等于”等较为接近的逻辑判断和处理,应慎重对待,否则将产生逻辑性错误,并且很难调试。当发生溢出需进行相应处理时,这种现象尤为突出。

  (3)尽量减少循环体内的指令数[7]:G.72.1的实现,有许多是在循环内部完成的,有些地方如同定码本搜索过程中,为了确定四个非0脉冲的位置和幅度,还用到了多重循环。在循环内部,特别是在嵌套较深的循环内部,减少一条指令可以大大降低程序的操作次数。例如。对于一个每重循环8次的四重嵌套循环,在最内层循环每减少一条指令,整个程序可以少执行84=4096语句。因此在设计程序时,能够放在循环体外执行的语句.尽量放在循环体外执行。

  (4)展开程序体:尽在一定条件下,尽量展开程序,以减少子程序的调用和返回次数,牺牲空问换取时间。

  经汇编优化器优化后,代码效率比C语言直接编译有明显提高。

  4 优化工作的创新点

  在对的优化中.本文在前人研究成果的基础上,针对 C64xx系列芯片提}n了一些有价值的新方法。这些创新点在不同程度上提高了代码的优化速度和执行效率,在语音编解码的实时实现中起到了关键性作用。下面,本文将以举例的方式阐明一些经典的方法。

  (1)编写连接命令文件.cmd

  明确了系统的程序和数据映射地址后,编写连接器命令文件将部分调用次数较多的函数、堆栈段、数据段放入内存:cmd文件内容如下:

  一L\evmdm642_echocfg.cmd //连接CCS提供的连接命令文件

  SECTIONS

  {

  .tahles>SDRAM

  .cinit>ISRAM //将变量初值表放入内存

  . far >SDRAM

  .const>ISRAM //将常数段放入内存

  .pinit>SDRAM

  . tin >SDRAM

  .text>SDRAM

  .test >ISRAM

  }

  一levmdm642bsl.lib     //连接库文件

  一levmdm642_edma_aic23.164 //连接驱动程序的库文件

  一lc6xlx_edma_mcasp.J64 //连接串口McASP的库文件

  其中.test是笔者在C程序内用#pragma CODE_SECTION或DATA_SECTION自定义的段。

  (2)高速缓冲寄存器Cache的使用

  Cache即高速缓存,是位于CPU和片内存储器之间的规模小速度快的存储器。Cache的工作原理是保存CPU中最常用的数据。当Cache中保存着CPU要读写的数据时,CPU直接访问Cache。由于Cache的速度与CPU相当,CPU能在零等待状态下迅速地实现数据存取。只有在Cache中不舍有CPU所需的数据时CPU才去访问片内存储器。因此Cache的有效利用对整个程序速度的提高有着举足轻重的作用。在主函数中加入以下代码,使Cache使能:

  CACHE_clean (CACHE_L2ALL,0,0}; //清除Cache内原有内容

  CACHE_setL2Mode (CACHE_64KCACHE); //设置Cache的大小为64K

  CACHE_enableCaching (CACHE_EMIFA_CE00); //Cache使能

  添加以上代玛后,测试速度由原来的20帧/s提高到了400帧/s。提高了将近20倍。

  5 结束语

  本文详细分绍了代码优化工作,重点描述了代码优化的方法和本课题的创新点.对于中的一些函数提出了独创性改写方法。基于线性汇编的优化以及Cache的有效利用使本课题的工作取得了显著成果,在没有降低音质的情况下,实现了DSP的语音实时编解码。

  本文作者创新点:在对的优化中,针对TMS320DM 642 DSP系列芯片提出了一些有价值的新方法。例如:编写连接命令文件.cmd和高速缓冲寄存器Cache的使用。这些创新点在不同程度上提高了代码的优化速度和执行效率,在语音编解码的DSP实时实现中起到了关键性作用。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭