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

 
 
5 страниц V  < 1 2 3 4 5 >  
Reply to this topicStart new topic
> Bus Master DMA для PCIe
doom13
сообщение Oct 13 2015, 15:04
Сообщение #31


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

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



На другом ПК (на котором и видео работает в режиме 5 GT/s) моя плата запустилась в режиме Gen 2, только надо было её прошить во флэш и передёрнуть питание ПК. Работу DMA пока не проверил, но, думаю, всё будет ОК. С моей системой какая-то беда, держит линк только в режиме 2.5 GT/s, хотя всё железо одинаковое.
Go to the top of the page
 
+Quote Post
toshas
сообщение Oct 13 2015, 16:59
Сообщение #32


Местный
***

Группа: Свой
Сообщений: 372
Регистрация: 14-02-06
Пользователь №: 14 339



Интересно узнать какую скорость удастся достигнуть.
+ по возможности выкладывайте проект в копилку форума.
Go to the top of the page
 
+Quote Post
doom13
сообщение Oct 14 2015, 14:51
Сообщение #33


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

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



Перебрали систему - плата запустилась на 5 GT/s. Но результат не столь значителен - всего-то удалось получить 8.5 - 8.7 Gbit/s. Тут размер бурст для DMA имеет значение: для burst 16 получаю где-то 7.2 Gbit/s, для burst 256 - 8.5 Gbit/s.
В тестовых точках картина осталать прежней - очень много времени проходит между WLAST и BVALID.
Go to the top of the page
 
+Quote Post
krux
сообщение Oct 14 2015, 15:08
Сообщение #34


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

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



burst 128 попробуйте.
в большинстве случаев PCIe Payload size выставляется по дефолту 128.
т.е. вы одним барстом впишетесь в размер одного пакета PCIe.


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
doom13
сообщение Oct 15 2015, 07:23
Сообщение #35


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

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



Цитата(krux @ Oct 14 2015, 18:08) *
burst 128 попробуйте.
в большинстве случаев PCIe Payload size выставляется по дефолту 128.
т.е. вы одним барстом впишетесь в размер одного пакета PCIe.

Спасибо, попробовал. Но получаю те же 8.5 - 8.7 Gbit/s, что и для burst 256.
Go to the top of the page
 
+Quote Post
doom13
сообщение Oct 15 2015, 18:16
Сообщение #36


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

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



На верхнем слоте PCIe получил пропускную способность моей системы в 9.3 Gbit/s. Проверял ещё на одном ПК, дало такой же результат.
Если сравнивать с резутьтатами для примера Xilinx (xapp1052), то и неплохо, но до максимума в 16 Gbit/s ещё очень далеко.


Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
doom13
сообщение Oct 16 2015, 11:33
Сообщение #37


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

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



Цитата(toshas @ Oct 10 2015, 22:22) *
Можете в pcie-mm ядре встать анализатором на pipe интерфейс (tx и rx) ?

Если можно расскажите тут подробнее, что это (pipe) и как работает? Что можно почитать по данной теме?
xapp1184 достаточно будет?
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Oct 16 2015, 14:33
Сообщение #38


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

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



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

Цитата(doom13 @ Oct 16 2015, 14:33) *
Если можно расскажите тут подробнее, что это (pipe) и как работает? Что можно почитать по данной теме?
xapp1184 достаточно будет?

Нее - в PIPE лезть не нужно - это интерфейс к MGT - toshas наверное имел ввиду шины s_axis_rq_* s_axis_rc_* на самой pcie корке которая внутри bridge
Через эти шины TLP идут request/completion от bridge логики к pcie корке. Цепляете туда ChipScope - а еще лучше логер который будет Вам скидывать TLP header-ы и смотрите что куда тормозит. Конечно это сначало проще было бы на симе сделать.

Тут либо сам bridge не заточен на макс thruput, ну или DMA например не успевает подкачивать дескрипторы.
Можно попробовать разместить дескрипторы в памяти FPGA или выделить один большой непрерывный кусок физ памяти (>1MB) и все дескрипторы залинковать на него. И посмотреть изменится ли скорость или нет.
Если не изменится - то тогда или пробовать на дугой мамке, или скорее всего bridge не заточен на макс thruput, ну или универсальная причина №3 - ХЗ sm.gif.

Успехов! Rob.
Go to the top of the page
 
+Quote Post
toshas
сообщение Oct 16 2015, 17:14
Сообщение #39


Местный
***

Группа: Свой
Сообщений: 372
Регистрация: 14-02-06
Пользователь №: 14 339



Нет я как раз предлагал посмотреть трафик в системе (какие пакеты проходят mgt).
Но в принципе не важно с какой стороны начинать разбираться.
По факту надо отследить всю цепочку:
MGT -1.(txdata/rxdata)- PCIE -2.(ll/s_axi) - MMcore -3.(axi)- DMA -4.(axi)- source
Так можно найти, кто причина простоя, но может оказаться, что это просто следствие накладных расходов цепочки такой длины.
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Oct 16 2015, 17:55
Сообщение #40


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

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



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

Цитата(toshas @ Oct 16 2015, 20:14) *
Нет я как раз предлагал посмотреть трафик в системе (какие пакеты проходят mgt).
Но в принципе не важно с какой стороны начинать разбираться.
По факту надо отследить всю цепочку:
MGT -1.(txdata/rxdata)- PCIE -2.(ll/s_axi) - MMcore -3.(axi)- DMA -4.(axi)- source
Так можно найти, кто причина простоя, но может оказаться, что это просто следствие накладных расходов цепочки такой длины.

Ой - разбирается на уровне PIPE это труба дело sm.gif . DLP layer, K-коды, AK-и NAK-и постоянно туда сюда снуют. ужас! wacko.gif
Проще сначала на TLP layer посмотреть. Так как операция WRITE на PCIE не требует completion то тут или в bridge для PCIe настройки буферов зажаты или потери времени на чтение/update дескрипторов велики. Все же CDMA разрабатывался для внутреннего употребления а не для PCIe.

Я вот свою железку симулирую - так latency на чтение дескриптора из памяти ~500 нс (x8 gen2) и это при PIPE симуляции и без задержек на стороне модели RC.

Успехов! Rob.
Go to the top of the page
 
+Quote Post
doom13
сообщение Oct 16 2015, 19:45
Сообщение #41


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

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



Цитата(RobFPGA @ Oct 16 2015, 17:33) *
... ну или DMA например не успевает подкачивать дескрипторы.
Можно попробовать разместить дескрипторы в памяти FPGA или выделить один большой непрерывный кусок физ памяти (>1MB) и все дескрипторы залинковать на него. И посмотреть изменится ли скорость или нет.
Если не изменится - то тогда или пробовать на дугой мамке ...

Цитата(RobFPGA @ Oct 16 2015, 20:55) *
... или потери времени на чтение/update дескрипторов велики. Все же CDMA разрабатывался для внутреннего употребления а не для PCIe.

Судя по диаграммам, которые приводил выше (затык после каждого второго burst-a и длительность пропорциональна размеру burst-a), проблема не в размещении дескрипторов в Kernel space memory. Пока использую 32 дескриптора, память под них выделяется в непрерывном куске физической памяти с помощью kmalloc.

Цитата(toshas @ Oct 16 2015, 20:14) *
Нет я как раз предлагал посмотреть трафик в системе (какие пакеты проходят mgt).
Но в принципе не важно с какой стороны начинать разбираться.
По факту надо отследить всю цепочку:
MGT -1.(txdata/rxdata)- PCIE -2.(ll/s_axi) - MMcore -3.(axi)- DMA -4.(axi)- source
Так можно найти, кто причина простоя, но может оказаться, что это просто следствие накладных расходов цепочки такой длины.

Сегодня пытался проследить, кто является источником BVALID, но один из модулей зашифрован и связь теряется. Дальше куча линий с другими названиями и куда смотреть пока не разобрался.
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Oct 16 2015, 21:25
Сообщение #42


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

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



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

BVALID формирует axi_bridge когда видит что очередной AXI пакет полностью и окончательно отправился к праотцам (передан на RC).
Повторюсь - так как для MEM_WRITE на PCIe не требуется completion со сторонв RC то это событие для bridge (окончание отправки пакета)
скорее всего происходит в момент записи последней порции payloda в виде TLP пакета по шине s_axis_rq_* в PCIe корку. При этом пакет TLP сначала попадает во внутренний буфер PCIe корки а затем уж передается в RC, при условии что RC готов принят этих беженцев (есть место в приемных буферах)
Если на стороне RC нет свободных буферов для приема и внутренний дворик корки тоже заполнен то корка снимает s_axis_rq_ready.
Так что подключившись s_axis_rq_* можно посмотреть - есть ли там паузы или это bridge тупит.

Успехов! Rob.
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Oct 18 2015, 20:21
Сообщение #43


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

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



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

Как говорится "Даренному коню в зубы .." а надо заглядывать даже в зад sm.gif Прогнали бы на симуляции все сразу стало бы понятно.

По умолчанию CDMA настроен на глубину очереди запросов адреса=4 (при этом реально выдается 4+2=6 запросов) ну а а потом CDMA шлангует пока не получит ответ/подтверждение. Поменять это безобразие в красивой формочке при конфигурировании CDMA нельзя sad.gif Только через зад коня - ручками
Код
set_property CONFIG.C_WRITE_ADDR_PIPE_DEPTH 8 [get_bd_cells i_axi_cdma]
set_property CONFIG.C_READ_ADDR_PIPE_DEPTH 8 [get_bd_cells i_axi_cdma]

Но один конь карету не помчит - также надо во всех crossbar-ах по пути следования кареты выставить постовых - значение READ_ACCEPTANCE, WRITE_ACCEPTANCE на >=8 (а то по умолчанию там стоит 2 - даже не лошадь - дохлая кляча получается ). Ну и бубенцы на хомут - значения больше 8 ставить смысла нет так как bridge больше 8 запросов в очередь не принимает, а вроде бы соответствующие параметры c_s_axi_num_read/c_s_axi_num_write расположенны слишком глубоко в зад.. read_only sad.gif

Успехов! Rob.

P.S. Ни одно животное не пострадало. Все эксперименты проводились на виртуальной лошади с "заездами" на идеальной трассе (PIPE sim. , BFM RC без задержек); biggrin.gif

Go to the top of the page
 
+Quote Post
doom13
сообщение Oct 19 2015, 06:42
Сообщение #44


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

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



Цитата(RobFPGA @ Oct 18 2015, 23:21) *

А что если у меня используется DMA v7.1 в режиме S2MM (CDMA был в начале)?

Цитата(RobFPGA @ Oct 18 2015, 23:21) *
... также надо во всех crossbar-ах по пути следования кареты выставить постовых - значение READ_ACCEPTANCE, WRITE_ACCEPTANCE на >=8 (а то по умолчанию там стоит 2 ...

Если на рисунке тот параметр, о котором шла речь, то там 8.

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Oct 19 2015, 07:45
Сообщение #45


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

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



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

Цитата(doom13 @ Oct 19 2015, 09:42) *
А что если у меня используется DMA v7.1 в режиме S2MM (CDMA был в начале)?

Думаю что тоже самое - так как CDMA это AXI DMA сконфигурированный в позе 69 через loop-back fifo.
И так и есть - правда тут придется резать бедную лошадь и ковыряется в потрохах - исходниках
Код
axi_dma.vhd
...
-- DataMover outstanding address request fifo depth
constant DM_ADDR_PIPE_DEPTH         : integer := 4;
...


Цитата(doom13 @ Oct 19 2015, 09:42) *
Если на рисунке тот параметр, о котором шла речь, то там 8.

Нет это как раз и есть "бубенцы" а я имел ввиду - axi_interconect/axi_crosbar которые стоят МЕЖДУ DMA и PCIe. Вы же как то объединяете шины DMA M_AXI и M_AXI_SG для подключения к одой шине S_AXI в PCIe bidge?

Успехов! Rob.
Go to the top of the page
 
+Quote Post

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

 


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


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