FPGA против ASIC и процессора: компромиссы
Разбираем три способа сделать вычисление в железе и понимаем, почему у каждого своя ниша.
ASIC (Application-Specific Integrated Circuit) — микросхема, спроектированная под одну конкретную задачу и «зашитая» на заводе намертво; изменить её схему после выпуска нельзя.
Есть три принципиально разных способа выполнить цифровое вычисление: запустить программу на универсальном процессоре, сконфигурировать схему в FPGA или заказать специализированный ASIC. Между ними нет «лучшего» — есть набор компромиссов по гибкости, стоимости, скорости и энергии. Понимать эти компромиссы — значит уметь выбрать правильный инструмент.
Три точки на одной оси
Расположим решения на оси «гибкость ↔ эффективность»:
гибкость эффективность
(легко менять) (быстро, дёшево в массе)
|---------------------------------------------------------|
CPU/GPU микроконтроллер FPGA ASIC
(любой софт) (схема, но (одна схема,
перешиваемая) навсегда)Процессор — максимум гибкости: меняешь софт, и он делает что угодно. Но за универсальность платишь: декодирование инструкций, кэши, спекуляция — всё это «накладные расходы» кремния и энергии на задачи, для которых нужен лишь умножитель.
ASIC — максимум эффективности: схема выложена ровно под задачу, ничего лишнего. Транзисторы используются на 100% по делу, частоты высокие, энергии на операцию — минимум. Но проектирование стоит миллионы долларов и месяцы работы, а ошибку в готовом чипе исправить невозможно — нужен новый «прогон» на фабрике.
FPGA — золотая середина: схема, как у ASIC, но перенастраиваемая, как софт. Платишь за это площадью кристалла (программируемые соединения занимают много места) и более низкой частотой.
Сравнительная таблица
| Критерий | Процессор | FPGA | ASIC |
| Гибкость | максимальная (любой софт) | высокая (перешивается) | нулевая (зашит навсегда) |
| Старт. стоимость | низкая | средняя | очень высокая (млн $) |
| Цена за штуку (массово) | низкая | высокая | очень низкая |
| Энергия на операцию | высокая | средняя | минимальная |
| Производительность | средняя | высокая (параллелизм) | максимальная |
| Время до результата | дни | недели | месяцы/годы |
Как работает экономика выбора
Главный фактор выбора между FPGA и ASIC — тираж. У ASIC огромная стартовая стоимость (маски, разработка), зато копия почти бесплатна. У FPGA старт дешевле, но каждая микросхема дорогая. Посчитаем, при каком тираже ASIC выгоднее:
# Грубая модель полной стоимости производства партии
NRE_asic = 2_000_000 # стартовая стоимость ASIC (разработка + маски), $
unit_asic = 5 # цена одной микросхемы ASIC при массовом выпуске, $
NRE_fpga = 50_000 # стартовая стоимость проекта на FPGA, $
unit_fpga = 120 # цена одной FPGA, $
for qty in [1_000, 10_000, 100_000, 1_000_000]:
cost_asic = NRE_asic + unit_asic * qty
cost_fpga = NRE_fpga + unit_fpga * qty
winner = "ASIC" if cost_asic < cost_fpga else "FPGA"
print(f"тираж {qty:>9}: ASIC={cost_asic:>12} FPGA={cost_fpga:>12} -> {winner}")Вывод:
тираж 1000: ASIC= 2005000 FPGA= 170000 -> FPGA тираж 10000: ASIC= 2050000 FPGA= 1250000 -> FPGA тираж 100000: ASIC= 2500000 FPGA= 12050000 -> ASIC тираж 1000000: ASIC= 7000000 FPGA= 120050000 -> ASIC
Вывод читается прямо из чисел: на малых и средних тиражах (тысячи штук) выгоднее FPGA, на больших (сотни тысяч и миллионы) — ASIC. Поэтому смартфоны и сетевые карты делают на ASIC, а нишевое оборудование, прототипы и быстро меняющиеся продукты — на FPGA.
Частые ошибки
- Считать только цену микросхемы. У ASIC основная статья — стартовые расходы (NRE), а не цена штуки. Без учёта тиража сравнение бессмысленно.
- Думать, что FPGA всегда быстрее CPU. На задачах с ветвлениями и нерегулярной памятью процессор с частотой 4 ГГц легко обгонит FPGA на 200 МГц. FPGA выигрывает на потоковом параллелизме, а не везде.
- Забывать про время разработки. Прототип на FPGA готов за недели, ASIC — за год и более. Иногда «время до рынка» важнее эффективности.
Итог
- Процессор — гибкость, FPGA — баланс, ASIC — предельная эффективность.
- Выбор FPGA vs ASIC решает тираж: малый — FPGA, массовый — ASIC.
- FPGA часто служит мостом: на ней обкатывают схему будущего ASIC.