FPGA против ASIC и процессора: компромиссы

Разбираем три способа сделать вычисление в железе и понимаем, почему у каждого своя ниша.

ASIC (Application-Specific Integrated Circuit) — микросхема, спроектированная под одну конкретную задачу и «зашитая» на заводе намертво; изменить её схему после выпуска нельзя.

Есть три принципиально разных способа выполнить цифровое вычисление: запустить программу на универсальном процессоре, сконфигурировать схему в FPGA или заказать специализированный ASIC. Между ними нет «лучшего» — есть набор компромиссов по гибкости, стоимости, скорости и энергии. Понимать эти компромиссы — значит уметь выбрать правильный инструмент.

Три точки на одной оси

Расположим решения на оси «гибкость ↔ эффективность»:

гибкость                                          эффективность
(легко менять)                              (быстро, дёшево в массе)
   |---------------------------------------------------------|
  CPU/GPU          микроконтроллер        FPGA          ASIC
(любой софт)                        (схема, но        (одна схема,
                                    перешиваемая)      навсегда)

Процессор — максимум гибкости: меняешь софт, и он делает что угодно. Но за универсальность платишь: декодирование инструкций, кэши, спекуляция — всё это «накладные расходы» кремния и энергии на задачи, для которых нужен лишь умножитель.

ASIC — максимум эффективности: схема выложена ровно под задачу, ничего лишнего. Транзисторы используются на 100% по делу, частоты высокие, энергии на операцию — минимум. Но проектирование стоит миллионы долларов и месяцы работы, а ошибку в готовом чипе исправить невозможно — нужен новый «прогон» на фабрике.

FPGA — золотая середина: схема, как у ASIC, но перенастраиваемая, как софт. Платишь за это площадью кристалла (программируемые соединения занимают много места) и более низкой частотой.

Сравнительная таблица

КритерийПроцессорFPGAASIC
Гибкостьмаксимальная (любой софт)высокая (перешивается)нулевая (зашит навсегда)
Старт. стоимостьнизкаясредняяочень высокая (млн $)
Цена за штуку (массово)низкаявысокаяочень низкая
Энергия на операциювысокаясредняяминимальная
Производительностьсредняявысокая (параллелизм)максимальная
Время до результатаднинеделимесяцы/годы

Как работает экономика выбора

Главный фактор выбора между 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.
Проверьте себя
1. При каком условии ASIC обычно выгоднее FPGA?
AПри малом тираже в десятки штук
BПри большом тираже (сотни тысяч и миллионы штук)
CКогда схему нужно часто менять
DКогда нужен быстрый прототип
2. Чем FPGA расплачивается за свою перенастраиваемость по сравнению с ASIC?
AНевозможностью выполнять арифметику
BБольшей площадью кристалла и более низкой частотой
CОтсутствием параллелизма
DПолной потерей гибкости
3. Почему FPGA часто используют перед выпуском ASIC?
AFPGA дешевле в массовом производстве
BНа FPGA обкатывают и проверяют схему будущего ASIC, исправляя ошибки до дорогого производства
CASIC нельзя протестировать иначе
DFPGA автоматически превращается в ASIC