Выбор между микропроцессором и FPGA


PDF версия

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

Микропроцессоры

Темп развития микропроцессорных устройств в последние годы несколько замедлился и уже не подчиняется закону Мура. Причина этого заключается в том, что достигнут предел по плотности энерговыделения, который не позволяет поднять тактовую частоту выше 1,5…2 ГГц, поскольку чем быстрее работает процессор, тем сильнее он греется.
Появление многоядерных процессоров облегчило ситуацию. Однако с ростом количества ядер появляются другие проблемы. В частности, стал острее вопрос оптимального использования ресурсов при параллельных вычислениях, а также появилась необходимость разработки операционных систем и инструментов для автоматического разделения задачи на параллельные потоки.
Микропроцессоры удобно использовать в таких приложениях, где не требуется большого набора интерфейсов. Кроме того, они эффективны при выполнении вычислений с плавающей запятой. С увеличением количества ядер вопрос разделения задачи на параллельные становится все острее. Чем больше ядер, тем сложнее выполнять динамичные параллельные вычисления, поскольку не всегда удается эффективно распределять задачи между ядрами.

FPGA

Логическая емкость и производительность матриц FPGA в последние годы значительно возросли благодаря ряду факторов: переходу на более высокий технологический уровень, повышению степени интеграции на кристалле, появлению более быстрых последовательных интерфейсов и протоколов связи, использованию специализированных вычислительных ядер и усовершенствованных логических схем.
С развитием технологий FPGA нашли широкое применение во встраиваемых вычислительных системах военного и аэрокосмического назначения, для которых характерны жесткие ограничения по мощности потребления, размеру и весу элементов. Матрицы FPGA хорошо подходят для таких устройств как радиолокационные установки, системы радиотехнической разведки, системы обработки изображений, устройства обработки сигналов и т.д., т.е. они предназначены в первую очередь для тех устройств, в которых производится обработка сигналов и векторные или матричные вычисления. В таких приложениях главным критерием является не стоимость, а характеристики устройства, особенно его быстродействие.
Ввиду способности выполнять громоздкие параллельные вычисления матрицы FPGA стали широко использоваться в сложных приложениях. Работая на сравнительно невысоких тактовых частотах порядка сотен МГц, они могут производить десятки тысяч вычислений за один такт и при этом потреблять гораздо меньше энергии, чем микропроцессоры при такой же производительности. Если пересчитать производительность на ватт потребляемой мощности, то окажется, что матрицы превосходят микропроцессоры примерно в 50—100 раз.
Матрицы подходят не для любого проекта. Их ключевыми недостатками являются способность выполнять только периодические задачи, невозможность производить вычисления с плавающей запятой и сложность разработки программного кода. Остановимся на них более подробно.
Во-первых, FPGA подходят не для всех алгоритмов. Наиболее полно ресурсы матриц используются при выполнении таких задач, которые легко разделяются на параллельные или повторяющиеся подзадачи. Под это определение подпадают, например, алгоритмы сжатия данных по азимуту и дальности РЛС, формирование пучка или обработка изображения. В то же время для таких приложений как классификация цели или индикация подвижной цели матрицы не подходят. Это непредсказуемые и динамичные задачи, с которыми гораздо лучше справляются микропроцессоры.
Что касается работы с числами с плавающей запятой, то на FPGA теоретически можно реализовать подобного рода приложения, однако для этого потребуется неоправданно много логических элементов, что в конечном счете приведет к ограничению вычислительной плотности матрицы, сведя на нет все ее преимущества.
В-третьих, проектирование устройств на основе FPGA намного сложнее, чем на основе микропроцессора. Это связано с неразвитостью инструментов для написания программного кода. Хотя они постоянно совершенствуются, их отставание от развития самих матриц налицо. В итоге написание приложений для матриц требует гораздо больше времени и навыков разработчика, чем создание аналогичных приложений для процессора. Стоимость разработки может оказаться слишком высокой. Кроме того, при программировании микропроцессора используется более высокий уровень абстракции, чем при программировании FPGA.
На выбор аппаратной платформы для реализации проекта влияют и другие, менее значимые факторы. Это, в первую очередь, используемые интерфейсы. Если проектируемое устройство должно поддерживать нестандартные или устаревшие интерфейсы, которые не предусмотрены в современных процессорах, то лучше воспользоваться FPGA. Матрицы позволяют конфигурировать широкий набор стандартных или специализированных последовательных и параллельных (шинных) интерфейсов.

Компромисс

Учитывая гибкость FPGA и преимущества микропроцессоров, разработчики все чаще используют гибридную платформу, содержащую оба типа устройств. В этом решении сочетаются разнообразие ресурсов FPGA и производительность микропроцессора общего назначения, гибкость конфигурирования портов ввода-вывода и поддержка многопотоковых приложений. В качестве примера рассмотрим CHAMP-FX3 компании Curtiss-Wright Controls Embedded Computing. Плата содержит две FPGA Virtex-6 производства Xilinx и двухъядерный микропроцессор MPC8640D компании Freescale (см. рис. 1).

Рис. 1. Структура платформы CHAMP-FX3

Гибридные платформы наиболее хорошо подходят для таких систем, в которых требуется связующее ПО и полный стек протоколов обмена данными, а также синхронизующие схемы.
Еще одно решение — встраивать вычислительное ядро в матрицу. Крупнейшие производители FPGA — Xilinx, Altera или Lattice Semiconductor — предлагают матрицы, содержащие синтезируемые на логических элементах или аппаратные процессорные блоки. Архитектура процессоров может быть любой: стандартной, заказной или собственной разработки. На гибридных платформах целесообразно строить автоматы и устройства, не требующие высокого быстродействия, например, для подключения к внешнему процессору или для обеспечения интерфейса пользователя. Кроме того, гибридные схемы могут использоваться в качестве альтернативы микроконтроллерным устройствам.
Процессорные ядра на FPGA отличаются от классических микропроцессоров. В силу особенностей матриц на них могут быть реализованы не все возможные структуры ядер. Так, FPGA несовместимы с шинами с тремя состояниями и не поддерживают много­портовые регистровые файлы. В сложных архитектурах файлы регистров могут иметь 8 и более портов, чтобы выполнять несколько операций за один цикл. Например, вычисление адреса, выполнение скалярных операций и сохранение результата. Единственный способ реализовать регистры на FPGA — это использовать таблицы преобразования (LUT) в логических ячейках или блоки ОЗУ. Однако при этом потребуются дополнительные логические схемы, чтобы имитировать многопортовый доступ. В итоге полученный процессор будет функционально корректен, но либо его частота работы значительно снизится, либо структуру конвейера потребуется в корне перестроить.
В отличие от микропроцессоров, матрицы не позволяют воспользоваться схемотехническими методами повышения качества прохождения сигнала. Как показало время, наибольшее распространение матрицы со встроенными процессорными блоками получили в таких устройствах как системные контроллеры, второстепенные процессоры в многопроцессорных кластерах, сигнальные процессоры и автоматы.
Этот подход оказывается выгодным сразу по нескольким причинам. Во-первых, он позволяет сэкономить на лицензии. Поскольку процессорное ядро находится внутри матрицы, то фактически при покупке лицензии на использование FPGA приобретается и лицензия на процессор. При использовании внешнего процессора его пришлось бы лицензировать отдельно.
Во-вторых, с технической точки зрения иногда невозможно подключить внешний процессор к FPGA. В этом случае разработчики прибегают к программной реализации, однако тогда остается много незадействованных элементов на матрице.
Одна из привлекательных особенностей использования ядер в FPGA —  возможность реализовать аппаратные ускорители. Они могут быть синтезированы на блоках RTL либо определены как отдельная функция. В последнем случае в схемы декодирующей и исполнительной логики автоматически вносятся изменения, необходимые для встраивания этой новой функции в конвейер FPGA. Этот подход применяется, когда надо заменить только одну операцию.
Матрицы со встроенными вычислительными ядрами имеют ряд недостатков. К ним относятся необходимость использования дополнительных схем и сложность верификации проекта. Для работы вычислительного ядра необходимы дополнительные схемы — модули памяти, периферийные устройства, графический интерфейс пользователя, который помогает связать все блоки системы, создать структуру адресов и т.д. (см рис. 2). При подключении ОЗУ к ядру могут возникнуть сложности; все зависит от того, какой тип доступа к памяти используется ядром. Так, в матрицах производства Microsemi стоит ядро ARM Cortex M3, которое обращается к памяти напрямую, без кэширования. В матрицах MicroBlaze (Xilinx) кэш-память размещается либо в модуле оперативной памяти, либо в ячейках LUT. Доступ к модулям кэша осуществляется напрямую. При желании можно использовать ассоциативную кэш-память с множественным доступом, однако это усложняет схему и ограничивает максимальную частоту работы.
Другой производитель, Altera, ориентируется на широкий круг приложений, поэтому выбор вида адресации предоставляется разработчику. В FPGA Nios кэш уровня L1 реализован как программный контроллер, работающий с накристальными блоками ОЗУ. Вторым вариантом, как и в матрицах Xilinx, является использование ассоциативной кэш-памяти с множественным доступом. Производительность конечного устройства зависит от качества программного обеспечения.

Рис. 2. Инфраструктура для работы процессора в составе FPGA MicroBlaze

Процесс верификации FPGA со встроенным процессорным ядром сложнее, чем для обычной матрицы, и проводится в несколько этапов: верификация ядра, верификация микрокомпьютера как подсистемы и отладка программного кода. Большинство встроенных программных или аппаратных ядер и периферийных IP-блоков проходят процесс верификации на производстве. В этом случае подсистемы по определению имеют правильную структуру. Однако если в проекте используется измененное ядро, то даже если были использованы только инструменты данного производителя, повторная сверка со стороны производителя необходима. Это несколько увеличивает расходы на инструменты, экспертизу и испытательную установку, зато гарантирует работоспособность.
Инструменты, предлагаемые производителем, генерируют правильные RTL-модели, однако ни один производитель не может гарантировать правильность взаимосвязи модулей. Множество проектов приходят в негодность при добавлении процессорного ядра, шины и периферийных устройств. Это происходит потому, что система становится слишком сложной, чтобы ее можно было проверить простым прогоном. Необходимы более совершенные инструменты, быстродействующие модели и методы, анализирующие систему на уровне СБИС. Следует проводить не только моделирование работы всех функциональных блоков, но и верификацию IP-блоков сторонних производителей. Кроме того, не стоит забывать об испытательном стенде, на котором можно было бы отследить ход процесса (см. рис. 3).
Несколько проще обстоит дело, если производитель предоставляет отлаженные и проверенные примеры кода, как это делает Lattice. Программная отладка в большинстве случаев производится с помощью внутренних ядер, таких как CoreSight в процессорах ARM, или с помощью инструментов JTAG, которые позволяют пошагово прослеживать работу и ставить точки останова.

Рис. 3. Верификация системы

С целью более глубокого анализа работы системы можно воспользоваться тестовой программой, которая составляется для каждого проекта отдельно, или использовать встроенные возможности, например пакет Chipscope от Xilinx, чтобы про­анализировать работу на уровне регистров. Однако это кропотливая работа. Гораздо эффективнее сначала промоделировать работу устройства на системном уровне с помощью инструментов Cadence, а затем проводить глубокий анализ.


Литература
1. Ron Wilson. CPUs in FPGAs: many faces to a trend//EDN, март 2011.
2. Steve Edwards. Microprocessors or FPGAs? Making the Right Choice//RTC magazine, февраль 2011.

Оставьте отзыв

Ваш емейл адрес не будет опубликован. Обязательные поля отмечены *