【问题标题】:Two kind of lags/delays between buffers缓冲区之间的两种滞后/延迟
【发布时间】:2026-02-04 11:45:01
【问题描述】:

假设我们从两个源 S1 和 S2 以相同的频率获取数据,并且我们想要将它们相乘。然而,S1 是嘈杂的,我们决定在将其与 S2 相乘之前取 A 的三个值的滚动平均值。那么我们就到了下面的情况:

  • 我们有两个缓冲区 B1 和 B2,其中存储了 S1 和 S2 的输入。
  • 某些程序 P1 从缓冲区 B1 计算滚动平均值,其结果存储在缓冲区 B3 中。
  • 最后程序 P2 将缓冲区 B2 和 B3 中的结果相乘并输出结果。

有两种不同的东西可以称为“滞后”。假设数据在时间 t、t+1s 和 t+2s 到达。

  • 然后我们希望在时间 t+1s 存储 P1 输出(以便 P2 将其乘以来自 B2 的适当值)。因此,B1/B2 和 B3 之间存在 1 秒的滞后(即:与 B1/B2 中存储的最后一个值相比,B3 中的最后一个值总是晚 1)。
  • 但 P1 的第一个输出仅在时间 t+2s 产生。这很重要,因为它会告知我们何时可以首次启动 P2。所以从这个意义上说,B3 与 B1/B2 相比必须有 2 秒的延迟。

我的问题是:这些不同类型的滞后是否有名称?或许什么是处理它们的正确方法?

【问题讨论】:

    标签: algorithm buffer lag rolling-computation


    【解决方案1】:

    我认为第一种类型的延迟将被称为 Lead Time——从第一次给出输入到返回任何结果之间的时间量。减轻这种延迟的最佳方法似乎是尽可能避免启动/停止,以避免开销。

    第二种类型的延迟我称之为一般的延迟 - 原因(输入)与其相关结果之间的延迟。可以做些什么来解决延迟问题在很大程度上取决于上下文。有时可以并行化一个进程以最小化启动/停止之间的时间。有时重新安排任务顺序可以提高流水线效率,减少延迟。有时候,什么都做不了。

    【讨论】: