Высокопроизводительное семейство 32-битных контроллеров Microchip

Для производителей микропроцессоров и микроконтроллеров рынок становится теснее, но для разработчиков электроники появляется больше продуктов для осознанного выбора. Процессорные ядра для встраиваемых систем M14K/M14Kc c системой команд microMIPS и особенно новейшая разработка – ядро microAptive дополняют существующие решения компании MIPS (сейчас является частью Imagination) и ведут к укреплению конкурентных позиций против его серьезного конкурента – ARM.

В предыдущей статье были рассмотрены архитектура ядра MIPS M4K, описаны конкурентные преимущества в сравнении с ближайшим конкурентом – архитектурой ARM Cortex-M3.

Ядро M14K и microAptiv

Ядро M14K (и версия с кэшем M14Kc) является развитием ядра M4K (рис. 1 и 2), в котором реализована система команд microMIPS™, которая содержит как 16-и так и 32-х битные инструкции, что позволяет увеличить плотность кода и пропускную способность ядра. Система команд microMIPS™ уменьшает размер кода как минимум на 30% при сохранении быстродействия на уровне ядра M4K [1].

Рис. 1. Ядро M4K.

Рис. 2. Ядро M14Kс.

Рис. 3. Ядро microAptiv, микропроцессорный вариант (MPU).

Ядро microAptiv™ это следующая ступень развития ядра MIPS32 (рис.3). Основанное на M14Kс, ядро microAptive получило большее быстродействие, дополнено ЦОС расширением ядра MIPS и новыми возможностями защиты памяти и интерфейса отладки.

Основное улучшение архитектуры microAptiv это ЦОС расширение ядра и системы команд (MIPS32 DSP Application Specific Extension – ASE), позволяющее выполнять за один такт любую команду из полного набора DSP- и команд умножения с накоплением (Multiply and Accumulate – MAC).

Расширение MIPS32 DSP ASE это комбинация аппаратной и программной частей, разработанное для улучшения возможностей применения ядра в задачах ЦОС. При разработке DSP ASE разработчики старались как можно больше задействовать существующие цепи ядра для того, чтобы по возможности не влиять на площадь кристалла и тактовую частоту.

Ядро microAptive, как M14K и M4K, имеет два независимых 5-и стадийных конвейера: конвейер ядра, который выполняет стандартные команды (загрузка/хранение, вычисления, переходы) и конвейер MDU (Multiply Divide Unit). Оба конвейера работают параллельно и независимо друг от друга. Расширение MIPS32 DSP ASE использует оба конвейера ядра и MDU для выполнения своих инструкций.

В дополнение к операциям целочисленного деления и умножения, конвейер MDU выполняет DSP инструкции с командами умножения и доступом к аккумуляторам (microAptive имеет до четырех 64-х битных аккумуляторов). Кроме того, реализованы переадресации внутри конвейера ядра, а так же между АЛУ и MDU, когда результат предыдущей команды посылается непосредственно к текущей, в обход обновления регистров.

Расширенный набор инструкций добавляет 159 DSP команд, включая 70 команд поддерживающих множественный поток данных (Single Instruction Multiple Data – SIMD) и 38 команд умножения/MAC. Специализированный ЦОС набор включает ряд арифметических инструкций с опциями насыщения и округления, операции сравнения / выборки, загрузки и накапливания и команды упаковки / распаковки данных, которые обычно используются в функциях масштабирования.

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

Инструкции умножения / MAC работают со встроенным массивом умножителей 32x32, который выполняет 32x32, 16x16, две по 16x16, две 16x8 и две 8x8 операции умножения за один такт. Результаты умножения / MAC инструкций могут быть записаны на любом РОН или аккумуляторе.

Дополнительный аппаратный модуль ЦОС позволяет существенно повысить быстродействие для приложений, требующих математических вычислений. Так, в сравнении с ядром M14K, большинство DSP инструкций требуют в два раза меньше времени, а реализация 16-и битного КИХ фильтра (к=32) требует на 75% меньше циклов [3].

Рис. 4. Сравнение microAptive (c DSP ASE) и M14K (без DSP ASE) (Чем меньше циклов, тем лучше).

Высокое быстродействие и функционирование ядра микроконтроллера в реальном времени обеспечивается быстрой реакцией на прерывание, одноцикловым доступом к статическому ОЗУ и Flash памяти. Возможности отладки так же были улучшены с добавлением возможности использования 2-х проводного JTAG интерфейса. В дополнение, microAptive предоставляет повышенный уровень секретности при помощи модуля защиты памяти и новыми защищенными возможностями отладки.

Ядро microAptiv включает контроллер Кэш памяти и Модуль управления памятью (Memory Management Unit – MMU), что делает его пригодным для использования операционных систем реального времени, требующих управления виртуальной памятью. Ядро microAptive конфигурируется для поддержки трех систем команд: MIPS32, MIPS32 + microMIPS или только microMIPS. В режиме системы команд microMIPS, ядро microAptiv достигает быстродействия 3.09 CoreMark/МГц и 1.57 DMIPS/МГц.

Ядро microAptive доступно в двух вариантах:

  • microAptiv MCU ядро – микроконтроллерный вариант без кэша с быстродействующим интерфейсом со статической памятью ОЗУ
  • microAptiv MPU ядро – микропроцессорный вариант с контроллером кэш-памяти, контроллером управления памятью с буфером динамической трансляции адресов (TLB MMU), что позволяет запускать операционные системы, которые оперируют виртуальной памятью, например, Linux или Android

Сравнение архитектур MIPS microAptive и ARM Cortex-M4

Наиболее близким конкурентом ядра microAptive является Cortex-M4. Обе архитектуры microAptive и Cortex-M4 были разработаны для микроконтроллеров с возможностью выполнения задач ЦОС. Однако microAptive предлагает более богатый набор микроконтроллерных и ЦОС возможностей. Сравнение основных отличий приведено в табл. 1.

Таблица 1. Сравнение архитектур microAptiv и Cortex-M4.

Особенность MIPS microAptiv ARM Cortex-M4
Длина конвейера 5 3
Версия с кэшем/MMU Да Нет
Система команд MIPS32 и microMIPS Thumb2
Число инструкций 300 155
РОН (наборов) 32 (16) 16 (1)
Поддержка closely coupled memory Да Нет
Реакция на прерывания 10 циклов 12 циклов
Трассировка команд Да Нет
Быстрый канал отладки Да Нет
DSP возможности
Число DSP инструкций 159 80
SIMD команд 70 38
Команд умножения/MAC 38 29
Выделенный DSP/MDU Да Нет
Аккумулятор Да (64бит х 4) Нет
16х8, два 8х8 умножителя/MAC Да Нет
Команды сдвига Да Нет
Команды сравнения/Pick Да Нет

Ядро Cortex-M4 основано на Cortex-M3 с добавлением простых функций ЦОС. По тестам производительности ядро microAptiv показывает большую на 25% (DMIPS) и 40% (CoreMark) производительность относительно Cortex-M4 (рис. 5).

При оценке возможностей Цифровой Обработки Сигналов отличия становятся еще более существенными. Расширение DSP ASE ядра microAptiv имеет свой отдельный конвейер, работающий параллельно конвейеру ядра, тогда как в Cortex-M4 существует только один конвейер. Ядро microAptiv имеет до четырех 64-битных аккумулятора и дополнительные наборы РОН для хранения результатов ЦОС инструкций, тогда как Cortex-M4 не имеет аккумуляторов и использует общий с АЛУ набор РОН, который к тому же, состоит только из 16-и регистров (против до 16-х наборов из 32-х регистров). Ядро microAptiv имеет в два раза больше ЦОС команд, больший набор функций и больше SIMD и MAC инструкций. И наконец, microAptiv имеет более гибкие операнды сдвига / масштабирования.

Компания ARM предоставляет программную библиотеку для Cortex-M4, называемую Cortex Microcontroller Software Interface Standard (CMSIS). Включенный в CMSIS набор ЦОС алгоритмов аналогичен представленным алгоритмам в библиотеке MIPS DSP Library. Отличия в производительности одних и тех же алгоритмов приведены на рис. 5. Результаты были получены для платы ST32FM4 Discovery с использованием отладочной платформы Keil MDK. Результаты для ядра microAptiv были измерены на плате MIPS SEAD-3 с применением компилятора Mentor Sourcery CodeBench gcc. Полученные результаты иллюстрируют существенное превосходство ядра microAptive при выполнении наиболее часто применяемых ЦОС алгоритмов.

Рис. 5. Сравнение возможностей архитектуры microAptive и Cortex–M4 (больше значит лучше).

Библиотека MIPS DSP Library содержит функции БПФ (FFT-16, FFT-32), фильтрации (IIR16, FIR, LMS), векторной математики и функции кодирования и декодирования видео H264. Эти алгоритмы были разработаны и оптимизированы с учетом описанных свойств ядра. Критические части кода написаны на ассемблере, другие, менее используемые и не критические подпрограммы, реализованы на Си. Версия DSP библиотеки, оптимизированная под ядро microAptiv, использует DSP ASE по возможности в формате microMIPS.

PIC32MZ с ядром microAptive

Компания Microchip запускает в производство высокопроизводительные 32-х разрядные контроллеры PIC32MZ на основе ядра microAptiv. Новые контроллеры PIC32MZ семейства EC (Embedded Connectivity) имеют уникальные параметры, прежде не встречавшиеся в продукции Microchip. Основанные на микропроцессорном варианте ядре microAptiv MPU, с DSP расширением команд, контроллером кэш-памяти, контроллером управления памятью с буфером динамической трансляции адресов TLB MMU, микропроцессоры имеют до 2Мбайт Flash памяти программ, 512К ОЗУ, тактовую частоту до 200МГц [3].

Таблица. 2. Основные параметры контроллеров PIC32MX и PIC32MZ.

PIC32MX PIC32MZ
Ядро M4K microAptive MPU
Тактовая частота (МГц)/быстродейтвие (DMIPS) 80МГц / 125DMIPS 200МГц / 330DMIPS
Размер памяти Flash/ОЗУ (Кбайт) 512 (+12K Boot Flash) / 128 2048 (+160K Boot Flash) / 512
Кэш 256 байт кэш предвыборки команд Кэш L1 (16Кб инструкций и 4Кб данных)
РОН (число наборов) 32(2) 32(8)
ЦОС команды Нет. Отдельный MDU c поддержкой MAC команд. Да. Отдельный MDU с поддержкой MAC команд, DSP и SIMD команды, четыре 64-бит аккумулятора.
Интерфейсы внешней памяти - EBI (до 64Мб) и SQI (до 64Мб)
DMA 8 (+ до 8 для высокоскоростной периферии USB, Ethernet и CAN) 8 (+ до 14 для высокоскоростной периферии: USB, Ethernet, SQI, EBI, криптомодуля)
USB интерфейс USB FS Host, Device и OTG USB HS/FS Host, Device и OTG
Крипто модуль Нет Да, поддержка AES, 3DES, SHA, MD5 и HMAC, RND генератор

Особенности PIC32MZ

Память программ (Flash) контроллеров имеет две панели размером до 1Мб и две области загрузчика (Boot сектор), по 80Кб каждый, то есть суммарный размер памяти 2Мб + 160Кб. Подобная организация памяти позволяет иметь независимые секции и использовать часть памяти для эмуляции EEPROM или обновлять прошивку контроллера «на лету» без потери управления на время записи Flash памяти. Контроллеры PIC32MZ имеют возможность обнаружения и коррекции ошибок (Error Correction Code, ECC), что увеличивает надежность системы. Специальный регистр конфигурации позволяет указать какая область памяти будет основной, т.е. из какой области выполняется программа при старте.

Модуль предвыборки команд в PIC32MZ может обнаружить два типа ошибок Flash памяти: ошибку двух бит (ECC Double-bit Error Detected, DED) и одиночную ошибку (ECC Single-bit Error Corrected, SEC). Двойная ошибка DED является критичной и обнаружение такой ошибки приведет к немаскируемому прерыванию. Одиночная ошибка памяти SEC не критична (исправима) и обнаружение такой ошибки может быть выявлено через установку прерывания. При обнаружении ошибки пользовательский код может перезаписать проблемный участок памяти.

Высокоскоростная периферия включает интерфейсы USB HS, Ethernet, шины EBI (Extended Bus Interface) и SQI (Serial Quad Interface). Интерфейс EBI позволяет подключать по параллельному интерфейсу внешнюю память, дисплеи, видеокамеры и пр. Адресуемая через EBI внешняя память (до 64Мб) отображается по умолчанию в область в KSEG2 контроллера.

Интерфейс SQI предназначен для подключения последовательной памяти (до 64Мб), которая так же отображается в сегменте KSEG2. Интерфейс SQI обеспечивает быстрое обращение к памяти через два выделенных канала DMA, а так же позволяет выполнять код во внешней памяти.

Модуль поддержки крипто-функций призван ускорить приложения, использующие криптографические алгоритмы. Модуль обеспечивает поддержку AES, DES/TDES, SHA, MD5, HMAC и др., а так же генератор случайных и псевдо-случайных чисел с настраиваемым полиномом (до 64 бит).

К низкоскоростной периферии относятся интерфейсы CAN, UART, I2S/SPI и I2C. Контроллеры PIC32MZ имеют семь раздельных периферийных шин. Частота каждой шины настраивается индивидуально, что позволяет наборы периферийных модулей тактировать разной частотой.

Порты ввода вывода в контроллерах PIC32MZ получили возможность переопределения функций (Peripheral Pin Select, PPS), имеют возможность подключения встроенной подтяжки к напряжению питания или земле, часть портов толерантна к напряжению 5В.

Модуль аналого-цифрового преобразователя (АЦП) существенно отличается от АЦП предыдущих контроллеров Microchip. Дифференциальный АЦП обеспечивает разрешение 12 бит, имеет конвейерную архитектуру и 6 УВХ, что позволило увеличить быстродействие до 28 миллионов преобразований в секунду. Наличие 6-и УВХ позволяет производить одновременную выборку 6-и каналов. Пять каналов АЦП подключаются к фиксированным выводам контроллера, а шестой имеет возможность измерения множества каналов. Все каналы АЦП могут быть включены в автоматизированный список сканирования (scan list). Часть каналов имеют выделенные триггеры на запуск измерения, а часть имеют общий триггер запуска. Модуль АЦП имеет шесть цифровых фильтров передискретизации для увеличения разрядности до 16 бит и шесть цифровых компараторов, для формирования прерываний при попадании сигнала в заданное окно результатов.

Средства разработки

Компания Microchip предлагает бесплатную среду разработки MPLAB X, поддерживающую все 8-, 16- и 32-х битные контроллеры, а так же C/C++ компиляторы для PIC32. Текущая версия компилятора основана на GNU Compiler Collection (GCC) v4.5.2.

Вместе с анонсом PIC32MZ компания Microchip объявила выходе новой системы разработки программного кода для 32-х разрядных микроконтроллеров – MPLAB® Harmony. Новый фреймворк включает в себя: программные драйверы, библиотеки и ОСРВ разработанные не только Microchip, но и сторонними компаниями. MPLAB® Harmony предоставляет возможность использовать бесплатные и лицензируемые программные решения. В данный момент Harmony содержит USB, TCP/IP стеки, графические библиотеки а так же программные продукты сторонних производителей: Express Logic, FreeRTOS, InterNiche, WITTENSTEIN High Integrity Systems и wolfSSL. В создании MPLAB Harmony участвовали несколько компаний, благодаря их совместным усилиям сократилось число возможных ошибок при интеграции нескольких решений в одно, что в свою очередь сильно упрощает процесс написания программного кода для микроконтроллеров и позволяет быстрее выпустить товар на рынок.

Архитектура MIPS известна много лет и поддерживается многими производителями средств разработки.

Для поддержки сторонних разработчиков MIPS Technologies создала MIPS Alliance Program (MAP) [4]. Альянс включает более ста компаний, которые предлагают сотни решений для поддержки MIPS архитектуры: компиляторы, отладчики, интегрированные среды и комплексы разработки (IDE, EDA), операционные системы и прикладные библиотеки.

Некоторые партнеры альянса, которые предоставляют поддержку MIPS платформы:

  • Операционные системы реального времени (RTOS) предоставляют такие компании как Express Logic, Mentor Graphics, Micrium, Segger, Green Hills Software, Wind River, CMX, FreeRTOS, Interniche Technologies, AVIX-RT, Pumpkin, RoweBots
  • Отладчики, эмуляторы и программаторы предлагают Ashling, Lauterbach, Macraigor, Corelis, Elnec
  • Программные средства разработки, включая компиляторы, IDE, EDA/ESL предлагают компании Green Hills, Mentor Graphics, Synopsys, Cadence, Magma, mikroElektronika, RoweBots
  • Модели для симуляции доступны от Carbon и Imperas

Некоторые Open Source и бесплатные проекты:

  • OpenOCD (бесплатный и открытый проект, предоставляющий внутрисхемную отладку, программирование и граничное сканирование)
  • EJTAGproxy утилита для подключения GNU отладчика к PIC32 микроконтроллерам через JTAG или ICSP адаптер. Реализует стандартный последовательный протокол GDB для удаленной связи. Может использоваться совместно с Eclipse, DDD, Insight или другими совместимыми отладчиками. Поддерживает: PICkit 2, PICkit 3, Olimex ARM-USB-ххх, Olimex MIPS-USB-ххх, Bus Blaster v2 (JTAG адаптер от Dangerous Prototypes) и Flyswatter (JTAG адаптор от TinCanTools)
  • Программатор Pic32prog для программирования Flash памяти контроллеров PIC32. Поддерживаемые программаторы и протоколы: PICkit 2, PICkit 3, Olimex ARM-USB-ххх, Olimex MIPS-USB-ххх, Bus Blaster v2 (JTAG адаптер от Dangerous Prototypes) и Flyswatter (JTAG адаптор от TinCanTools), AN1388 HID bootloader (Microchip)
  • chipKIT – Arduino совместимая OpenSource платформа с бесплатной средой разработки и C++ компилятором
  • TNKernel – Операционная Система Реального Времени
  • Кроссплатформенный фреймворк QP (Quantum Platform) от компании Quantum Leaps – средство разработки приложений для встраиваемых систем в виде конечных автоматов на основе UML диаграмм состояний

Итоги

MIPS предоставляет ядра, составляющие серьезную конкуренцию ARM платформам. Новые процессоры PIC32MZ Embedded Connectivity, основанные на процессорном варианте ядра MIPS microAptive, имеют уникальные параметры и могут применяться как в задачах управления, так и в задачах Цифровой Обработки Сигналов. Существенное превосходство в быстродействии по сравнению с процессорами ARM Cortex позволяют выполнять одни и те же задачи быстрее или на более низкой частоте, что позволит существенно уменьшить потребление системы.

Литература

  1. MicroMIPS CramsCode. New Processor Cores Introduce Denser 16/32-Bit Instruction Set. 11/16/09-01. www.mpronline.com
  2. An Introduction to MIPS32® microAptiv™ Processor Cores – The Convergence of MCU/MPU and DSP. MIPS Technologies Inc. www.mips.com
  3. PIC32 Family Reference Manual. www.microchip.com
  4. Beyond the Hype: MIPS® - the Processor for MCUs. MIPS Technologies Inc.
  5. www.mips.com
  6. www.arm.com