2014-01-24 10 views
5

Вот некоторые особенности.Каковы операции PCIe, связанные с глаголами Infiniband?

Когда процесс вызывает ibv_post_send(), что происходит на интерфейсе PCI с HCA? Является ли WQE инкапсулированным внутри дверного звонка PCIe и записывается через запрограммированный ввод-вывод? Или WQE выбирается в отдельном DMA, читаемом HCA?

Что происходит Когда процесс вызывает ibv_poll_cq()? Как HCA нажимает CQE на системную память? Или, если это зависит от нагрузки, как CPU обнаруживает новые CQE в HCA?

ответ

4

Является ли WQE инкапсулированным внутри дверцы PCIe и записан через программируемый ввод-вывод? Или WQE, выбранный в отдельном DMA, читаемом HCA?

Это может быть либо. Обычный способ записи WQE и звонка в дверной звонок, и в этом случае HCA будет получать WQE через DMA. Менее распространенный способ - это то, что называется «Blue Flame» - часть PCIe BAR используется для WQE, а WQE записывается в HCA так же, как записывается дверной звонок.

Как HCA нажимает CQEs в системную память?

HCA использует DMA для записи CQE в системную память. У вашего приложения есть два способа узнать о новом завершении: основанное на опросе или основанное на событиях. ibv_poll_cq() используется в опросе.

+2

Спасибо! Это очень полезно. Есть ли документ в Интернете, который объясняет это взаимодействие (и предоставляет другую полезную информацию о оборудовании Infiniband?). Я нашел один «руководство по реализации глаголов», но даже это не показало, как продвигается CQE. –

+2

Обработка CQEs/WQE и других вещей - все это зависит от реализации. Каждый поставщик может делать все, что захочет. Если вы хотите понять, как реализованы глаголы, вам просто нужно проверить соответствующий исходный код - все открыто. Например, для семейства HCA Mellanox ConnectX: http://lxr.free-electrons.com/source/drivers/infiniband/hw/mlx4/ Если вы хотите узнать больше, вам понадобится устройство PRM (программирование Справочное руководство). Вам необходимо обратиться к поддержке вашего поставщика и попросить этот документ. – kliteyn