ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
20 мая
297312
Evgeny_CD, Архитектор (06.01.2012 23:28 - 23:33, просмотров: 2501)
Размышлизма и подборка материалов по низколатентному программированию под Win. Итак, пусть у нас будет периферийный контроллер, которный умеет делать специфический IO, и host машина под Win7. Который обрабатывает данные контроллера и выдает пакеты, которые контроллеру следует отправить в реальный мир. Интересует достижение минимальной латентности от готовности небольшого пакета данных в контроллере до момента, когда ответные данные будут доступны ему. Рассмотрим доступные варианты. Под словом доступные понимается , что стоимость аппаратного "довеска" периферийного контроллера не будет превышать $20, еще лучше $10, что этот довесок хотя бы в принципе доступен в варианте -40, и разработка ПО для PC не подразумевает найма Марка Руссиновича [одного их гуру по низкоуровневым потрохам вендов]. Хорошей латентностью будем считать предельный случай, когда контроллер передал 1 байт и получил ответ 1 байт через 1 мкС. Народный USB 2.0 латентности менее ~1 ms дать не может в принципе, в силу своей структуры. Данные повернутых на этом аудиофилов подтверждают это http://www.gearslu …-0-midi-interface.html http://www.vdrums. …TRACK-PRO-2-0-(latency) Вот тут еще одно подтверждение, но об этой ссылке позже http://www.codepro …zer.aspx?display=Print Столь же народный 1G Ethernet дает что-то типа 125 мкС, что лучше, но, быть может удастся найти лучше? http://www.evanjon …/ethernet-latency.html http://www.babinsz …nd-TCP-Throughput.html 10G Ethernet дает латентность при хорошем коммутаторе 3-5 мкС Solarflare_Force10_Low_Latency_High_Density_Testing.pdf Вот тут при помощи супер-драйвера обещают половину трипа менее, чем 2 мкс http://www.dolphin …ckets_accelerator.html InfiniBand дает латентность немного более 1 мкС 17_QLogic.pdf IB_and_10GigE_in_HPC.pdf low-latency-seminar-mellanox.pdf Но оба эти решения не проходит по критерию стоимость периферийной аппаратуры. USB 3.0 - наша надежда? Страница 32 обещает латентность 125 мкС. energy-efficient-platforms-white-paper.pdf Но хотя бы краткое описание нового стандарта наводит на грустные мысли о том, как не просто будет выжать из USB 3.0 предельные параметры SuperSpeed_USB_DevCon_Architecture_Overview_Dunstan.pdf Хотя в новых машинах USB 3.0 можно считать стандартом, он все же не повсеместно распространен. Отдельная засада с device контроллерами. Стоимость IP для FPGA 20kE, а первый более-менее терпимый device контроллер от Cypress CYUSB3014 вроде начал производиться, но его еще надо запрограммить, что есть зело непросто. AN65974.pdf 001-52136_0J_V.pdf Хорошим вариантом было бы создание custom PCIe контроллера, ибо, как мы видим выше, InfiniBand и 10G Ethernet контроллеры в слоте PCIe дают латентность до 1 мкС, но это дело не простое. Самые дешевые киты есть от Lattice. LFE3-35EA-VERSA-EVN стоит $299, но если попасть в промоушен программу, то можно купить за 99 http://www.lattice …cp3surgepromotions.cfm http://www.lattice …velopmentkit/index.cfm К нему есть IP, примеры драйверов под Linux и Win, тулзы для оценки производительность. Минимальный контроллер из серии ECP3, годны для контроллера, стоит $35, что несколько дороговато. Подборка по теме http://caxapa.ru/294559.html Известная FPGA самая дешевая с последовательным линком EP4CGX15BN11C8N стоит $24, что ненамного лучше. И тут стоит вернуться к ссылке про анализатор http://www.codepro …zer.aspx?display=Print Там чувак не сильно напрягаясь получает 500к отсчетов путем чтения регистров LPT порта... Что теоретически дает нам позможность получить задержку 2-4 мкс на байтовых операциях. Можно еще всякие ECP/EPP покурить, там вроде как до 2Мбайт/сек обещается. ecp.pdf epp.pdf parallel_.pdf ecp_reg.pdf Но сейчас все больше PCIe распространены... И тут нам на помощь приходит чудо чип OXPCIe952 http://www.plxtech …roducts/uart/oxpcie952 Основная фишка - PCIe там native. Что, вероятно, еще уменьшит латентность. На http://mouser.com можно в небольшом опте взять от $10. Есть вариант -40. Пока есть некая непонятка с LPT Win7 64, но вроде как эта карточка там работает без проблем. Готовые карты на этом чипе: STLab C-370 Adapter Express Card/34mm--> 1xLPT25F http://www.nix.ru/ …mm1xLPT25F_113815.html http://www.nix.ru/ …ti_1xLPT25F_87842.html STLab I-370 (RTL) PCI-Ex1, Multi I/O, 1xLPT25F Подборка ресурсов по чипу. На сайте после регистрации жают скачать все, всключая SDK для кастомизации драйверов. UG-0070_OXPCIe952-840_Hardware_UG.pdf UG-0050_Oxide.pdf OXPCIe952.pdf ExpApps73_OXPCIe952.pdf OXPCIe952_Product_Brief.pdf Любопытные киты для создания своих платочек PCI ExpressCard. Так что со своими карточками для ноутов проблем не будет. 9186-9187.pdf Ну а с учетом того чтол почти все платы от Intel и не только на новых Atom имеют LPT, то все это имеет приличный практический смысл. Подборка ресурсов Parallel port - LPT (IEEE 1284) http://hw-server.c …t-ieee-1284#Datasheets Путь в Ring 0 или пишем свой первый драйвер http://av-school.ru/article/a-331.html DebugView v4.77 http://technet.mic …/sysinternals/bb896647 Много всего http://retired.beyondlogic.org/ 1 Port (Serial)RS232 &1 Port Parallel http://www.chronos …52ECBPR1/952ECBPR1.htm Программирование в ring0 для Windows: вводная статья http://habrahabr.r …tem_programming/40171/ IEEE 1284 Related Standard's Activities http://www.fapo.com/dotstnds.htm Parallel Ports http://msdn.micros …dware/ff544392(v=VS.85).aspx LPT (mode EPP, 0,5- 1,7 Mбайт/с) http://www.fpga-cpld.ru/lpt.html parport-lowlevel.txt http://www.mjmwire …n/parport-lowlevel.txt http://linux.die.net/man/3/libieee1284 Работа с параллельным портом под Windows http://citforum.ru …tems/windows/parp_win/ 1284 Negotiation http://www.fapo.com/negoti8.htm