ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ ОМСКИЙ НАУЧНЫЙ ВЕСТНИК №3 (103) 2011
УДК 004.414.3 ГРИЦУТЕНКО
Л. С. СИДОРЕНКО
Омский государственный университет путей сообщения
ЭФФЕКТИВНЫЙ ЛЛГОРИТМ РЛСЧЕТЛ БЫСТРОГО ПРЕОБРЛЗОВЛНИЯ ФУРЬЕ ДЛЯ ПРОЦЕССОРЛ ЫУСом-01____________________________
В статье описана реализация алгоритма вычисления БПФ для сигнального процессора ЫУСот-01. Высокая производительность вычислений была достигнута с помощью максимально полного использования архитектуры процессора, правильного упорядочивания команд во избежание блокировок конвейера и использования некоторых особенностей алгоритма. Также приведен расчет теоретического быстродействия процессора ЫУСот-01 при вычислении БПФ, превысить который невозможно.
Ключевые слова: быстрое преобразование Фурье, цифровой сигнальный процессор, конвейер, поворачивающие коэффициенты.
Цель статьи — описать особенности написания кода программы, учет которых при разработке скоростных вычислительных алгоритмов может привести к значительному увеличению производительности.
В задачах, связанных с цифровой обработкой сигналов, операция быстрого преобразования Фурье (БПФ) занимает ключевое место. Выполнение БПФ требует использования значительных вычислительных ресурсов, так как увеличение количества точек в исходном массиве ведет к нелинейному росту количества вычислительных операций [1].
В практических задачах входная последовательность данных обычно представляет собой массив комплексных чисел формата 16 + j16 или 32 + j32 — 16-или 32-разрядных чисел с плавающей точкой. Однако БПФ может рассчитываться и для целых чисел, но их использование не всегда возможно ввиду достаточно небольшого динамического диапазона.
Все более усложняющиеся виды модуляций и увеличивающаяся информационная емкость каналов связи требуют высокой точности вычислений при обработке сигналов. Накопление ошибок округления при многочисленных арифметических операциях недопустимо, так как приводит к неверному распознаванию принятых символов. Поэтому современные телекоммуникационные системы все больше работают только с 32-разрядными числами, обеспечивающими более высокую точность при вычислениях.
Для выполнения БПФ часто используют цифровые сигнальные процессоры. В настоящее время существует два признанных лидера по производству универсальных сигнальных процессоров — американские компании Analog Devices и Texas Instruments. У Analog Devices наиболее производительные процессоры выпускаются под брендами SHARC и TigerSHARC, а у Texas Instruments — это процессоры серии C6000 (например, TMS320C67x). В России (и в СНГ) на данный момент наиболее быстрым и современным (по крайней мере в свободном доступе и готовым к серийному производству) является сигнальный процессор NVCom-01 производства ФГУП НПЦ «Элвис». Сравнительная характеристика процессоров приведена в табл. 1. Данные взяты с официальных сайтов производителей микросхем [2 — 4].
Как видно из табл. 1, судя по заявленным разработчиком характеристикам, процессор NVCom-01 по количеству требуемых тактов для расчета БПФ на 1024 точки не уступает конкурентам. Так же стоит отметить, что американские процессоры работают на более высокой тактовой частоте.
Скорость выполнения БПФ конкретным процессором зависит от реализованной в нем системы инструкций. Поэтому сравнение сигнальных процессоров разных производителей не совсем корректно, так как они могут иметь различный набор команд и могут быть предназначены для разного круга задач. В общем случае процессор, очень быстро выполняющий БПФ, может сильно проигрывать остальным процессорам на других задачах. Также справедливо и то, что скорость выполнения расчетов зависит не только от архитектуры процессора и набора команд, но и от используемого алгоритма вычислений.
Для описания особенностей алгоритма БПФ, реализованного на процессоре NVCom-01, рассмотрим кратко его архитектуру. Во-первых, процессор имеет формат инструкций MIMD (Multiple Instructions Multiple Data) следующего вида:
операция_1 операция_2
обмен_пам_1 обмен_пам_2,
где операция_1 и операция_2 являются вычислительными инструкциями, определенного типа. Опера-ция_1 — операция умножения, а операция_2 должна быть операцией сложения/вычитания (также существует множество других команд, но в рамках данной задачи они не используются). Ещё потребуется команда перемещения содержимого регистров, но она может быть записана в любой слот. Обмен_пам_1 и обмен_пам_2 — это операции обмена с памятью, то есть сохранение содержимого регистра в память или загрузка данных из памяти в регистр. Эти операции могут выполняться одновременно.
Процессор NVCom-01 имеет семифазный конвейер, на котором арифметические операции занимают две последние фазы. Поэтому между двумя командами, вторая из которых использует в качестве аргумента
Таблица 1
Сравнительные характеристики процессоров
NVCom-01 TigerSHARC TMS320C67x
Тактовая частота, МГц 300 600 350
Пиковая производительность, МБЮРБ 1800 3600 2100
Количество тактов на выполнение 1024 точечного БПФ формата 32 + ]32 10900* 9384 14464
* — Приведена расчетная величина, так как на сайте [2] приводится лишь время выполнения БПФ, равное 15,9 мкс, что при максимальной рабочей частоте 300 МГц соответствует при-мерно 10900 тактам на одно ядро ^УСош-01 содержит два сигнальных ядра)
результат вычисления первой, должна располагаться, по крайней мере, одна любая другая команда. В этом случае не будет происходить остановок конвейера, и исполнение команд будет занимать один такт.
Наиболее оптимальным с точки зрения объема вычислений и сложности реализации является алгоритм БПФ по основанию 4 [1]. Для расчета одной элементарной операции — так называемой «бабочки» (или Radix-4 Butterfly в англоязычной литературе) — в этом случае требуется:
1. Три команды сложения-вычитания комплексных чисел.
2. Одна команды сложения-вычитания комплексных чисел с перестановкой полуслов.
3. Три команды умножения комплексных чисел.
Это видно из формулы
A = a + b + c + d = e + g = L B = (a - jb - c + jd)Wb = (f - jh)Wb = OWb C = (a - b + c - d)Wc = (e - g)Wc = MWc , (1)
D = (a + jb - c - jd)Wd = (f + jh)Wb = NWd
где A, B, C, D — входные комплексные числа; Wb, Wc, Wd — поворачивающие коэффициенты; f, h, e, g, L, O, M, N — суммы и разности соответствующих коэффициентов.
Процессор NVCom-01 имеет реализованные команды сложений:
FASX T.D,S.D,D.Q — Сложение и вычитание комплексных операндов, (float32);
FASXS T.D,S.D,D.Q — Сложение и вычитание комплексных операндов с перестановкой в регистре T, (float32);
Но в нем отсутствует команда комплексного умножения 32-разрядных чисел с плавающей точкой. Выполнение умножения двух комплексных чисел требует четыре операции умножения и две операции сложения, что при непосредственном использовании значительно увеличит требуемое для расчета одной «бабочки» количество тактов. Зато в процессоре присутствуют следующие команды:
FM2 T.D,S.D,D.D — Два умножения, (float32);
FMS2 T.D,S.D,D.D — Два умножения c перестановкой полуслов в S, (float32);
FSA T.D,S.D,D.D — Вычитание и сложение, (float32).
Эти команды могут быть записаны в две строки и, соответственно, будут требовать лишь два такта на исполнение. Но так как нам необходимо два сложения, а присутствует лишь команда «Вычитание и сложение», то при простом использовании операн-
I 1 I (a0)+, I(a1)+, (a2)+, I(a3)+, R8.Q R4Q ri°.q
f^sx R4.D, R2.D, R6.Q (85)+, R28.Q
FASX R10.D, R8.D, R12.Q (86)+, R30.Q (at)+IT, R0.Q |
Ifasx R12.D R6.D, R18.Q
9
10
11
12
13
14
15
16
17
18
19
20 21 22
ШЖ-ЛЪЬШМшЖМшШ FSA R26.D, R10.D, R16.D
FMS2 R19.D, R0.D, R26.D FASX R5.D, R3.D, R6.Q
FM2 R25.D, R1.D, R14.D FASX R11.D, R9.D, R12.Q
FMS2 R25.D, R1.D, R17.D FSA R26.D, R22.D, R20.D
FM2 R24.D, R28.D, R22.D FASX R12.D, R6.D, R18.Q
FMS2 R24.D, R28.D, R26.D FSA R17.D, R14.D, R14.D '
FM2 R19.D, R29.D, R27.D FASXS -R131D’ R7.D, R24.Q
FM2 R25.D, R30.D, R14.D FMS2 R25.D, R30.D, R17.D FM2 R24.D, R31.D.R10.D FMS2 R24.D, R31.D.R26.D
FASX
FASX
FSA
FSA
FASX
R4.D, R2.D, R6.Q R10.D, R8.D, R12.Q R26.D, R27.D, R20.D R17.D, R14.D, R14.D R12.D, R6.D, R18.Q
Рис. 1. Алгоритм расчета БПФ для процессора NVCom-01
і
R8.Q (at)+IT. RO-Q
Рис. 2. Диаграмма активности для алгоритма вычисления БПФ
дов, мы не получим требуемого результата. Здесь можно применить следующий прием. Так как поворачивающие коэффициенты известны заранее и не меняются в процессе выполнения, то мы можем изменить знак мнимой части этих коэффициентов на противоположный. В этом случае результат будет такой же, как если бы мы использовали просто команду сложения.
Замечание
Скорость работы алгоритма определяется архитектурой процессора, и поэтому существует некоторый предел, обусловленный доступным набором команд и требуемыми вычислениями, перейти который невозможно.
Таким образом, для процессора ЫУСот-01 минимально возможное количество тактов для расчета одной «»бабочки«» будет равняться семи: три команды БАЯХ, одна команда БАЯХЯ и три команды БЯА. Все эти команды являются командами сложения/вычитания и поэтому должны быть расположены во втором командном слоте. Количество команд умно-
ОМСКИЙ НАУЧНЫЙ ВЕСТНИК №3 (103) 2011 ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ
ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ ОМСКИЙ НАУЧНЫЙ ВЕСТНИК №3 (103) 2011
жения будет равно шести (три команды БМ2 и три команды РМБ2), и они все могут быть свободно размещены в первом командном слоте, что не приведет к дополнительным задержкам.
Этот расчет справедлив для всех уровней БПФ, кроме последнего, так как там нет надобности умножения на поворачивающие коэффициенты. Поэтому минимальное количество тактов для него будет равно четырем: три команды БАЯХ и одна команда БАЗХБ.
Но, кроме непосредственно вычислений, значительную часть процессорного времени также занимают команды загрузки операндов в регистры и сохранения результата в память. Процессор ЫУСот-01 позволяет обмениваться с памятью 128-разрядными числами, что соответствует двум комплексным числам в формате 32+]32. Следовательно, возможна одновременная загрузка двух коэффициентов, расположенных в памяти рядом. Но так как последовательно друг за другом располагаются коэффициенты, участвующие в разных вычислениях, то наиболее оптимальным будет алгоритм, осуществляющий расчет сразу двух «бабочек» за одну итерацию. Кроме того, это позволяет легко переупорядочить команды так, чтобы не возникало задержек процессорного конвейера.
Рассмотрим программный код, представленный на рис. 1 и описывающий одну вычислительную итерацию. Вычислительный алгоритм представляет собой конвейер, завершающий вычисления предыдущей итерации и подготавливающий данные для последующей. В упрощенном виде алгоритм представлен на рис. 2. Части листинга выделены разными цветами для лучшего его восприятия. Непосредственно сам программный код, выполняющий операции загрузки исходных коэффициентов из памяти, вычисляющий значения и сохраняющий полученные коэффициенты обратно в память, занимает строки с 9 по 22. Все, что выделено черным фоном, относится к расчету первой «бабочки». Стоит обратить внимание на строки с 1 по 7. Эта часть служит для первоначальной однократной подготовки данных, которая включает в себя загрузку всех коэффициентов для расчета первой «бабочки» и выполняет три операции сложения-вычитания. В дальнейшем, эти действия выполняются в теле цикла. Такая преамбула позволяет максимально плотно заполнить все доступные командные слоты процессора. Серым цветом выделены команды, выполняющие вычисления второй «бабочки» БПФ. На белом фоне расположены команды, осуществляющие подготовку данных для последующей итерации. Они соответствуют командам, расположенным выше строки 8 (в преамбуле). Также стоит обратить внимание на команды, расположенные в строках 9, 10 и 13 на сером фоне и выделенные более светлым шрифтом. Это одна команда вычисления и три команды сохранения результатов расчета, завершающие вычисления второй «бабочки» (или же предыдущей бабочки для текущей итерации). Таким образом, сохранение результатов вычислений текущей итерации осуществляется лишь в начале следующей. Это также позволяет максимально полно использовать возможности процессора и не увеличивать среднее число команд на одну «бабочку». Но в связи с этим приходится несколько модифицировать адресные указатели перед запуском алгоритма, потому что происходит одно «лишнее» увеличение адреса, которое нужно компенсировать. Кроме того, возникает проблема перезаписи содержимого памяти при первой итерации, так как в этом случае данные будут записываться по адресам, выходящим за отведенный
диапазон. Но это все достаточно легко решается помещением в регистры R20 и R14 значений из перезаписываемой памяти. Таким образом, при запуске вычислений память будет перезаписана собственными значениями.
Обратим внимание на почти не занятые слоты обмен_пам_2. Это обусловлено, во-первых, достаточным для работы алгоритма количеством слотов обмен_пам_1 и, во-вторых, аппаратными ограничениями на операции обмена с памятью в слоте об-мен_пам_2, что не позволяет их эффективно использовать в данном случае.
Таким образом, алгоритм расчета построен как конвейер, что позволяет максимально использовать возможности процессора. Такой подход имеет только один недостаток — дополнительные такты, требуемые для подготовительных операции вначале и сохранения вычисленных данных после окончания последней итерации. Но при значительном количестве повторений тела основного цикла лишние 10 — 15 тактов не будут играть заметной роли.
Расчет последнего уровня БПФ выполнен подобным же образом, только там не только загрузка, но и сохранение данных происходит 128-битными числами, то есть парами коэффициентов. Но чтобы осуществить это, необходимо группировать результат вычислений определенным образом с помощью команд обмена содержимого регистров, для которых остается достаточное количество командных слотов.
Как показано в работе [5], на производительность вычислений влияет и способ использования памяти для сохранения данных. Так же, как и у автора, был использован «out-place» алгоритм (то есть алгоритм без замещения), в котором вычисленные значения размещались в отдельном буфере памяти без замены. Это значительно ускоряет вычисления и уменьшает сложность программы, так как отсутствуют операции над указателями памяти. Но этот способ требователен к объему памяти.
Посчитаем теоретическое быстродействие предложенного алгоритма для БПФ на 1024 точки. Количество тактов, требуемое для расчета первых 4 уровней, будет равно
4 256 7 = 7168 тактов (2)
Количество тактов, требуемое для расчета последнего уровня БПФ, будет равно
1 256 4 = 1024 такта (3)
И общее количество тактов на основании формул (2) и (3) составит
7168 + 1024 = 8192 такта (4)
Алгоритм проверялся на отладочной плате с процессором NVCom-01 при использовании режима отладки среды MCStudio3.1. Расчет БПФ на реальном процессоре потребовал 8367 тактов для 1024 чисел формата 32+j32. Увеличение времени по сравнению с максимальным результатом происходит из-за наличия дополнительных инициализирующих операций и сбивания конвейера при входе в цикл. Этот результат примерно на 2500 тактов быстрее, чем заявленная в документации скорость вычислений БПФ для процессора NVCom-01. Кроме того, полученный результат гораздо лучше, чем и у процессоров производства Texas Instruments и Analog Devices. Расчетная часть программы занимает 62 команды.
Но предложенный алгоритм имеет и существенный недостаток — это требования к свободной памяти. Помимо того, что требуется, по крайней мере, один дополнительный буфер размером 1024*8 байт для хранения вычисленных значений, также требуется буфер примерно такого же объема для хранения массива поворачивающих коэффициентов. В предложенном алгоритме они располагаются последовательно друг за другом для каждой из 1024 «бабочек». Конечно, можно сделать и повторное использование поворачивающих коэффициентов, но это приведет к увеличению команд и, соответственно, уменьшению скорости выполнения расчета. Так что в каждом конкретном случае разработчик должен решать, что важнее — используемая память или скорость вычисления.
Библиографический список
1. Рабинер, Л. Теория и применение цифровой обработки сигналов / Л. Рабинер, Б. Гоулд : пер. с англ. ; под ред. Ю. И. Александрова. — М. : Мир, 1978. — 848 с.
2. Процессор «Мультикор». [Электронный ресурс]. — иИЬ : http://multicore.ru/index.php?id = 601 (дата обращения: 02.05.2010).
3. Процессор ТідегЯНАЕС. [Электронный ресурс]. - "СИГ : http://www.analog.com/en/embedded-processing-dsp/Tiger SHARC/processors/TigerSHARC_benchmarks/fca.html (дата обращения: 13.03.2011).
4. Процессор ТМЯ320С67х. [Электронный ресурс]. - СИГ :http://focus.ti.com/dsp/docs/dspplatformscontentaut.tsp?sectionId = 2&familyId = 327&tabId = 499 (дата обращения: 13.03.2011).
5. Альтман, Е. А. Оптимизация вычислительной схемы быстрого преобразования Фурье / Е. А. Альтман. — Омский научный вестник. — 2006. — № 10. — С. 9—11.
ГРИЦУТЕНКО Станислав Семенович, кандидат технических наук, доцент кафедры «Системы передачи информации».
СИДОРЕНКО Андрей Сергеевич, аспирант кафедры «Системы передачи информации».
Адрес для переписки: e-mail: andrey.s.sidorenko@gmail.
com
Статья поступила в редакцию 20.05.2011 г.
© С. С. Грицутенко, А. С. Сидоренко
"ДК 6813 Л. А. ДЕНИСОВА
Омский государственный технический университет
СОБЫТИЙНОЕ МОДЕЛИРОВАНИЕ ЦИФРОВОЙ СИСТЕМЫ РЕГУЛИРОВАНИЯ_________________________________________
Предлагается подход к исследованию систем управления с переменными параметрами методом событийного моделирования. Представлена математическая модель системы автоматического регулирования, реализованная средствами событийного моделирования МАНАБ/Б1ти!1пк/Stateflow.
Ключевые слова: математическая модель, событийное моделирование, передаточные функции с переменными параметрами, цифровая система автоматического регулирования, переменный период квантования.
Наиболее распространенным средством автоматизации технологических процессов во всех отраслях промышленности являются цифровые автоматические регуляторы. Особенно широко они используются в тепловой и атомной энергетике, где в настоящее время проводится модернизация средств автоматики [1]. Поэтому вопросы создания средств математического моделирования, предназначенных для проектирования и настройки цифровых автоматических регуляторов, являются весьма актуальными.
При разработке систем автоматического регулирования (САР) теплоэнергетических параметров необходимо учитывать особенности объектов автоматизации, характеризующихся, с одной стороны, непрерывностью технологических процессов, а с другой — дискретным характером управляющих воздействий, формируемых цифровой системой регулирования.
Кроме того, нужно иметь в виду, что спроектированная система автоматического регулирования дол-
жна сохранять свои показатели качества при действии возмущающих факторов различной природы, влекущих за собой изменения параметров объекта управления.
Также важным моментом является то, что в реальных цифровых автоматических регуляторах период квантования является нестабильным, переменным, зависящим от времени обработки информации процессорным устройством регулятора, то есть управляющие воздействия на объект управления формируются регулятором через неравные промежутки времени.
Таким образом, цифровая система регулирования, состоящая из непрерывного объекта управления с переменными параметрами и цифрового регулятора, является непрерывно-дискретной, гибридной системой [2] и ее исследование требует применения специального математического аппарата.
В настоящей работе рассмотрен подход к исследованию динамических характеристик системы управ-
ОМСКИЙ НАУЧНЫЙ ВЕСТНИК №3 (103) 2011 ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ