Встраиваемые FPGA-платформы для обработки данных


PDF версия

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

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

Создание заказного процессора на основе FPGA

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

Программные процессоры на базе FPGA

Программные процессоры FPGA обеспечивают возможность изменения конфигурации и переносимость, благодаря чему устройства на их основе быстрее выходят на рынок и дольше остаются на нем. Реализованные с помощью логики общего назначения, программные процессоры используют гибкую структуру FPGA на уровне кристалла и легко комбинируются с настраиваемыми IP-блоками, удовлетворяя тем самым требованиям по производительности, функциональности и стоимости.
Разработчики имеют возможность создавать единое настраиваемое устройство по обработке данных, отличающееся высокой гибкостью и оптимизированное на системном уровне по быстродействию. Поначалу разработчики выбирают и настраивают IP-блок, удовлетворяющий оптимальному соотношению между функциями, размером и стоимостью. Система допускает возможность встраивания заказной логики, отладки архитектуры на всем этапе проектирования и даже на его завершающей стадии. Благодаря тому, что программные процессоры легко приспосабливаются к новым функциям или стандартам, их применение позволяет снизить стоимость решения и риски, связанные с моральным износом продукции.
Программные процессоры обладают высокой гибкостью за счет того, что реализуются с использованием программируемых логических примитивов (ячеек) FPGA. Эти ячейки допускают возможность многократного перепрограммирования, за счет чего достигается требуемая производительность и стоимость устройства. Благодаря совместимости кода между разными устройствами и продуктами разных поколений программные процессоры позволяют сэкономить на средствах, вложенных в программный код.
Программные процессоры настраиваются с помощью элементов, конфигурируемых в соответствии с требованиями встраиваемого приложения, что позволяет эффективно изменять производительность процессора и его размер. К этим элементам относятся многорегистровое устройство циклического сдвига, делитель, блок перемножения, кэш команд и кэш данных, блок выполнения операций с плавающей точкой, логика отладки оборудования, интерфейсы для подключения стандартных или заказных внешних устройств. Некоторые программные процессоры оснащены также виртуальной памятью и поддержкой защиты памяти, благодаря чему большие приложения и несколько программ могут одновременно выполняться в среде таких мощных операционных систем как Linux. Эти средства позволяют особенно хорошо приспособить программные процессоры к приложениям с повышенными требованиями к безопасности и надежной работе. Кроме того, эти средства поддерживают методы свопинга, которые позволяют программным процессорам выполнять операции с использованием меньшего объема физической памяти, за счет чего снижается стоимость решения и энергопотребление.
Повышение скорости выполнения кода достигается с помощью программных процессоров, использующих дополнительные заказные средства обработки данных (аппаратные ускорители). Ускорители подключаются с помощью интерфейса шины или линии прямой связи к программному ЦП через высокоскоростной тракт данных. Использование шинных акселераторов проще, с точки зрения интерфейса системы. Они идеально подходят для коллективного обмена большими блоками данных через стандартную память, напоминая стандартные периферийные устройства. Однако из-за конфликтных ситуаций с шинами, к которым стремятся получить доступ несколько ведущих устройств, производительность системы снижается. Такие двухточечные интерфейсы как MicroBlaze Fast Simplex Link (FSL) или PowerPC APU (Auxiliary Processor Unit — вспомогательный процессорный блок) обеспечивают поток данных с малой задержкой к процессору и от него. Данные передаются между FPGA и процессором через один и более высокоскоростные выделенные каналы, которые через интерфейсы FIFO подключаются к процессорному конвейеру.
Для размещения ядер программного процессора в FPGA их следует синтезировать в FPGA. К счастью, усовершенствованные средства проектирования и стандартные программные платформы в значительной мере упростили процесс реализации с помощью заранее определенных драйверов устройства и стеков протоколов, автоматизированных функций, пакетов проектирования топологии печатных плат и т.д. Кроме того, предустановленные системы (базовые образцы разработки), использующие уже утвержденные периферийные устройства и контроллеры памяти в IP-библиотеках, которые поставляются с некоторыми средствами проектирования, позволяют инженерам работать с ASSP-подобными решениями в полном соответствии с требованиями заказчика.
В качестве примера рассмотрим многоосевую робототехническую сис­тему, в которой каждый сустав робота с механическим приводом управляется специализированным про­грамм­ным процессором (см. рис. 1). Такой подход позволяет распределить нагрузку процессора. Для того чтобы исключить задержку и упростить код, в схеме используется один процессор на сустав, число которых может быть разным.

Рис. 1. Программные процессоры на базе FPGA для управления приводом робототехники с расширяемой архитектурой
Аппаратные процессоры FPGA: максимальное быстродействие

Аппаратные процессоры FPGA создаются на транзисторном уровне полупроводникового устройства, обеспечивая его максимальную скорость и производительность. В сочетании с программной обработкой данных на основе FPGA эти специализированные жестко закодированные ядра обеспечивают широкий диапазон опций по оптимизации производительности.
Полностью интегрированный аппаратный процессор и коммутатор данных позволяют в большей степени увеличить скорость обработки данных, чем программные процессоры, а также существенно уменьшить время ожидания системы. Современные аппаратные процессоры на базе FPGA обеспечивают высокую степень интеграции в систему, в результате чего значительно повышается ее производительность и снижается общая стоимость. Это достигается за счет следующих возможностей:
– высокой пропускной способнос­ти неблокирующей коммутационной матрицы, которая обеспечивает прямое соединение с меньшим временем ожидания;
– интегрированных шинных интерфейсов с динамической настройкой разрядности шины для подключения программно формируемой периферии;
– специализированных средств прямого доступа к памяти (DMA) для максимального увеличения пропускной способности и производительности IP-ядра;
– одновременный ввод/вывод и доступ к памяти максимально увеличивают скорости передачи данных;
– интерфейс контроллера высокопроизводительной выделенной памяти достаточно гибок, чтобы подключиться к заказному или поставленному вендором контроллеру памяти.
Разумеется, показатель мощности является определяющим. Например, такие встраиваемые ядра как процессор PowerPC 440 с тактовой частотой 550 МГц, достигают производительности до 2200 DMIPS (более 1100 DMIPS на процессор) на базе FPGA самого последнего поколения, функционируя на частотах, в два раза превышающих показатели программных процессоров и имея значительно меньшую посадочную площадь. Этот конвейерный процессор, одновременно осуществляя множество транзакций, эффективнее выполняет команды и передает данные. Помимо того, аппаратные процессоры обеспечивает намного более эффективный доступ к памяти и шине благодаря в два раза большему кэшу команд и данных, по сравнению с устройствами предыдущих поколений, и 128-разрядной шине данных в многокоординатном переключателе шин.
Как и программные, аппаратные процессоры FPGA поддерживают интеграцию заказных сопроцессорных устройств. В случае с процессором PowerPC в FPGA компании Xilinx выполнение кода ускоряется с помощью жестко связанного интерфейса APU с исполнительным блоком процессора. 128-разрядный интерфейс APU допускает передачу четырех слов в одной команде, что позволяет значительно облегчить исполнение на ЦП таких ресурсоемких операций как обработка изображения, сигнала и векторных данных. В структуру программной логики FPGA можно также установить дополнительное устройство для выполнения операций с плавающей точкой, работающее на вполовину меньшей частоте встроенного аппаратного процессора.
В отличие от программных процессоров, аппаратные ядра не требуют логического синтеза. Разработчикам не придется заниматься синтезом, размещением и разводкой аппаратного ядра — теми важными задачами проектирования, которые имеют определяющее значение. Аппаратные процессоры, выполняющие заданную функцию, занимают меньшую площадь на кристалле, чем программные устройства, за счет чего снижается стоимость решения на системном уровне.
Например, в медицинских приложениях по формированию изображения обычно требуется несколько аппаратных процессоров, чтобы справиться с обработкой данных и его передачей. В зависимости от требований на системной уровне, функциональное разделение выполняется несколькими способами. Например, первый процессор может отвечать за сбор данных изображения от удаленной видеокамеры наряду с ее калибровкой и управлением. Собираемые данные первый процессор передает на второй процессор для фильтрации, коррекции искажений и улучшения картинки. Обработанное изображение затем передается на внешнюю централизованную систему для отображения. Второй процессор также запускает операционную систему, отвечающую за управление на системном уровне и передачу данных на внешний хост, включая множественные управляющие каналы Gigabit Ethernet с ускорением протокола TCP/IP. В этом сценарии требования к размеру процессора, сложности задачи, производительности и времени отклика диктуют необходимость в применении нескольких аппаратных процессоров. На рисунке 2 показана система, в которой FPGA использует несколько аппаратных процессоров.

Рис. 2. Несколько аппаратных процессоров FPGA обеспечивает сбор данных изображения, обработку и передачу в централизованную систему для отображения
Дополнительные функции процессоров

Несмотря на то, что и программные, и аппаратные процессоры FPGA имеют свои уникальные преимущества, они могут играть дополнительные функции и сосуществовать в одной схеме, обеспечивая более высокие уровни интеграции и параллелизм. Для разработчиков совместное использование тех и других ядер во встраиваемых системах, несомненно, имеет большое значение. При этом требуется определить оптимальное разделение аппаратных и программных функций, чтобы оптимизировать параллелизм процессов наряду с унификацией и механизмом миграции IP на аппаратные и программные процессоры. Кроме того, возникает более тесная интеграция между управляющим и подчиненными процессорами, что позволяет уменьшить задержку (например, минимизировать задержку между командами и движением суставов робота в примере с многоосевой системой).
Помимо тех многочисленных преимуществ, которые получают системы на основе аппаратных и программных процессоров, производители предлагают разработчикам реализовать дополнительные предложения, характеризующиеся предсказуемым и оптимизированным набором специализированных технологий, позволяющих ускорить проектирование схем и создать инновационные приложения во встраиваемых системах.
Рассмотрим дополнительные возможности использования аппаратных и программных процессоров FPGA на примере приложения по управлению беспилотным летательным аппаратом (см. рис. 3). Работа каждой подсистемы управления полетом основана на входных сигналах датчиков. Программные процессоры можно использовать для сбора, объединения и задания формата данных с датчика в соответствии с курсом самолета, его высотой, скоростью полета и положением, определяемым системой навигации. Однако дополнительные проблемы, вызванные ошибочными данными с датчика или их отсутствием, а также влиянием рельефа местности на прием сигнала системой навигации, наилучшим образом решаются с помощью аппаратного процессора, имеющего большую производительность.

Рис. 3. Многопроцессорная система FPGA для управления полетом и навигации беспилотного летательного аппарата

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

Выводы

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

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

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