Перейти к содержанию
    

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

Привет.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...