Научная статья на тему 'Анализ ядер MIPS32 M4K, Cortex-M3 и C28x как решений для цифровой обработки сигналов'

Анализ ядер MIPS32 M4K, Cortex-M3 и C28x как решений для цифровой обработки сигналов Текст научной статьи по специальности «Компьютерные и информационные науки»

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

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Пантелейчук Алексей

Традиционно для приложений цифровой обработки сигналов (DSP) используются цифровые сигнальные процессоры, построенные на базе специализированной архитектуры, позволяющей добиться высокой производительности системы. В последнее время все чаще производители микроконтроллеров, снабдив свои решения дополнительным функционалом и увеличив тактовые частоты, рекомендуют их для DSP приложений, хотя изначально микроконтроллеры предназначены для задач управления. В настоящей статье делается попытка проанализировать микроконтроллерные ядра Cortex.M3 и MIPS32 M4K с точки зрения способности их выполнять задачи цифровой обработки сигналов, а также произвести их сравнение с традиционным DSP.ядром C28x компании Texas Instruments.

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

Текст научной работы на тему «Анализ ядер MIPS32 M4K, Cortex-M3 и C28x как решений для цифровой обработки сигналов»

Анализ ядер MIPS32 M4K, Cortex-M3 и C28x

V/ ■ V

как решении для цифровом обработки сигналов

Алексей ПАНТЕЛЕИЧУК

pantel@compel.ru

Традиционно для приложений цифровой обработки сигналов (DSP) используются цифровые сигнальные процессоры, построенные на базе специализированной архитектуры, позволяющей добиться высокой производительности системы. В последнее время все чаще производители микроконтроллеров, снабдив свои решения дополнительным функционалом и увеличив тактовые частоты, рекомендуют их для DSP-приложений, хотя изначально микроконтроллеры предназначены для задач управления. В настоящей статье делается попытка проанализировать микроконтрол-лерные ядра Cortex-M3 и MIPS32 M4K с точки зрения способности их выполнять задачи цифровой обработки сигналов, а также произвести их сравнение с традиционным DSP-ядром C28x компании Texas Instruments.

Ядро MIPS32 M4K

Ядро M4K является представителем 32-разрядного семейства процессорных ядер компании MIPS Technologies. Эти ядра рекомендуются производителем для множества задач, начиная от встраиваемых приложений реального времени и заканчивая высокопроизводительными системами с функциями цифровой обработки. Ядро M4K является самым миниатюрным по занимаемой площади на кристалле и самым экономичным по энергопотреблению ядром компании MIPS.

На базе ядра M4K построены, например, микроконтроллеры семейства PIC32 компании Microchip.

Ядро Cortex-M3

Ядро Cortex-M3 разработано компанией ARM, решения которой хорошо известны всем разработчикам. Cortex-M3 представляет собой первое ядро, построенное по архитектуре ARMv7-M и рекомендуется для приложений, в число которых входят промышленные системы управления и беспроводные сети. На ба-

зе этого ядра построены микроконтроллеры STM32 компании STMicroelectronics.

Ядро С28ж

С28x представляет собой 32-разрядное ядро для недорогих приложений цифровой обработки сигналов. Построено на основе архитектуры с сокращенным набором команд (RISC). На базе этого ядра построены цифровые сигнальные контроллеры TMS320F28xx компании Texas Instruments. Контроллеры, а не процессоры, потому что TMS320F28xx

ЦОС

23

ЕТМ-интерфейс

Шина считываемых команд

Логика

управления

Thumb

декодер

Thumb 2 декодер

32-битное АЛУ

32-битный

умножитель

Делитель

Интерфейс

NVIC

Интерфейс

шин

С

Адресная шина команд

( Адресная шина считываемых данных () ( Шина считывания данных ()

Ю

Ю

Логика генерации адресов команд

—~J~—

Логика управления командами

[ Буфер считываемых данных ]

MUX

MUX

Адрес из стека

адрес

Рис. 2. Архитектура ядра Cortex-M3

обладают периферийными устройствами, присущими микроконтроллерам.

Методы анализа

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

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

Умножение

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

Ядро M4K содержит умножитель-делитель с отдельным конвейером (MDU), который функционирует параллельно с основным конвейером и во время останова основного продолжает работать. Умножитель поддерживает операции со знаком и без знака, среди которых умножение, умножение с накоплением (MAC) и деление. Эти операции входят в состав системы команд MIPS32 Release 2 ISA. Когда такая команда попадает в конвейер, она передается

Шина операндов

Текущие данные

Текущие

данные

ARAU Регистровый файл

Умножитель, параллельный сдвигатель, АЛУ

( Шина результатов О

[ Буфер записываемых данных ]

і

( Шина записи данных/команд О

1

( Адресная шина записи данных О

Рис. 3. Архитектура ядра С28х

в МЭИ для выполнения, а команда, следующая за ней (не МЭИ-команда), продолжает перемещаться через конвейер без задержек. Исключение составляют команды, следующие за МЭИ-командами и использующие результат этих МЭИ-команд. МЭИ способен выполнять операции умножения 32x16 бит (с накоплением и без) за один цикл. Ядро СоГех-М3 выполняет операцию 32x32 бит за один цикл, хотя более ранние версии АКМ7ТОМ1 этого не могут.

Умножитель ядра С28 может выполнять две операции 16x16 бит с 32-разрядным результатом или одну 32x32 бит с 64-разрядным результатом за один цикл. Две операции 32x32 бит в случае необходимости совмещаются для выполнения операции 64x64 = 128 бит.

При сложении больших массивов данных может произойти переполнение регистра результата, или так называемое насыщение. При этом в результате сложения двух положительных чисел получается отрицательный результат, а двух отрицательных — положительный. Также, при перемножении больших массивов данных, важно организовать округление результата умножения, например, 16x16 бит до шестнадцати бит. Ни в М4К, ни в СоГех-М3 эти функции аппаратно не поддерживаются. Несмотря на то, что существуют программные библиотеки этих функций, облегчающие разработку Б8Р-алгоритмов, производительность ядра будет ограничена. Ядро С28х поддерживает эти операции аппаратно.

Конвейер

Конвейер позволяет организовать параллельную обработку очереди из нескольких команд. В ходе этой обработки команда прове-

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

Самым коротким конвейером из рассматриваемых ядер обладает Соі!ех-М3. Конвейер ядра СоГех-М3 содержит всего три уровня: выборка, декодирование, выполнение команды. Стоит отметить, что чем короче конвейер, тем меньше энергопотребление и площадь ядра на кристалле, и тем выше эффективность компилятора. Но для приложений цифровой обработки сигналов использование короткого конвейера ограничивает максимальную производительность.

Ядро М4К содержит 5-уровневый конвейер ядра, а также отдельный конвейер умножителя-делителя, о котором шла речь ранее.

Теперь рассмотрим подробнее конвейер специализированного Б8Р-ядра С28х, состоящий из восьми уровней (табл. 1). Благодаря кон-

Таблица 1. Уровни конвейера ядра C28x

Фазы конвейера Описание

Выборка 1 ЦПУ устанавливает адрес команды на шине адреса команд

Выборка 2 ЦПУ считывает из памяти и загружает команды в очередь выборки команд

Декодирование 1 С28х поддерживает 32- и 16-разрядные команды, последние могут быть выровнены по четным или нечетным адресам. На этой стадии конвейера определяются границы команды из очереди выборки команд, ее размер. Также проверяется правильность команды

Декодирование 2 Завершается декодирование команды: • Если нужно считать или записать данные в памяти, ЦПУ генерирует необходимые адреса • ARAU выполняет все необходимые преобразования указателя стека • В случае необходимости (команда ветвления или недопустимая команда) выполнение завершается.

Чтение 1 Если операнды считываются из памяти, на шинах адреса устанавливаются необходимые адреса

Чтение 2 Извлекаются операнды из памяти

Выполнение Выполняются все умножения, сдвиги и АЛУ-операции

Запись Результат, при необходимости, сохраняется в памяти

вейеру ядро С28х может обрабатывать одновременно восемь команд, в результате чего в момент выполнения вычислительным модулям доступны все необходимые операнды. А после выполнения (при необходимости) результаты вычислений сохраняются в памяти, о чем тоже «заботится» конвейер. Благодаря такому конвейеру становится возможным в каждый момент времени выполнять команды, которые без конвейера обрабатывались бы за несколько тактов ядра.

При реализации ЭвР-алгоритмов очень часто используются внутренние циклы. Такие циклы содержат относительно небольшое количество команд, которые чаще являются командами ветвления. Для увеличения производительности в ЭвР-процессорах используются специальные аппаратные функции для реализации внутренних циклов. В М4К и Со11ех-М3, как и в большинстве процессоров общего назначения, таких аппаратных функций нет. Каждое ветвление занимает два цикла тактовой частоты, что сказывается на скорости выполнения БвР-алгоритмов

Система памяти

Приложения цифровой обработки сигналов отличаются тем, что обрабатывают

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

Все рассматриваемые ядра — Cortex-M3, M4K и C28x — построены на основе гарвардской архитектуры памяти с раздельными шинами команд и данных.

Ядро C28x содержит три шины для работы с памятью: шина чтения из памяти программ, шина чтения из памяти данных и шина записи памяти программ-данных. Благодаря такой архитектуре ядро C28x может одновременно читать из памяти программ, читать из памяти данных и писать в память данных.

Специализированные команды

В приложениях цифровой обработки сигналов чаще всего используются команды умножения (с накоплением или без) и сложения. Многие DSP-ядра аппаратно поддерживают команды подсчета количества старших нулевых битов (CLZ) и единичных битов (CLO) внутри 32-разрядного слова. Эти команды широко используются при реализации кодеков с переменной длиной кодируемого слова. Из рассматриваемых ядер эти команды поддерживают C28x и M4K.

Выводы

Естественно, все аспекты выбора ядра для приложений цифровой обработки охватить очень сложно, особенно если доступны решения на базе разных архитектур. Если прило-

Таблица 2. Обобщенное сравнение ядер сточки зрения DSP

Cortex-M3 M4K C28x

Разрядность ядра, бит 32 32 32

Частота ядра, МГц 135 228 150

Конвейер, уровней 8

Регистры общего назначения 13х32-бит 32х32-бит 8х32-бит

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

Архитектура системы памяти гарвардская гарвардская гарвардская

Умножение за один цикл 32х32 32х16 32х32

Операции округления нет нет да

Операции насыщения нет нет да

Команды CLZ и CLO нет да да

жение представляет собой, по сути, систему управления с элементами цифровой обработки сигналов, естественно, специализированный DSP-процессор будет излишним, приведет к высокому энергопотреблению (за счет разветвленной системы шин памяти) и стоимости системы, а такие его особенности, как длинный конвейер команд, будут, напротив, помехой при компиляции. В этом случае стоит обратить внимание на такие ядра, как Cortex-M3 и M4K (в зависимости от сложности цифровой обработки в приложении). И наоборот, даже при относительно низкой тактовой частоте (150 МГц C28x против 228 МГц M4K), ядро C28x вне конкуренции при реализации чистых DSP-алгоритмов — с большим числом умножений и сложений (32x32 бит C28x против 32x16 бит M4K за один цикл) и использованием специализированных команд (CLO, CLZ). ■

Литература

1. An Independent Analysis of the: MIPS Technologies MIPS32 M4K Synthesizable Processor Core. Berkeley Design Technology, Inc.

2. TMS320C28x DSP CPU and Instruction Set Reference Guide (SPRU430D). Texas Instruments, Inc.

3. Cortex-M3 Technical Reference Manual. ARM Limited.

4. PIC32MX Family Data Sheet. Microchip Technology Inc.

5. MIPS32 4K Processor Core Family Integrator's Manual. MIPS Technologies.

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