Комментарии 10
> GPU также не могут предложить значительное быстродействие.

Можете чуть подробнее почему GPU не помогает?
Может от того, что в GPU нет встроенного ethernet-контроллера? И нет большого объема данных для векторизуемых вычислений.
И GPU из-за накладных расходов на коммуникацию не сможет обеспечить задержки на обработку запросов в наносекундах.
На скоростях, когда ты читаешь напрямую байты после обработки ацп сетевой картой ещё недоехавших udp пакетов у вас просто не остаётся выбора, когда начинать считать. Его (пакет с данными) нужно обсчитывать уже сейчас, а не дожидаться, пока процессор заберёт с сетевой карты данные, положит в память. дёрнет ваш GPU, тот очухается, заберёт данные и начнёт их считать.
Так а что мешает из NIC данные сразу в GPU отдавать? Через тот же PCI-E.
Так можно, да. Я даже думаю что кто-нибудь так и делает. Насчёт GPU не уверен, а вот что впихивают сопроцессор и по PCI-e передают (что, по-сути, тоже самое) слышал.
Но, опять же, FPGA быстрее. Быстрее него только ASIC.
ASIC'и нужно руками собирать по кусочкам, автоматизированные трассировщики могут очень много шлака инкрустировать.
По этому бывают очень часто случаи когда ванильное FPGA гораздо шустрее плохо спроектированного ASIC'a, по моим личным наблюдениям это где-то 6 из 10 проектов :)

btw сейчас очень часто для HFT используют Virtex 7 и заказывают обрезку FPGA до CPLD у самого Xillinx'a, вместо изготовления ASIC'ов.
У CPLD плотность выше так как ячейки попроще, и с тем же тех процессом можно впихнуть больше.
А для трейдеров всякие DSP и прочие сигнало-непотребства, характерные для FPGA, — не нужны, по этому их целесообразно порезать. Да и режут не полностью, часть LUT'a остаётся FPGA'шной. Да и выхлоп качественных FPGA после травки вафли стремится к нулю, а вот с CPLD ситуация проще так как потеря даже 30% ёмкости погоды не сделает — в массовом производстве обходится дешевле минимум в 2-3 раза.
В отличие от GPU, «процессор» на FPGA не алгоритмичен. Он обрабатывает не байты и вектора последовательными командами, а сигналы, буквальные нули и единицы на линиях данных. Фактически, «идеальный ПЛИС-процессор» может провести все расчёты за один такт. Если нужные данные будут загружены, конечно. В топике как раз говорится, что все данные уже в памяти…
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.