DSP

程序优化之循环展开

2019-07-13 12:30发布

硬件环境:DSP TMS320C6670开发板 时钟频率:1.2GHz 注:该型号DSP具有两条数据通路和两套寄存器,在测试结果中会体现。 代码版本1: for(i=0;i<12;i++)
{
result*=a[i];
}
测试Cycles:101
代码版本2: for(i=0;i<12;i+=2)
{
result*=a[i];
result*=a[i+1];
}
测试Cycles:59 代码版本3: for(i=0;i<12;i+=2)
{
result1*=a[i];
result2*=a[i+1];
}
执行Cycles:54 代码版本4: for(i=0;i<12;i+=4)
{
result1*=a[i];
result2*=a[i+1];
result1*=a[i+2];
result2*=a[i+3];
} 测试Cycles:30
结果分析: 版本1是最简单最原始的代码,版本2利用了两条数据计算通路的特点,性能得到了近1倍的提升, 版本3相较版本2,利用了两次计算结果不相关的方法(result1、result2),流水线性能稍有提升。 版本4则充分利用了数据通路、流水线处理等,并减少了循环次数,因而性能更优越。