FPGA — Field Programmable Gate Array
Last updated
Last updated
Не всё по силам ASIC'ам. Всё, что касается минимального интеллекта и возможности повлиять на поведение чипа — это к FPGA.
Это программируемая микросхема, в которую заливается прошивка, определяющая её роль в оборудовании. Как и ASIC, FPGA изначально нацелен на решение какой-то задачи. То есть FPGA для пакетной сети и для управления подачей топлива в инжектор двигателя — вещи разные и прошивкой одно в другое не превратишь. Итак, имеем специализированный чип с возможностью управлять его поведением и модернизировать алгоритмы.
FPGA может использоваться для маршрутизации пакетов, перемаркировки, полисинга, зеркалирования. Например, извне мы можем сообщить чипу, что нужно отлавливать все BGP и LDP пакеты, отправляемые на CPU, в .pcap файл.
Зачем здесь гибкость и возможность программирования? Примеров много:
ситуация выше, где нужно заложить в него новое правило полисинга, зеркалирования, маркировки
внедрения нового функционала
активация лицензируемой опции
модернизация существующих алгоритмов
добавление нового правила для анализа полей заголовков, например, для обработки нового протокола.
Получается без разработки новых чипов, перепайки транзисторов, выбраковывания целых партий, просто новой прошивкой можно сделать всё вышеприведённое и больше.
Опять же, если обнаружена неисправность, то можно написать патч для ПО, который сможет её починить, и при этом обновить только конкретно данный чип, без влияния на всю остальную систему.
FPGA значительно дороже в разработке и производстве, главным образом из-за заранее заложенной гибкости.
Из-за гибкости возможностей FPGA иногда используются для обкатки какой-либо новой технологии, когда с помощью прошивки можно менять поведение компонента. И когда логика обкатана, можно запускать в производство ASIC, реализующий её.