Ключ к использованию ресурсов FPGA


PDF версия

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

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

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

Рассмотрим их более подробно.

Жесткая интеграция на аппаратном уровне

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

Так, в прошлом году компания Xilinx тесно сотрудничала с крупнейшим производителем микропроцессоров, корпорацией Intel по вопросу интеграции x86-процессоров и матриц Xilinx. Результатом совместной работы стало добавление поддержки интерфейсов FSB (Front Side Bus), QPI (QuickPath Interconnect) и HyperTransport, что позволяет подключать FPGA непосредственно в стандартный разъем для процессора на материнской плате. В свою очередь, это позволяет использовать FPGA не в качестве блока ускорения вычислений, а как полноценный процессор. В этом случае процессор и FPGA работают наравне, что обеспечивает очень низкую задержку и возможность когерентного широкополосного доступа к системной памяти. Более того, подобное соединение процессора общего назначения и матрицы FPGA позволяет увеличить общий КПД системы за счет переноса некоторых функций на матрицу. Для иллюстрации приведем пример. Максимальная пропускная способность модулей Nallatech с матрицей Virtex-5 (Xilinx) для 4-процессорных плат составляет 8 Гбайт/с, устойчивый обмен осуществляется на скорости 5 Гбайт/с. Задержка доступа к системной памяти (256 Гбайт) не превышает 110 нс. Один модуль способен обрабатывать 4 канала 10Gb Ethernet.

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

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

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

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

Рис. 1. Структура платформы Еxtensible Processing Platform

Программирование

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

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

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

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

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

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

FPGA-платформы

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

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

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

Устройства с приоритетом процессора, как мы видели на примере Еxtensible Processing Platform, являются прочным фундаментом для использования потенциала FPGA в полную силу, не углубляясь во все детали разработки.

Литература

1. Bolsens I. Three keys to unleashing the full horsepower of the FPGA//RTC magazine, август 2010 г. п

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

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