реклама на сайте
подробности

 
 
> Буфер для PCI Express
doom13
сообщение Sep 2 2015, 05:59
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Приветствую.
Собираю систему для передачи данных от 10G Ethernet по PCIe в ПК (см. рисунок).
Приёмник MAC-уровня для 10G Ethernet пока моделирую Traffic Generator-ом. Прерывание от S2MM FIFO заводится в ПК и обрабатывается драйвером.
Использовал DC FIFO (для перехода между clock domains, Ethernet тактируется 156.25 МГц, PCIe - 250 МГц) и S2MM FIFO (для преобразования AXI4-Stream в AXI4).
S2MM FIFO генерирует прерывание либо по достижению определённого уровня заполнения, либо по приёму очередного пакета данных.
Traffic Generator управляется MicroBlaze (пока, для отладки) и может генерировать пакет 1024*64bit в цикле или постоянно.
Если использую прерывание по заполнению уровня (1024 позиции фифо), то приходится ставить большую задержку между запусками Traffic Generator-а, чтобы
CDMA успевал выгребать данные до накопления новых 1024 позиций, иначе передача фифо забивается и прерывание больше не срабатывает.
Тогда попробовал использовать прерывание по приёму пакета и забирать максимальное число данных кратное 1024 позициям фифо.
Тут Traffic Generator может работать в непрерывном режиме (CDMA постоянно забирает данные), но есть ощущение, что при заполнении фифо Traffic Generator может некоторое
время ожидать следующей передачи.
Вопросы:
1) Правильно ли реализую сам буфер, возможно есть более удобное решение?
2) Как выбрать размер FIFO и размер разовой передачи CDMA с учётом разных скоростей работы FIFO на запись/чтение и времени, требуемого для обработки прерывания и запуска CDMA драйвером?

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
RobFPGA
сообщение Sep 28 2015, 14:23
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



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

Для начала почитайте LogiCORE IP AXI DMA v6.00.a Product Guide (pg021_axi_dma.pdf) В более новых доках отсутствуют понятные картинки про ring buffer. sad.gif

Я обычно ставлю FIFO как минимум на пару пакетов максимального размера. Конкретно это сильно зависит от конфигурации системы - соотношения средней полосы PCIe r к полосе траффика 10G, другой активности через этот же сегмент PCIe шины, и.т.д. и.т.п. Ну и также Ваших хотелок по допустимым потерям пакетов.

DMA в режиме SG "кеширует" в локальном FIFO 3 дескриптора, сглаживая latecy при чтении дескрипторов. Однако это может быть недостаточно если предполагается трафик с большим количеством малых пакетов и при этом еще и желательно разбивка этих пакетов на отдельные буфера в системной памяти В этом случае можно дескрипторы располагать и в памяти FPGA . Но при этом существенно усложняется драйвер (для гарантированного получения пиковых характеристик).
Есть еще куча промежуточных вариантов, но это уже все экзотика - Опят же тут надо четко представлять себе требования к системе в целом.

Вариант N2 - Вы можете и миллион дескрипторов закольцевать - лишь бы памяти хватило - настроить iterrupt coalesing в DMA и потом не спеша перебирать эти "четки" выискивая в пришедших горах мусо... ..данных крупицы истины. Но опят же ничто не даром под луной - latecy обработки пакетов в этом случае будет большой.

Сложная структура дескрипторов в сетевых картах позволяет разгрузить софт от рутинных дел - например разгребать траффик от разных источников и переслать напрямую его на выделенный проц. в многопроцессорных системах, приоритеты пересылки для разного типа пакетов, и кучу других приятных плюшек. Никто не мешает Вам сделать все тоже самое если нужно и даже больше - главное тут понять - а оно нам нужно? wacko.gif

Начните с малого/простого - запустите 10G Ethernet sm.gif

Успехов! Rob.
Go to the top of the page
 
+Quote Post
doom13
сообщение Sep 28 2015, 15:07
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(RobFPGA @ Sep 28 2015, 17:23) *
Для начала почитайте LogiCORE IP AXI DMA v6.00.a Product Guide (pg021_axi_dma.pdf) В более новых доках отсутствуют понятные картинки про ring buffer. sad.gif

Спасибо, смотрю, есть картинки, которых у меня не было.

Цитата(RobFPGA @ Sep 28 2015, 17:23) *
Я обычно ставлю FIFO как минимум на пару пакетов максимального размера. Конкретно это сильно зависит от конфигурации системы - соотношения средней полосы PCIe r к полосе траффика 10G, другой активности через этот же сегмент PCIe шины, и.т.д. и.т.п. Ну и также Ваших хотелок по допустимым потерям пакетов.

DMA в режиме SG "кеширует" в локальном FIFO 3 дескриптора, сглаживая latecy при чтении дескрипторов. Однако это может быть недостаточно если предполагается трафик с большим количеством малых пакетов и при этом еще и желательно разбивка этих пакетов на отдельные буфера в системной памяти В этом случае можно дескрипторы располагать и в памяти FPGA . Но при этом существенно усложняется драйвер (для гарантированного получения пиковых характеристик).
Есть еще куча промежуточных вариантов, но это уже все экзотика - Опят же тут надо четко представлять себе требования к системе в целом.

Вариант N2 - Вы можете и миллион дескрипторов закольцевать - лишь бы памяти хватило - настроить iterrupt coalesing в DMA и потом не спеша перебирать эти "четки" выискивая в пришедших горах мусо... ..данных крупицы истины. Но опят же ничто не даром под луной - latecy обработки пакетов в этом случае будет большой.


Система будет состоять из приёма 10G Ethernet трафика и передачи его по PCIe в ПК. По 10G Ethernet принимается непрерывный поток данных от плат АЦП. Соединение "точка-точка" - мусор отсутствует, только полезные данные.

Цитата(RobFPGA @ Sep 28 2015, 17:23) *
Начните с малого/простого - запустите 10G Ethernet sm.gif

Это уже готово (возможно, понадобится усложнить систему, но данные с платы на плату погонял).
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Sep 28 2015, 15:47
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



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

Цитата(doom13 @ Sep 28 2015, 18:07) *
Система будет состоять из приёма 10G Ethernet трафика и передачи его по PCIe в ПК. По 10G Ethernet принимается непрерывный поток данных от плат АЦП. Соединение "точка-точка" - мусор отсутствует, только полезные данные.

Увы - пока я Вашего слона представляю как нечто похожее на веревку wink.gif

Плат АЦП у Вас несколько? Каков траффик средний/пиковый? Будет ли lose-less режим 10G MAC? каков протокол передачи данных/управления платами? Нужен ли контроль целостности/непрервыности данных? необходима ли заливка потока данных каждого АЦП в независимый буфер? Нужена ли преобработка/статистика данных? Режимы работы? ...................

Ну а если по простому гнать пакеты в одну сторону то 800-900 MB/s можно получить без проблем. Естетсвенно если у Ваc слон хотябы о 4 ногах и желателно в версии 2 sm.gif

Успехов! Rob.


Go to the top of the page
 
+Quote Post
doom13
сообщение Sep 28 2015, 16:08
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(RobFPGA @ Sep 28 2015, 18:47) *

Что-то мы ушли от темы. Считаем, что есть генератор трафика (просто пакеты данных) с максимальным потоком данных 10Gbit/s, шина данных 64 бита, тактовая частота 156.25 MHz и надо всё это запихнуть в ПК по PCIe. Пока сделал, как на рисунке выше, но вижу, что это неправильно, и начинаю попытки запустить DMA S2MM. А тут есть вопросы, как правильно идет формирование и работа с дескрипторами.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- doom13   Буфер для PCI Express   Sep 2 2015, 05:59
- - krux   тупое S2MM fifo вам на 10G не поможет. скорости не...   Sep 2 2015, 06:07
|- - doom13   Цитата(krux @ Sep 2 2015, 09:07) посмотри...   Sep 2 2015, 06:19
- - krux   ЦитатаА что не так с FIFO? формально, с FIFO всё н...   Sep 2 2015, 08:52
|- - doom13   Цитата(krux @ Sep 2 2015, 11:52) формальн...   Sep 2 2015, 09:28
- - krux   ЦитатаМануал на Intel 82599 10 GbE Controller прос...   Sep 2 2015, 16:51
|- - doom13   Цитата(krux @ Sep 2 2015, 19:51) в реальн...   Sep 3 2015, 06:46
- - krux   1 таблица дескрипторов - это 128 буферов, на 128 S...   Sep 3 2015, 08:32
- - doom13   Возник вопрос, в какой памяти должна размещаться т...   Sep 28 2015, 07:05
|- - RobFPGA   Приветствую! Цитата(doom13 @ Sep 3 2015,...   Sep 28 2015, 12:23
|- - doom13   Цитата(RobFPGA @ Sep 28 2015, 15:23) Для ...   Sep 28 2015, 13:00
|- - doom13   Цитата(RobFPGA @ Sep 28 2015, 18:47) Ну а...   Sep 28 2015, 18:54
- - Golikov A.   с 2 таблицами проще, что софт сможет монопольно не...   Sep 29 2015, 06:16
|- - RobFPGA   Приветствую! Цитата(Golikov A. @ Sep 29 ...   Sep 29 2015, 07:10
- - doom13   Столкнулся с тем, что ядро Linux не хочет выделять...   Sep 30 2015, 14:28
|- - RobFPGA   Приветствую! Цитата(doom13 @ Sep 30 2015...   Sep 30 2015, 16:03
|- - doom13   Цитата(RobFPGA @ Sep 30 2015, 19:03) При...   Sep 30 2015, 16:34
|- - RobFPGA   Приветствую. Цитата(doom13 @ Sep 30 2015, 19...   Sep 30 2015, 16:42
- - krux   ЦитатаКак понимаю, чтоб DMA мог работать по цепочк...   Sep 30 2015, 17:27
- - doom13   Хорошо. Поясните мне вот это: AXI to PCIe Bridge и...   Sep 30 2015, 19:56
|- - RobFPGA   Приветствую! Цитата(doom13 @ Sep 30 2015...   Sep 30 2015, 20:06
- - doom13   Получается, для системной памяти Aperture - это ра...   Sep 30 2015, 20:44
|- - RobFPGA   Приветствую! Цитата(doom13 @ Sep 30 2015...   Sep 30 2015, 21:13
|- - doom13   Цитата(RobFPGA @ Oct 1 2015, 00:13) Ноль ...   Oct 1 2015, 09:25
- - doom13   Нашёл, dmidecode показывает всю системную информац...   Oct 1 2015, 18:44
- - doom13   Для ядра AXI Bridge for PCIe Gen 3 есть такая зако...   Oct 2 2015, 13:31
|- - RobFPGA   Приветствую! Цитата(doom13 @ Oct 2 2015,...   Oct 2 2015, 14:49
- - doom13   Что-то я вообще запутался, как оно работает. А как...   Oct 2 2015, 16:07
- - krux   ЦитатаЧто-то я вообще запутался, как оно работает....   Oct 2 2015, 17:56
- - doom13   Цитата(krux @ Oct 2 2015, 20:56) зависит ...   Oct 2 2015, 19:52
- - RobFPGA   Приветствую! Цитата(doom13 @ Oct 2 2015,...   Oct 2 2015, 21:03
- - doom13   Цитата(RobFPGA @ Oct 3 2015, 00:03) Поэто...   Oct 3 2015, 08:29
- - doom13   Цитата(RobFPGA @ Oct 3 2015, 00:03) Цита...   Oct 6 2015, 08:59


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 21:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01445 секунд с 7
ELECTRONIX ©2004-2016