预测 DSP 程序的执行时间

信息处理 表现
2022-02-07 15:02:27

我的任务是预测我们的 DSP 代码的性能,原因很明显(缩短上市时间、增加选择芯片的确定性等)

考虑一个由许多具有时序结果的子系统组成的系统Pi(以秒为单位)(滤波器、增益、动态处理等)具有时钟速率C(秒/样本)和采样率Fs(样本/秒)

我们最初的假设是:

CPU utilization=100%ii=NPiFs/C=!top -d 1

即 CPU 利用率估计应该等于 top -d 1` 的输出。

但是,这不符合真实数据!它总是被低估。

我们通过将每个子系统包装在测试工具中并计时它们的执行来测量各个子系统。我们的系统在单线程和单核上运行。

根据平台的不同,我们可以达到 5% 到 20% 以内,但总是低估顶部。

为什么是这样?

我在性能文献中找不到任何符合我们假设的东西,但解释如此之多,以至于几乎就像“我们真的不知道为什么我们不能预测性能”。

我开始认为该解决方案在早期开发期间像鹰一样进行监控,并在我们发现新解决方案时缩减系统复杂性。

但是,如果我们能够提前设计一个具有性能要求的系统,那将是非常棒的。我们的要求很大程度上取决于“这比供应商的旧东西更好,而且我们以前使用旧系统的东西更好”。

2个回答
  1. Top 是测量 CPU 时间的糟糕工具。围绕个人的执行设置一堆计数器或计时器并收集相关统计信息。
  2. 每个块都应该有一个“应该成本”,它基于算术运算的数量加上一些循环开销和相对于处理器指令集的条件。将每个区块的实际成本与“应成本”进行比较,并寻找主要差异
  3. 如果总数不加起来,通常是由缓存未命中、管道停顿、内存瓶颈、中断或其他一些服务闯入引起的。同样,适当的检测可以揭示正在发生的事情。

我们可以得到 5% 到 20% 以内,但总是低估顶部。

现在,如果它总是被低估太多(如您所说),那么将您的估计值乘以近似比例以获得更准确(现实)的估计值......

原因可能有很多,cpu-ram 系统内的数据传输是最难预测的……