【问题标题】:Need help understanding data-stream processing tradeoffs需要帮助了解数据流处理的权衡
【发布时间】:2014-08-28 18:46:32
【问题描述】:

我想实现一个基于数据流的数字信号处理系统,很像GNU Radio,其中处理以块的形式进行,这些块串在一起以处理数据流。据我所知,有三种方法可以传递数据流:一个块可以“推送”数据到下一个块,一个块可以从前一个块“拉”数据,或者块可以处理数据缓冲区并返回数据缓冲区,调度程序处理缓冲区(最后一种方式是 GNU Radio 的操作方式)。

每种方法都需要权衡取舍。例如,“拉动”架构要求,对于接受一个输入流并返回两个输出流的块,输出流使用任意大的缓冲区进行缓冲(对于n 之前的样本,可以“拉动”第二个输出)第一个输出被拉)。类似地,“推送”方法对于采用 2 个输入流并返回 1 个输出流的块具有相同的问题。但我认为这两种方法都使块的实现更容易,因为每个块都可以将它们的输入和输出视为一个流。

在我进一步了解该项目之前,我想知道:有没有研究过实现此类流程图的不同方法之间的权衡?我真的很想写一篇我可以阅读的文章,以便在实施中途遇到问题之前了解这些问题。

【问题讨论】:

    标签: stream iterator dataflow gnuradio


    【解决方案1】:

    这是一个非常广泛的问题。您绝对可以阅读大量书籍,从而对手头的问题形成一个非常有见地的意见。

    但是,通用操作系统的世界中不存在拉动。你可以有两件事

    1. 轮询,您的下游块不断询问“还有新数据吗?”,这是一种浪费,通常被认为是糟糕的设计
    2. waiting,让您的下游块的线程等待,直到调度程序或相邻块通知他更改(即,有新数据可用,或者您的下游块现在准备好处理更多数据,因此您可以生产一些)

    GNU Radio 2. 可以很好地扩展,易于多线程,因此在 SMP 架构上运行良好。我在 GNU Radio 调度机制的工作原理中写了一个非常小、非常基本的 intro,但也有一些来自 http://gnuradio.org 的信息链接

    【讨论】:

      猜你喜欢
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-19
      • 2016-05-03
      • 1970-01-01
      • 2021-01-18
      • 1970-01-01
      相关资源
      最近更新 更多