Jump to content

    
Sign in to follow this  
syoma

Virtex-7 PCIe Gen.2 - затыкается коммуникация на 3-30мкс

Recommended Posts

Привет.

Может кто сталкивался с разработкой асинхронных PCIe? У нас в системе процессор и ПЛИС тактируются каждый от своих 100МГц. Идет большой трафик и иногда, смотря по FPGA - трафик затыкается на 3-30мкс. Причем задержка фиксированная для определенной хардварной конфигурации. Со стороны FPGA выглядит так, что входные данные вдруг перестают приходить а для передачи Transmit TLP credits начинают стремительно уменьшаться, пока не достигают 0. Через какое-то время кредиты резко появляются и коммуникация возобновляется. Spread-Spectrum и ASPM вроде как отключены. ASYNC включен.

Share this post


Link to post
Share on other sites

Прогнали BER тесты между ПЛИС через бэкплейн - все работает без ошибок на 5Гбит.

 

Вопрос к знатокам, а можно ли PCIe свичи загнать в режим, в котором можно было бы делать BER тесты - ну например какой-нибудь loopback. PLX/IDT что-то такое поддерживают?

Share this post


Link to post
Share on other sites

Обнаружился интересный эффект. Оказалось, что коммуникация затыкается на этапе DDR память - PCIe свитч. Т.е. что-то, блокирует коммуникацию. Я так понимаю, что это возможно процессор во время обработки прерываний, так как блокировки учащаются, если двигать мышкой или нажимать на клавиатуру. Кто-то встречался с таким?

Share this post


Link to post
Share on other sites

С таким не сталкивался, не работал с таким конкретно железом. Но попробую пованговать.

Первое - что на стороне хоста? Что там за ПО? Какой драйвер? Какой механизм обмена данными? Если полагаетесь на готовые DMA контроллеры готовые драйверы, то понятно что там масса причин почему хост может быть не готов принимать новые данные.

Share this post


Link to post
Share on other sites

Было дело с затыками записи из FPGA в DDR. Система (чипсет?) не давала сигнал готовности устройству. В тот момент у нас была двухсокетная материнка, и мы свалили это всё на межсокетную когерентность, потому что на односокетной проблема ушла.

хотя может быть это просто DDR refresh был или memory scrubbing (ECC). фиг знает.

а вообще PCIe - не реалтайм by design, поэтому никто ничего не гарантирует. извините. :ph34r:

Share this post


Link to post
Share on other sites

В том-то и дело, что ПЛИС пишет прямо в DDR. При этом, если на хосте крутится Linux, то затыки возникают если просто дернуть мышкой или нажать клавишу на клавиатуре. Если же запустить RTOS(мы используем VxWorks), то затыки почти не проявляются - раз в 5-10 минут, но при этом их длительность становится больше. А что такое DDR refresh? Ей как-то можно управлять? Память с ECC. Хост - процессор Skylake на чипсете CM236

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