СОВРЕМЕННАЯ ЭЛЕКТРОНИКА №1/2012

Технология программирования элек тронных устройств для решения вы числительных задач традиционно раз вивалась по двум основным направ лениям: ● программирование одноядерных процессоров и процессоров цифро вой обработки сигналов с помощью списка обязательных, последова тельно выполняемых инструкций (команд); ● программирование устройств на ПЛИС на основе инструкций, выпол няемых параллельно. Для оптимизации работы програм мируемых устройств с последователь ным выполнением инструкций ис пользуется изменение рабочей часто ты процессора, а также аппаратные средства, обеспечивающие паралле лизм на уровне потока команд. Напри мер, в одноядерной архитектуре вход ПРОГРАММИРОВАНИЕ 70 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 1 2012 ной поток инструкций обеспечивается схемой параллельно включенных функциональных устройств (ФУ) (см. рис. 1). В этом случае значительная аппаратная часть процессора обес печивает динамическое извлечение параллелизма из последовательных программ и компенсацию задержки памяти. Растущий интерес проектировщи ков к параллельным вычислениям стал доминирующей парадигмой при оп тимизации архитектуры компьютеров, в основном, многоядерных процессо ров (имеющих 2, 4 или 8 ядер) и пото ковых графических процессоров (со стоящих из сотен ядер). Для решения вычислительных задач сегодня приме няются различные процессорные ар хитектуры в сочетании с непрограм мируемыми аппаратными узлами: SISD (Single Instruction, Single Data), исполь зуемые как процессоры общего назна чения; SIMD (Single Instruction, Multi ple Data), предназначенные для опера ций с векторами данных (например, мультимедийной обработки); MIMD (Multiple Instruction, Multiple Data) – матрицы процессорных элементов. С помощью гетерогенной вычисли тельной среды многоядерный подход позволяет оптимально распределить нагрузку между ядрами процессоров. Кроме того, возможность реконфигу рирования аппаратуры обеспечивает реализацию в каждом многоядерном процессоре именно тех возможностей, которые требуются ему для решения определённого класса задач, что не достижимо ни для процессоров обще го назначения, ни для графических ускорителей. Ещё большими преимуществами при решении вычислительных задач, по сравнению с процессорами стан дартных архитектур, обладают ПЛИС на многоядерных устройствах, пос кольку аппаратные затраты в этом слу чае существенно меньше, чем в архи тектурах многоядерных процессоров. Помимо аппаратного обеспечения, успех параллельных вычислений за висит от используемых программных продуктов. В новых разработках для программируемых устройств проис ходит смещение акцента программи рования с автоматического извлече ния параллелизма на уровне команд во время их выполнения на уровень потоков параллелизма во время коди рования. Для осуществления параллельных вычислений в программируемых уст ройствах компанией Apple был пред ложен открытый кросс платформен ный стандарт OpenCL (Open Com puting Language), поддерживающий параллельное программирование раз личных типов процессоров – CPU, GPU и DSP (ЦПОС). Стандарт программи рования OpenCL может быть успешно использован и при реализации парал лельных вычислений в конфигураци ях на ПЛИС с массовым параллелиз мом (см. рис. 2) [1]. Взаимосвязь стан дарта OpenCL и ПЛИС иллюстрирует рисунок 3. Стандарт OpenCL обеспечи Концептуально последовательная программа ФУ ФУ Диспетчер инструкций Кэш ФУ ФУ Инструкции Концептуально независимое адресное пространство Рис. 1. Одноядерная архитектура извлечения параллелизма из последовательных программ Хост CPU Внешний хост Встроенные элементы ПЛИС SoC ПЛИС Потребитель программы Выполнение OpenCL Ускоритель Встроенный CPU Потребитель программы Выполнение OpenCL Ускоритель Рис. 3. Использование OpenCL на ПЛИС Рис. 2. ПЛИС с массовым параллелизмом Использование стандарта программирования OpenCL для организации вычислений на ПЛИС Владимир Вычужанин (г. Одесса, Украина) В статье рассматривается применение стандарта программирования OpenCL для реализации параллельных вычислений в устройствах на ПЛИС. © СТА-ПРЕСС

RkJQdWJsaXNoZXIy MTQ4NjUy