На главную/Технологии/FPGA: как работают программируемые микросхемы и чем они отличаются от CPU и GPU
Технологии

FPGA: как работают программируемые микросхемы и чем они отличаются от CPU и GPU

FPGA - это программируемая микросхема, структура которой настраивается после производства. В статье рассматриваются принципы работы, различия между FPGA, CPU и GPU, а также области применения, преимущества и недостатки технологии. Узнайте, почему FPGA занимает уникальное место в современной электронике и вычислениях.

2 окт. 2026 г.
14 мин
FPGA: как работают программируемые микросхемы и чем они отличаются от CPU и GPU

FPGA - это программируемая микросхема, внутреннюю логику которой можно настраивать уже после производства. В отличие от обычного процессора, где программа выполняется на заранее спроектированных ядрах, FPGA позволяет изменить саму структуру аппаратных соединений и создать внутри чипа цифровую схему под конкретную задачу.

Аббревиатура расшифровывается как Field Programmable Gate Array - программируемая пользователем вентильная матрица. Такие микросхемы занимают необычное место между универсальными CPU и специализированными ASIC: их можно многократно перенастраивать, но при этом они способны выполнять некоторые операции практически как специально созданное оборудование.

Разберём, что такое FPGA, как устроены такие микросхемы, каким образом их программируют и почему в определённых задачах они могут работать эффективнее CPU и GPU.

Что такое FPGA и зачем нужны программируемые микросхемы

Что означает Field Programmable Gate Array

Название Field Programmable Gate Array хорошо описывает главную особенность технологии. Слово Field Programmable означает, что конфигурацию микросхемы можно менять уже после того, как она была произведена и установлена в устройство. Для этого не требуется выпускать новый кристалл на заводе.

В основе FPGA находится большое количество небольших программируемых логических элементов. Их можно настроить для выполнения логических операций и соединить между собой так, чтобы получить нужную цифровую схему.

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

Чем FPGA отличается от обычной микросхемы

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

В FPGA подход другой. После загрузки конфигурации часть логических элементов может стать, например, счётчиком, другая - контроллером интерфейса, третья - блоком цифровой обработки сигнала. Соединения между ними тоже задаются разработчиком.

Поэтому изменение проекта FPGA может фактически превратить один и тот же кристалл в другое цифровое устройство. Сегодня он может обрабатывать видеопоток, а после загрузки новой конфигурации - работать с сетевыми пакетами или управлять промышленным оборудованием.

При этом речь не идёт о физическом перемещении транзисторов. Их расположение остаётся неизменным. Меняется конфигурация программируемых логических блоков и соединений, благодаря чему электрические сигналы начинают проходить по другой схеме.

Для чего нужны FPGA

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

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

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

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

Как устроена FPGA и как она работает

Логические блоки

Основу архитектуры FPGA составляют программируемые логические блоки. Внутри них находятся небольшие таблицы соответствий - LUT, триггеры и вспомогательная логика. Именно из этих элементов собираются более сложные цифровые схемы.

LUT можно представить как маленькую таблицу, которая заранее хранит результат логической операции для разных комбинаций входных сигналов. Благодаря этому один и тот же блок способен выполнять AND, OR, XOR и более сложные логические функции - всё зависит от загруженной конфигурации.

Триггеры нужны для хранения одного бита состояния и синхронизации работы схемы. Объединяя LUT, триггеры и другие элементы, разработчик может создавать счётчики, регистры, конечные автоматы, контроллеры интерфейсов и даже полноценные процессорные ядра.

Программируемые соединения

Одних логических элементов недостаточно: их необходимо соединить друг с другом. Поэтому значительную часть FPGA занимает сеть программируемых линий и переключателей.

При загрузке конфигурации определяется не только функция каждого логического блока, но и путь прохождения сигналов между ними. В результате внутри кристалла формируется цифровая схема, созданная специально под конкретную задачу.

В обычном CPU маршруты между исполнительными блоками определены ещё при проектировании процессора. В FPGA разработчик получает возможность намного глубже управлять структурой вычислений. Именно поэтому несколько операций могут выполняться одновременно в отдельных участках микросхемы, не конкурируя за одно и то же процессорное ядро.

Встроенная память и специализированные блоки

Современная FPGA состоит не только из универсальной логики. В кристалл обычно встроены специализированные элементы, позволяющие выполнять распространённые операции эффективнее.

Например, Block RAM представляет собой блоки быстрой внутренней памяти. Их используют для буферизации данных, хранения таблиц, очередей и промежуточных результатов вычислений.

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

Также FPGA может содержать высокоскоростные трансиверы, контроллеры памяти и готовые интерфейсные блоки. Поэтому разработчику не обязательно собирать каждую функцию из отдельных логических элементов.

Что происходит после загрузки конфигурации

Перед началом работы в FPGA загружается специальный файл конфигурации - bitstream. Он определяет состояние логических блоков, таблиц LUT, соединений и других программируемых элементов.

После этого внутри микросхемы формируется необходимая аппаратная структура. Именно здесь находится одно из главных отличий FPGA от CPU: процессор последовательно считывает и выполняет программные инструкции, тогда как FPGA после настройки уже содержит аппаратную схему, предназначенную для выполнения этих операций.

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

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

Как программируют FPGA

HDL вместо обычного программирования

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

Для этого используют языки описания аппаратуры - HDL. Наиболее известные из них - Verilog и VHDL. С их помощью разработчик описывает регистры, логические операции, условия, соединения между блоками и поведение схемы во времени.

Код HDL внешне может напоминать обычный язык программирования, но смысл у него другой. Например, несколько выражений в Verilog могут описывать несколько аппаратных блоков, которые работают одновременно. В обычной программе аналогичные строки часто выполнялись бы последовательно одним процессорным ядром.

Именно поэтому разработка под FPGA требует другого подхода к мышлению. Нужно представлять не только алгоритм, но и то, какая аппаратная структура будет создана после компиляции проекта.

От описания схемы до работающей микросхемы

Написанный HDL-код нельзя просто загрузить в FPGA. Сначала он проходит несколько этапов обработки.

На этапе синтеза инструменты разработки превращают описание аппаратуры в набор логических элементов, регистров, памяти и других компонентов, которые реально существуют внутри выбранной FPGA.

Затем выполняется размещение элементов по физическим ресурсам кристалла. После этого система трассировки определяет, через какие программируемые соединения должны проходить сигналы между блоками.

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

После успешного размещения и трассировки формируется bitstream - файл конфигурации FPGA. Именно он загружается в микросхему и определяет, как будут настроены логические блоки, память и соединения.

Таким образом, цепочка выглядит так: разработчик описывает аппаратную логику, инструменты синтезируют схему, размещают её внутри FPGA, строят маршруты сигналов и создают готовую конфигурацию.

Можно ли программировать FPGA на C и других языках

Разработка FPGA не ограничивается Verilog и VHDL. Существуют технологии High-Level Synthesis, или HLS, которые позволяют описывать алгоритмы на языках высокого уровня, например C или C++, а затем автоматически преобразовывать их в аппаратную схему.

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

Однако HLS не превращает FPGA в обычный процессор. Исходный код всё равно преобразуется в аппаратную структуру, которая должна поместиться в доступные ресурсы микросхемы и соответствовать требованиям по задержкам и частоте.

Кроме того, автоматический синтез не всегда создаёт наиболее эффективную схему. Для максимальной производительности разработчику всё равно приходится учитывать особенности архитектуры FPGA: ширину шин, количество памяти, число DSP-блоков, глубину конвейеров и параллелизм.

Поэтому программирование FPGA находится на границе между разработкой программного обеспечения и проектированием цифровой электроники. Здесь недостаточно просто написать правильный алгоритм - важно ещё понять, во что именно он превратится на аппаратном уровне.

FPGA против CPU и GPU: в чём принципиальная разница

CPU, GPU и FPGA могут выполнять одни и те же вычислительные задачи, но делают это принципиально разными способами. Главное различие заключается в том, насколько жёстко задана архитектура чипа и каким образом внутри него организуются вычисления.

Как выполняет задачи CPU

CPU - универсальный процессор, рассчитанный на выполнение самых разных программ. Его ядра последовательно считывают инструкции, декодируют их и передают соответствующим исполнительным блокам.

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

Сильная сторона CPU - универсальность. Один и тот же процессор может запускать операционную систему, браузер, игру, архиватор и серверное приложение. Именно поэтому CPU остаётся основой большинства вычислительных систем.

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

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

Подробнее: Почему будущее вычислений за специализированными процессорами

Как работает GPU

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

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

Если одну операцию нужно применить к миллионам элементов массива, GPU обычно значительно эффективнее CPU. Но алгоритм должен хорошо разбиваться на множество параллельных потоков.

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

Что FPGA делает иначе

FPGA предлагает другой подход. Вместо выполнения программы на заранее спроектированных ядрах разработчик формирует собственную аппаратную структуру из доступных логических элементов.

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

В FPGA можно создать отдельный аппаратный блок для каждой стадии и соединить их в конвейер. После его заполнения разные части схемы одновременно обрабатывают разные порции данных. При этом не требуется постоянно считывать и декодировать очередные программные инструкции.

Также FPGA позволяет создавать несколько копий одной схемы, если для них хватает ресурсов кристалла. Благодаря этому степень параллелизма определяется не количеством заранее созданных процессорных ядер, а тем, какую аппаратную структуру удалось разместить внутри конкретной FPGA.

FPGA vs CPU vs GPU

Разницу между тремя архитектурами проще увидеть в сравнении:

ХарактеристикаCPUGPUFPGA
АрхитектураФиксированнаяФиксированнаяПеренастраиваемая
Основной принципВыполнение последовательности инструкцийМассовое параллельное выполнениеСоздание аппаратной схемы под задачу
УниверсальностьОчень высокаяВысокаяЗависит от конфигурации
ПараллелизмОграничен количеством ядер и потоковОчень высокийОпределяется созданной схемой
ЗадержкаЗависит от программы и системыЭффективен при больших пакетах данныхМожет быть очень низкой и предсказуемой
РазработкаОтносительно простаяТребует параллельного программированияТребует проектирования аппаратной логики
Энергоэффективность специализированных задачСредняяВысокаяМожет быть очень высокой

Из этого не следует, что FPGA всегда быстрее CPU или GPU. Результат зависит от конкретной задачи. Если алгоритм постоянно меняется или содержит сложную последовательную логику, универсальный CPU может оказаться практичнее. Для огромных матричных операций и массового параллелизма часто выгоднее GPU.

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

Где применяются FPGA и почему они не заменили процессоры

Телекоммуникации и сетевое оборудование

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

Внутри FPGA можно реализовать аппаратные блоки для обработки пакетов, фильтрации трафика, кодирования и декодирования сигналов, работы с высокоскоростными интерфейсами. Несколько этапов обработки при этом могут выполняться параллельно, без постоянного участия центрального процессора.

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

Промышленность, автомобили и электроника

Ещё одна крупная область применения FPGA - системы реального времени. В промышленном оборудовании микросхема может одновременно считывать данные с датчиков, управлять исполнительными механизмами и обрабатывать цифровые сигналы.

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

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

Дата-центры и искусственный интеллект

FPGA встречаются и в дата-центрах, где используются как специализированные ускорители. Центральный процессор может управлять приложением, а отдельные повторяющиеся операции передавать программируемой логике.

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

Поэтому современные вычислительные системы всё чаще строятся не вокруг одного универсального процессора, а вокруг нескольких типов ускорителей. Подробнее этот принцип разобран в статье "Гибридные вычислительные системы: как CPU, GPU, NPU и FPGA работают как единая архитектура".

Подробнее: Гибридные вычислительные системы: как CPU, GPU, NPU и FPGA работают как единая архитектура

При этом FPGA не всегда оказывается лучшим вариантом для искусственного интеллекта. GPU значительно проще программировать и обладает развитой экосистемой для обучения и запуска нейросетей, а специализированные AI-ускорители могут превосходить FPGA по эффективности в строго определённых операциях.

Преимущества FPGA

Главное преимущество FPGA - сочетание специализации и возможности перепрограммирования. Разработчик получает возможность создать аппаратную структуру под конкретную задачу, а затем изменить её без производства нового кристалла.

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

Ещё одно преимущество связано с параллелизмом. Вместо переключения одного универсального ядра между задачами можно создать несколько независимых аппаратных блоков и выполнять операции одновременно, пока хватает логических ресурсов микросхемы.

В специализированных сценариях это даёт хорошее соотношение производительности и энергопотребления, особенно когда нет необходимости поддерживать всю сложность универсального CPU.

Недостатки FPGA

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

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

FPGA также уступает полностью специализированным микросхемам по эффективности. Если задача окончательно определена и устройство будет выпускаться огромным тиражом, можно разработать ASIC - чип с аппаратурой, созданной непосредственно под нужный алгоритм.

Такой подход подробнее разобран в статье "ASIC-процессоры: почему они быстрее и эффективнее обычных чипов".

Подробнее: ASIC-процессоры: почему они быстрее и эффективнее обычных чипов

В ASIC нет программируемой сети соединений и других ресурсов, необходимых для перенастройки FPGA, поэтому специализированный чип может быть компактнее, быстрее и экономичнее. Обратная сторона - после производства изменить его архитектуру уже невозможно, а разработка собственного кристалла требует значительно больших затрат.

Именно поэтому FPGA занимает промежуточное положение. Она гибче ASIC и способна глубже адаптироваться под задачу, чем CPU или GPU, но за эту гибкость приходится платить стоимостью микросхемы, сложностью разработки и менее привычной программной экосистемой.

Заключение

FPGA отличается от CPU и GPU прежде всего тем, что разработчик настраивает не только выполняемый алгоритм, но и саму аппаратную структуру вычислений. Логические блоки, память и соединения внутри микросхемы можно объединить в специализированную схему, которая обрабатывает данные параллельно и с предсказуемой задержкой.

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

При этом FPGA не является универсальной заменой процессорам и видеокартам. Разработка такой системы сложнее, а эффективность сильно зависит от характера нагрузки. Поэтому на практике программируемые микросхемы чаще работают вместе с CPU, GPU и другими ускорителями, выполняя ту часть вычислений, для которой их архитектура подходит лучше всего.

Теги:

fpga
программируемые микросхемы
аппаратная логика
цифровые схемы
вычислительные ускорители
cpu
gpu
asic

Похожие статьи