Performance 如何估计特定体系结构上DSP算法的指令数/性能?

Performance 如何估计特定体系结构上DSP算法的指令数/性能?,performance,assembly,arm,signal-processing,benchmarking,Performance,Assembly,Arm,Signal Processing,Benchmarking,我被要求为使用160MHz ARM处理器的音频接口硬件提供混响算法。这是一个用C编写的相当轻量级的混响效果。然而,当涉及到低级别的架构和性能测试和测量时,我的知识有点缺乏 我需要提供至少一些关于它将如何在设备的CPU上运行的估计,因为他们希望将其保持在3-5%以内。到目前为止,我已经遵循了这些步骤,所以请让我知道我是否至少在正确的轨道上 我反汇编了包含Xcode中混响的所有处理的.c文件,并统计了在处理音频的回调函数中调用的汇编指令数。在每个块256个样本的情况下,我正在查看大约400000个组

我被要求为使用160MHz ARM处理器的音频接口硬件提供混响算法。这是一个用C编写的相当轻量级的混响效果。然而,当涉及到低级别的架构和性能测试和测量时,我的知识有点缺乏

我需要提供至少一些关于它将如何在设备的CPU上运行的估计,因为他们希望将其保持在3-5%以内。到目前为止,我已经遵循了这些步骤,所以请让我知道我是否至少在正确的轨道上

我反汇编了包含Xcode中混响的所有处理的.c文件,并统计了在处理音频的回调函数中调用的汇编指令数。在每个块256个样本的情况下,我正在查看大约400000个组装说明

有没有办法粗略估计这个算法在160MHz ARM处理器上的性能?我用于I/O的音频库有一个CPU负载的测量值,我在MacPro上的回调例程得到2-3%的CPU负载

我这样做对吗?有什么建议可以提供这方面的估计吗?

谢谢。

您需要更多关于ARM ISA特定实现的处理器的信息,而不仅仅是MHz。影响性能的因素包括使用多周期指令、超级定标器分派/退役功能、管道联锁、影响命中率的缓存大小和策略、内存延迟等。此外,您使用的编译器对所选ARM实现进行了优化

桌面PC和嵌入式RISC CPU之间的机器代码执行差异很容易超过10倍CPI(每条指令的周期数),并且实际的机器代码非常不同


通常比较容易对代码进行基准测试。

您没有任何硬件可以试用吗?具体来说,处理器的速度与内存/闪存的速度相似/相同?这并不是我构建它的具体目的,但也许在我的iPhone上试用它会给出更好的估计?这有助于回答我需要什么样的信息来确定性能,或者至少做出更好的估计。谢谢。一旦管道和缓存开始发挥作用,执行就不那么确定了(对于那些对设计的本质不了解的用户来说)。即使使用物理硬件,您也可能会陷入许多陷阱,对性能产生错误的感觉。加上一个操作系统,情况会变得更糟。