Jump to content

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

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

Recommended Posts

с таким подходом - НЕТ.

 

дело в том что я был в подобной ситуации, и для того чтобы задача легла на архитектуру плис её пришлось переписывать трижды. Уточняя "мелочи" в ТЗ, которые превращались в жирные кляксы, перечеркивая уже проделанную работу.

 

2 ТС

умеете работать с x86 - берите DPDK в руки. это если нужен практический результат.

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

 

Нужно парсить именно в 1000 потоков и данные поступающие со скоростью 10 Гб/с.

поясняю:

парсинг в плис - это не 1000 раз сравнить один байт с "чем-то".

для понимания в чем эффективность ПЛИС - нужно окунуться с головой в поиск по бинарному дереву, когда речь идёт не про сравнение строк, байтов ли чего ещё, а про сравнение СЛЕДУЮЩЕГО ПРИХОДЯЩЕГО БИТА. блин.

нового решения по поиску исходя из сравнения очередного бита.

за счет этого собственно производительность и достигается.

 

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

 

 

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

таким образом, налицо все попытки "скрыть это дерьмо" за какой-нибудь ПЛИС, которая будет никому не понятна, кроме тебя.

Share this post


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

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

 

Да ладно Вам.

Давайте на чистоту -- судя по тому, как Вы описали свою задачу в этой теме, Вы вряд ли достаточно компетентны, чтобы знать, что может обработать современный i7.

Поэтому коллеги и интересуются у Вас конкретными исходными условиями задачи.

 

Вы зря стараетесь меня "выудить" у меня детали ноу-хау нашей системы управления и "развести", чтобы я забесплатно устроил Вам ликбез по современным АСУТП. Хотя у меня ест чем возразить и дополнить по каждому из перечисленных Вами пунктов. Но я "калач тёртый". И на "слабо рассказать?" не ведусь

 

А ноу-хау о том, как обрабатывать в одной ПЛИС сразу 1000 потоков, и читать/писать из общей памяти, значит хотите выудить забесплатно?

Ахаха, как говорится, не выйдет :)

 

Что мне реально интересно?

 

Почему достаточно адекватные участники форума, так сказать, "ведутся" на такие темы и пытаются помогать ТС (даже диаграммы рисовать не лень :) ).

Просто тут всего 2 варианта:

  1. Автор темы тролль и просто решил постебаться
  2. Автор не тролль, у него реально есть такая задача, но ему лень напрячься, подумать и расписать условие нормально.
Лично моё мнение, что и в 1-ом и во 2-ом случаях ни в коем разе нельзя помогать автору темы.

 

В первом случае, думаю, это очевидно.

 

А во втором случае, помогая, мы поощеряем умственную лень и отсутствие культуры задания вопросов.

Share this post


Link to post
Share on other sites
Автор темы тролль и просто решил постебаться

100% :biggrin:

 

помогая, мы поощеряем умственную лень и отсутствие культуры задания вопросов.

100% повторно!

Share this post


Link to post
Share on other sites
ни в коем разе нельзя помогать автору темы

Так Вы, насколько мне помниться, и не "помогали"?

Тогда чего так возбудились?

 

P.S. И сотрите своё хамство, флуд и "переходы на личности" пока я не обратился к модераторам

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

Share this post


Link to post
Share on other sites
Так Вы, насколько мне помниться, и не "помогали"?

Тогда чего так возбудились?

 

P.S. И сотрите своё хамство, флуд и "переходы на личности" пока я не обратился к модераторам

 

Так я и не собираюсь помогать :)

И пытаюсь предостеречь других пользователей -- чтобы не кормили тролля.

 

P.S. Обращайтесь.

Share this post


Link to post
Share on other sites
дело в том что я был в подобной ситуации, и для того чтобы задача легла на архитектуру плис её пришлось переписывать трижды. Уточняя "мелочи" в ТЗ, которые превращались в жирные кляксы, перечеркивая уже проделанную работу.

Ну а я то причем?

Не я же Вам ТЗ писал.

Да и в этой теме не стоит задача проработать ТЗ вплоть до мельчайших деталей реализации.

Здесь обсуждается сама концепция, архитектура. Возможно ли её реализовать на одной ПЛИС или нет.

 

Ну если Вам трудно мыслить абстрактно, то давайте к конкретике (пример вымышленный /но все же он передает то, чего в реале я хотел бы получить/, поэтому обсуждение "для чего оно нужно?" давайте оставим "за кадром").

 

Допустим каждый из тысячи узел ПЛИС просто каждые 10 мкс считывает байт за байтом инфу из своего дампа (64 байта) памяти 10G приемника, делает операцию XOR с некоей константой и записывает в память 10G передатчика.

Приемник и передатчик никак не синхронизируются между собой и с узлами. Узлы в ПЛИС также работают совершенно независимо от других узлов, 10G-приемника и 10G-передатчика

Каждый просто ТУПО делает свою работу не взирая на то, в каком состоянии находятся данные.

 

Теперь. Когда есть конкретика Вы можете оценить сложность реализации такого проекта?

 

Если сильно утрировать, вся система с 1000 устройств на одной стороне 10G эзернет кабеля и 1000 узлов ПЛИС на другой должна работать также, как 1000 удаленных устройств подключенных 1000 кабелями каждый к своему микроконтроллеру.

 

Т.е. вся затея служит для того, чтобы не "тащить" 1000 кабелей и не использовать 1000 микроконтроллеров, а обойтись одним кабелем, ПЛИСиной и 10G приемопередатчиками на обоих сторонах кабеля

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

Share this post


Link to post
Share on other sites
Допустим каждый из тысячи узел ПЛИС просто каждые 10 мкс считывает байт за байтом инфу из своего дампа (64 байта) памяти 10G приемника, делает операцию XOR с некоей константой и записывает в память 10G передатчика.

 

Такая задача имеет решение. Но для её решения не нужно 1000 узлов. Ядро 10Gb ethernet выдаёт обычно 64 бита на частоте ~156Мгц. Далее XOR с константой, запись в промежуточный регистр и вывод на ядро передатчика в том же виде (64 бит ~156Мгц). Глубина конвейера - 1 такт, частота работы ~156Мгц.

 

Просто немного смешно. Это такая пушка по воробьям))

Edited by Inanity

Share this post


Link to post
Share on other sites

Приветствую!

 

...

Просто немного смешно. Это такая пушка по воробьям))

Невнимательно читаете к сожалению столь немногочисленные и неоднозначные условия задачи - отсюда такие поспешные и "смешные" выводы. А TC то и обрадуется.

 

Удачи! Rob.

 

 

Share this post


Link to post
Share on other sites
Такая задача имеет решение. Но для её решения не нужно 1000 узлов.

...

Просто немного смешно. Это такая пушка по воробьям))

Вот опять "снова здорова".

Да плевать, что "из пушки по воробьям", плевать, что можно НЕ решать такую задачу.

Плевать что с помощью разных хаков можно свести задачу к меньшей размерности.

ПЛЕВАТЬ.

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

 

И потом, я же сказал, что пример с "ХОR" вымышленный.

В реальности же каждый узел ПЛИС будет целым микроконтроллером и обработка дампа будет описываться достаточно большой прогой на Си.

 

Но с точки зрения идеологии построения системы, с точки зрения архитектуры НЕ ВАЖНО, будет ли "программа обработки" просто XOR-ом или большой программой.

 

Это понятно?

 

Я сначала думал для обеспечения "параллелизма" поставить 1000 маленьких микроконтроллеров.

Но потом вспомнил, что можно создать эти самые микроконтроллеры внутри одной ПЛИС

 

Теперь понятно "откуда ноги растут"?

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

Share this post


Link to post
Share on other sites
Теперь понятно "откуда ноги растут"?

Понятно что ноги пустились вскачь!

Еще на первой странице Вам сказали - более или менее реальную задачу надо обсчитать от начала до конца: что с какой скоростью откуда загружается, что как потом представляется внутри ПЛИС передатчика, как потом восстанавливать данные в ПЛИС приемнике, сколько на это будет затрачено времени, ресурсов и т.д. И в итоге, что будет в выходном потоке куда и как идти.

Теперь у Вас появились микроконтроллеры, которые Вы хотите запихнуть в ПЛИС или заменить микроконтроллеры узлами ПЛИС, не суть важно.

Нет, так можно сварить только одну кашу - в голове.

Разгребайте авгиевы конюшни, рисуйте структуру своей гипотетической системы, расставляйте времена, порядок представления данных, желаемый вид в оконечном устройстве и тогда лишь преступайте к вопросам о "влезет не влезет?".

Share this post


Link to post
Share on other sites
Вот опять "снова здорова"...

Ну на самом деле информации у Вас уже достаточно чтобы самому двигать дальше. Trade off у вас такой. С одной стороны данные идут потоком 10гиг в секунду,

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

Из чего можно смело строить архитектуру. Сложность алгоритма вам известна,скорость вычисления тоже, следовательно время затрачиваемое блоком на обработку известно.

Вот это время и будет той самой константой, в течение которой данные не должны обновляться.

 

Пример расчета. Скажем время алгоритма T, число байт B, число модулей N = T*1e10/(B*8)

В цифрах, пускай алгоритм занимает T = 2мкс, число байт B = 256.

N = 2e-6*1e10/(256*8) = 2e-6*1e10/2e3 = 1e-6*1e10*1e-3 = 10 модулей... хи хи.

 

Что такое 2 мкс, для сравнения Microblaze имеет производительность 400MIPS на Kintex,

то есть за 2мкс он выполнит 800 команд.

Edited by twix

Share this post


Link to post
Share on other sites
Теперь у Вас появились микроконтроллеры, которые Вы хотите запихнуть в ПЛИС

А что такого? Это было очевидно с самого начала.

И потом.

Я читал в интернете, что сейчас любой даже подросток-ПЛИСовод сможет реализовать в ПЛИС кучу параллельно работающих микроконтроллеров. Что это задача даже не мидл-уровня. А ниже.

 

Почему Вас так поразило, что каждый "узел" ПЛИС - будет микроконтроллером?

 

Не понимаю :laughing:

 

Или это для Вас ПРИНЦИПИАЛЬНО важно, чем будет узел? :05:

 

рисуйте структуру своей гипотетической системы

Вот она cMfvXx6Z.jpg

 

расставляйте времена

 

Расставил

Допустим каждый из тысячи узел ПЛИС просто каждые 10 мкс считывает байт за байтом инфу из своего дампа (64 байта) памяти 10G приемника, делает операцию XOR с некоей константой и записывает в память 10G передатчика.

Приемник и передатчик никак не синхронизируются между собой и с узлами. Узлы в ПЛИС также работают совершенно независимо от других узлов, 10G-приемника и 10G-передатчика

Каждый просто ТУПО делает свою работу не взирая на то, в каком состоянии находятся данные.

 

 

Share this post


Link to post
Share on other sites
Или это для Вас ПРИНЦИПИАЛЬНО важно, чем будет узел?

Лично для меня - не принципиально, так как я не исполнитель. Для Вас должно быть принципиально.

Очень много зависит от того, что за "микроконтроллер" Вы попытаетесь создать в количестве 1000 штук в одной ПЛИС.

Если это будет Ваш конечный автомат, занимающий 300 ЛЭ - да не вопрос - ищите ПЛИС.

А если стандартный ниос\микроблейз тут есть большущие сомнения в количестве реализуемых микроконтроллеров.

Share this post


Link to post
Share on other sites
Лично для меня - не принципиально, так как я не исполнитель. Для Вас должно быть принципиально.

Очень много зависит от того, что за "микроконтроллер" Вы попытаетесь создать в количестве 1000 штук в одной ПЛИС.

Если это будет Ваш конечный автомат, занимающий 300 ЛЭ - да не вопрос - ищите ПЛИС.

А если стандартный ниос\микроблейз тут есть большущие сомнения в количестве реализуемых микроконтроллеров.

 

Microblaze MCS несколько сотен можно размножить на частоте 200 MHz в 325t. В крупной Плис тысячу.

Троллю желаю расширить кругозор, скучно стало читать.

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