首页 > 解决方案 > 如何估计 PXA27x 处理器上卷积的执行时间?

问题描述

我是土木工程专业的学生,​​所以请温柔:)

我必须粗略估计在具有 XScale 架构的英特尔 PXA271 处理器上运行的算法的时序。基本上,我的“算法”对实时获取的信号进行过滤,并通过无线发送结果。考虑到每个 N = 2788 个抽头的四个滤波器(f1、f2、f3 和 f4),对于收集到的每个新数据样本,我的算法刷新输入信号 x 的窗口,与所有滤波器执行卷积,并返回 y1,结果是 y2、y3 和 y4:

y1 = y2 = y3 = y4 = 0;
for (i = 0; i < N; i++)
{
   y1 += f1[i]*x[i];
   y2 += f2[i]*x[i];
   y3 += f3[i]*x[i];
   y4 += f4[i]*x[i];
}

现在,我想估计处理器执行这部分代码需要多长时间。我正在关注优化指南与 PXA27x 处理器系列相关,它“解释”了管道是什么(好吧,我最近几天也尝试在其他参考资料上研究管道),并显示了一个优化示例,考虑到类似于我的代码(第 4-22 页) ,并告诉如何避免摊位。从这个例子中,似乎每个乘法累加操作在优化之前只需要一个周期(由于停顿导致的额外周期除外)。但是,在优化之后(第 4.4.2.1 节),参考文献说每次抽头只需 0.625 个周期。那么,在我的例子中,我可以说,在以某种方式优化指令之后,总周期数会小于 4*2788 吗?因此,在 13 MHz 下工作,总时间会小于 (4*2788)/(13*10^6) = 8.6e-4 sec?

我还尝试使用优化指南第 4.8 节的指令延迟“手动”进行计数。在这种情况下,没有任何优化,查看表 4-6,我将每条指令 4 个周期称为 MLA 的最坏情况。因此,总周期数为 4*4*2788。这是对的吗?为什么在第一种情况下,在优化之前 MLA 的周期数是 1?谁能用简单的语言解释一下“Rs Value”和“S-Bit Value”(参考表 4-6)是什么意思?它是指我要处理的数据类型吗?

如果我写了一些废话,我很抱歉,如果你有耐心解释或给我一些简单的参考来理解,谢谢。

标签: c++inteltimingcpu-cycles

解决方案


推荐阅读