关于profile的相关介绍C6X的调试工具提供了一个概要文件接口。在图9中,包括了几个重要的窗口。左上角的窗口显示了我们写的C语言,它可以让我们知道我们现在已经迈出了哪一步。右上角窗口显示C6x编译的汇编语言。同样,我们可以知道我们现在已经迈出了哪一步。左下角的窗口是命令行,是我们给出命令和显示消息的窗口。中间的配置文件窗口是配置文件模式中最重要的窗口,它显示的项目如下:表5:5的参数:配置文件[8]字段含义计数调用数包含子程序执行的时钟总数包含-最大包含子程序执行的最大时钟数排除不包含子程序执行的时钟总数排除-最大不包含子程序执行的最大时钟数。有了这个分析的结果,程序员就可以知道哪个函数花的时间最多,可以改进,并进行优化。
汇编代码级的优化可能会遇到的问题汇总
C代码的优化
不能满足性能要求,所以我们可以用profile clock工具找出低效的部分,用线性汇编重写。然后由汇编优化器编译,从输入的线性汇编代码中完成如下功能:寻找可以并行执行的CPU指令。软件管道期间,处理管道标签。低分配寄存器的使用。分配功能单元。TI提供的装配优化器可以实现高效率,总体满足性能要求。优化中的问题在汇编代码级的优化过程中,总是要对程序进行一定的改动的情况,这样经常会出现一些问题。问题汇总如下:
1)优化结果的验证
优化的程序经常不知道它们是否正确运行,所以程序员需要验证它们。验证中使用的一般方法是通过测试序列进行验证。测试序列是指从不同算法中提取的一组特殊数据,能够准确反映算法的特点。测试序列中的每组数据包括输入数据和输出数据。通过计算输入数据,将结果与输出数据进行比较,判断程序的正确性。一些常见的算法通常提供测试序列。其他没有测试顺序。此时,根据算法的特点,我们需要构造自己的测试序列进行验证。构造时注意几组序列和一定长度的数据,这样验证更准确。
2)内存泄漏的问题
C64X DSP内部存储空间为1MB,由程序、数据和CPU二级缓存共享。所以,当程序运行异常时,很可能是内存泄漏造成的。所以在编程中,尽量不要使用指针,注意边界检测。
程序设计的一些方法
一切都应该以满足实际需求为目标。在实际设计中,除了优化可以提高性能外,还可以利用数字信号处理器的特点,采取其他方法来提高程序的运行性能,满足实际设计要求。
1、把程序和经常要用的数据放入片内RAM
片内RAM工作在与CPU——相同的时钟频率,性能比片外RAM高很多。因此,将程序放在芯片上可以大大提高运行速度。同时,对于一些经常使用的数据,放入芯片会节省处理时间。
2、通过DMA技术搬移数据
对于C64X芯片,其片上RAM有1MB,但对于一些大规模的图像处理算法,可能还是不够。所以经常使用DMA技术将必要的数据移入芯片,将不必要的数据移出芯片,可以大大提高程序的运行速度。
3、CACHE的使用增加缓存可以明显提高性能。但是C64X系列DSP中的程序和数据也与CACHE共享片内RAM,所以增加CACHE会减少实际可用的片内空间,在设计时需要注意。