您需要AI互联网
顾问提供专业咨询
AI人工智能 · VR · AR · 智慧博物馆 · 智慧公园 · 景区 · 文创 · 动画 · 游戏 · 年度运营
大模型定制 · WEB3 · 元宇宙 · 高端网站建设 · 小程序 · APP · 微信 · H5 · 电商
关于profile的介绍和汇编代码级的优化问题
2017.04.13
  关于profile的相关介绍

  C6x的Debug工具提供了一个profile界面。在图9中,包括了几个重要的窗口,左上角的窗口是显示出我们写的C语言,可以让我们知道现在做到了哪一步。右上角的窗口显示的是C6x所编译出来的汇编语言,同样的我们也可以知道现在做到了哪一步。左下角的窗口是命令列,是让我们下指令以及显示讯息的窗口。而中间的profile窗口就是在profile模式下最重要的窗口,它显示出的项目如下表:

  表5:profile的各项参数[8]

  字段            意义

  Count         被呼叫的次数

  Inclusive     包含子程序的总执行clock数

  Incl-Max    包含子程序的执行一次最大clock数Exclusive   不包含子程序的总执行clock数Excl-Max    不包含子程序的执行一次最大clock数利用这个profile模式我们可以用来分析程序中每个函数被呼叫的次数、执行的时脉数等等。用这个分析的结果,程序员就可以知道哪个函数所花费的时脉最多,是可以再改进的,而针对它来作最佳化。


关于profile的介绍和汇编代码级的优化问题


  汇编代码级的优化可能会遇到的问题汇总

  在经过C代码的优化之后,还不能满足性能上的要求,则可以通过profile clock工具找出效率很低的部分,使用线性汇编重新改写。再通过汇编优化器编译,汇编优化器从输入的线性汇编代码中,完成以下功能:

  ● 寻找可以平行执行的CPU指令。

  ● 在软件流水线期间,处理流水线标号。

  ● 分配寄存器的用法。

  ● 分配功能单元。

  TI提供的汇编优化器可以得到很高的效率,一般可以满足性能上的要求。

  优化中的问题

  在汇编代码级的优化过程中,总是要对程序进行一定的改动的情况,这样经常会出现一些问题。问题汇总如下:

  1)优化结果的验证

  优化过的程序往往不知道是否运行正确,这时就需要程序员来加以验证。验证时一般采用的办法就是通过测试序列来验证。测试序列指的是对于不同的算法所取的一组特殊的数据,这些数据可以准确的反映算法的特性。

  测试序列中每组数据包括:输入数据和输出数据,通过对输入数据的运算,把结果与输出数据进行比较,判断程序的正确性。一些常见的算法,一般都提供了测试序列。还有一些,没有测试序列。这时就需要根据算法的特点,自己构造测试序列,进行验证。构造的时候,注意序列最好有几组,数据最好有一定的长度,这样验证的更准确。

  2)内存泄漏的问题

  C64X系列DSP的内部存储空间有1MB,其中程序和数据还有CPU的二级缓存将共享这片空间,因此当程序的运行不正常时,很有可能就是内存泄漏造成的。因此,在程序设计中,应尽量不用指针,同时注意进行边界检测。

  程序设计的一些方法

  程序设计时,一切应以满足实际的要求为目标。在实际的设计中,除了优化能够提高性能以外,还可以采取其他的办法,利用DSP的特性,提高程序的运行性能,满足实际的设计要求。

  1、把程序和经常要用的数据放入片内RAM

  片内RAM与CPU——工作在同一时钟频率,比片外RAM性能高得多。因此把程序放在片内可以大大提高运行的速度。同时对于一些经常要用到的数据,放入片内,也会节省处理时间。

  2、通过DMA技术搬移数据

  对于C64X芯片,其片内RAM有1MB,但是对于一些大型的图像处理算法而言,仍可能是不够的,因此经常通过DMA技术,把需要用到的数据搬入片内,把不需要的搬到片外,可以大大的提高程序的运行速度。

  3、CACHE的使用

  增大CACHE,可以明显的提高性能。但是C64X系列DSP中程序和数据还有CACHE共享片内RAM,因此增大CACHE,就减小了实际的片内可用空间,设计中需要注意。  
400-6446-365 / 010-64928252 我想要个更针对我需求的方案
让决策变的简单
好的开始是成功的一半
请输入关键字