ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
697801
Evgeny_CD, Архитектор (06.09.2016 02:30, просмотров: 37094)
10Gbase*, 10Gbit Ethernet как основа универсальной платформы для разработки embedded устройств. Набросок общей картины. [Да, я знаю, что в меня сейчас полетят тапки, паяльники и топоры, и раздастся вопль "Чтобы ты с С1-94 гигабитные линки отлаживал". Но я упорный и терпиливый.] Введение. При разработке сложного устройства (RF, analog, DSP, CPU, GUI) одна из проболем - разработка сложной платы. Другая проблема - сложность определения точных требований к компонентам, что часто кончается перезакладом и потерей денег (либо теряешь в серии, либо теряешь на пареработке проекта). * хочется уметь модифицировать плату по частям по мере нахождения багов в блоке * хочется иметь линейку разных боков одного класса, чтобы можно было масштабировать, скажем, производительность DSP и (или) CPU. * хочется иметь такую структуру ПО, чтобы на отладочных платах и в боевой плате ПО имело минорные различия или вообще их не имело. Задача: создать систему, состоящую из некоторого количества плат в пределах одной комнаты, чтобы эти платы "думали" (ПО "думало"), что они одно целое, и никаких задержек между ними нет. Подзадача: изобретение велосипедов (в виде собственного стандарта каналов связи) запрещено. Решение: использовать 10Gbit Ethernet или 1Gbit Ethernet и стандартные коммутаторы с низкой латентностью в качестве среды для подобной системы. Детальное изучение вопроса. Тайминги Ethernet. Как мы знаем http://caxapa.ru/676872.html Минимально допустимый пакет 1Gbit Ethernet имеет "физическую" длину 84 байта (это совсем все включено), несет 18 байт полезных данных (UDP, вполне достаточно чтобы, скажем, передать синхронизацию между потоками), таких пакетов может быть 1448095 в секунду, и длительность каждого 672 нс. Пакет с килобайтом полезных данных имеет длину 1090 байт и длительность 8,72 мкс. Пакет с 4к полезных данных (Jumbo frame, хорошие коммутаторы обычно до 9216 байт поддерживают) 4162 байт или 33,296 мкс. Для 10G Ethernet все время /10. Далее все рассмотрено для 10G Ethernet, в варианте 1G Ethernet все будет совсем просто. Физические интерфейсы 10G Ethernet. https://habrahabr.ru/post/234369/ Нас будут интересовать SFP+, и XAUI для обмена с FPGA. TI TLK10232 Dual Channel XAUI-to-10GBASE-KR Backplane Transceiver with Crosspoint Switch http://www.ti.com/product/tlk10232 Есть готовый дизайн с полным доступом к файлам проекта Dual-channel XAUI to SFI Reference Design for Systems with Two or More SFP+ Optical Ports http://www.ti.com/tool/TIDA-00234 Пример платы на основе этого чипа http://www.tehutin ….net/?t=LV&L1=3&L7=143 DigiKey TLK10232CTR -40°C ~ 85°C 144-FCBGA (13x13) 1.0мм - 100-$20.52 FPGA и IP блоки к ним. Рассмотрим для примера Xilinx. IP блок для XAUI Artix-7 самый толстый 1223 LUT http://www.xilinx. …ual-property/xaui.html 10 Gigabit Ethernet Media Access Controller (10GEMAC) https://www.xilinx …rty/do-di-10gemac.html Artix-7, скорость -2, самый толстый 3432 LUT http://www.xilinx. …u/ten-gig-eth-mac.html Плисина DigiKey XC7A35T-2FGG484I -40°C ~ 100°C (TJ) 484-FBGA (23x23) 1.0mm 1-$70.07 Это 20800 LUT, 100 2Кбайт блоков памяти или 50 4Кбайт блоков памяти, 4 трансивера до 6.6 Gb/s Для этой плисины нет поддержки 32 битного MAC с малой задержкой. Плисина DigiKey XC7K70T-2FBG484I -40°C ~ 100°C (TJ) 484-FCBGA (23x23) 1.0mm 1-$172.5 Это 41000 LUT, 270 2Кбайт блоков памяти или 135 4Кбайт блоков памяти, 4 трансивера до 12.5 Gb/s Для этой плисины есть поддержка 32 битного MAC с малой задержкой. Плисина DigiKey со встроенным 800Mhz Dual ARM® Cortex®-A9 MPCore XC7Z030-2FBG484I в том же копусе -40°C ~ 100°C (TJ) 1-$290 Это 78600 LUT в том же корпусе, 265 4Кбайт блоков памяти (нормально так, 1Мбайт SRAM внутри!) Плисина DigiKey XC7K160T-2FFG676C IC FPGA 400 I/O 676FCBGA (27x27) 1.0 1-$358.75 Это 101400 LUT, 650 2Кбайт блоков памяти или 325 4Кбайт блоков памяти (1.3 Мбайт SRAM внутри!) Это плисина для софткоров без внешней SDRAM. Получается грубо BOM для "простой" платы без встроенного в FPGA процессора < $200, со встроенным < $400, что нельзя назвать безумием. Инфраструктура 10GBase* Ethernet. Ключевой топик по 10GBase-T http://caxapa.ru/696538.html Для коммутатора NETGEAR XS708Ev2 есть данные о латентности Speed / Latency (SFP+ fiber port) 10Gbps: <1.4us Mellanox SX1016 - 270ns на SFP+ портах! http://www.mellano …dyn?product_family=252 У нас такой коммутатор порядка 1 млн. р. стоит. Печально, но параметры! Латентнотсь программ при работе с 10GBase* При использовании правильных адаптеров и правильной настройке в User Space народ достиг для 10G Ethernet латентности близкой к 10 мкС при UDP. http://caxapa.ru/669780.html http://caxapa.ru/669757.html Для ef_vi - работа с RAW пакетами в user space достигают менее 1 мкс латентности. Думаю, можно достичь примерно 5 мкс латентности передачи коротких синхрокоманд между "платочками" Архитектура ПО. Каждая плата исполняет поток(и), имеющие отношение к периферии, к которой она подключена. Могут быть платы, которые выполняют только функции IO (ADC|DAC для радиоподсистемы, включая саму радиоподсистему, как пример). Тода Cortex тем не нужен, делаем софткор и аппаратный ускоритель IO, который работает с софткором. Каждая плата имеет копию RTOS, которая управляет своими потоками и заглушки "чужих" потоков, которые обмениваются данными через описанную сеть. Может быть два варианта управления сетью. Один - это супер-пупер Linux ПК с супер-пупер сетевой картой, но это будет самый медленный элемент сети. Можно на основе платки с двумя Ethernet сделать такой вариант. Один интерфейс для сбора пакетов с платы и передачи на них, второй для обмена с ПК. Внутри "центральной платы" жестко настроенный коммутатор с фиксированной таблицей маршрутизации, на основе MAC адресов. Использование широковещательного режима. Как пример. Пусть поток данных в одной плате что-то записал в область памяти, которая используется другими потоками данных на чтение. И приготовил сигнал - "данные готовы". Специальный софткор (под управлением RTOS "платочки") вычитывает эти данные и сигнал, и делает их них широковещательный пакет для сети платочек. MAC адресов много (но надо не забывать про размер таблицы с MAC адресами в коммутаторе), можно настроить нужную маршрутизацию. Приняв такой пакет, софткор на плате-получателе пишет данные в локальное ОЗУ и выставляет в RTOS сигнал - типа "данные готовы". Все это прозрачно для основного процессора в плате. Для него это как будто "пришли данные от соседнего потока". В общем, RDMA Lite 10G или 1G? Реализация всего вышеописанного для 1G будет сильно проще и дешевле. LAN8810-AKZE GMII PHY, 72-QFN (10x10) 1-$4.60. там 8 битные шины на прием и на передачу с тактовой 125 Мгц - это любая современная FPGA потянет. Вопрос в объеме передаваемых данных. Для коротких пакетов 10G даст выигрыш не в 10 раз, а хорошо, если в 2 или 3. А вот для килобайтных пакетов выигрыш будет кардинальным. Вопрос - нужен ли этот выигрыш - зависит от задача. Я специально рассмотрел 10G как некий практический предел рассматриваемой технологии. Предел достаточно высокий. Не так много задач, где обмен между подсистемами идет на уровне 1Гбайт/сек. Возможно, запараллеливание нескольких гигабитных потоков будет разумным компромиссом. Коммутаторы на кучу 1G и несколько 10G (для центра управления этими "платочами") стоят небольших денег. Резюме. При кажущейя монструозности описанная технология может сильно помочь в реализации сложных проектов. Как пример упрощения - Altera Max 10 10M50DAF256C8G (25-$104.6) + описанный гигабитный PHY = готовый строительный блок для таких отладочных 4-х слойных платочек за весьма небольшие деньги. Запаять BGA256 1.0мм сейчас есть много умельцев. Внешней памяти для FPGA никакой, разводка "интерфейсной" части платы будет совсем простая. Критика?