ПЛИС как система-на-кристалле: новый класс программируемых устройств

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

Внедрение все более совершенных технологических процессов позволяет интегрировать на ПЛИС такие аппаратные блоки как SRAM, DSP, умножители, последовательные приемопередатчики, контроллеры памяти и эффективные функции ввода/вывода. Последним достижением в области программируемых устройств являются системы-на-кристалле, которые содержат на одном кристалле матрицу ПЛИС и процессорные ядра (такие как, ARM Cortex-A9 и Cortex-M3), а также широкий набор процессорной периферии.

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

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

ЭВОЛЮЦИЯ ПРОГРАММИРУЕМЫХ СНК
На первых этапах своего развития архитектура программируемых СнК строилась по типу компьютеров, которые они заменяют. Как правило, такие СнК содержали одно ядро центрального процессора, локальную кэш-память или SRAM, контроллер DRAM-памяти, встроенную в кристалл версию микропроцессорной шины и контроллеры периферии, требовавшейся в данном приложении. В состав процессорно-ориентированной СнК могли входить также DMA-контроллер или прикладной ускоритель для выполнения некоторых часто повторяющихся и сложных заданий, таких как передача данных, криптографические вычисления или быстрое преобразование Фурье (БПФ).

Реализация СнК на ПЛИС обеспечила ряд ценных преимуществ. Разработчик получил возможность выбирать только те аппаратные блоки, которые нужны процессору. В ПЛИС от Altera цифровые ускорители могут быть построены на базе быстрых DSP-блоков, что позволяет достичь производительности, намного превышающей производительность системы, состоящей из отдельного микропроцессора и кристалла DSP. Кроме того, разработчик может реализовать собственные специ- ализированные ускорители, используя программируемую логику, DSP-блоки и RAM-блоки, встроенные в матрицу ПЛИС. Эти ускорители могут быть разработаны либо как блоки на микропроцессорной шине, либо как независимые потоковые процессоры, при этом создаются независимые плоскость данных и плоскость управления микропроцессора.

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

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

Однако разработчики СнК сосредоточены на более абстрактном уровне. Достаточно ли быстродействия аппаратных средств, и каков объем встроенной RAM? Отвечают ли системным требованиям полоса пропускания шины и памяти? Являются ли шинные интерфейсы функционально совместимыми?

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

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

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

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

МНОГОЯДЕРНЫЕ СИСТЕМЫ
Развитие многоядерных архитектур микроконтроллеров вынуждает следовать этой тенденции и разработчиков СнК на базе ПЛИС. Реализация многоядерной системы в ПЛИС возможна двумя способами. Один путь — дублирование процессорных ядер. Довольно просто скомпилировать несколько ядер в одной ПЛИС. Способов их соединения очень много — разработчики архитектуры могут реализовать практически любую конфигурацию системы — от массивов сильносвязанных ядер до архитектур на базе совместно используемого кэша уровня L2 и независимых центральных процессоров на многоабонентской шине Avalon.

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

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

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

Этот подход был внедрен ведущими производителями ПЛИС. Например, компания Altera предложила средство компилирования кода ANSI C на аппаратные ускорители C-to-Hardware Acceleration (C2H), которое позволило автоматизировать один из наиболее трудоемких и длительных этапов проектирования системы — генерирование ускорителей.

СОВРЕМЕННЫЕ СНК НА БАЗЕ ПЛИС
В последнее время среди системных разработчиков наметился общий подход к выбору IP-блоков для применения в программируемых СнК. В частности, почти повсеместно распространенным языком стал C и его производные (например, OpenCL), а процессорные ядра ARM занимают доминирующее положение среди процессоров для встраиваемых систем.

Компания Altera представила набор инструментов, которые позволяют создавать параллельные алгоритмы в набирающем популярность языке OpenCL и транслировать их (без необходимости специальных знаний архитектуры конкретной ПЛИС) в параллельную аппаратную реализацию на ПЛИС.

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

В ответ на рост популярности процессорных ядер ARM семейств Cortex-A во встраиваемых приложениях ведущие поставщики СнК на базе ПЛИС стали внедрять эти процессоры в свои устройства. В частности, Altera выпустила ПЛИС с аппаратной процессорной подсистемой (Hard Processor Subsystem — HPS) на базе двухъядерного процессора Cortex-A9 с собственной кэш-памятью, локальной памятью RAM, оптимизированными контроллерами памяти и периферии. Архитектура этих устройств построена с учетом оптимизации межсоединений между процессорной подсистемой и коммутируемой матрицей программируемой логики при реализации гетерогенных многоядерных систем.

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

SoC FPGA SmartFusion2 от компании Microsemi построены на базе процессора ARM Cortex-M3, предназначенного, главным образом, для микроконтрол-лерных приложений. SoC FPGA от Altera и Xilinx используют двухъядерный прикладной процессор ARM Cortex-A9. В дополнение к процессору эти ПЛИС содержат широкий набор периферии, встроенную память, матрицу логических элементов и порты ввода/вывода.

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

Наиболее важными элементами архитектуры программируемых СнК, определяющими их производительность, является система межсоединений и пропускная способность как встроенной в кристалл, так и внешней памяти. Основным видом межсоединений в архитектуре программируемых СнК является система межсоединений уровня 3 (или L3-межсоединения). Система L3-межсоединений 1 передает данные между памятью, коммутируемой матрицей ПЛИС, процессором и периферией.

SoC FPGA от компании Altera обеспечивает систему L3-межсоединений, состоящую из трех коммутаторов — главного L3-коммутатора, ведущего L3-коммутатора периферии и ведомого L3-коммутатора периферии — реализованных с использованием сетевой инфраструктуры межсоединений AMBA NIC-301 от ARM.

Для минимизации задержек в СнК от Altera используется шина с упрощенной иерархией с архитектурой неблокирующих коммутаторов. Такая система межсоединений обеспечивает поддержку множественных синхронных транзакций от множества ведущих устройств с высокой пропускной способностью, так что каждое ведущее устройство может работать без остановки (блокировки). Для разрешения конфликтов на шине каждому ведущему устройству можно присваивать свой уровень приоритета. Организация доступа к шине ведущих устройств с одинаковым приоритетом осуществляется с использованием алгоритма LRU (с наиболее давним использованием).

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

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

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

Для предотвращения таких задержек в SoC FPGA от Altera предусмотрен дополнительный неблокирующий «облегченный» мост межсоединений с низкой задержкой. Процессор получает доступ к регистрам управления в ПЛИС через простой 32-разрядный интерфейс AXI (Advanced eXtensible Interface) от компании ARM без воздействия на высокоскоростной поток данных. При этом, широкополосные каналы данных между процессором и ПЛИС поддерживают 32-, 64 или 128-разрядные транзакции. Это позволяет достичь максимальной полосы пропускания каналов данных между процессором и ПЛИС до 10,8 ГБ/с и более.

ПОЧЕМУ СТОИТ ПЕРЕХОДИТЬ НА ПРОГРАММИРУЕМЫЕ СНК
Может возникнуть вопрос: целесообразно ли переходить на программируемые СнК при создании системы следующего поколения? Принять окончательное решение помогут ответы на три вопроса:

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

SoC FPGA обеспечивает сравнимую, а, возможно, и превосходящую функциональность и производительность, но при меньшей занимаемой на плате площади, меньшем энергопотреблении и меньшей стоимости системы (на 50%). Интегрирование этих технологий на одном кристалле исключает из общей стоимости стоимость корпусов и, кроме того, одно устройство занимает меньше места на плате. Если центральный процессор и ПЛИС в системе используют раздельные устройства внешней памяти, появляется возможность объединения их в одном запоминающем устройстве, что позволяет дополнительно сэкономить на стоимости, занимаемой площади и энергопотре- блении. Поскольку сигналы между процессором и ПЛИС передаются по одному и тому же кристаллу, то при этом потребляется значительно меньше мощности, чем в случае с раздельными кристаллами. Кроме того, благодаря наличию тысяч внутренних соединений, интегрированное решение имеет значительно более высокую пропускную способность и характеризуется меньшими задержками по сравнению с двухчиповыим решением.

А что если в проекте используется специализированная ASIC, в состав которой входит микропроцессор? Большинство команд разработчиков, использующих решение на базе ASIC, вероятно, в какой-то момент уже исследовали ПЛИС и применяли их на этапе создания прототипов или моделирования. Для многих разработчиков систем на базе ASIC отсутствие в прежних устройствах ARM-процессора было барьером для использования технологии ПЛИС в серийном производстве. Новое поколение программируемых СнК содержит полнофункциональный и полностью совместимый двухъядерный процессор ARM Cortex-A9 с рабочей частотой до 1 ГГц, изготовленный на базе современного 28-нм технологического процесса, что устраняет этот барьер.

Наконец, системы, в которых используется автономный микропроцессор или высококачественный микроконтроллер, а не ПЛИС, могут также обеспечить преимущества при переходе на SoC FPGA. Почему? Многие разработчики исследуют доступные на рынке процессоры и часто довольствуются устройствами, которые лишь примерно соответствуют требованиям приложения — в выбранном процессоре могут отсутствовать порт Ethernet, каналы USB, линии прерываний и т.д. SoC FPGA позволяют создавать собственный вариант ARM-микропроцессора прямо на рабочем столе компьютера. Системы, при разработке которых необходимо было идти на компромисс из-за отсутствия требуемого варианта готового процессора, теперь можно полностью адаптировать к приложению, поэтому данный проект можно видоизменять с точки зрения как аппаратных, так и программных средств, затрудняя возможность его копирования или моделирования.

ЗАКЛЮЧЕНИЕ
Программируемые СнК представляют собой новый класс программируемых устройств, предназначенных для применения в широком спектре приложений. В серийно выпускаемых СнК на базе ПЛИС интегрированы стандартные схемы.

Понравилась статья? Поделиться с друзьями:
TRIAL NEWS