Цитата(Студент заборстроительного @ Jan 2 2018, 20:40)

Абсолютно.
Потому что удаленные устройства относятся к одному и тому же типу.
Но хотя алгоритм одинаковый устройства могут находится в разных состояниях (автомат состояний)
Поэтому для одного узла может потребоваться сделать одно, а для другого - другое (потому что он находится в другом состоянии)
1. Отлично, уже что-то. В любом случае будем считать, что можно написать такой алгоритм обработки, чтобы он мог обслужить любое из устройств, в любом из их внутренних состояний.
Итого мы получили некоторый
обработчик (будем называть его так). Этот обработчик по своей сути - некоторая логическая схема, включающая в себя конечный автомат, буфер памяти, умножители и прочие функции, которые необходимы для обработки.
2. Итого, что мы имеем. Поток 10Gb разбирается (десериализируется) и раскидывается на N-ное количество обработчиков, далее, на выходе от обработчиков результат собирается обратно (сериализируется) в 10Gb. Теперь нам нужно понять сколько нужно таких обработчиков, чтобы канал не захлебнулся (когда новые данные поступают, а обработка старых не закончилась).
В идеальном варианте обработчик должен представлять из себя конвейер, который на каждом такте будет принимать новые данные, D - тактов обрабатывать и в конце выдавать на каждом такте результат. Другими словами у вас получится задержка на обработке в количестве D-тактов.
3. Теперь, чтобы эта мясорубка завелась, нужно прикинуть из чего состоит один обработчик, какие ему нужны ресурсы, сколько тактов уйдёт на обработку одного блока данных от одного устройства. Основные ресурсы для ОДНОГО обработчика:
-> количество памяти
-> количество FF и LUT (в терминалогии ПЛИС это регистры и логические функции)
-> количество DSP блоков, они нужны для математики, если она у вас есть (умножение/деление/корень и тд). Математику лучше делать на DSP иначе потратите много FF и LUT.
Ресурсы любой ПЛИС ограничены, как вы понимаете. Чем "легче" будет один обработчик, тем больше их можно будет впихнуть в параллельную обработку, чтобы справиться с 10Gb данных.
Если предположить, один обработчик работает с производительностью 100Мбит, то таких нужно будет 100 штук. Чтобы уместить 100 обработчиков + логику для разборки/сборки этого потока, нужно понимать сколько весит один обработчик, т.е. возвращаемся к пункту 3.
Я понимаю, что у вас не было опыта работы с ПЛИС, но если вы скажете, что обработчик должен, например:
1. иметь буфер памяти на 1КБ
2. Сделать 10-20 проверок (логических сравнений).
3. пару раз умножить числа разрядностью N x M с аккумуляцией результата где-то...
4. Взять квадратный корень из результата...
5. сложить результат с какой-нибудь фигнёй и таким образом сформировать итоговый результат.
То тут хотя бы можно будет прикинуть ресурсы, число тактов и даже может конкретную ПЛИС порекомендовать с запасом по объёму.
Иначе - это всё разговоры ни о чём. Если ваш алгоритм требует 100.000 тактов сложной математики, то это ни в какую ПЛИС не влезет с такой пропускной способностью...
Сообщение отредактировал Inanity - Jan 2 2018, 18:48