dde29 0 28 октября, 2022 Опубликовано 28 октября, 2022 · Жалоба On 10/27/2022 at 2:36 AM, RobFPGA said: Для того чтобы транзакции шли нужно для начала убедится что: линк поднялся, система увидела и сконфигурировала BARы, разрешены соответствующие транзакции (IO, MEM, Master) в регистре command PCIe корки. Вы оказались правы! Прочитав конфигурационное пространство командой: hexdump /sys/bus/pci/device/0000:01:00.0/config оказалось, что командный регистр, находящийся по адресу 0x04 гол как сокол (рис.1), а значит флаги I/O Space Enable, Memory Space Enable, Bus Master Enable сброшены в ноль. Аналогичную картину я увидел JTAGом, глядя на регистр cfg_function_status (рис.2) предоставляемый коркой pcie3_ultrascale. Соответствующие флаги Физической Функции 0 были сброшены (Функцию 1 я и не использую, на нее пофиг). С помощью команды sudo setpci -s 01:00.0 04.B=07 попробовал установить все 3 флага. Прочитав после этого снова конфигурационное пространство, убедился что в командном регистре заветную 7-ку (рис.3) Посмотрев JTAGом регистр cfg_function_status, еще раз железно убедился в установленных флагах... После этого отправляя на resource0 мимо всякого драйвера в map я увидел заветные транзакции чтения (рис.4) и записи (рис.5) Смотрел JTAGом цепляясь на интерфейс Completer Request (CQ). Так что, текущая проблема решена, буду двигаться дальше... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dmitry-tomsk 0 6 декабря, 2022 Опубликовано 6 декабря, 2022 · Жалоба Коллеги, у меня проблема попроще. Дошли руки до своего контроллера для kintex-7 325t. Пишу пакет mwr64 в корку - а ответ тишина. Драйвер под win10 - jungo 12 с ftp. Лочу память через dwStatus = WDC_DMASGBufLock(hDev, pBuf, DMA_FROM_DEVICE | DMA_ALLOW_64BIT_ADDRESS, size, &pDma). С начала страницы передаю один пакет 128 байт, а в памяти нули. Пакет на картинке, bus master enable в 1. Порядок байт в данных переставляю, а в адресе нет. Может в этом проблема? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dmitry-tomsk 0 13 декабря, 2022 Опубликовано 13 декабря, 2022 · Жалоба Ошибку нашёл, только скорость ввода в пк получилась не больше чем 3020 МБ/s. Хотелось бы узнать, у кого какая получилась? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 58 14 декабря, 2022 Опубликовано 14 декабря, 2022 · Жалоба Это в DMA режиме или в PIO? Конфигурация линка какая (сколько лейнов в линке)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dmitry-tomsk 0 14 декабря, 2022 Опубликовано 14 декабря, 2022 · Жалоба 5 hours ago, dxp said: Это в DMA режиме или в PIO? Конфигурация линка какая (сколько лейнов в линке)? dma, pcie 2.0 x8 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 58 14 декабря, 2022 Опубликовано 14 декабря, 2022 · Жалоба На Gen2 x4 (кит AC701, Artix7) чистая запись (заливал буфер 4 МБ с генератора трафика -- экспериментировал), выходило 14.5 Gbps, при теоретически достижимой 14.7 Gbps (там MPS был 256 (на серверный проц лилось)). Если MPS = 128 (значительно более распространённый вариант, почти на всех бытовых/офисных PC такое значение), то помедленнее будет процентов на 10. Ваши 3020 MBps = 24.16 Gbps. Если привести к х4, то 12.08 Gbps. Если отнять 10% от 14.5 (для MPS = 128), то выходит порядка 13 Gpbs. Ну, т.е. не предел, но не сказать, что низкая скорость, имхо. Да, эти 14.5 Gpbs -- это было на низкоуровневом варианте, где из корки торчат AXI4-Stream интерфейсы, и работаешь на уровне TLP. Если вариант AXI4-PCIe Bridge, то там оно помедленнее работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
faa 4 14 декабря, 2022 Опубликовано 14 декабря, 2022 · Жалоба 1 час назад, dmitry-tomsk сказал: dma, pcie 2.0 x8 Размер TLP какой? ЕМНИП, для gen2 x8 теоретический 3814 МБ/сек, для TLP 128 байт практический предел 3225 МБ/сек (МБ - 2**20 байт). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dmitry-tomsk 0 14 декабря, 2022 Опубликовано 14 декабря, 2022 · Жалоба 11 minutes ago, faa said: Размер TLP какой? ЕМНИП, для gen2 x8 теоретический 3814 МБ/сек, для TLP 128 байт практический предел 3225 МБ/сек (МБ - 2**20 байт). Благодраю откликнувшихся. TLP - 128, корка своя, пакеты по два мегабайта, поток напрямую, кольцевой буфер в ПК - 16 МБайт. Думал, что влияет опрос готовности, но не похоже. Что-то нужно придумать, чтобы отловить большие простои на s_axis аппаратного блока pcie, чтобы узкое место найти Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
faa 4 14 декабря, 2022 Опубликовано 14 декабря, 2022 · Жалоба 7 минут назад, dmitry-tomsk сказал: Благодраю откликнувшихся. TLP - 128, корка своя, пакеты по два мегабайта, поток напрямую, кольцевой буфер в ПК - 16 МБайт. Думал, что влияет опрос готовности, но не похоже. Что-то нужно придумать, чтобы отловить большие простои на s_axis аппаратного блока pcie, чтобы узкое место найти Платформа какая? Intel/AMD/AARCH64? Поколение? ОС lin/win? Опрос готовности - это кто кого и через что опрашивает? Тут же и по этому же PCIe? Мы мониторили готовности всех фифо, готовности корки, размеры буферов в корке. И в драйвере кеширование как? А MWI вкл/выкл? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dmitry-tomsk 0 14 декабря, 2022 Опубликовано 14 декабря, 2022 · Жалоба 5 hours ago, faa said: Платформа какая? Intel/AMD/AARCH64? Поколение? ОС lin/win? Опрос готовности - это кто кого и через что опрашивает? Тут же и по этому же PCIe? Мы мониторили готовности всех фифо, готовности корки, размеры буферов в корке. И в драйвере кеширование как? А MWI вкл/выкл? Платформа intel i7 8700, чипсет не помню, jungo windows 10 драйвер. Кэширования не включал, после получения адреса очередного пакета в кольцевом буфере через pio делаю WDC_DMASyncIo(pDma). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 58 15 декабря, 2022 Опубликовано 15 декабря, 2022 · Жалоба На каждый пакет ответ через PIO? А о получении пакета хост как узнаёт? Прерывание? Какая частота поступления пакетов? Какая загрузка CPU при этом? Вы писали, что есть паузы на входном потоковом интерфейсе PCIe IP ядра. Одно из объяснений в том, что хост тормозит с приёмом -- кредиты не выдаёт (кстати, можно вывести кредиты по заголовками и данным, посмотреть, что там, если снижаются до нуля, то в этом и причина), а тормозит, потому что загружен по самое не могу -- скачет, например, в прерываниях на каждый пакет. Хотя от загрузки CPU выдача кредитов не должна напрямую страдать -- это ж аппаратура делает. Другое дело, что контроллер памяти может быть сильно загружен частыми обращениями, тогда заливка в память со стороны PCIe будет тормозиться. В общем, монитор за кредитами должен дать тут ответ. Прерывание -- дорогой ресурс, их надо экономно использовать. Мы пока не настроили механизм оптимальной "плотности" прерываний, тоже скорость не выжималась, в хост упиралась, хотя PIO там почти не было. PIO, кстати, тоже медленная операция, на каждый пакет её метать весьма неэффективно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dmitry-tomsk 0 15 декабря, 2022 Опубликовано 15 декабря, 2022 · Жалоба 5 hours ago, dxp said: На каждый пакет ответ через PIO? А о получении пакета хост как узнаёт? Прерывание? Какая частота поступления пакетов? Какая загрузка CPU при этом? Вы писали, что есть паузы на входном потоковом интерфейсе PCIe IP ядра. Одно из объяснений в том, что хост тормозит с приёмом -- кредиты не выдаёт (кстати, можно вывести кредиты по заголовками и данным, посмотреть, что там, если снижаются до нуля, то в этом и причина), а тормозит, потому что загружен по самое не могу -- скачет, например, в прерываниях на каждый пакет. Хотя от загрузки CPU выдача кредитов не должна напрямую страдать -- это ж аппаратура делает. Другое дело, что контроллер памяти может быть сильно загружен частыми обращениями, тогда заливка в память со стороны PCIe будет тормозиться. В общем, монитор за кредитами должен дать тут ответ. Прерывание -- дорогой ресурс, их надо экономно использовать. Мы пока не настроили механизм оптимальной "плотности" прерываний, тоже скорость не выжималась, в хост упиралась, хотя PIO там почти не было. PIO, кстати, тоже медленная операция, на каждый пакет её метать весьма неэффективно. Прерывания не используются пока, через pio идёт опрос регистра состояния, dma от этого не зависит, кроме случая, когда буфер в пк полный. Увеличение размера буфера не влияет. Подозрение на функцию WDC_DMASyncIo, может она как-то влияет на root complex. С драйверами не разбирался, не знаю, что она делает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 58 15 декабря, 2022 Опубликовано 15 декабря, 2022 · Жалоба А попробуйте не по кругу писать, а разово -- залили 16 МБ, засекли время (в ПЛИС) -- объективно увидите скорость отдачи на аппаратном уровне. Т.е. смысл исключить опросы и прочий программный компонент из теста. Ну, и по кредитам всё же интересно -- до какой величины опускаются. Можно илой ловить по достижению нуля или порога. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dmitry-tomsk 0 15 декабря, 2022 Опубликовано 15 декабря, 2022 · Жалоба 1 hour ago, dxp said: А попробуйте не по кругу писать, а разово -- залили 16 МБ, засекли время (в ПЛИС) -- объективно увидите скорость отдачи на аппаратном уровне. Т.е. смысл исключить опросы и прочий программный компонент из теста. Ну, и по кредитам всё же интересно -- до какой величины опускаются. Можно илой ловить по достижению нуля или порога. Спасибо, попробую. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
faa 4 20 декабря, 2022 Опубликовано 20 декабря, 2022 · Жалоба В 15.12.2022 в 10:52, dmitry-tomsk сказал: Прерывания не используются пока, через pio идёт опрос регистра состояния, dma от этого не зависит, кроме случая, когда буфер в пк полный. Увеличение размера буфера не влияет. Подозрение на функцию WDC_DMASyncIo, может она как-то влияет на root complex. С драйверами не разбирался, не знаю, что она делает. А опрос через pio регистра состояния без пауз/таймаутов? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться