Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: PCI Express Peer-to-peer.
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > ISA/PCI/PCI-X/PCI Express
Victor®
Приветствую.
Как "широко известно в узких кругах" sm.gif
PCIe допускает 2 модели использования a) HOST-centric и б) Peer-to-Peer.

Если с вариантом a) (весь траффик гоняется через root-complex в HOST CPU) все как-бы прозрачно и понятно?
то с вариантом б) (устройства на PCIe обмениваются без вмешательства и загрузки хоста) не все так гладко, как мне кажется.

Есть у кого опыт реализации P2P на PCI Express? С какими сложностями столкнулись? По всей видимости,
основная заморочка будет с драйверами под это дело.

Зачем мне это надо? Есть задача в которой надо как можно быстрее получать данные с одного PCIe устройства и записывать в другое.
Обработки никакой нет. Вот показалось, что P2P даст максимальную скорость.
Shivers
Цитата(Victor® @ Nov 14 2011, 11:13) *
Приветствую.
Как "широко известно в узких кругах" sm.gif
PCIe допускает 2 модели использования a) HOST-centric и б) Peer-to-Peer.

Если с вариантом a) (весь траффик гоняется через root-complex в HOST CPU) все как-бы прозрачно и понятно?
то с вариантом б) (устройства на PCIe обмениваются без вмешательства и загрузки хоста) не все так гладко, как мне кажется.

Есть у кого опыт реализации P2P на PCI Express? С какими сложностями столкнулись? По всей видимости,
основная заморочка будет с драйверами под это дело.

Зачем мне это надо? Есть задача в которой надо как можно быстрее получать данные с одного PCIe устройства и записывать в другое.
Обработки никакой нет. Вот показалось, что P2P даст максимальную скорость.

Я так понимаю, две модели, это - процессорный ввод/вывод и использование dma? )
На модели процессорный ввод/вывод вообще ни о чем, скорость ниже плинтуса, так что дма обязательно. Другое дело, куда его вставлять? Разные конторы делают по разному: одни встравивают dma контроллер в RC, другие на внутреннюю шину, на которой RC сидит вместе с другими системными устройствами (к примеру, dram контроллер). Второй вариант мне кажется предпочтительнее, поскольку он более универсален, да и RC может быть не единственным в системе (часто делают несколько штук из связки RC-RP, вместо того чтобы сделать один RC с несколькими RP).
В общем, в любом случае, использование DMA обязательно. Процессорной ввод/вывод нужен только для CFG, PM/MSG и прочего
Fast
б) данные гонятся из EndPoint в EndPoint, но через root
чтобы миновать хостпамять, нужен соотв драйвер писать, который управлял бы двумя железяками и настраивал адреса ввода-вывода крест-накрест
это если ОС позволит

вообще без root, имхо, невозможно
Victor®
Цитата(Fast @ Dec 9 2011, 18:08) *
б) данные гонятся из EndPoint в EndPoint, но через root
чтобы миновать хостпамять, нужен соотв драйвер писать, который управлял бы двумя железяками и настраивал адреса ввода-вывода крест-накрест
это если ОС позволит

вообще без root, имхо, невозможно


Естественно без рута это не получится.
Должен же кто-то настраивать эндпойнты.
А они потом между собой гоняют данные минуя хост.
DMA реализованное в свичах тоже бывает, например в некоторых PLX.
Можно применять его для p2p также.
syoma
Привет.
Мы сейчас как раз прорабатываем такую задачу. У нас будет хост и несколько плат на FPGA с PCIe. Некоторые платы на Spartan-6 будут собирать аналоговые данные и отправлять их в одну большую Virtex-6 ПЛИСину для ЦОС обработки. Время реакции является критичным, поэтому все хотим делать Peer-to-peer. PCIe эндпоинты мы настроили на крест-накрест. В итоге пока добились, что Spartan-6 самостоятельно запихивает данные в память Virtex-6 с весьма высокой скоростью и, вроде как - напрямую, но задержка составляет около 1700нс. Хотим сделать быстрее, но пока не понятно где задержка происходит. Свичи - IDT.
Victor®
Цитата(syoma @ Apr 19 2012, 13:30) *
Привет.
Мы сейчас как раз прорабатываем такую задачу. У нас будет хост и несколько плат на FPGA с PCIe. Некоторые платы на Spartan-6 будут собирать аналоговые данные и отправлять их в одну большую Virtex-6 ПЛИСину для ЦОС обработки. Время реакции является критичным, поэтому все хотим делать Peer-to-peer. PCIe эндпоинты мы настроили на крест-накрест. В итоге пока добились, что Spartan-6 самостоятельно запихивает данные в память Virtex-6 с весьма высокой скоростью и, вроде как - напрямую, но задержка составляет около 1700нс. Хотим сделать быстрее, но пока не понятно где задержка происходит. Свичи - IDT.


Да как-то долго выходит.
Вряд-ли из-зи латентности свича - она на порядок меньше.
Или все таки не P2P....

Или удалось побороть?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.