FPGA — Field Programmable Gate Array

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

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

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

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

  • ситуация выше, где нужно заложить в него новое правило полисинга, зеркалирования, маркировки

  • внедрения нового функционала

  • активация лицензируемой опции

  • модернизация существующих алгоритмов

  • добавление нового правила для анализа полей заголовков, например, для обработки нового протокола.

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

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

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

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