Научная статья на тему 'Аппаратная реализация вычислительных алгоритмов с помощью инструментов алгоритмического синтеза'

Аппаратная реализация вычислительных алгоритмов с помощью инструментов алгоритмического синтеза Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
511
83
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПЛИС / БПФ / АЛГОРИТМИЧЕСКИЙ СИНТЕЗ / ОБРАБОТКА СИГНАЛОВ / РЕКУРСИВНЫЕ ШАБЛОНЫ / RECURSIVE C++ TEMPLATES / CATAPULT С / CATAPULT C / FPGA / FFT / SIGNAL PROCESSING / ALGORITHMIC SYNTHESIS / HLS

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Монахов Вадим Валериевич, Керницкий Игорь Богданович

Описан процесс алгоритмического синтеза с помощью ПО Mentor Graphics Catapult C. Впервые реализована масштабируемая реализация алгоритма БПФ с параметризацией при помощи рекурсивных шаблонов, обеспечивающая возможность последующего синтеза в Mentor Graphics Catapult C. Показано, что производительность созданной с помощью инструментов алгоритмического синтеза аппаратной реализации алгоритмов на основе ПЛИС сопоставима с производительностью процессоров персональных компьютеров. Описаны недостатки компилятора Catapult C, снижающие возможности его применения для аппаратной реализации библиотек алгоритмов на основе ПЛИС. Библиогр. 4 назв. Ил. 2.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

The process of algorithmic synthesis utilizing Menthor Graphics workflow is described. FFT implementation for algorithmic synthesis that uses C+ +Ь templates for parameterization is introduced. It is shown that performance of FFT implementation for Virtex 5 FPGA is comparable with modern PC CPUs. It is shown that the main drawback of Catapult C flow which significantly limits its capabilities for implementation of algorithm libraries for FPGA is the lack of standard components for interaction with dynamic memory (DDR) and standard interfaces (USB).

Текст научной работы на тему «Аппаратная реализация вычислительных алгоритмов с помощью инструментов алгоритмического синтеза»

В. В. Монахов, И. Б. Керницкий

АППАРАТНАЯ РЕАЛИЗАЦИЯ ВЫЧИСЛИТЕЛЬНЫХ АЛГОРИТМОВ С ПОМОЩЬЮ ИНСТРУМЕНТОВ АЛГОРИТМИЧЕСКОГО СИНТЕЗА*

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

Более низкоуровневым по сравнению с GPU способом аппаратного ускорения выполнения алгоритма является создание вычислительной логики для конкретного алгоритма с использованием программируемых логических интегральных схем (ПЛИС) [1, 2], открывающее перспективы программируемой аппаратной реализации разнообразных вычислительных алгоритмов. Применение ПЛИС наиболее удобно в случаях, когда требуется быстрая обработка и фильтрация большого потока данных в реальном времени, например, от экспериментальной установки, либо в устройствах цифровой обработки звуковых сигналов. Однако программирование ПЛИС является сложной задачей, требующей наличия специальных знаний и больших трудозатрат на реализацию и отладку.

Программирование ПЛИС значительно упростилось после появления инструментов алгоритмического синтеза [3]: Forte Cynthesizer (www.forteds.com), Mentor Graphics Catapult C Synthesis (www.mentor.com), Synfora PICO Extreme (www.synfora.com), Cadence-C-to-silicon compiler (www.cadence.com), Synopsis Synphony HLS (www.synopsys.com). Использование алгоритмического синтеза позволяет задавать логику алгоритма в удобной форме, например, на языке C, и позволяет существенно повысить гибкость реализации конкретного алгоритма.

В качестве программного обеспечения для алгоритмического синтеза нами использовался компилятор Mentor Graphics Catapult C Synthesis. На момент начала исследования (2008 г.) инструментарий от Mentor Graphics единственный позволял синтезировать аппаратную реализацию для достаточно сложных алгоритмов и обеспечивал параметризацию с помощью шаблонов C+—+.

Алгоритмический синтез. Инструменты Mentor Graphics Catapult C. Алгоритмический синтез - это способ разработки интегральных схем (ASIC) или создания прошивок для ПЛИС (FPGA) с максимальным, на сегодняшний день, уровнем абстракции описания функциональной части схемы. Такое описание выполняется на алгоритмическом языке, например C, после чего программное обеспечение алгоритмического синтеза, руководствуясь заданными разработчиком ограничениями (используемая технология, желаемая частота работы электронной схемы, ограничения алгоритма), создает RTL-описание (Register Transfer Level) логической схемы на языке Verilog или VHDL [1].

Генерируемая логическая схема может быть оптимизирована по конкретным параметрам (количество элементов или скорость работы). Благодаря применению

* По материалам доклада на юбилейном семинаре «Вычислительная физика» 29—30 октября 2009 г., С.-Петербург.

© В. В. Монахов, И. Б. Керницкий, 2010

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

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

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

• невозможность использования в алгоритме динамического отведения памяти;

• невозможность применения рекурсии неограниченной глубины;

• нежелательность применения циклов с неизвестным на момент компиляции количеством итераций;

В пакете Mentor Graphics Catapult C Synthesis в качестве языка для описания алгоритмов применяется подмножество языка C+—+, состоящее из языка C, к которому добавлена возможность использования шаблонов (templates). Наличие шаблонов позволяет создавать алгоритмы с достаточно гибкими возможностями параметризации.

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

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

С целью максимально эффективного использования дорогих ресурсов ПЛИС, таких как умножители или блоки цифровой обработки сигналов (DSP), оптимизатор Catapult C может генерировать расписание и схему таким образом, что один и тот же ресурс будет использоваться при выполнении разных частей алгоритма. Например, если выполнение алгоритма состоит из двух циклов, в каждом из которых используется операция умножения, Catapult C использует один физический умножитель, данные к которому будут подаваться из нужного цикла с помощью мультиплексоров.

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

Цикл синтеза алгоритма для ПЛИС. Создание алгоритма для применения в ПЛИС (прошивки) с применением инструментов алгоритмического синтеза можно разбить на следующие стадии:

• описание алгоритма на языке С с указанием ограничений; задание дополнительных условий на блоки алгоритма, функциональное тестирование реализации на С;

• выбор используемой ПЛИС; синтез электронной схемы с помощью программного обеспечения алгоритмического синтеза (Catapult C) - создание RTL-описания электронной схемы на языке Verilog;

• проверка результата синтеза с помощью программного обеспечения моделирования работы электронной схемы на основе RTL-описания (Mentor ModelSim);

• синтез до уровня логических элементов (Gate Level); например, с помощью программного комплекса Mentor Precision Synthesis; при необходимости проверка полученной схемы с помощью моделирования;

• задание аппаратной спецификации дизайна (какие ножки ПЛИС для каких сигналов используются, какие напряжения подаются на вход и т. п.);

• создание прошивки для ПЛИС (place & route) с помощью программного обеспечения от производителя ПЛИС; в случае использовавшейся нами ПЛИС Xilinx Virtex 5 - с помощью программного комплекса Xilinx ISE.

В случае использовавшейся нами ПЛИС Xilinx Virtex 5 - с помощью программного комплекса Xilinx ISE.

Синтез параметризованной реализации алгоритма БПФ для ПЛИС Xilinx Virtex 5. Нами было проведено исследование возможности использования алгоритмического синтеза и ПЛИС для аппаратной реализации программных алгоритмов на примере алгоритма быстрого преобразования Фурье, для которого известны аппаратные реализации, созданные другими способами. Алгоритм БПФ был реализован с помощью инструментов алгоритмического синтеза, причём впервые был реализован вариант, использующий шаблоны для параметризации алгоритма.

Элементарной операцией БПФ является «бабочка» [4]. Количество используемых в этой операции точек определяет основание БПФ (radix).

В реализации БПФ для Catapult C процедура выполнения «бабочки» для всего набора данных называется стадией. Набор из нескольких стадий, объединённый в иерархический блок - сегмент (рис. 1).

Все стадии одного сегмента используют для вычислений одни и те же логические элементы и общую память. В процессе выполнения операций сегмента БПФ-процессор выполняет операцию «бабочки» над данными в порядке и с коэффициентами, определяемыми номером конкретной стадии (итерацией рекурсивного шаблона). Конвейер вычислений состоит Рис. 1. Сегмент БПФ

Рис. 2. Реализация БПФ для синтеза в Mentor Graphics Catapult C

из набора сегментов (рис. 2). Интервал поступления данных на вход каждого сегмента (Initiation interval) равен количеству стадий в сегменте.

Задание количества точек, основания, разбиения на сегменты и стадии для конкретной реализации БПФ осуществляется через параметры шаблона, что позволяет настраивать баланс скорости работы и количества используемых логических элементов. Например, для БПФ на 256 точек с основанием 4 можно задать:

• для экономии ресурсов: 1 сегмент, 4 стадии, данные на вход могут поступать 1 раз в 4 цикла;

• оптимальная производительность: 2 сегмента по 2 стадии в каждом, система готова принимать входные данные 1 раз в 2 цикла;

• максимальная производительность: 4 сегмента по 1 стадии, входные данные на каждый цикл.

Таким образом, использование шаблонов позволяет получать разные реализации алгоритма без внесения изменений в исходный код.

Производительность ПЛИС Virtex-5, работающей на частоте 100 МГц (при максимально возможной для существующих ПЛИС 500 МГц) при выполнении БПФ по 1024 точкам, составила порядка 1E10 операций в секунду, что соответствует быстродействию ядра процессора 3 ГГц Intel Core2 Duo. При этом использовалось только 20 % от полного числа элементов ПЛИС, что означает возможность работы до 5 параллельных каналов обработки сигнала с помощью данной ПЛИС и возможность соответственного повышения производительности ПЛИС.

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

Существенным недостатком Catapult C является отсутствие стандартных библиотечных компонентов для использования динамической памяти (например, памяти DDR) и осуществления взаимодействия с внешними устройствами через стандартные интерфейсы (PCI-E, USB). Поэтому на сегодняшний день, применяя только средства алгоритмического синтеза, оказывается невозможным эффективно использовать

вычислительную мощность ПЛИС в сочетании с внешней памятью большого объёма или в сочетании с другими платформами (например, совместно с персональным компьютером).

Выводы. Впервые реализована масштабируемая реализация алгоритма БПФ с параметризацией при помощи рекурсивных шаблонов, обеспечивающая возможность последующего синтеза в Mentor Graphics Catapult C.

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

Показано, что существенным недостатком Catapult C, снижающим возможности его применения для аппаратной реализации библиотек алгоритмов на основе ПЛИС, является отсутствие стандартных библиотечных компонентов для использования динамической памяти (например, памяти DDR) и осуществления взаимодействия с внешними устройствами через стандартные интерфейсы (PCI-E, USB).

Литература

1. Максфилд E. Проектирование на ПЛИС: архитектура, средства и методы. Додека-ХХ1, 2007. 408 с.

2. Губанов Д. А., Стешенко В. Б. Губанов Д. А., Стешенко В. Б. Методология реализации алгоритмов цифровой фильтрации на основе программируемых логических интегральных схем // Сб. докл. 1-й Межд. конф. «Цифровая обработка сигналов и её применения». М., 1998. Т. 4. C. 9-19.

3. Coussy P., Morawiec A. High-level synthesis from algorithm to digital circuit. Springer Netherlands, 2008. 300 p.

4. Блейхут P. Быстрые алгоритмы цифровой обработки сигналов. М., 1989. 448 с.

Статья поступила в редакцию 22 декабря 2009 г.

i Надоели баннеры? Вы всегда можете отключить рекламу.