Митеш Мунат (Mitesh Moonat), Санкет Наяк (Sanket Nayak)
Перевод: Евгений Ивашенко eugeny.ivashenko@eltech.msk.ru
Использование встроенных аппаратных ускорителей FIR и IIR в цифровых сигнальных процессорах
Статья опубликована в журнале "Компоненты и технологии " №3 2021
К числу наиболее часто встречающихся методов цифровой обработки сигналов относится их обработка с помощью фильтров с конечной импульсной характеристикой (finite impulse response, FIR) и бесконечной импульсной характеристикой (infinite impulse response, IIR). Использование данных фильтров особенно актуально в приложениях, нацеленных на работу с аудиосигналами. В таких приложениях значительная часть времени работы ядра процессора тратится именно на FIR- и IIR-фильтрацию. Решить проблему загруженности ядра помогает применение встроенных аппаратных ускорителей FIR и IIR, которые далее в статье будут обозначены как FIRA и IIRA (FIR и IIR accelerators). Данные ускорители позволяют ускорить процесс FIR- и IIR-фильтрации и освободить ядро для выполнения других операций. В статье рассмотрены основные принципы применения ускорителей FIRA и IIRA с помощью различных моделей взаимодействия с ядром процессора, а также приведены практические примеры их реализации в системах обработки сигналов в режиме реального времени.

Введение
На рис. 1 показана упрощенная блок-схема блока ускорителей FIRA и IIRA, их взаимодействие с другими составляющими системы, а также ресурсами процессора.
• Основными составляющими блока FIRA и IIRA являются модули умножения с накоплением (MAC), а также ОЗУ небольшого объема, используемое для хранения локальных данных и коэффициентов.
• Для начала работы FIRA/IIRA ядро процессора инициализирует цепь блоков управления записи данных в память процессора DMA (TCB), после чего происходит запись регистра указателя цепи FIRA/IIRA с начальным адресом цепи TCB и настройка регистров управления FIRA/IIRA. После завершения обработки всех каналов FIRA/IIRA срабатывает прерывание, которое может быть использовано ядром для обработки выходных данных и их исползования в дальнейших операциях.
• В теории наиболее рациональным решением является перенаправление всех задач по работе с FIR/IIR-фильтрами с ядра процессора на ускорители, что позволило бы ядру параллельно заняться другими процессами. Однако на практике такой подход не всегда возможен, особенно в тех случаях, когда ядру необходимо использовать выходные данные ускорителя для дальнейшей обработки сигнала и у него нет других независимых задач для параллельного выполнения. В таких случаях прибегают к выбору и использованию определенной модели взаимодействия ядра с ускорителями.
В статье мы рассмотрим основные модели взаимодействия ядра и ускорителей FIRA/IIRA, позволяющие наиболее оптимально распределить задачи по работе с FIR/IIR-фильтрами в различных сценариях приложений.
Использование FIRA и IIRA в системах реального времени
На рис. 2 показана типовая блок-схема обработки аудиоданных формата PCM в режиме реального времени. Согласно схеме, фрейм данных PCM поступает через синхронный последовательный порт SPORT и записывается напрямую в память устройства (DMA). Пока идет прием фрейма (N+1), фрейм N обрабатывается ядром и/или ускорителем FIRA/IIRA, в то же время данные ранее обработанного фрейма (N-1) отправляются через SPORT в DAC (ЦАП) для их последующего преобразования в аналоговый сигнал.
Модели использования ускорителей
Как уже говорилось ранее, для разгрузки ядра, занятого FIR- и/или IIR-фильтрацией, в приложениях могут использоваться различные модели взаимодействия ускорителей FIRA/IIRA и ядра процессора. В общем случае данные модели можно разделить на три категории: полный перенос работы с FIR/IIR-фильтрами на ускорители, распределение задач между ядром и ускорителями и конвейерная обработка данных.
Полный перенос:
• Работа с FIR/IIR постностью переходит на ускорители, а ядро находится в режим ожидания, пока FIRA/IIRA не завершит работу.
• Данная модель эффективна только тогда, когда ускоритель способен работать с более высокой частотой, чем ядро, то есть при использовании блока FIRA.
Распределение задач:
• Работа с FIR/IIR распределена между ядром и ускорителями.
• Данная модель подходит для тех случаев, когда возможна работа сразу с несколькими каналами, что позволяет проводить параллельную обработку данных.
• Основываясь на предварительной оценке времени обработки, можно распределить задачи между ядром и ускорителями таким образом, чтобы оба заканчивали работу примерно в одно и то же время.
• Данная модель позволяет сэкономить большее количество времени на обработке, чем модель полного переноса (рис. 3).
Конвейерная обработка данных:
• Поток данных распределяется между ядром и ускорителями таким образом, что оба могут работать параллельно с разными фреймами данных.
• Ядро обрабатывает N‑й фрейм, а затем инициирует обработку данного фрейма ускорителем, после чего продолжает параллельно обрабатывать выходной (N-1)-й фрейм, созданный ускорителем на предыдущей итерации (рис. 3). Такая последовательность позволяет полностью перенаправить задачу обработки FIR/IIR на ускоритель за счет дополнительной за-
держки вывода.
• Длительность итераций на конвейере и, следовательно, задержка вывода могут увеличиваться в зависимости от общего количества этапов обработки FIR/IIR в системе.
На рис. 3 приведено сравнение описанных выше моделей на примере обработки потока
аудиоданных. Данные проходят три этапа: запись в память (DMA IN), обработка посредством ядра или ускорителей FIRA/IIRA и выгрузка из памяти (DMA OUT). На рисунке также приведено количество циклов работы ядра, освобожденное за счет полного или частичного переноса работы с FIR/IIR-фильтрами на ускорители.
FIRA и IIRA на процессорах SHARC
Приведем линейки DSP-процессоров компании Analog Devices семейства SHARC, которые имеют на борту встроенные ускорители FIRA и IIRA:
• ADSP‑214xx (например, ADSP‑21 489);
• ADSP-SC58x;
• ADSP-SC57x/ADSP‑2157x;
• ADSP‑2156x.
Указанные линейки процессоров имеют следующие особенности:
• Скорость вычислений варьируется в зависимости от конкретной модели.
• Базовая модель программы остается без изменений, за исключением режима автоконфигурации (ACM) на процессорах ADSP‑2156x.
• FIRA имеет четыре модуля MAC, а IIRA — один MAC.

Преимущества FIRA/IIRA на процессорах ADSP‑2156x
ADSP‑2156x — это последняя вышедшая на данный момент линейка процессоров семейства SHARC. ADSP‑2156x представляют собой одноядерные процессоры SHARC с тактовой частотой 1 ГГц и интегрированными FIRA и IIRA, также способными работать на частоте 1 ГГц. Благодаря высокой скорости работы и другим улучшениям, FIRA и IIRA на ADSP‑2156x имеют преимущества по сравнению с аналогичными блоками на процессорах других линеек, таких как
ADSP-SC58x или ADSP-SC57x.
Улучшения производительности
Частота работы ADSP‑2156x увеличена в 8 раз по сравнению с предшествующими линейками (от SCLK‑125 МГц до CCLK‑1 ГГц).
Уменьшена задержка доступа к данным в памяти, а также задержка сообщения между ядром и ускорителями за счет более тесной интеграции с помощью выделенного интерфейса (core fabric).
Функциональные улучшения
Добавлена поддержка режима автоконфигурации (ACM), что позволяет минимизировать вмешательство ядра в работу ускорителей. Данный режим имеет следующие возможности:
• Позволяет останавливать работу ускорителя для динамического добавления задач в очередь.
• Нет ограничения на количество каналов.
• Поддержка генерации триггерных событий (ведущий) и ожидания срабатывания событий триггера (ведомый).
• Выборочная генерация прерывания для каждого канала.
Примеры использования
В данном разделе приведены примеры работы с FIR/IIR-фильтрами в режиме реального времени с применением различных моделей взаимодействия ядра и ускорителей. Тестирование примеров и замер параметров будет проводиться на оценочной плате DSP-процессора ADSP‑2156x.
Пример использования № 1
На рис. 4 изображена блок-схема примера использования модели распределения задач между ядром и ускорителями при частоте дискретизации 48 кГц, размере блока 256 отсчетов и соотношении каналов ядра и ускорителя 5:7.
В таблице 1 приведены замеры MIPS (million instructions per second) ядра и FIRA, а также значения сэкономленных MIPS по сравнению с использованием ядра без ускорителей. В последнем столбце таблицы также указана задержка вывода данных, возникающая при использовании той или иной модели взаимодействия. Как видно из таблицы, использование ускорителей позволяет сэкономить до 335 млн операций/с при использовании конвейерной обработки данных за счет задержки вывода в 1 фрейм (5,33 мс). Использования моделей полного переноса на ускорители или распределения задач между ускорителями и ядром также
приводят к экономии 98 MIPS и 189 MIPS соответственно, без возникновения дополнительной задержки вывода.
Пример использования № 2
На рис. 5 изображена блок-схема другого примера совместного использования ядра и ускорителей, а вернее ядра и ускорителя FIRA в модели распределения задач. Частота
дискретизации составляет 48 кГц, размер блока — 128 отсчетов, соотношение каналов
ядра и ускорителя 1:1.
В таблице 2 показаны результаты замера MIPS для ядра и ускорителя для данного примера использования. Как видно из таблицы, применение ускорителя FIRA в модели конвейерной обработки данных позволяет сэкономить до 490 млн операций/с за счет задержки вывода в 1 фрейм (2,67 мс). В то же время использование модели частичного распределения позволяет сэкономить 234 MIPS ядра без образования дополнительной задержки вывода. Также обратите внимание, что в отличие от примера № 1, в данном случае используется обработка сигнала в частотной области (быстрая свертка) вместо обработки во временной, что приводит к тому, что
MIPS ядра, необходимое для обработки одного канала, оказывается меньше, чем MIPS, которое требуется FIRA, что, как следствие, приводит к большему потреблению MIPS в случае использования модели полного переноса на ускорители.
Заключение
В статье было приведено описание того, как можно распределить нагрузку при работе с FIR- и IIR-фильтрами между ядром процессора и аппаратными ускорителями, применяя различные модели взаимодействия, а также представлены примеры использования данных моделей для достижения желаемых MIPS и профилей обработки при работе с цифровым сигнальным процессором ADSP‑2156x.