计算DSP程序运行时间

计算DSP程序运行时间

介绍一种计算DSP程序运行时间的方法。该方法适合在不带系统裸机程序中使用。测量时间的方式精度是一个cycle,如果CPU频率为1GHz,则一个cycle为10纳秒。只不过处理成毫秒ms,再低意义不大。当然CCS中还自带profile性能分析器来查看运行时钟/周期数,还可以用C标准库提供的time.h。都是可以,看个人方便。

之前常用的profiling和clock()一般在simulation下使用,有一定的局限性。真正到了板子上做emulation时,因为要考虑到数据和被测 code在板子上的存放位置和读取时间,用这种方法测结果就不那么可靠了。其实在c64x+ core上有两个计数寄存器TSCL/TSCH,利用TSCL和TSCH来计算时钟周期,它们与CPU同频,共同表示一个64-bit数,CPU运行一个cycle,该寄存器就加1,因此可以用 它们来准确的测量cpu在某个执行段中消耗的cycles。一般我们只会用到TSCL这个寄存器,594MHz下,32-bit可以测试到7s,而 TSCH是高32位,除非测试整个工程,一般用不到它。

代码如下:

// 计数变量
long long StartTime = 0;
long long EndTime = 0;

// 初始化计数时钟(开始后就不能停止)
TSCH = 0;
TSCL = 0;

// 开始计数
StartTime = _itoll(TSCH, TSCL);

/*
被测试运行程序
*/

// 结束计数
EndTime = _itoll(TSCH, TSCL);
ConsoleWrite("Execution Time %2.10fus\r\n", (EndTime - StartTime) / 1000.0);

你可能感兴趣的:(DSP,6678,DSP,测试,时间)