LV26 0 14 ноября, 2011 Опубликовано 14 ноября, 2011 · Жалоба Приветствую. Как "широко известно в узких кругах" :) PCIe допускает 2 модели использования a) HOST-centric и б) Peer-to-Peer. Если с вариантом a) (весь траффик гоняется через root-complex в HOST CPU) все как-бы прозрачно и понятно? то с вариантом б) (устройства на PCIe обмениваются без вмешательства и загрузки хоста) не все так гладко, как мне кажется. Есть у кого опыт реализации P2P на PCI Express? С какими сложностями столкнулись? По всей видимости, основная заморочка будет с драйверами под это дело. Зачем мне это надо? Есть задача в которой надо как можно быстрее получать данные с одного PCIe устройства и записывать в другое. Обработки никакой нет. Вот показалось, что P2P даст максимальную скорость. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shivers 0 9 декабря, 2011 Опубликовано 9 декабря, 2011 · Жалоба Приветствую. Как "широко известно в узких кругах" :) 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 0 9 декабря, 2011 Опубликовано 9 декабря, 2011 · Жалоба б) данные гонятся из EndPoint в EndPoint, но через root чтобы миновать хостпамять, нужен соотв драйвер писать, который управлял бы двумя железяками и настраивал адреса ввода-вывода крест-накрест это если ОС позволит вообще без root, имхо, невозможно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LV26 0 17 декабря, 2011 Опубликовано 17 декабря, 2011 · Жалоба б) данные гонятся из EndPoint в EndPoint, но через root чтобы миновать хостпамять, нужен соотв драйвер писать, который управлял бы двумя железяками и настраивал адреса ввода-вывода крест-накрест это если ОС позволит вообще без root, имхо, невозможно Естественно без рута это не получится. Должен же кто-то настраивать эндпойнты. А они потом между собой гоняют данные минуя хост. DMA реализованное в свичах тоже бывает, например в некоторых PLX. Можно применять его для p2p также. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syoma 1 19 апреля, 2012 Опубликовано 19 апреля, 2012 · Жалоба Привет. Мы сейчас как раз прорабатываем такую задачу. У нас будет хост и несколько плат на FPGA с PCIe. Некоторые платы на Spartan-6 будут собирать аналоговые данные и отправлять их в одну большую Virtex-6 ПЛИСину для ЦОС обработки. Время реакции является критичным, поэтому все хотим делать Peer-to-peer. PCIe эндпоинты мы настроили на крест-накрест. В итоге пока добились, что Spartan-6 самостоятельно запихивает данные в память Virtex-6 с весьма высокой скоростью и, вроде как - напрямую, но задержка составляет около 1700нс. Хотим сделать быстрее, но пока не понятно где задержка происходит. Свичи - IDT. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LV26 0 7 июня, 2012 Опубликовано 7 июня, 2012 · Жалоба Привет. Мы сейчас как раз прорабатываем такую задачу. У нас будет хост и несколько плат на FPGA с PCIe. Некоторые платы на Spartan-6 будут собирать аналоговые данные и отправлять их в одну большую Virtex-6 ПЛИСину для ЦОС обработки. Время реакции является критичным, поэтому все хотим делать Peer-to-peer. PCIe эндпоинты мы настроили на крест-накрест. В итоге пока добились, что Spartan-6 самостоятельно запихивает данные в память Virtex-6 с весьма высокой скоростью и, вроде как - напрямую, но задержка составляет около 1700нс. Хотим сделать быстрее, но пока не понятно где задержка происходит. Свичи - IDT. Да как-то долго выходит. Вряд-ли из-зи латентности свича - она на порядок меньше. Или все таки не P2P.... Или удалось побороть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться