Jump to content

    
Sign in to follow this  
Студент заборстроительного

Принять и ПАРАЛЛЕЛЬНО распарсить поток 10Гбит/с. Как решаются такие задачи?

Recommended Posts

Я чего-то не понимаю, но откуда Вы взяли 1000 потоков ? Данные то приходят последовательно.... Не думаю, что одновременно данные приходят сразу от 1000 устройств. А раз данные приходят последовательно, то почему бы их так-же последовательно не обрабатывать ?

Я же уже объяснял. Что "последовательно обрабатывать" даже i7 не успеет.

Что поток данных гораздо больше, чем успевает "перемалывать" даже самый крутой интеловский процессор

Share this post


Link to post
Share on other sites
Я же уже объяснял. Что "последовательно обрабатывать" даже i7 не успеет.

Что поток данных гораздо больше, чем успевает "перемалывать" даже самый крутой интеловский процессор

Последовательная обработка или параллельная. Да какая разница то ? Данные то вы будете выплёвывать последовательно ! Поэтому зачем усложнять задачу обработкой 1000 потоков внутри ПЛИС, придумывать 1000 портовую память, потом еще придумывать арбитраж отправки данных с 1000 потоков.

А вообще странно, что Вы так ещё и не нарисовали простую блок схему вашего устройства...

Share this post


Link to post
Share on other sites
Как любят все ставить диагнозы. У меня параллельно не менее 3 ников, и вы не поверите сколько ников я тут уложил на форуме в борьбе

за свободу ежиков. Не менее двух десятков точно. И большая часть из них "свои".

OFF

Вас банили или что значит уложил?

Share this post


Link to post
Share on other sites
Последовательная обработка или параллельная. Да какая разница то ? Данные то вы будете выплёвывать последовательно !

Да что ж до Вас доходит-то всё как до жирафа! :maniac:

Гигабитный приемопередатчик работает в сотни раз быстрей обработчика данных.

Так понятно.

Поэтому ОЗУ обновляется приемопередатчиком в сотни раз быстрей, чем обработчик успевает их обработать

 

OFF

Вас банили или что значит уложил?

А что?

Разве в природе существуют люди, которых СОТНИ раз не банили на форумах рунета? :cranky:

 

Хотелось бы посмотреть на таких экземпляров

Edited by Студент заборстроительного

Share this post


Link to post
Share on other sites

Студент заборстроительного...

1. Что значит 10Gb? Если это просто скорость линка, то можно на 10Gb 1 килобайт принять, 3 часа обрабатывать и снова на тех же 10Gb передать. Т.е. линк получается 10Gb, а эффективная пропускная способность 1килобайт в 3 часа. Чувствуете разницу? Если нет, то проконсультируйтесь с человеком из вашей команды, который понимает, что происходит.

 

2. Предположим, что вы определили, что на линке 10Gb к вам приходит поток данных в 500Мбайт/сек (для примера). Для решения задачи нужно понимать суть алгоритма обработки. А именно, каковы требования по памяти, какова глубина конвейера. Исходя из этих данных уже более-менее можно будет прикинуть по ресурсам можно ли это сделать на ПЛИС, какие потребуются ресурсы, чтобы обработка на ПЛИС не стала "горлышком от бутылки" в потоке данных.

 

Уже третья страница пошла, а вы никак не можете толком сформулировать задачу. :wacko:

Share this post


Link to post
Share on other sites
Студент заборстроительного...

Ещё раз.

Допустим данные вы нарезаете блоками по 46 байт в кадры.

Эти кадры передаёте по линку 10Gb/s.

И скорость поступления кадров будет 10Gb/"размер кадра" (разделить).

 

Приведу простейший пример.

Допустим у вас классический UART со классической скоростью 9600 без паритета и чётности - 8N1.

Вы передаете данные.

Данные нарезаны блоками по 8 бит, которые вы обрабатываете.

Данные окружены стартовым и стоповым бит. Т.е ваш кадр данных - 10 бит.

Итого реальная скорость поступления данных для обработки 9600/10 = 960 кадров в секунду.

 

С вашей задачей ситуация аналогичная.

Скорость 10Gb/s - это скорость бит в линии.

Но общаетесь то вы кадрами. И обрабатывать должны кадры.

 

Откуда у вас 1000 потоков взялось ?

 

 

Share this post


Link to post
Share on other sites
Студент заборстроительного...

1. Что значит 10Gb? Если это просто скорость линка, то можно на 10Gb 1 килобайт принять, 3 часа обрабатывать и снова на тех же 10Gb передать. Т.е. линк получается 10Gb, а эффективная пропускная способность 1килобайт в 3 часа. Чувствуете разницу? Если нет, то проконсультируйтесь с человеком из вашей команды, который понимает, что происходит.

Вы думаете я совсем дурак?

Вы думаете, что я просто так написал, что даже i7 захлебнётся от такого потока?

 

Ещё раз.

Допустим данные вы нарезаете блоками по 46 байт в кадры.

Эти кадры передаёте по линку 10Gb/s.

И скорость поступления кадров будет 10Gb/"размер кадра" (разделить).

...

С вашей задачей ситуация аналогичная.

Скорость 10Gb/s - это скорость бит в линии.

Но общаетесь то вы кадрами. И обрабатывать должны кадры.

 

Откуда у вас 1000 потоков взялось ?

А почему 46, а не 1500?

Так что "КПД" канала у меня более 90%

А про 1000 потоков уже объяснял, что данные представляют собой данные 1000 ОДИНАКОВЫХ устройств, которые нужно обрабатывать ОДИНАКОВО

Edited by Студент заборстроительного

Share this post


Link to post
Share on other sites
Вы думаете я совсем дурак?

Вы думаете, что я просто так написал, что даже i7 захлебнётся от такого потока?

А почему 46, а не 1500?

Потому-что я не знаю как у Вас формируются кадры.

А Вы, уважаемый, игнорируете просьбы предоставить более подробное описание ! Хотя это нужно было делать в первую очередь ! И это нужно Вам, а не нам...

Share this post


Link to post
Share on other sites
А почему 46, а не 1500?

Без разницы какой длины кадр.

Вы принимаете 1GB в секунду, нужно его обработать и отправить обратно.

На работу с одним байтом можно выделить не более 1нс, с пакетом - N*1нс

 

 

 

 

Share this post


Link to post
Share on other sites
ничего личного, но начинает складываться такое мнение, да.

Я же писал, что я нуб в ПЛИС. Никогда с ними дело не имел. Поэтому и тему создал, чтобы у спецов спросить, можно ли такое реализовать на ПЛИС. А Вы хамить.

 

Без разницы какой длины кадр.

Только при минимальной длине пакета "КПД" канал 4%, а при максимальной - 90%.

А Вы говорите "какая разница"

 

Вы принимаете 1GB в секунду, нужно его обработать и отправить обратно.

На работу с одним байтом можно выделить не более 1нс, с пакетом - N*1нс

Ну по самым грубым прикидками где-то так.

А я прикидывал так.

Каждое удаленное устройство описывается дампом в 64 байта.

Всего устройств - 1000.

Значит данные всех устройств занимают 64 000 байт

Скорость порядка 1 000 000 000 байт/сек

Значит скорость обновления инфы 64 000/1 000 000 000 = 64 мкс

 

Т.е. в дампы каждого из 1000 устройств каждые 64 мкс поступает очередная порция инфы объемом 64 байта

При обработке инфы полученной от устройства нужно анализировать не только последний 64-х байтный блок, но и 9 предыдущих.

 

Таким образом ты за 64 мкс должен обработать блок длиной 640 байт.

Казалось бы не много.

Но если обработку вести последовательно для всех 1000 устройств, то ты должен тратить на обработку 640-ка байтного блока: 64мкс/1000=64нс

 

Таким образом в среднем на обработку 1 байта нужно тратить не более 0,1 нс, а не 1 нс, как Вы посчитали.

 

А реально для улучшения точности и адекватности результатов нужно КАЖДЫЙ РАЗ анализировать не 10, а 100 последних блоков, плюс сравнить результаты с результатами других устройств.

 

Таким образом за 64 мкс ты будешь должен для каждого устройства перелопатить не 640 байт, а, как примеру 64 кбайта. Тогда чтобы успеть обработать данные всех 1000 устройств получается, что 1 байт ты должен обрабатывать за 0,001нс

А если сеть будет расти и будет не 1000 устройств, а 10000?

И сеть будет не 10G, а 100G?

 

Тогда я байт ты должен обрабатывать за 0,0001 нс

 

Даже при тактовой 5ГГц получается, что за 1/2000 такта нужно обработать 64 кбайта.

А даже при ширине шины 256 бит только чтобы прочесть 64 кбайт данных из ОЗУ потребуется минимум 2000 тактов

Edited by Студент заборстроительного

Share this post


Link to post
Share on other sites

Студент,

трудно, конечно, проникнуться вашими выкладкам...

Попробуйте зайти с другого боку в своих рассуждениях.

 

У вас на входе поток данных, каждые 6.4нс вы принимаете 8 байт данных по 10G.

Вы говорите, что блок обработчик данных имеет пропускную способность 10Мбит/c.

Посмотрите на зависимость данных в вашем алгоритме, можно ли обработку разложить

на N стадий последовательно идущих друг за другом. Если это так, то можно сделать

pipeline который будет работать на частоте потока данных 156Мгц.

Преимущество pipeline в том, что на каждом такте потребляется одна порция данных и

воспроизводиться одна порция данных. Работа идет на максимальной пропускной способности сети.

В таком случае, не надо ни чего параллелить, один инстанс ядра.

 

Да, конечно, для pipeliene нужно будет правильно формировать сигналы управления.

Share this post


Link to post
Share on other sites

Mad_max

Можно конечно поизвращаться с оптимизацией данного конкретного алгоритма.

А если придется изменить алгоритм - мне заново перепроектировать систему?

Это никуда не годиться

Я хотел бы получить УНИВЕРСАЛЬНУЮ "зубодробилку", работающую в 1000 потоков параллельно

Edited by Студент заборстроительного

Share this post


Link to post
Share on other sites
Mad_max

Можно конечно поизвращаться с оптимизацией данного конкретного алгоритма.

А если придется изменить алгоритм - мне заново перепроектировать систему?

Это никуда не годиться

Я хотел бы получить УНИВЕРСАЛЬНУЮ "зубодробилку", работающую в 1000 потоков параллельно

немного про оптимизацию...

До сих пор не сказано о том, как работают датчики.

Если имеется в виду большой физический объект, то обычно в разных ветвях алгоритма информация от датчиков имеет разное значение. Например выпущены ли шасси имеет смысл проверять только при взлете... Поэтому сомнительно, что все 1000 датчиков имеют равное значение по требуемому быстродествию... А это значит, что датчики можно разделить по группам и опрашивать с разной периодичностью...

Далее. Не сказано о взаимосвязи датчиков. Не бывает, чтобы алгоритм в одной какой-то ветви требовал полностью информацию обо всех 1000 датчиков. А это значит, что физически схему контроля датчиков можно разнести по разным физическим устройствам обработки. Ну, естественно, что часть датчиков будет обмолачиваться разными устройствами....

Ну и наконец, при таком большом количестве датчиков и большой "завязке" между ними в алгоритме, наверняка потребуется все разделить на две части. Одна будет только снимать информацию с объекта, а другая - ее обрабатывать...

 

Share this post


Link to post
Share on other sites
немного про оптимизацию...

До сих пор не сказано о том, как работают датчики.

Если имеется в виду большой физический объект, то обычно в разных ветвях алгоритма информация от датчиков имеет разное значение. Например выпущены ли шасси имеет смысл проверять только при взлете... Поэтому сомнительно, что все 1000 датчиков имеют равное значение по требуемому быстродествию... А это значит, что датчики можно разделить по группам и опрашивать с разной периодичностью...

Далее. Не сказано о взаимосвязи датчиков. Не бывает, чтобы алгоритм в одной какой-то ветви требовал полностью информацию обо всех 1000 датчиков. А это значит, что физически схему контроля датчиков можно разнести по разным физическим устройствам обработки. Ну, естественно, что часть датчиков будет обмолачиваться разными устройствами....

Ну и наконец, при таком большом количестве датчиков и большой "завязке" между ними в алгоритме, наверняка потребуется все разделить на две части. Одна будет только снимать информацию с объекта, а другая - ее обрабатывать...

Вот опять.

Мне в очередной раз предлагают подумать над тем как НЕ обрабатывать поток 10G в 1000 потоков..

Как используя разные грязные хаки, привязанные к данному конкретному случаю уменьшить объём вычислений в разы или даже на порядки. :maniac:

А у меня задача сделать УНИВЕРСАЛЬНУЮ "числодробилку" без привязки как какому-то конкретному случаю. Без разных хаков, работающих только при определенных условиях.

Мне нужно, чтобы "числодробилка" могла использоваться в ЛЮБЫХ случаях, а не только в каких-то конкретных

 

А Вы, уважаемый, игнорируете просьбы предоставить более подробное описание ! Хотя это нужно было делать в первую очередь ! И это нужно Вам, а не нам...

Ну вот Вам картинка, как примерно должно всё выглядеть:

cMfvXx5P.jpg

Edited by Студент заборстроительного

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this