1. НТЦ Метротек 2016 Курочкин Павел
Разбираем ethernet-
анализаторы
Архитектура на базе SoC FPGA
2. НТЦ Метротек 2016 Курочкин Павел
Вы узнаете про...
Внутренности Ethernet-устройств на базе FPGA
System-on-chip и с чем его едят
Преимущества custom-ной обработки и генерации сетевого трафика
Отличие аппаратных и программных инструментов тестирования сетей
2
3. НТЦ Метротек 2016 Курочкин Павел
Ethernet-анализаторы
Тестеры ethernet
Фильтры пакетов (firewall)
Транзитные устройства (точки демаркации)
Коммутаторы-балансировщики
3
4. НТЦ Метротек 2016 Курочкин Павел
Тестеры Ethernet
4
http://metrotek.spb.ru/b3et.html
5. НТЦ Метротек 2016 Курочкин Павел
Фильтры пакетов
5
http://metrotek.spb.ru/bmx.html
6. НТЦ Метротек 2016 Курочкин Павел
Транзитные устройства
6
http://metrotek.spb.ru/etl-n.html
7. НТЦ Метротек 2016 Курочкин Павел
Коммутаторы-балансировщики
http://metrotek.spb.ru/b100.html
7
8. НТЦ Метротек 2016 Курочкин Павел
Что их объединяет?
Ethernet :)
Схожая архитектура
Обработка трафика на FPGA
Интерфейс с Ethernet - через трансиверы
8
9. НТЦ Метротек 2016 Курочкин Павел
Обработка сетевого трафика на FPGA
Line rate 1G/10G/100G
Нулевой коэффициент потерь
Невозможно за-DDOSить
Нет зависимости между нагрузкой в линке и нагрузкой чипа
Распределённая память в чипе
9
10. НТЦ Метротек 2016 Курочкин Павел
SoC
Процессор и периферия в одном кристалле
Общая память
Медиа-плееры
Роутеры
Встраиваемые CPU
10
18. НТЦ Метротек 2016 Курочкин Павел
Benchmarking
18
Задержка (store and forward) офисного коммутатора
19. НТЦ Метротек 2016 Курочкин Павел
Benchmarking (Throughput)
19
Трафик через FPGA Трафик через CPU
20. НТЦ Метротек 2016 Курочкин Павел
Программые инструменты
Гибкость
Множество готовых программ
Сетевой трафик грузит CPU
Недетерминированное поведение
20
● CPU не загружен
● Сетевой трафик не грузит
FPGA
● Контролируемая буферизация
● 100% linerate
● Парралелизм
● Статическое выделение
памяти
Аппаратные инструменты
Editor's Notes
Интерфейс с трансиверами всегда даёт полный linerate, а вот интерфейс с процессором часто является узким местом. В итоге в такой архитектуре может получиться так, что процессор не получит и одного процента трафика (если, конечно., этого потребует приложение, ведь часто трафик не выходит за пределы FPGA)
В топовых чипах трасиверы встраиваются в FPGA.
Обработка трафика на FPGA хороша тогда, когда решаются задачи, не подразумевающие удержание сессий и т.п.
Однако, в некоторых случаях хорошо комбинировать задачи. Часть делать с помощью процессора, а другую часть - на FPGA. Один из таких примеров - timestamping. Сетевой стек отправляет пакеты, а FPGA вписывает метку времени прямо в момент отправки пакета.
Здесь рассказываем про то, какие SoC вообще бывают - медиаплееры, сетевые девайсы
Тема SoC живёт очень давно, но с FPGA она появилась оносительно недавно.
В наших устройствах обмен данными долгое время выполнялся с помощью различных аппаратных интерфейсов:
грубо говоря мы соединяли чипы проводами. Каждый аппаратный интерфейс обладает своими плюсами и минусами.
Чаще всего у нас получался не очень быстрый обмен. В других случаях вырастает latency обмена.
Рассказываем о том, как было раньше, до появления SoC:
Несколько чипов
Аппаратный интерфейс между чипами
Доступ к FPGA ограничен по скорости и имеет большую задержку
Для загрузки FPGA нужен отдельный интерфейс
А с появлением SoC всё стало намного прощё
Один чип
Доступ к FPGA через высокоскоростные специальные интерфейсы внутри чипа
Задержка обращения в этом случае намного меньше!
И передача данных в FPGA и её прошивка выглядит как работа с памятью
Здесь нужно сказать и про разрядность интерфейсов. Это тот параметр, который критически отличается.
например, чтобы в старой архитектуре сделать многоразрядный интерфейс,
требуются либо высокоскоростные последовательные каналы, либо куча пинов и сложная разводка.
Какие есть варианты взаимодействия подсистем внутри чипа?
На слайде показана упрощённая схема взаимодействия процессора с разными подсистемами.
Основные -- это интерфейсы для передачи данных:
HPS-to-FPGA -- высокоскоростной интерфейс. Мастером является HPS. Ширина интерфейса со стороны FPGA может быть задана равной 32, 64 или 128 бит.
Lightweight HPS-to-FPGA -- облегченный интерфейс, доступна только ширина в 32 бита. Мастер также HPS. Занимает в FPGA меньше ресурсов.
FPGA-to-HPS -- мастеров является FPGA. Позволяет FPGA получить доступ к адресному пространству HPS. Также 32, 64 или 128 бит.
Все эти интерфейс на низком уровне -- это AXI. Но для удобства работы со стороны FPGA они конвертируются в Avalon-MM. Но на это приходится тратить часть ресурсов FPGA.
А есть ещё возможность обращаться в память напрямую, но через общую трубу. Этот обмен быстрее, но он более низкоуровневый ;)
Также доступны следующие интерфейсы для отладки:
TPIU trace -- для отправки trace-данных, собранных на HPS, в FPGA
FPGA System Trace Macrocell (STM) -- позволяет FPGA посылать event’ы в HPS.
FPGA cross-trigger -- позволяет посылать FPGA защелкивать SignalTap по событиям из HPS и наоборот.
Ещё есть:
FPGA manager interface -- для загрузки и конфигурации FPGA
Interrupts -- FPGA может генерировать аппаратные прерывания для HPS
MPU standby and events -- сигналы ддя сообщения FPGA о том, что HPS в режиме standby. И сигналы для пробуждения CPU из WFE состояния.
FPGA clocks & resets
В SoC присутсвуют несколько адресных пространств.
Адрессное пространство -- это то, как видит систему тот или иной компонент. И куда он имеет доступ.
Это -- адресное пространство CPU. То есть так видит систему наш ARM. Основные части (их четыре) -- это:
Boot region -- размер 1MB. В SoC доступно 64 KB On-chip RAM и 64 KB On-chip ROM. Этот регион может быть замаплен на любой из них. Выбор происходит через L3 remap регистры. Может быть убран.
SDRAM window region -- большой кусок SDRAM :) Если включен Boot region, то нижний 1MB SDRAM недоступен. Выровнен по границе 1MB.
FPGA region -- доступ к интерфейсам HPS-to-FPGA и LW HPS-to-FPGA.
Peripheral region -- доступ к регистрам различных контроллеров.
Примерное такие же адрессные пространства есть для остальных мастеров.
Точность измерения задержки составляет микросекунды