[uanog] switch's port buffers
i at levsha.org.ua
i at levsha.org.ua
Sun Jan 30 00:31:08 EET 2022
Работает это примерно так: берём чужую статью, немножко коцаём, и выдаём за свой развернутый ответ.
https://xakep.ru/2018/11/15/fpga/
> On 5 Jan 2022, at 18:01, Alexander V Soroka <alex at euro.net.ua> wrote:
>
> Привет !
>
> Я тут, в этом списке рассылки, похоже, единственный кто занимается
> десятки лет embedded программированием на низком уровне железа и
> реалтайма, и наверное тоже единственный кто разрабатывает и
> электрические схемы и разводку печатных плат для серийных изделий :-)
>
> Поэтому я отвечу развернуто, чтобы это письмо сохранилось " в базе"
> :) "для последующих поколений", которые может таки найдут в себе силы
> "опускаться" до более высокого уровня понимания проблем и задач, чем
> "мы тут конфиги FreeBSD щаз поправим и все заработает". :-)
>
> Итак,
> С помощью FPGA можно проектировать цифровые микросхемы, сидя у себя
> дома с доступной отладочной платой на столе и софтом разработчика за
> пару килобаксов. Есть и бесплатные варианты.
> Важно понимать: именно проектировать, а не программировать, потому что
> на выходе получается физическая цифровая схема, выполняющая определенный
> алгоритм на аппаратном уровне, а не программа для процессора.
>
> Работает это примерно так. Есть готовая печатная плата с набором
> интерфейсов, которые подключены к установленной на плате микросхеме
> FPGA. Есть готовые крутые платы для Сетей и датацентров, например:
> High-Performance Network Accelerator
> https://www.alpha-data.com/product/adm-pcie-9v3/
> https://www.alpha-data.com/product/adm-pcie-9h3/
> ( там можно скачать мануал в пдфке на страничке )
>
> High Performance Data Processing
> https://www.alpha-data.com/product/adm-pcie-9v7/
> ( там можно скачать мануал в пдфке на страничке )
>
> есть отладочные платы для обучения (менее крутые):
> https://www.xilinx.com/products/boards-and-kits.html
>
> Пока мы не сконфигурируем FPGA, внутри микросхемы просто нет логики
> для обработки данных с интерфейсов, и потому работать ничего не будет.
> В результате проектирования будет создана "прошивка", которая после
> загрузки в FPGA создаст нужную нам цифровую схему. Например, так можно
> создать контроллер 100G Ethernet, который будет принимать и
> обрабатывать сетевые пакеты.
>
> Важная особенность FPGA — возможность реконфигурации. Сегодня нам
> нужен контроллер 100G Ethernet, а завтра эта же плата может быть
> использована для реализации независимых четырех интерфейсов 25G
> Ethernet.
>
> Микросхема FPGA — это по сути, та же заказная микросхема ASIC, и
> состоящая из таких же транзисторов, из которых собираются триггеры,
> регистры, мультиплексоры и другие логические элементы для обычных
> схем. Изменить порядок соединения этих транзисторов, нельзя.
> Но архитектурно микросхема FPGA построена таким образом, что можно
> изменять коммутацию сигналов между более крупными блоками: их называют
> CLB — программируемые логические блоки.
>
> Количество CLB в современных кристаллах FPGA может быть разным.
> У Xilinx есть кристаллы с количеством CLB в пределах примерно от четырех
> тысяч до трех миллионов.
>
> Помимо CLB, внутри FPGA есть еще ряд аппаратных ресурсов.
> Например, аппаратные блоки умножения с накоплением или блоки DSP.
> Каждый из них может делать операции умножения и сложения 18-битных
> чисел каждый такт. В топовых кристаллах количество блоков DSP может
> превышать 6000.
>
> Другой ресурс — это блоки внутренней памяти (Block RAM, BRAM).
> Каждый блок может хранить 2 Кбайт. Полная емкость такой памяти в
> зависимости от кристалла может достигать от 20 Кбайт до 20 Мбайт.
> Как и CLB, BRAM и DSP-блоки связаны коммутационной матрицей и
> пронизывают весь кристалл. Связывая блоки CLB, DSP и BRAM, можно
> получать весьма эффективные схемы обработки данных.
>
> Гибкая структура FPGA позволяет реализовывать аппаратные схемы для
> высокоскоростной и параллельной обработки данных с возможностью
> изменить алгоритм.
>
> Чем принципиально отличаются CPU, GPU, FPGA и ASIC?
> CPU универсален, на нем можно запустить любой алгоритм, он наиболее
> гибок, и использовать его легче всего благодаря огромному количеству
> языков программирования и сред разработки.
>
> При этом из-за универсальности и последовательного выполнения
> инструкций CPU снижается производительность и повышается
> энергопотребление схемы. Происходит это потому, что на каждую полезную
> арифметическую операцию CPU совершает много дополнительных операций,
> связанных с чтением инструкций из памяти, перемещением данных между
> регистрами и кешем разного уровня, и другие телодвижения.
>
> Напомню, что в операционках, вы не имеете возможности напрямую
> работать своей программой с регистрами "железа" и самостоятельно
> обрабатывать прерывания. Так, например, в Винде вы можете только
> читать "очередь событий" (я сильно упрощаю) и если там появилось
> "нужное событие" то вы сможете на него отреагировать, в отведенный вам
> "квант" времени, который тоже не совсем является "реалтаймовым".
> Аналогично работают и Юниксы, только там больше "рулей" для настройки
> и не так закрыт исходный код, для желающих "копнуть глубоко до
> железа". Но все равно - прерывания железа это для драйверов, а не для
> писателя "под Юникс" или RTOS.
>
> Рядом (по производительности но в высшую сторону) от CPU находится GPU.
> Изначально эти микросхемы были разработаны для обработки графики, но
> сейчас используются и для майнинга вычислений общего назначения.
> GPU состоят из тысяч небольших вычислительных ядер и выполняют
> параллельные операции над массивом данных.
> Еще дальше :-) от GPU находятся FPGA.
>
> Решающее преимущество FPGA — это способность обрабатывать данные в
> темпе их поступления с минимальной задержкой реакции. В качестве
> примера - умный сетевой маршрутизатор с большим количеством портов:
> при поступлении пакета Ethernet на один из его портов необходимо
> проверить множество правил, прежде чем выбрать выходной порт.
> Возможно, потребуется изменение некоторых полей пакета или добавление
> новых.
>
> Использование FPGA позволяет решать эту задачу мгновенно: байты пакета
> еще только начали поступать в микросхему из сетевого интерфейса, а его
> заголовок уже анализируется. Использование CPU-процессоров тут может
> существенно замедлить скорость обработки сетевого трафика. Достичь
> требуемой гибкости в сочетании с высокой производительностью поможет
> только FPGA. Для этого используется RTL-язык, и RTL-моделирование в
> симуляторе на компьютере.
>
> Существуют и высокоуровневые средства разработки (HLS, High-level
> synthesis), и даже готовые фреймворки.
> Для любителей есть вариант работы с FPGA на python:
> https://habr.com/ru/post/442010/
> фреймворк MyHDL https://www.myhdl.org/
>
> Есть Open-Source FPGA Foundation (OSFPGA) https://osfpga.org/
> нацеленная на развитие, продвижение и создание среды для совместной
> разработки открытых аппаратных и программных решений, связанных
> с использованием программируемых логических интегральных схем FPGA.
>
> Связанные с проектом открытые инструменты:
>
> OpenFPGA - набор для автоматизации проектирования электронных приборов
> (EDA) для FPGA, поддерживающий генерацию начинки на основе описаний на
> языке Verilog. https://github.com/lnis-uofu/OpenFPGA
>
> 1st CLaaS - фреймворк, позволяющий использовать FPGA для создания
> аппаратных ускорителей для web- и облачных приложений.
> https://github.com/stevehoover/1st-CLaaS
>
> Verilog-to-Routing (VTR) - инструментарий, позволяющий на основе
> описания на языке Verilog сформировать конфигурацию выбранного FPGA.
> https://github.com/verilog-to-routing/vtr-verilog-to-routing
>
> Symbiflow - инструментарий для разработки решений на базе FPGA Lattice
> iCE40, Lattice ECP5, Xilinx 7 и QuickLogic EOS S3. https://symbiflow.github.io/
>
> EPFL - коллекция библиотек для разработки приложений логического синтеза.
> https://github.com/lsils/lstools-showcase
>
> Edalize - инструментарий на языке Python для взаимодействия с
> системами автоматизации проектирования электронных приборов (EDA) и
> генерации для них файлов проектов. https://github.com/olofk/edalize
>
> GHDL - компилятор, анализатор, симулятор и синтезатор для языка описания аппаратуры VHDL.
> https://github.com/ghdl/ghdl
>
> VerilogCreator - плагин к QtCreator, превращающий данное приложение в
> среду для разработки на языке Verilog 2005. https://github.com/rochus-keller/verilogcreator/
>
> SOFA (Skywater Open-source FPGA) - набор открытых FPGA IP
> (Intellectual Property), созданных с использованием Skywater PDK и
> фреймворка OpenFPGA. https://github.com/lnis-uofu/SOFA
>
> LiteDRAM - настраиваемый IP Core для FPGA c реализацией DRAM.
> https://github.com/enjoy-digital/litedram
>
> OpenCores.org — каталог всевозможных открытых проектов под FPGA.
> https://opencores.org/
> несколько примеров:
> Ethernet 10GE Low Latency MAC : https://opencores.org/projects/xge_ll_mac
> 1G Ethernet UDP/IP Stack : https://opencores.org/projects/udp_ip_stack
> Ethernet 10GE MAC: https://opencores.org/projects/xge_mac
> AES (Rijndael) IP Core: https://opencores.org/projects/aes_core
>
> В облачных вычислениях FPGA применяются для быстрого счета, ускорения
> сетевого трафика и осуществления доступа к массивам данных. В серверы
> вставляются платы FPGA с PCI Express и оптическим сетевым интерфейсом
> производства Intel (Altera) или Xilinx.
>
> В Microsoft давно используют FPGA для ускорения поискового сервиса
> Bing, а также для организации Software Defined Networking внутри
> облака Azure.
>
> Могу сказать, что , например, в компании "С_В_Р" в которой я работал,
> весь колл-центр был собран на нескольких серверах с "умными картами".
> Производительность была наивысшей в стране, в условиях массовых
> звонков (телевикторины, голосование за очень короткое время)
> мы были в состоянии обрабатывать практически весь трафик Украины,
> и при этом иметь загрузку по оборудованию порядка 30-50%.
> ...из-за рейдерских наездов и "изумительной политики Укртелеком"
> компания, к сожалению, прекратила деятельность, но у меня на память
> осталось две книги "Лидер рынка" :) с моими фото и попаданием в
> "ТОП-20" телеком компаний по их рейтингу (эффективность работы, доходы
> и т.п.).
> Укртелеком, который постоянно пытался нам ставить палки в колеса и
> отобрать бизнес, в итоге, после прекращения нашей деятельности, так и
> не смог создать ничего подобного с такой-же эффективностью в работе.
>
> С моей колокольни :-) я бы сказал что разработчиков подобной сложности
> (для FPGA) Проектов очень мало, или вообще нет, бо уехали отсюда
> нахер, в теплые и радушные страны...
> Так что сама тема обработки оргомных трафиков она вкусная и имеет
> очень неплохие шансы к выходу на ...ПО Продукт..., который потом можно
> и себе поставить и жить на нем, и продать кому-то или сдать в аренду
> мощности (мы так делали много лет).
>
>
>
> Wednesday, January 5, 2022, 12:56:04 PM, Yevgen Ionov yevgen.ionov at gmail.com you wrote:
> YI> Использование FPGA ограничено в основном задачами в data plane (программные
> YI> манипуляции с пакетами, например тоже RTP timestamp с использованием P4,
> YI> OpenFlow), все что относится с к программируемым сетям, AI, как
> YI> альтернатива ASIC с его fixed instructions. Т.е. вспомогательная функция и
> YI> нет смысла его не позиционировать как замену микропроцессорам, при всем
> YI> желании он не будет широко использоваться в HW. Это даже бессмысленно
> YI> дискутировать.
> YI> Таже Cisco год назад использовала его только в одной модели свитчей, пару
> YI> от Arista и Palo Alto в high end моделях для offload некоторых задач.
> YI> Да и с offload тоже нужно детально проверять, что поддерживает ОС. Три года
> YI> назад тестировал различные uCPE, например на Intel SoC и поддержкой
> YI> QAT. QAT мог разгрузить Core в задачах с криптованием и в итоге оказалось,
> YI> что ни в PanOS, ни в FortiOS, ни в Cisco ISRv в VM исполнении не были
> YI> заложены инструкции для offload таких задач (AES-NI - да, QAT - нет).
> YI> Вендоры обещали реализовать это в будущем.
>
> YI> Возвращаясь к начальной дискуссии о проблеме с буферной памятью FPGA + P4
> YI> имеет лучшие перспективы для решений подобных задач чем ASIC. Но с этим еще
> YI> надо разбираться, пока есть идеи, но не могу сказать будут ли они работать.
>
> YI> On Wed, 5 Jan 2022 at 09:26, Vladimir Sharun <vladimir.sharun at ukr.net>
> YI> wrote:
>>> Привет,
>>>
>>> Netflix делает свой трафик через Mellanox ConnectX-6 DX c оффлоадом
>>> шифрования TCP в карту.
>>>
>>> А чтобы это в принципе работало, Netflix/Mellanox/Chelsio "к гирям
>>> freeBSD" написали код, который дал такую возможность правильно.
>>>
>>> Для шифрования "сильно зависит": можно и на проце через AES-NI и это
>>> работает. Вопрос в количестве гигабит.
>>>
>>> Я по-этому и спросил про FPGA - оч интересно какое именно применение даст
>>> смысл вложениям денег в голую железку, почему не купить готовое и сделать
>>> бизнес с использованием готовых инструментов.
>>>
>>>
>>> *5 січня 2022, 01:51:47, від "Andriy Berestovskyy" <berestovskyy at gmail.com
>>> <berestovskyy at gmail.com>>: *
>>>
>>>> On 4 Jan 2022, at 20:15, Alexander V Soroka <alex at euro.net.ua> wrote:
>>>> Хеон? серьезно? с гирями на ногах ФрииБСД, с узкими местами общей шины
>>>
>>> Xeon-ы есть разные: есть со встроенными FPGA, есть со встроенными 2x100Gbps, есть с 288 аппаратными потоками…
>>>
>>>> Шифрование на FPGA по любому будет лучше и быстрее чем прога на
>>>
>>> Для шифрования TCP/IP лучше и быстрее купить готовую сетевую карту c crypto offload.
>>>
>>>> Нетфликс пусть и гики, но возможности железа не перепрыгнуть, да и
>>>
>>> ИМО FPGA может иметь смысл под что-то узкоспециализированное, а IPsec/TLS — это стандартные задачи, давным давно реализованные в SoC-ах, с готовыми драйверами и библиотеками под Linux/FreeBSD…
>>>
>>> Андрей
>>>
>>> _______________________________________________
>>> uanog mailing listuanog at uanog.kiev.uahttps://mailman.uanog.kiev.ua/mailman/listinfo/uanog
>>>
>>> _______________________________________________
>>> uanog mailing list
>>> uanog at uanog.kiev.ua
>>> https://mailman.uanog.kiev.ua/mailman/listinfo/uanog
>
>
>
>
>
> --
> Best regards,
> Alexander V Soroka http://www.svr.ua/
> AS106-RIPE
> mailto:alex at euro.net.ua
>
> _______________________________________________
> uanog mailing list
> uanog at uanog.kiev.ua
> https://mailman.uanog.kiev.ua/mailman/listinfo/uanog
More information about the uanog
mailing list