您当前的位置:五五电子网电子知识单片机-工控设备DSP/FPGA技术C代码在TMS320C54X上的手工汇编优化 正文
C代码在TMS320C54X上的手工汇编优化

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

点击数:7756 次   录入时间:03-04 11:44:18   整理:http://www.55dianzi.com   DSP/FPGA技术
                        例子

       (2) 注意流水线冲突。5402的芯片有一个6级深度的指令流水线,这6级流水线彼此是独立的,在任何一个机器周期内,可以有1至6条不同的指令在工作。这6级流水线的功能分别是预取指、取指、译码、寻址、读数和执行。C5402多级流水线操作可以让多条指令同时指令访问CPU资源,如果多个流水线同时访问到相同的资源,就可能发生流水线冲突,有些冲突可以由CPU通过延迟寻址的方法自动缓解,而有的冲突是不能防止的,需要由程序重新安排指令或插入空操作来解决。当用CCS编译器对C程序进行编译的时候,编译器会自动加入NOP指令来解决流水线冲突,而进行手工优化的时候,就要特别注意这个问题,大部分流水线冲突都是因为同时访问到某些寄存器,只要根据等待周期表加入相应的NOP指令就可以解决。

                      例子

       (3) 对一些参数的保存。在手工优化的过程中,我们会用某些寄存器来传递数据,而在此过程中,如果调用了别的函数,这些寄存器的值就有可能被改变,所以在调用这些函数的时候,要先将这些参数压栈保存,调用完后再将其出栈恢复。还有就是某些标志位的保存,因为在调用函数的过程会改变这些状态标志位,所以在调用完后要将其恢复。

       (4) 循环缓冲区地址分配问题。循环缓冲区的地址分配必须对齐,长度为R的缓冲区必须从N位地址的边界开始(即循环缓冲区基地址的N个最低有效位必须为0),N 是满足2N>R的最小的整数。例如,长度R=31的循环缓冲区必须从地址XXXX XXXX XXX0 00002(N=5,25>>31,该地址的最低5位为0)。

       (5) 内存泄漏问题。因为DSP使用的是哈佛结构,数据空间和程序空间是分开的,一般数据的操作不会影响到程序。但是DSP芯片上都带有RAM,而这些空间数据和程序是共享的,所以对该部分的数据进行操作,如果有泄漏的话会改写程序,导致程序跑飞。因此程序跑飞的话,就要考虑是否有内存泄漏。



www.55dianzi.com        4 结论

       以上经验和技巧均是笔者在实际的 DSP 工程中总结得出,实践证明对实际开发非常有帮助。以笔者对G.729算法 优化 为例,在优化之前,G.729的运算量为1000MIPS,优化后的运算量为30MIPS,提高了30多倍,可见优化的效果很明显。以上这些经验主要是针对TI公司的 54系列,但对于别的型号的DSP也有借鉴作用。

       参考文献

1 彭启琮.TMS320C54X实用教程.电子科技大学出版社,2000
2 戴明桢.TMS320C54X数字信号处理器结构、原理及应用.TI DSPS UNIVERSITY,2000



上一页  [1] [2] 


本文关键字:手工  DSP/FPGA技术单片机-工控设备 - DSP/FPGA技术

《C代码在TMS320C54X上的手工汇编优化》相关文章>>>