[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