Перейти к содержанию
    

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

OFF

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Последовательная обработка или параллельная. Да какая разница то ? Данные то вы будете выплёвывать последовательно !

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

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

Так понятно.

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

 

OFF

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

А что?

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

 

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

Изменено пользователем Студент заборстроительного

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Ещё раз.

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

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

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

 

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

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

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

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

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

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

 

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

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

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

 

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

 

Ещё раз.

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

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

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

...

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

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

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

 

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

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

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

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

Изменено пользователем Студент заборстроительного

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

ничего личного, но начинает складываться такое мнение, да.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ничего личного, но начинает складываться такое мнение, да.

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

 

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

Только при минимальной длине пакета "КПД" канал 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 тактов

Изменено пользователем Студент заборстроительного

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Студент,

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

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

 

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

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

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

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

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

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

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Mad_max

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

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

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

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

Изменено пользователем Студент заборстроительного

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Mad_max

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

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

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

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

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

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

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

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Вот опять.

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

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

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

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

 

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

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

cMfvXx5P.jpg

Изменено пользователем Студент заборстроительного

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...