小弟在开发中遇到一个C 程序需要加速的功能,C 程序代码如下:
int32 j;
int64 sum;
for(i = 0; i < data_len; i++)
{
sum = 0;
for(j = 0; j < order; j++)
{
sum += qlp_coeff[j] * (int64)data[i-j-1];
}
data[i] = residual[i] + (int32)(sum >> lp_quantization);
}
其实就是一个 DSP 中常用的 32位乘加指令,两个32位乘法得出一个64位的数据,但 NIOS CPU 是32 位的,我白思不得其解,不知如何下手。仔细阅读了手册也未能找到方法。
上面 C 程序中, 每次循环 data_len 有 4K 次,order 是在 1-32 之间的一个数,所以这里非常耗时间。希望有高手能指点一下,可以有偿。谢谢 |