2014-08-28 7 views
0

Я хотел бы реализовать систему обработки цифровых сигналов, основанную на потоке данных, такую ​​как GNU Radio, где обработка происходит в блоках, и эти блоки объединяются для обработки потока данных. Насколько я могу судить, есть три способа обойти поток данных: блок может «нажимать» данные на следующий блок, блок может «вытаскивать» данные из предыдущего блока, или блоки могут обрабатывать буферы данных и возвращать буферы данных, с планировщиком, обрабатывающим буферы (последний способ - это использование GNU Radio).Нужна помощь в понимании компромиссов обработки потока данных

Имеются компромиссы с каждым подходом. Например, для «вытягивающей» архитектуры требуется, чтобы блок, который принимает один входной поток и возвращает два выходных потока, что выходные потоки буферизуются с помощью произвольно большого буфера (второй вывод может быть «вытащен» для n выборок до первого выход вытягивается). Точно так же подход «pushing» имеет ту же проблему с блоками, которые принимают 2 входных потока и возвращают 1 выходной поток. Но я бы сказал, что оба этих метода упрощают реализацию блоков, поскольку каждый блок может просматривать свои входы и выходы как один поток.

Прежде чем я получу дальнейший проект, я хотел бы знать: Проводилось ли исследование взаимосвязи между различными способами реализации потоков-графиков, подобных этому? Мне бы очень хотелось написать рецензию, которую я могу прочитать, чтобы я понял проблемы до того, как их начинали на полпути через реализацию.

ответ

0

Это невероятно широкий вопрос. Вы определенно могли бы прочитать много книг, чтобы сформировать действительно хорошо информированное мнение по этому вопросу.

Однако потянуть не существует в мире ОС OS общего назначения. Вы можете иметь две вещи

  1. опроса, где ваш вниз блок постоянно спрашивает «есть новые данные еще?», Которая является расточительным и, как правило, считается плохой дизайн
  2. ожидание, которое не позволяет нить ждать вашего вниз по течению блока до тех пор, планировщик или соседний блок уведомляет его об изменении (т. е. имеются новые данные, или ваш нижестоящий блок теперь готов к обработке большего количества данных, поэтому вы можете их создать)

GNU Radio is 2., который хорошо масштабируется, легко многопоточно и поэтому отлично работает на архитектурах SMP. Я написал действительно маленький, действительно базовый intro, как работает механизм планирования радиосвязи GNU, но есть также некоторая информация, связанная с http://gnuradio.org