按手册上的介绍,C6748峰值性能是3648MIPS和2746MFLOPS, 我现在用一段测试代码进行加法运算,代码如下:
#include <stdio.h>
#include <c6x.h>
#include <c67fastMath.h>
int main(void) {
unsigned long long T_start_lib, T_end_lib;
unsigned long long cnt1 = 0;
long long i = 0;
printf("game start\n");
TSCH = 0;
TSCL = 0;
T_start_lib = _itoll(TSCH, TSCL);
for(i = 0; i < 1000000; i++)
{
}
T_end_lib = _itoll(TSCH, TSCL);
cnt1 = T_end_lib - T_start_lib;
printf("T_end_lib = %ld, T_start_lib = %ld\n", T_end_lib, T_start_lib);
printf("cnt1 = %ld\n", cnt1);
return 0;
}
在未进行任何优化的情况下,运行结果是需要110000088cycle,也就是110000088/456M约241.2ms
开了-03优化后,运行结果是需要1000012cycle,也就是1000012/456M约2.19ms
但是如果按理论峰值来计算的话,应该是1000000次/3648MIPS,也就是约0.274ms
也就是说现在的计算能力只能到峰值能力的1/8左右,那么请问我需要进行什么样的优化来提高这个运行速度呢?可以提供相关的demo吗?
另外,cmd文件未做修改,optimization设置如图