ARM Cortex – M4 вычислительные возможности ( DSP, MAC , FPU , SIMD )
Оглавление
3.1. Характеристики ядра Cortex-M4
4. 16-бит DSP-инструкции в Cortex-M4
5. 32-бит DSP-инструкции в Cortex-M4
9. Арифметика насыщения (saturated)
2. ARM Cortex – M4
|
Бинарная совместимость ядер Cortex- M
|
|
Cortex-M0 |
Cortex-M3 |
Cortex-M4 |
Architecture Version |
V6M |
v7M |
v7ME |
Instruction set architecture |
Thumb, Thumb-2 System Instructions |
Thumb + Thumb-2 |
Thumb + Thumb-2, DSP, SIMD, FP |
DMIPS/MHz |
0.9 |
1.25 |
1.25 |
Bus interfaces |
1 |
3 |
3 |
Integrated NVIC |
Yes |
Yes |
Yes |
Number interrupts |
1-32 + NMI |
1-240 + NMI |
1-240 + NMI |
Interrupt priorities |
4 |
8-256 |
8-256 |
Breakpoints, Watchpoints |
4/2/0, 2/1/0 |
8/4/0, 2/1/0 |
8/4/0, 2/1/0 |
Memory Protection Unit (MPU) |
No |
Yes (Option) |
Yes (Option) |
Integrated trace option (ETM) |
No |
Yes (Option) |
Yes (Option) |
Fault Robust Interface |
No |
Yes (Option) |
No |
Single Cycle Multiply |
Yes (Option) |
Yes |
Yes |
Hardware Divide |
No |
Yes |
Yes |
WIC Support |
Yes |
Yes |
Yes |
Bit banding support |
No |
Yes |
Yes |
Single cycle DSP/SIMD |
No |
No |
Yes |
Floating point hardware |
No |
No |
Yes |
Bus protocol |
AHB Lite |
AHB Lite, APB |
AHB Lite, APB |
CMSIS Support |
Yes |
Yes |
Ye |
3. DSP-параметры
3.1.
Характеристики ядра Cortex-M4
· Архитектура ARMv7-ME
· Полная совместимость с Cortex–M3
· Модуль MAC (Single-cycle multiply-accumulate)
· Оптимизированные инструкции SIMD (single instruction multiple data )
· Инструкции насыщения (Saturating)
· Модуль Floating–Point Unit одинарной точности (FPU), опционально
· Аппаратное деление (2-12 цикла), также как в Cortex–M3
4. 16-бит DSP-инструкции в Cortex-M4
· Использование DSP инструкций в задачах с 16-бит данными
· Cortex–M4 имеет преимущество от 30% до 70%
5. 32-бит DSP-инструкции в Cortex-M4
· Использование DSP инструкций в задачах с 32-бит данными
· Cortex–M4 имеет преимущество от 25% до 60%
6. Проигрывание
Необходимая частота в МГц для декодирования MP3
7. Модуль MAC
· Модуль умножения позволяет выполнить за 1 цикл инструкции MUL или MAC:
o Signed/Unsigned Multiply
o Signed/Unsigned Multiply-Accumulate
o Signed/Unsigned Multiply-Accumulate Long (64-бит)
o 2 операции 32-бит MAC
o До 7 операции 8-бит MAC
o 4 операции 16-бит MAC (двойной 16-бит MAC)
8. 1-цикловой MAC в Cortex-M4
OPERATION |
INSTRUCTIONS |
CM3 |
CM4 |
16 x 16 = 32 |
SMULBB, SMULBT, SMULTB, SMULTT |
n/a |
1 |
16 x 16 + 32 = 32 |
SMLABB, SMLABT, SMLATB, SMLATT |
n/a |
1 |
16 x 16 + 64 = 64 |
SMLALBB, SMLALBT, SMLALTB, SMLALTT |
n/a |
1 |
16 x 32 = 32 |
SMULWB, SMULWT |
n/a |
1 |
(16 x 32) + 32 = 32 |
SMLAWB, SMLAWT |
n/a |
1 |
(16 x 16) ± (16 x 16) = 32 |
SMUAD, SMUADX, SMUSD, SMUSDX |
n/a |
1 |
(16 x 16) ± (16 x 16) + 32 = 32 |
SMLAD, SMLADX, SMLSD, SMLSDX |
n/a |
1 |
(16 x 16) ± (16 x 16) + 64 = 64 |
SMLALD, SMLALDX, SMLSLD, SMLSLDX |
n/a |
1 |
32 x 32 = 32 |
MUL |
1 |
1 |
32 ± (32 x 32) = 32 |
MLA, MLS |
2 |
1 |
32 x 32 = 64 |
SMULL, UMULL |
5-7 |
1 |
(32 x 32) + 64 = 64 |
SMLAL, UMLAL |
5-7 |
1 |
(32 x 32) + 32 + 32 = 64 |
UMAAL |
n/a |
1 |
32 ± (32 x 32) = 32 (upper) |
SMMLA, SMMLAR, SMMLS, SMMLSR |
n/a |
1 |
(32 x 32) = 32 (upper) |
SMMUL, SMMULR |
n/a |
1 |
Все вышеперечисленный операции выполняются за 1 цикл на Cortex–M4
9. Арифметика насыщения (saturated)
· Предотвращение переполнения переменных отсечением мин/макс границ и снижение нагрузки на ядро
· Пример
o Аудио-приложения
10. Инструкции SIMD
· Single Instruction Multiple Data
· Оперирование пакетированными данными (packed data)
· Параллельная работа с несколькими операндами 8-бит или 16-бит данных
o двойной 16-бит MAC (Результат = 16 x 16 + 16 x 16 + 32)
|
· Преимущества
o Параллельность операций
o Минимизация количества инструкций загрузки/хранения для обмена между памятью и банком регистров, 2 или 4 транзакции данных за 1 цикл, если нет необходимости в 32-бит данных
11. Пакетирование данных
· Байт или 2 байта пакетируются в слова
· Более эффективный доступ к структурам данных
· Использование SIMD-инструкций
· Инструкции капсуляции и инкапсуляции данных
|
12. Бесплатная DSP lib от ARM
· DSP библиотека для Cortex-M4
o Быстрое освоение
o Абстракция от низкоуровневого программирования
· Анализ конкурентных режимов при одинаковых условиях
· Ускорение использования наработок сторонних производителей
· Простота использования для полшьзователя
o Минимальный барьер – простота освоения и использования
· Одна стандартная библиотека – во всех проектах
o ARValueM библиотека DSP + ваше приложение
o Использование совместно с другими средствами проектирования – матлаб и т.д.
13. Функции DSP lib
· Базовая математика – векторная математика
· Быстрые тригоном. функции sin, cos, sqrt и т.д.
· Интерполяция – линейная, билинейная
· Комплексная математика
· Статистика – макс, мин, и т.д.
· Фильтрация – IIR, FIR, LMS и т.д.
· Преобразования – БПФ и т.д.
· Функции для работы с матрицами
· ПИД – контроллер
· Поддержка функций – копия/заполнение массивов, конвертирование типов данных
14.
Инструменты
· Matlab / Simulink
o Генрация готового кода
o Mathworks
o В разработке (возможно в конце года)
o Aimagin (Rapidstm32)
o Очень много продуктов, большинство платные:
o http://www.dspguru.com/dsp/links/digital-filter-design-software
15. Floating Point Unit
FPU : Floating Point Unit
Стандартизирован IEEE.754-2008
o Количество форматов
o Арифметические операции
o Количество преобразований
o Определение значений
o режима округления
o исключений
o Add, subtract, multiply, divide
o Умножение и аккумулирование Вычисление квадратного корня
16. Использование FPU
|
17. Пример кода на C
|
18. Производительность
Сравнение времени выполнения КИХ – фильтра по 29 коэффициентам(32 бита) с и без FPU (Библиотека CMSIS)
19. Программные средства
· Доступны с www.st.com/mcu
· C source code for easy implementation of all STM32 peripherals in any application
· Стандартная библиотека – открытые исходники для всей периферии STM32
· Библиотека Motor Control – векторный контроль на основе датчиков для 3х фазных бесщеточных двигателей
· DSP библиотека – PID, IIR, FFT, FIR (бесплатно)
· Аудио библиотека – MP3/WMA декодер, контроль громкости, эквалайзер
· (бесплатно с лицензиоонными ограничениями).
|
20. Используемые материалы
Материалы взяты из статьи:
http://www.compel.ru/wordpress/wp-content/uploads/2012/10/STM32F4-YAdro-Cortex-M4.pdf