История и архитектура FPGA

FPGA типа Stratix IV GX фирмы AlteraFPGA — одна из разновидностей ПЛИС, широко применяемая в производстве мелкосерийных устройств, для создания прототипов микросхем и в ряде других случаев, когда использовать ASIC экономически невыгодно. Технология довольно сложна в освоении и требует специфических навыков программирования. Но вместе с тем она демонстрирует поразительную эффективность при осуществлении параллельных вычислений и скрывает в себе немалый потенциал.

Введение

Аббревиатура FPGA расшифровывается как Field-Programmable Gate Array, что в дословном переводе означает «программируемая в полевых условиях вентильная матрица». На практике это означает, что данная микросхема не имеет строгой конфигурации логики, определённой производителем, и может быть переконфигурирована пользователем по своему усмотрению. Это открывает большие возможности перед производителями всевозможной радиотехнической аппаратуры, нуждающейся в управлении. Производственный процесс значительно ускоряется. Сокращается количество производственных циклов. Кроме того, при обнаружении ошибки в логике уже выпущенной продукции она просто перепрошивается. Вовсе не обязательно отзывать всю линейку из-за некорректной работы.

Купить микросхемы FPGA можно сегодня во всех крупных магазинах электронных компонентов. Их перепрограммирование осуществляется на одном из языков проектирования (как правило, на VHDL). В ходе перепрограммирования вносятся изменения в принцип работы микросхемы, а делать это можно «на лету» прямо в процессе эксплуатации изделия.

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

История

Принцип работы FPGAТехнология FPGA развилась на основе PROM и PLD, став их логическим продолжением. Обе эти микросхемы были программируемыми, однако суть этого программирования заключалась только лишь в реконфигурации связей между логическими вентилями, но никак не в изменении логики их работы. Так продолжалось вплоть до 1985 года, когда Бернард Вандершмит и Росс Фримен, основавшие за год до этого компанию Xilinx, выпустили на рынок первую FPGA — XC2064. Эта маркировка микросхем навсегда вошла в историю. Впервые реализованная концепция программируемого пользователем матричного кристалла навсегда изменила рынок микросхем и дала мощный толчок к развитию электронных компонентов. В 2006 году, спустя 17 лет после своей смерти, изобретатель FPGA Росс Фримен был занесён в американский Национальный зал славы изобретателей, почитающий фундаментальные вклады учёных в развитие технологического, социального и экономического прогресса.

Первые годы своего существования микросхемы FPGA не пользовались высоким спросом. Несмотря на всю революционность данной технологии, её потенциал был попросту не востребован, да и процесс реконфигурации требовал специфических навыков. Настоящий интерес к технологии проснулся лишь в начале 90-х с развитием телекоммуникационных сетей. Конкурируя друг с другом, компании Xilinx и Altera начали разрабатывать новые решения. Микросхемы FPGA становились всё более сложными и к концу 90-х вышли далеко за пределы телекоммуникационного сектора, заняв ниши в автомобилестроительном, индустриальном и промышленном сегментах.

В 1997 году произошло интересное событие, вызвавшее всплеск всеобщего внимания к технологии FPGA. Учёный Адриан Томпсон, занимавшийся исследованиями в области эволюционного развития искусственных систем, осуществил удивительный эксперимент. Он взял микросхему FPGA производства Xilinx и поставил перед ней задачу научиться распознавать сигналы в 1 кГц и 10 кГц. При этом микросхеме нельзя было пользоваться таймером для определения частоты. Другими словами, она должна была научиться делать это самостоятельно без какого-либо первоначального алгоритма. С этой целью для логических ячеек были сгенерированы 50 случайных программ, каждая из которых начала в прямом смысле бороться за существование. В следующее «поколение» проходили лишь те программы, которые лучше всего справлялись с поставленной задачей. В итоге спустя 3500 поколений в FPGA микросхеме сформировалась конфигурация связей, способная безошибочно распознавать сигналы частотой 1 кГц и 10 кГц. Этот факт стал сенсацией для всего научного сообщества, ведь логика микросхемы родилась в результате естественного эволюционного процесса, а не оптимизации кода человеком. Остаётся лишь догадываться, какие алгоритмы могут появиться на свет в результате эволюционного процесса, происходящего на кристалле кремния.

Архитектура

Архитектура FPGA базируется на трёх основных компонентах:

  • логические блоки (ПЛБ);
  • Input/Output блоки (I/O);
  • маршрутизационные каналы.
Архитектура FPGA
Архитектура FPGA

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

Программируемые логические блоки FPGA от Xilinx
Программируемые логические блоки FPGA от Xilinx

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

Блоки ввода-вывода FPGA (Xilinx)
Блоки ввода-вывода FPGA (Xilinx)

Главная особенность FPGA состоит в том, что каждый программируемый логический блок здесь имеет несколько входов и всего один выход. Рассмотрим конфигурацию логического блока более подробно на примере микросхемы производства Xilinx. Он вмещает в себя таблицу истинности (lookup table или LUT), хранящую внутри себя описание логической функции с подведёнными к ней четырьмя входами. В последние годы Xilinx, Altera и другие крупные производители FPGA микросхем постепенно переходят на LUT с увеличенным количеством входов, что даёт возможность использовать меньшее количество программируемых логических блоков, добиваясь при этом той же производительности.

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

Расположение контактов логического блока
Расположение контактов логического блока

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

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

Маршрутизационные каналы FPGA (Xilinx)
Маршрутизационные каналы FPGA (Xilinx)

В последнее время компании Altera и Xilinx демонстрируют стремление к оптимизации техпроцесса, перенося большинство базовых функций на аппаратный уровень. Микросхема будет работать гораздо быстрее, да и её площадь ощутимо уменьшится, если большинство базовых функций будет реализовано на уровне кристалла. Среди таких функций:

  • интегрированная память;
  • процессоры цифровой обработки сигналов;
  • I/O логика.

Перспективы развития FPGA

Производители пытаются ещё больше расширить сферу применения FPGA, сделав технологию ближе к пользователю. Так, к примеру, компания Altera активно продвигает фреймворк OpenCL для описания параллельных вычислений, производимых в FPGA. Предпринимаются и другие шаги в направлении популяризации FPGA и её продвижения в массы. Не так давно Altera в сотрудничестве с Intel создала микросхему E6x5C — некий гибрид FPGA и процессора из линейки Atom. Однако продукт так и не смог выйти на массовый рынок, так как слишком далеко ушёл от традиционной парадигмы программирования. Однако только представьте, насколько могут расшириться возможности современных компьютеров, если в их процессорах, помимо традиционных ядер и кэш-памяти, будут установлены программируемые логические блоки. Разумеется, оптимизация кода под такие устройства - нетривиальная и довольно трудоёмкая задача. Однако и перспективы, которые откроются перед пользователем, возможно, будут стоить того.


Назад


Наши партнеры