Новый шаг в программировании на языках C/C++, OpenCL

PDF версия
Новые средства разработки позволят вам максимально увеличить производительность вашего кода.

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

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

 

Программное обеспечение — это проблема!

До 2000 года типичный микропроцессор состоял в основном из одного гигантского монолитного процессорного ядра, взаимодействовавшего с памятью, а также некоторыми другими дополнительными узлами. Такие микропроцессоры представляли собой относительно простые платформы, на которых было легко разрабатывать приложения. С того времени и до наших дней, уже в течение трех десятилетий согласно закону Мура каждые 22 месяца поставщики микропроцессоров выводили на рынок все более мощные и производительные устройства. Для увеличения быстродействия сначала просто повышали тактовую частоту. Например, тактовая частота самого быстрого монолитного микропроцессора Intel Pentium 4 Pro была чуть выше 4 ГГц. Для разработчиков эта эволюция открывала широкие возможности: с каждым поколением программы постоянно усложнялись и увеличивалось количество разнообразных функций, и все это при постоянно возрастающей скорости выполнения.

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

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

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

Сегодня правила игры в полупроводниковой промышленности меняются снова, но разработчики программного обеспечения приветствуют эти изменения. В очередной раз столкнувшись с необходимостью повышения мощности вычислений, для решения этой проблемы компании обращаются к архитектуре гетерогенной обработки на ускорителях, использующих ПЛИС, которые работают в тесном контакте с основным процессором, увеличивая производительность системы при минимальных затратах энергии. Эта новая архитектура особенно привлекательна для аппаратуры центров обработки данных нового поколения. Например, исследования компании Microsoft показали, что при совместной работе микропроцессора и ПЛИС производительность повышается на 90%, а потребляемая мощность — лишь на 10%. Это намного превосходит показатели, в частности, таких решений, как совместная работа микропроцессора с энергоемкими графическими ускорителями.

Однако преимущества гетерогенной мультипроцессорной обработки с применением ускорителей на ПЛИС распространяются далеко за пределы решений для ЦОДов. Многочисленные встроенные системы, использующие платформу программируемой системы на кристалле Xilinx Zynq‑7000, имеют большую выгоду от «союза» процессоров ARM и программируемой логики, размещенных на одном кристалле. Системы, созданные на новейшей мультипроцессорной платформе Zynq UltraScale+, обещают показать еще более впечатляющие результаты. Платформа Zynq UltraScale+ интегрирует в одном устройстве программируемую логику и несколько ядер ARM (а именно четыре ядра Cortex-A53 для выполнения задач уровня приложений, два ядра реального времени Cortex-R5, а также графический сопроцессор MAL‑400). Такое решение сочетает многоуровневое управление безопасностью системы и расширенное управление питанием (рис. 1).

Мультипроцессорные системы на кристалле Zynq UltraScale+

Рис. 1. Мультипроцессорные системы на кристалле Zynq UltraScale+

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

 

Средство SDAccel для программирования на языках C/C ++ OpenCL-ускорителей, выполненных на ПЛИС

Новая среда разработки Xilinx SDAccel является продуктом, обеспечивающим полный цикл создания программного и аппаратного обеспечения приложений для центров обработки данных на базе ПЛИС (рис. 2). Среда SDAccel включает быстрый, оптимизированный под архитектуру компилятор, позволяющий эффективно использовать все ресурсы ПЛИС. Рабочая среда на базе IDE Eclipse, хорошо знакомая проектировщикам CPU/GPU, обеспечивает разработку программного кода, а также его профилирование и отладку. В этой среде можно создавать динамически реконфигурируемые ускорители, оптимизированные для различных приложений, предназначенных для применения в центрах обработки данных, в том числе с функцией горячей замены. С ее помощью разрабатываются приложения с функциональными ядрами, динамически перераспределяемыми между процессорами и ПЛИС и предназначенными для непрерывного ускорения приложений. Такое перераспределение происходит без нарушения интерфейса между процессором сервера и ПЛИС. Среда SDAccel устанавливается на хост-систему на базе сервера с процессором семейства x86 и представляет собой «коробочный» программный продукт (COTS), действующий совместно с обеспечивающей функциональность ПЛИС дополнительной платой, соединяемой с хостом через шину PCIe.

За счет использования ПЛИС среда разработки SDAccel для OpenCL, C и C++ позволяет до 25 раз увеличить отношение производительность/мощность для оборудования центров обработки данных

Рис. 2. За счет использования ПЛИС среда разработки SDAccel для OpenCL, C и C++ позволяет до 25 раз увеличить отношение производительность/мощность для оборудования центров обработки данных

С помощью SDAccel инженеры, не имеющие опыта применения ПЛИС, могут использовать привычный процесс разработки ПО, используя ПЛИС для оптимизации своих приложений. IDE поставляется с шаблонами для кодирования и программными библиотеками, поддерживающими полный спектр операций по созданию ПО, таких как кодирование, отладка и профилирование, в том числе обеспечивается оценка производительности с помощью эмулятора, запускаемого на хост-системе x86, или платы ПЛИС. Среда разработки поддерживает автоматическое конфигурирование всей необходимой для выполнения приложений аппаратуры. SDAccel обеспечивает также перенесение на платформу ПЛИС кода, выполненного на языках C и C++ для поддерживающих спецификацию OpenCL графических процессоров (GPU), что позволяет использовать хорошо освоенный маршрут проектирования.

Библиотеки, имеющиеся в составе SDAccel, вносят существенный вклад в процесс разработки, базирующийся на опыте проектирования систем на основе связки CPU/GPU. Эти библиотеки содержат обычные низкоуровневые математические библиотеки, а также их высокопродуктивные аналоги, применяющие технологии BLAS, OpenCV и DSP. Библиотеки написаны на языке С++ (то есть без использования RTL), поэтому разработчики могут применять их на всех этапах разработки и отладки. В начале проектирования вся разработка осуществляется на хост-компьютере. Поскольку библиотеки SDAccel написаны на C++, они могут быть скомпилированы вместе с кодом приложения для выполнения в качестве виртуального прототипа на хост-системе. На данном этапе тестирование, отладка и профилирование выполняются на хосте, ПЛИС при этом не используется.

 

Среда SDSoC для разработки встраиваемых систем на базе систем Zynq SoC и MPSoC

Среда SDSoC, поставляемая Xilinx, предназначена для разработчиков программируемых встраиваемых устройств на базе систем на кристалле Xilinx Zynq, а также мультипроцессорных систем Zynq UltraScale+, которые должны вскоре появиться на рынке. Основанная на IDE Eclipse, среда SDSoC существенно упрощает процесс программирования встроенных систем на языках C/C++, обеспечивая написание кода непосредственно для «железа» и для таких операционных систем, как Linux и FreeRTOS. SDSoC — это комплексная платформа для разработки ПО для гетерогенных платформ Zynq SoC и Zynq MPSoC (рис. 3). Оснащенная первым в отрасли оптимизирующим на уровне всей системы компилятором C/C++, среда SDSoC обеспечивает на системном уровне функции профилирования, автоматизированного ускорения работы программного обеспечения с помощью программируемой логики, а также загрузку системы и библиотек и связь со сгенерированной системой. Кроме того, предусмотрена поддержка платформ, базирующихся на технологии Zynq и выполненных сторонними разработчиками. Основанная на простом в использовании IDE Eclipse, универсальная среда разработки для гетерогенных СнК на платформе Zinq позволяет работать не только со всеми существующими программируемыми СнК, но и с мультипроцессорными СнК, которые будут доступны в ближайшее время.

Среда разработки SDSoC обеспечивает хорошо знакомый маршрут проектирования приложений для встроенных систем на C/C++

Рис. 3. Среда разработки SDSoC обеспечивает хорошо знакомый маршрут проектирования приложений для встроенных систем на C/C++

Среда SDSoC обеспечивает работу с различными демонстрационными и отладочными платами, использующими ПЛИС Xilinx Zynq, с помощью пакетов поддержки плат (BSP). Пакеты BSP имеются для всех плат SoC, поставляемых Xilinx, включая платы ZC702 и ZC706, а также для плат сторонних разработчиков, таких как ZedBoard, MicroZed, ZYBO. Кроме того, поддерживаются платы из наборов для видеообработки и распознавания образов. В BSP содержатся метаданные для описания аппаратной платформы на уровне абстракций программирования и архитектуры системы. Применение BSP облегчает создание, интеграцию и верификацию интеллектуальных гетерогенных систем.

 

Среда проектирования SDNet для разработки и программирования коммуникационных карт

Среда SDNet представляет собой програм-мное обеспечение для разработки спецификаций коммуникационных карт. Для таких спецификаций используется интуитивно понятный С‑подобный язык высокого уровня (рис. 4). Среда позволяет сетевым архитекторам и разработчикам создавать сети с гибко задаваемыми маршрутами передачи данных (softly-defined network), увеличивая их контрольные и функциональные возможности за счет перепрограммирования аппаратной и программной части. Сразу же после завершения процесса разработки среда SDNet может использоваться для модернизации аппаратуры или добавления протоколов в уже установленном оборудовании.

Среда SDNet позволяет архитекторам сетей создавать спецификации на C подобном языке

Рис. 4. Среда SDNet позволяет архитекторам сетей создавать спецификации на C подобном языке

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

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

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

 

Среда разработки встроенных систем SDK

Для помощи инженерам — разработчикам встроенных систем Xilinx предоставляет полный набор инструментов программирования, позволяющих эффективно реализовать процесс создания решения начиная от этапа формирования концепции и заканчивая стадией производства. Xilinx предлагает специалистам основанную на IDE Eclipse среду разработки Xilinx Software Development Kit (SDK), которая включает редакторы, компиляторы, отладчики, драйверы и библиотеки для целевой платформы СнК Zynq и для 32‑битной платформы MicroBlaze, встраиваемой в ПЛИС в виде «мягкого» IP-ядра. Данная среда обеспечивает встроенную поддержку «из коробки» таких дополнительных функций, как обеспечение безопасности, и драйверов виртуализации для встроенных в ПЛИС Xilinx уникальных СнК и МПСнК на платформе Zynq. Это позволяет разработчикам создавать новые дифференцированные взаимосвязанные системы, обладающие большей интеллектуальностью и безопасностью, чем ныне существующие.

Xilinx предлагает комплексный набор средств разработки ПО с открытым исходным кодом для создания, загрузки, запуска, отладки и поддержки приложений для ОС Linux, выполняемых на СнК Хilinx или же на эмуляторе.

Кроме того, компания Xilinx поставляет примеры приложений, сконфигурированные ядра, рецепты для построения ядер по технологии Yocto, решения для мультипроцессорных платформ и систем реального времени, а также разнообразные драйверы. Сотрудники компании обеспечивают поддержку на форумах и в профессиональном сообществе. Разработчики систем с открытым исходным кодом для ОС Linux окажутся в чрезвычайно комфортных условиях, позволяющих легко учиться, развиваться и взаимодействовать с людьми, имеющими подобные интересы и потребности.

 

Мощный и растущий альянс разработчиков сред программирования

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

Компания National Instruments (Остин, Техас) предлагает платформы для разработки аппаратуры, идеально подходящие для систем контроля и тестирования нового оборудования. Так, мощь платформы RIO обеспечена применением ПЛИС Xilinx и СнК Zynq. Среда разработки LabVIEW компании National Instruments является удобной графической программой, которая автоматически взаимодействует с системой разработки ПЛИС Xilinx Vivado, поэтому пользователи системы LabVIEW могут не вдаваться в тонкости дизайна для ПЛИС. Действительно, многие пользователи LabVIEW даже не знают, что главной частью платформы RIO является ПЛИС Xilinx. Они просто программируют свои системы в среде LabVIEW, а аппаратные ускорители RIO обеспечивают необходимую производительность.

Компания MathWorks (Натик, штат Массачусетс), поддерживает ПЛИС уже более десяти лет в своих продуктах MATLAB, Simulink, HDL Coder и Embedded Coder, которые автоматически и независимо от пользователя взаимодействуют с системами ISE и Vivado от Xilinx. В результате пользователи, в основном разработчики математических алгоритмов, имеют возможность экспоненциального повышения производительности своих алгоритмов, реализуя их на платформе ПЛИС.

Уже более десяти лет назад в среду ISE был включен инструмент разработки архитектуры систем под названием System Generator. Недавно этот инструмент вошел и в состав среды разработки Vivado Design Suite, что позволяет командам инженеров оптимизировать создаваемые ими алгоритмы для реализации в ПЛИС для повышения производительности. Совместное применение продуктов MathWorks и технологий Xilinx помогает компаниям-разработчикам выпускать тысячи инновационных продуктов.

Фирмы, входящие в альянс производителей средств разработки, созданный Xilinx, предлагают созданные ими средства для поддержки своих систем в средах SDx. Среди них такие компании, как ARM, Lauterbach, Yokogawa Digital Computer Corp. и Kyoto Microcomputer Corp. Что касается поддержки операционных систем и ПО среднего уровня, экосистема Xilinx и ее партнеров по альянсу предоставляет клиентам разнообразное програм-мное обеспечение, в том числе для ОС Linux и RTOS, программирования «голого железа», ПО гипервизора, а также программные решения для обеспечения безопасности.

Для получения дополнительной информации о средах разработки семейства SDx и знакомства с многочисленными решениями, предлагаемыми компанией Xilinx для разработчиков, посетите новую зону для разработчиков ПО на сайте Xilinx.

Добавить комментарий

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