Процессоры обработки данных как альтернатива RTL-ускорителям


PDF версия

В статье рассмотрены основные преимущества применения процессоров для обработки данных Tensilica. Приведены сравнительные результаты различных методов ускорения.

В системах на кристалле (СнК) управление обычно осуществляется отдельным процессором, который не предназначен для обработки слишком большого объема данных. С этой задачей лучше справляются аппаратные RTL-блоки. Однако на их разработку и верификацию уходит очень много времени. К тому же их нельзя перепрограммировать, расширяя набор поддерживаемых стандартов. Для более гибкой обработки большого объема информации в СнК используются программируемые процессоры данных (DPU — Dataplane processors). В первом приближении можно сказать, что они представляют собой сочетание сигнального процессора и процессора общего назначения (DSP + CPU). Однако это единый процессор, который в отличие от жесткой конструкции можно модифицировать, чтобы добиться наилучшей эффективности в целевом приложении.
Если для обработки данных производительности процессоров общего назначения не хватает, то разработчики либо повышают тактовую частоту (т.е. увеличивают производительность архитектуры), либо применяют аппаратные ускорители, которые берут часть нагрузки на себя, разгружая процессор. У обоих подходов есть недостатки — при повышении тактовой частоты увеличивается мощность потребления, а на создание и верификацию аппаратных ускорителей требуется много времени.
Метод повышения тактовой частоты в современных процессорах применять нецелесообразно, поскольку она изначально настолько высока, что дальнейшее увеличение приводит к чрезмерному расходу энергии.
Радикально иной подход — использовать в СнК процессорное ядро DPU, которое может быть оптимизировано и настроено специально под текущий проект. Архитектура DPU позволяет добавлять регистры с произвольной разрядностью, исполнительные блоки, выполняющие специфические алгоритмы за один или два цикла, а также добавлять заказные устройства ввода-вывода, подключаемые к другим блокам СнК напрямую. При этом потребление и тактовая частота СнК не повышаются. Преимуществом использования процессоров данных является также безопасность и защита проекта от нелегального копирования. Ни одна другая компания не сможет скопировать вашу конфигурацию процессора, не имея соответствующего компилятора и средств разработки.

RTL-ускорители

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

DPU. Взгляд изнутри

DPU — это программируемый процессор, который может быть настроен и оптимизирован под определенное приложение или круг задач. Существуют два способа настройки:
1. Задание нужных параметров в стандартных опциях, таких как разрядность шины, интерфейсы, объем памяти, исполнительные блоки (обработка операций с плавающей запятой, сигнальный процессор и т.д.).
2. Добавление новых регистров, регистровых файлов и собственных инструкций, поддерживающих специальные типы данных и операций. Например, 48-разрядные данные и команды для оцифровки аудиопотока, 56-разрядные данные и команды для цифровой защиты и т.д.
DPU — это синтезируемый RTL-код, готовый для встраивания в FPGA-прототип или СнК. Для процессора автоматически подбирается комплект программных средств, содержащих расширенный набор всех необходимых для данного приложения команд.
Преимущества использования программной реализации вместо аппаратной сложно переоценить. Она значительно упрощает процесс отладки, внесения изменений или добавления новых стандартов и функций. Процессоры данных настраиваются под конкретное приложение. Предусмотрена возможность добавления собственных регистров и регистровых файлов с произвольной разрядностью, заказных исполнительных блоков, а также широких шин данных. Процесс настройки требует мало усилий, а сама конфигурация занимает несколько строк.
Для создания процессора используются специальные языки, описывающие команды расширения. Некоторые из этих языков напоминают языки аппаратного программирования, такие как Verilog и VHDL. Компания Tensilica использует собственный язык TIE — Tensilica’s Instruction Extension, близкий к Verilog.
Заметим, что DPU — это отдельный тип процессора, а не сборка из нескольких процессорных устройств. Новые инструкции и регистры обрабатываются и кодируются с помощью того же компилятора и ассемблера, что и основные инструкции. Встроенная программа для конечного автомата реализуется на языке высшего уровня (С или С++).
На примере процессоров Tensilica рассмотрим, за счет чего удается снизить мощность потребления по сравнению с оптимизированным RTL-блоком? Как правило, под низким энергопотреблением подразумевают количество мВт на МГц. Подход компании Tensilica иной, он основан на рассмотрении общего расхода энергии рабочей нагрузкой. Многие разработчики уверены, что все RISK-процессоры имеют примерно одинаковую производительность на тактовый цикл. Однако это утверждение неверно, особенно для процессоров, предназначенных для определенной задачи или приложения.
Рассмотрим пример. Пусть в алгоритме содержатся несколько нестандартных функций. С одной стороны, они приводят к заметному увеличению размера кристалла и, следовательно, расходу энергии. Однако с другой стороны, если выигрыш в быстродействии от их использования превышает потери от увеличения потребления, то итоговый расход энергии и время выполнения задачи уменьшаются.
Использование уникальной конфигурации процессора защищает устройство от копирования другими компаниями. Не имея под рукой соответствующих программных инструментов, никто не сможет прочитать исходный код процессора. Кроме того, процессоры данных оптимизированы под целевое приложение и обеспечивают высокое быстродействие при более низких тактовых частотах. Следовательно, они потребляют меньше энергии, чем стандартные процессорные ядра с фиксированным набором команд.
Часто для ускорения обработки цифрового сигнала вместе со стандартным 32-разрядным ядром используется сигнальный процессор. В подобной двухпроцессорной архитектуре обмен между ядрами происходит по стандартной шине со сравнительно невысокой скоростью передачи. Процессоры Xtensa позволяют встроить функции сигнальной обработки прямо в процессор. Рассмотрим на примерах,  как можно улучшить характеристики СнК с помощью процессора Xtensa.

Ускорение блока БПФ

Основная операция в дискретном преобразовании Фурье с прореживанием по частоте — «преобразование бабочки». Оно включает шесть операций сложения и четыре перемножения для расчета действительной и мнимой частей. С помощью языка TIE в конвейер процессора Xtensa добавляются четыре сумматора и два умножителя. Таким образом половина преобразования выполняется за один цикл.
Шина данных процессора имеет разрядность 128 бит, поэтому все четыре входных действительных и мнимых целочисленных величины записываются в 128-разрядный регистр за один цикл. Сохранение результата также производится за один цикл.
На практике очень сложно реализовать на СБИС синтезируемые умножители, работающие на частотах порядка нескольких сотен МГц и выполняющие умножение за один цикл. В связи с этим целесообразно проводить операцию умножения за два цикла, чтобы она не была критичной ко времени. Введение этого дополнительного цикла не влияет на быстроту выполнения преобразования Фурье, поскольку при конвейерной обработке «преобразование бабочки» инициируется в каждом такте.
Для реализации описанного алгоритма к процессору добавляется вычислительный блок с одним потоком команд и многими потоками данных (SIMD). Требуется менее 35 тыс. вентилей, включая два умножителя 24×24. Быстродействие увеличивается больше, чем на два порядка. Объем программного кода для БПФ уменьшается в три раза. Результаты ускорения приведены в таблице 1.

Таблица 1. Эффект добавления блока БПФ

 

БПФ

С программным умножением

С аппаратным умножением

С расширением TIE для «преобразования бабочки»

Выигрыш

Объем кода на С, байт

 

430 + библиотеки

430

158

 

Время выполнения, тактов

128 точек

763548

169739

2269

337х

256 точек

1787645

386498

4711

379х

512 точек

3975245

867133

9841

404х

1024 точек

9241893

1922644

20603

449х

Ускорение декодера MPEG-4

Одна из наиболее сложных частей в кодировании видеопотока MPEG-4 — алгоритм оценки движения, который находит смежные видеокадры для похожих блоков пикселов. В алгоритме используется операция суммирования абсолютных разностей (SAD), состоящая из вычитания, нахождения абсолютного значения и суммирования результата с предыдущим вычисленным значением.
Для кадра формата QCIF при частоте смены кадров 15 Гц и схеме поиска по всем направлениям вычисление суммы абсолютных разностей производится со скоростью около 641 млн операций в секунду. При добавлении аппаратного SIMD-ускорителя, обрабатывающего 16 пикселов за цикл, и объединении трех промежуточных операций SAD в одну однотактовую инструкцию скорость выполнения может быть снижена до 14 млн операций в секунду, т.е. уменьшена на 98%.
Ускоритель входит в состав декодера MPEG-4 Tensilica. Полный декодер реализуется на 100 тыс. вентилях и выполняет двустороннее кодирование-декодирование со скоростью 15 кадров в секунду или одностороннее — со скоростью 30 кадров в секунду. Производительность ядра составляет 30 MIPS, а расход энергии существенно ниже, чем в аналогичных процессорах.
Другие алгоритмы MPEG-4 также могут быть ускорены с помощью соответствующих дополнительных инструкций, таких как декодирование с переменной длиной, iDCT, обработка потока битов, деквантизация, предсказание AC/DC, преобразование цветов и выходная фильтрация. Результаты работы ускорителя для различных видеопотоков показаны в таблице 2.

Таблица 2. Ускорение процедуры декодирования Mpeg-4

Видеоклип

Исходная производительность, млрд циклов

Кодек после оптимизации, млн циклов

Тактовая частота (15 кадров/с), МГц

Ускорение TIE, раз

1

3,126

76,81

7,7

40,1

2

3,389

102,19

10,3

33,2

3

10,045

359,5

13,5

27,9

4

9,222

308,7

12,2

29,9

5

29,327

822,8

8,6

35,6

SIMD-ускоритель позволяет уменьшить количество выполняемых операций в тысячу раз, а тактовую частоту процессора — примерно в 30 раз, до десятка МГц. Без ускорения тактовая частота составляет примерно 300 МГц, поэтому потребление намного выше. Только за счет оптимизации кода таких результатов достигнуть нельзя.

Заключение

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

Литература
1. Tensilica. The What, Why, and How of Customizable Dataplane Processors (DPUs).
2. www.autex.spb.ru.

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

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