> For the complete documentation index, see [llms.txt](https://linkmeup.gitbook.io/sdsm/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://linkmeup.gitbook.io/sdsm/14.-packet-life/3.-tipov-chipov/6-fpga-field-programmable-gate-array.md).

# FPGA — Field Programmable Gate Array

Не всё по силам ASIC'ам. Всё, что касается минимального интеллекта и возможности повлиять на поведение чипа — это к FPGA.

![](/files/-LMaZLrCFlQmETGiDL-c)

Это программируемая микросхема, в которую заливается прошивка, определяющая её роль в оборудовании.\
Как и ASIC, FPGA изначально нацелен на решение какой-то задачи.\
То есть FPGA для пакетной сети и для управления подачей топлива в инжектор двигателя — вещи разные и прошивкой одно в другое не превратишь.\
Итак, имеем специализированный чип с возможностью управлять его поведением и модернизировать алгоритмы.

FPGA может использоваться для маршрутизации пакетов, перемаркировки, полисинга, зеркалирования.\
Например, извне мы можем сообщить чипу, что нужно отлавливать все BGP и LDP пакеты, отправляемые на CPU, в .pcap файл.

Зачем здесь гибкость и возможность программирования? Примеров много:

* ситуация выше, где нужно заложить в него новое правило полисинга, зеркалирования, маркировки
* внедрения нового функционала
* активация лицензируемой опции
* модернизация существующих алгоритмов
* добавление нового правила для анализа полей заголовков, например, для обработки нового протокола.

Получается без разработки новых чипов, перепайки транзисторов, выбраковывания целых партий, просто новой прошивкой можно сделать всё вышеприведённое и больше.

Опять же, если обнаружена неисправность, то можно написать патч для ПО, который сможет её починить, и при этом обновить только конкретно данный чип, без влияния на всю остальную систему.

FPGA значительно дороже в разработке и производстве, главным образом из-за заранее заложенной гибкости.

> Из-за гибкости возможностей FPGA иногда используются для обкатки какой-либо новой технологии, когда с помощью прошивки можно менять поведение компонента. И когда логика обкатана, можно запускать в производство ASIC, реализующий её.
