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

Профессионал
    
Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565

|
Цитата(Студент заборстроительного @ Dec 23 2017, 14:12)  Память должна быть разбита на 1000 сегментов и доступ к каждому сегменту должен быть возможен НЕЗАВИСИМО от других ПЛИСина должна читать из 1000 дампов/сегментов ОДНОВРЕМЕННО и обрабатывать 1000 потоков параллельно и потом формированные данные 1000 потоков параллельно: каждый узел обработки пишет, читает собрабатывает свой дамп. Берёте ПЛИС Xilinx у которой количество BRAM > 1000 (Kintex7, Vertex7...) и организовываете на ней двухпортовую память. Цитата(Студент заборстроительного @ Dec 23 2017, 14:12)  Или описанные мной задачи решаются как-то иначе? Может память вообще не нужна? В ПЛИС же не только 1000 ОЗУ можно сделать, но и 1000 АЛУ. Зачем складывать в память и асинхронно обрабатывать, когда пакет можно сразу отправлять на обработку соответствующему АЛУ синхронно?
|
|
|
|
|
Dec 23 2017, 12:13
|
Местный
  
Группа: Участник
Сообщений: 317
Регистрация: 16-09-17
Пользователь №: 99 334

|
Цитата(_4afc_ @ Dec 23 2017, 15:09)  Берёте ПЛИС Xilinx у которой количество BRAM > 1000 (Kintex7, Vertex7...) и организовываете на ней двухпортовую память. Спасибо. Но не очень понятно. Я нуб в ПЛИСах. Я понял только что мою задачу можно реализовать на ПЛИС. Так? Цитата(_4afc_ @ Dec 23 2017, 15:09)  Может память вообще не нужна? В ПЛИС же не только 1000 ОЗУ можно сделать, но и 1000 АЛУ. Зачем складывать в память и асинхронно обрабатывать, когда пакет можно сразу отправлять на обработку соответствующему АЛУ синхронно? Не знаю. Я нуб в ПЛИС. А если память не нужна, то где будет формироваться пакет для отправки по 10G эзернету? И как будет выполняться сериализация/десереализация?
Сообщение отредактировал Студент заборстроительного - Dec 23 2017, 12:14
|
|
|
|
|
Dec 23 2017, 13:36
|
Знающий
   
Группа: Участник
Сообщений: 916
Регистрация: 3-10-08
Из: Москва
Пользователь №: 40 664

|
Цитата(Студент заборстроительного @ Dec 23 2017, 15:09)  Скажите своими словами Нет. Своими словами: "Эта задача не для вас. Пойдите и получите немного образования".
|
|
|
|
|
Dec 23 2017, 18:28
|
Местный
  
Группа: Участник
Сообщений: 317
Регистрация: 16-09-17
Пользователь №: 99 334

|
Цитата(one_eight_seven @ Dec 23 2017, 16:36)  Нет. Своими словами: "Эта задача не для вас. Пойдите и получите немного образования". Скажите хотя бы это реализуемо на ПЛИС так как я описал? Прием потока данных по 10G эзернету и его парсинг в 1000 потоков с помощью ПЛИС? Цитата(one_eight_seven @ Dec 23 2017, 16:36)  Эта задача не для вас. Естественно. Мы наймём ПЛИСовода со стороны. Мне нужно просто ТЗ написать. Вот и выясняю: реализуемо это или нет: чтобы 1000 узлов ПЛИС читали данные из памяти параллельно, в 1000 потоков, а приемопередатчик, чтобы читал последовательно. Все подряд. Не замечая границ дампов
|
|
|
|
|
Dec 23 2017, 18:41
|
Местный
  
Группа: Свой
Сообщений: 256
Регистрация: 3-05-05
Из: г. Волжский
Пользователь №: 4 714

|
QUOTE (Студент заборстроительного @ Dec 23 2017, 14:12)  Поясню... То что Вы описали легко реализует специалист среднего уровня. ПЛИС для того и созданы чтобы создавать десятки, сотни и тысячи независимых узлов, которые работают параллельно. С доступом памяти тоже самое, не проблема сделать двух, трех... сто портовую память. Полагаю если Вы пишете ТЗ, Вам надо просто написать что Вы хотите, и пускай ПЛИСовод сам решает каким образом это реализовать. И не заморачивайтесь над вопросами реализуемости. Тоже самое ПЛИСовод сам подберет элементную базу под проект, это его прямая задача.
|
|
|
|
|
Dec 23 2017, 21:14
|
Местный
  
Группа: Участник
Сообщений: 317
Регистрация: 16-09-17
Пользователь №: 99 334

|
Цитата(vvvv @ Dec 23 2017, 21:41)  То что Вы описали легко реализует специалист среднего уровня. Отлично. Цитата(vvvv @ Dec 23 2017, 21:41)  ПЛИС для того и созданы чтобы создавать десятки, сотни и тысячи независимых узлов, которые работают параллельно. Я слышал об этом. Поэтому и пришло в голову "ПЛИС" когда размышлял о реализации задачи Цитата(vvvv @ Dec 23 2017, 21:41)  С доступом памяти тоже самое, не проблема сделать двух, трех... сто портовую память. Вот "память" у меня больше всего сомнений вызывает. Про двухпортовую память я слышал. А про N-портовую - нет. Вы мне скажите. Это реально? Чтобы 1000 схемных узлов ОДНОВРЕМЕННО (ПАРАЛЛЕЛЬНО) считывали данные из памяти. Причем из РАЗНЫХ дампов Я просто хочу понять, как это выглядит ФИЗИЧЕСКИ: из одной микросхемы памяти торчат 1000 штук 20 битных шин адреса? Ведь получается 20000 контактов?Цитата(vvvv @ Dec 23 2017, 21:41)  Полагаю если Вы пишете ТЗ, Вам надо просто написать что Вы хотите, и пускай ПЛИСовод сам решает каким образом это реализовать. И не заморачивайтесь над вопросами реализуемости. Тоже самое ПЛИСовод сам подберет элементную базу под проект, это его прямая задача. Я "заморачиваюсь", чтобы не попасть впросак. Не написать ТЗ такое, что его будет невозможно реализовать даже на самой современной элементной базе. Но раз Вы говорите, что ничего сверх естественного в этой задаче нет. Все вполне реализуемо. И с проектом справится даже "середнячок" по ПЛИС, то тогда вопрос закрыт. Спасибо за помощь.
Сообщение отредактировал Студент заборстроительного - Dec 23 2017, 21:45
|
|
|
|
|
Dec 24 2017, 03:56
|
Местный
  
Группа: Свой
Сообщений: 256
Регистрация: 3-05-05
Из: г. Волжский
Пользователь №: 4 714

|
QUOTE (jcxz @ Dec 24 2017, 01:03)  А может где и спорит сам с собой?  Как любят все ставить диагнозы. У меня параллельно не менее 3 ников, и вы не поверите сколько ников я тут уложил на форуме в борьбе за свободу ежиков. Не менее двух десятков точно. И большая часть из них "свои". QUOTE (Студент заборстроительного @ Dec 24 2017, 00:14)  Про двухпортовую память я слышал. А про N-портовую - нет. Вы мне скажите. Это реально? Если объем памяти небольшой, то делается "в лоб" на внутренней памяти ПЛИС. В Вашем случае это 1000 блоков двухпортовой памяти. Если объем памяти большой, то создается куча FIFO и блок обмена с внешней DDR3,4 памятью. Ну да 1000 блоков FIFO будут иметь "тысячи проводов" к блоку обмена с внешней памятью.
|
|
|
|
|
Dec 24 2017, 04:29
|
Профессионал
    
Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596

|
при проектировании в ПЛИС, нужно знать "сколько вешать в граммах", т.е. считать биты и такты. ваша проблема в том, что вы рисуете 1000 одновременных обработчиков, без четкого понимания в их необходимости. может, будет достаточно одного? или десяти? или ста? почему 1000? как считали и чем обосновываете необходимость? далее про память. в ПЛИС не надо ничего хранить, нужно всё обрабатывать "на лету". если по алгоритму обрабатывать "на лету" невозможно, и рисуется необходимость хранить - нужна внешняя память. и опять нужно считать биты и такты, поскольку доступ в память - всегда "бутылочное горлышко" с точки зрения пропускной способности.
для начала, посчитайте, сколько пакетов в секунду вам нужно обрабатывать. какой минимальный и максимальный размер пакета. у вас в ПЛИС будет множество обрабатывающих блоков. прикиньте, какой разрядности будут их входные и выходные шины данных, и на какой частоте вы сможете работать. опять пересчитайте биты и такты, и проверьте что вы обеспечиваете нужную производительность для минимального и максимального размера пакета. проверьте есть ли запас.
ну а дальше приходите сюда уже с выкладками и может, со схемой обрабатывающих блоков, тогда будут более конкретные советы.
про 1000-портовую память забудьте, так никто не делает. можно конечно сделать "для галочки" просто из прихоти что "так захотелось", но работать это будет с очень низкой тактовой, которая вас сразу не устроит по производительности.
для максимальной производительности, пакет в ПЛИС формируется не в памяти, а "на лету". например. с АЦП есть поток данных. он нарезается по 1024 байта, перекладывается на 32-битную шину данных, т.е. пакет "длится" 256 тактов. это блок формирования данных. далее данные с этого блока потоком поступают на блок "дописывания к пакету заголовка". Блок "дописывания к пакету заголовка" формирует в свою выходную шину N штук тактов с данными заголовка, после чего прозрачно передает данные со своего входа на выход (данные АЦП). далее этот поток передается в блок ethernet MAC ethernet MAC потоком передает данные наружу, дописывая впереди перед пакетом start sequence, выдавая биты пакета в линию наружу, вычисляя "на лету" FCS, и выдавая биты FCS в конце кадра ethernet. и заметьте, ничего нигде специально в некоей "памяти" не хранится. а как же дописываемый заголовок UDP/IP? так он на половину из констант, которые интегрируются в конечный автомат, а вторая половина хранится в регистрах, которые настраиваются при запуске системы.
--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|