Всегда верное решение!
ГАММА-САНКТ-ПЕТЕРБУРГ
Поставки электронных компонентов и модулей на рынки
России, стран СНГ и Прибалтики
Russian English
(812) 493-51-15
197101, Санкт-Петербург, Певческий пер., 12
(ст.м. "Горьковская"), БЦ "LIGHTHOUSE"

посмотреть на карте

(812) 493-51-15

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

На рынке 32-х разрядных процессоров для встраиваемых систем применяются несколько платформ – ARM и MIPS одни из них. С начала своего основания компания ARM была нацелена на рынок встраиваемых систем, в то время как MIPS был сфокусирован на разработке процессорных архитектур для высокопроизводительных рабочих станций и серверов. Позднее компания ARM стала стремиться к более высокой производительности, потому что такие требования диктуются самым большим рынком для ARM – рынком мобильных телефонов. Между тем, MIPS начала стремиться в сторону меньших вычислительных мощностей, потому что там находится её крупнейший рынок – потребительская электроника.

Архитектуры, разработанные MIPS, занимают серьезную долю рынка сетевых и телекоммуникационных устройств. Компания MIPS имеет более 125 лицензиатов своих ядер, которые совместно производят более 500 миллионов процессоров каждый год. Откройте корпус спутниковой приставки, телевизора, DVD проигрывателя и вы в большинстве случаев обнаружите процессор на основе MIPS ядра.

Для рынка встраиваемых систем MIPS предлагает несколько ядер, полностью совместимых снизу вверх. Для 32- битных микроконтроллеров, работающих в задачах реального времени, предназначены ядра M4K/M4KE, дальнейшее развитие этого семейства ядро M14K™ имеет microMIPS™ архитектуру сжатия набора команд, а ядро microAptiv дополнено функционалом цифровой обработки сигналов (ЦОС) с поддержкой множественного потока данных (Single Instruction Multiple Data – SIMD) и функциями защиты.

Рис. 1. Развитие 32-х разрядных ядер MIPS.

Ядро M4K. Сравнение с Cortex-M3

В 2002 компания MIPS Technologies представила ядро M4K – высокопроизводительное, синтезируемое ядро, оптимизированное для применения в микроконтроллерах, которое является основой контроллеров PIC32MX компании Microchip Technology Inc. Ядро M4K разработано с набором функций, комбинация которых предоставляет лучшие в классе быстродействие и значительно превосходит предлагаемые компанией ARM ядра серии Cortex-M3.

Ядро M4K обеспечивает быстродействие 1.5 DMIPS/МГц, в то время как Cortex-M3 предлагает быстродействие примерно на 20% меньше (1.25 DMIPS/МГц), соответственно, для того чтобы выполнять код наравне с MIPS M4K, Cortex-M3 должен работать на частоте на 20% выше и, соответственно, потреблять больше энергии.

Достигнутые показатели быстродействия ядра MIPS M4K обеспечиваются следующими особенностями архитектуры.

Помимо 32-х битных инструкций MIPS32, ядро M4K поддерживает набор команд MIPS16e, состоящий из «наиболее востребованных» инструкций MIPS32 в их 16-и битном эквиваленте. Команды MIPS16e сжимают код в меньший размер памяти, сохраняя при этом высокий уровень производительности за счет снижения пропускной способности памяти и времени выполнения команд. Применение расширения системы команд MIPS16e™ (Application Specific Extension – ASE) уменьшает размер кода до 40%.

Ядро MIPS M4K имеет набор из 32-x 32-битных регистров общего назначения (РОН), число таких наборов может быть 1, 2, 4, 8 и 16. Эти наборы регистров сохраняют параметры и команды в чипе, снижая тем самым накладные расходы на пересылки в памяти, и освобождая командные циклы. Это положительно сказывается на увеличении производительности. Использование набора теневых РОН так же увеличивает быстродействие системы за счет уменьшения накладных расходов в обработчике прерывания. При возникновении прерывания или немаскированного прерывания (исключения) ядро определит какой теневой набор регистров будет использоваться, установит его как активный набор РОН и позволит выполняться программе с вектора прерывания. Эта особенность полностью устраняет необходимость сохранения и восстановления контекста при обработке прерываний, а так же сохраняет содержимое РОН от изменения в прерываниях, что уменьшает время работы обработчика прерывания.

Конвейер ядра в M4K имеет 5 стадий, в то время как ядро Cortex-M3 имеет 3-х стадийный конвейер. Большая длинна конвейера дает возможность ядру выполнять больше инструкций в секунду, но, с другой стороны, увеличивает время реакции на прерывания. Однако, как рассмотрено выше, наличие в M4K нескольких наборов РОН, позволяет существенно снизить накладные расходы на сохранение / восстановления контекста в обработчике прерываний.

В ядре M4K все операции сдвигов выполняются за один цикл. Специальная логика (Bypass logic) включена в работу конвейера и предоставляет быстрый доступ к данным для использования в следующих инструкциях до того, как команда пройдет весь конвейер. Производительность улучшается в результате уменьшения числа циклов, необходимых для выполнения конкретной задачи. Еще одно преимущество ядра M4K это высокопроизводительная реализация модуля Умножения и Деления (Multiply Divide Unit – MDU), который выполняет умножение 32x16 бит (или MAC- инструкцию) за один цикл, а операция 32x32 бит умножения выполняется за 2 цикла.

Модуль MDU в MIPS M4K это выделенный вычислительный блок, имеющий собственный конвейер и работающий независимо от конвейера выполнения команд ядра. Любая команда умножения и деления попадает напрямую в MDU, а следующая инструкция (не MDU) в конвейер ядра, тем самым обеспечивается параллельное выполнение команд без задержек (кроме случая, когда следующая за MDU инструкция должна использовать результат предыдущей MDU команды). Так как ядро M4K имеет два конвейера, то программист имеет возможность распараллелить процессы, например пересылку данных и MDU инструкции и тем самым получить существенный выигрыш в быстродействии.

Модуль MDU особенно востребован в задачах ЦОС, таких как БПФ, реализации КИХ и БИХ фильтров, которые часто применяются в промышленных применениях и задачах связи. Поддержка в M4K инструкций подсчета количества старших нулевых битов (CLZ) и количества старших единичных битов (CLO), так же позволяет ускорить выполнение ЦОС- алгоритмов. Ядро Cortex-M3 не имеет поддержки подобных команд.

Как пример возможностей ускорения задач ЦОС, PIC32 выполняет 256-точечное 16-и разрядное по основанию 4 БПФ за 22тыс. циклов, что на 14% быстрее контроллера STM32 на базе ядра Cortex-M3.

В Таблице 1 сведены параметры по оценке физических параметров архитектур MIPS M4K и ARM Cortex-M3 при реализации на одинаковых техпроцессах. Интересным фактом является то, что оптимизированное по площади ядро M4K, при той же тактовой частоте 100МГц что и оптимизированный по быстродействию Cortex-M3, имеет на 75% меньше площадь кристалла и на 58% меньшее потребление.

Таблица 1. Сравнения ядер MIPS M4K и ARM Cortex-M3.

Ядро M4K Cortex-M3
DMIPS/МГц 1.5 1.25
CM/МГц 2.03 1.06-1.9
Оптимизация ядра По быстродействию По площади По быстродействию По площади
По быстродействию 228 100 135 50
Площадь кристалла, мм2 0.64 0.185 0.74 0.38
Типовая мощность, мВт/МГц 0.214 0.066 0.165 0.084

PIC32MX больше чем M4K?!

Одним из лицензиатов процессорных архитектур MIPS является компания Microchip Technology Inc., которая на основе ядра MIPS M4K производит семейство контроллеров PIC32MX, краткие характеристики которых приведены в табл. 2.

Таблица 2. Семейство контроллеров PIC32MX.

Микроконтроллер Тактовая частота, МГц Размер памяти Flash/RAM, кБ Число выводов UART/SPI/I2C USB CAN Ethernet PPS I2S/AC97
PIC32MX1xx 40/50 16-128 / 4-32 28-44 2/2/2 - - - да да
PIC32MX2xx 40/50 16-128 / 4-32 28-44 2/2/2 FS Host/OTG - - да да
PIC32MX3xx 100 32-512/ 16-32 64-100 2/2/2 - - - да да
PIC32MX4xx 100 64-512/ 16-32 64-100 2/2/2 FS Host/OTG - - да да
PIC32MX5xx 80 64-512/ 16-64 64-100 6/3/4 FS Host/OTG да - - -
PIC32MX6xx 80 64-512/ 32-128 64-100 6/3/4 FS Host/OTG - да - -
PIC32MX7xx 80 128-512/ 32-128 64-100 6/4/5 FS Host/OTG да да - -

Синтезируемые ядра MIPS позволяют создавать микроконтроллеры и добавлять ряд пользовательских функций. Разрабатывая PIC32 – сложную систему на кристалле (system-on-chip – SoC), компания Microchip внесла ряд функциональных улучшений в контроллеры PIC32MX относительно базового ядра M4K. К таким улучшениям относятся Кэш инструкций, Шинная матрица (Bus Matrix), Контроллер прерываний и интерфейс отладки ICSP.

Буфер и Кэш предвыборки инструкций

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

В высокоскоростных процессорах узким местом, снижающим быстродействие, является Flash память программ, с её ограничениями на время доступа. Семейство PIC32MX имеет флэш-память с 128-и битной шиной, которая позволяет за одно обращение выбирать четыре 32-битных инструкции, что соответствует выборке из Flash памяти с учетверенной скоростью. Однако, даже при наличии 128-битного буфера предвыборки, выполнение инструкций с тактовой частотой ядра не представляется возможным, так как реальное приложение содержит ветвления и повторяющиеся инструкции, а так же производит чтение данных из флэш-памяти.

Поэтому в архитектуру PIC32MX был введен конфигурируемый кэш предвыборки, состоящий из 16 128-битных строк, из них 4 строки могут использоваться в качестве кэша данных, что полезно при обработке массивов данных.

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

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

Bus Matrix- Шинная Матрица

Процессоры PIC32MX имеют две раздельные шины: (CPU IS) – для выборки инструкций и (CPU DS) – для выборки данных. Для подключения периферийных устройств PIC32MX содержат две внутренние шины. Одна периферийная шина соединяет большинство периферийных модулей. Другая – высокоскоростная – соединяет контроллер прерываний, контроллер Прямого Доступа к Памяти (ПДП, DMA), канал внутрисхемной отладки и шину высокоскоростной периферии.

Шинная матрица соединяет Ведущие устройства (так же называемые Инициаторами) к Ведомым устройствам (Target). Процессоры PIC32MX имеют до пяти Инициаторов и три Ведомых (Flash, RAM и низкоскоростная периферия).

Инициаторы, всегда присутствующие в PIC32, это Шина Инструкций (CPU IS), Шина Данных (CPU DS), шина внутрисхемного отладчика (ICD) и контроллер ПДП (DMA). Некоторые PIC32MX так же содержат Интерфейс Расширения Инициаторов (Initiator Expansion Interface – IXI), которые подключают высокоскоростную периферию – USB, Ethernet и т.п.

Шинная матрица является специальным переключателем, который обеспечивает одновременный множественный доступ между различными ведущими (Masters) устройствами на шинах, которые обращаются к разным адресатам. На рис. 2 приведен пример, когда шинная матрица обеспечивает параллельный доступ к различным адресатам: Ядро процессора извлекает команду из Flash памяти, Контроллер DMA соединен с низкоскоростной периферией (UART), а высокоскоростной интерфейс USB подключен к ОЗУ.

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

Рис. 2. Шинная матрица, обеспечение параллельной работы

DMA интерфейс

Контроллер DMA предназначен для передачи данных между блоками памяти и периферийными модулями без участия ядра контроллера.

Семейство PIC32MX имеет до 8-и идентичных каналов DMA, которые могут использоваться как для передачи данных между периферией и памятью, так и для переноса данных между блоками памяти. Дополнительно в PIC32MX присутствует до 8 выделенных каналов DMA для работы с высокоскоростной периферией (USB, Ethernet, CAN).

Контроллер DMA позволяет обеспечивать транзакции на уровне слов и байтов. В последнем случае выравнивания по слову данных не требуется. Арбитраж доступа осуществляется на основании фиксированных приоритетов каналов.

Два канала DMA могут быть объединены в цепочку – после окончания передачи ведущего канала автоматически запускается ведомый канал.

Каналы могут работать в двух адресных режимах: нормальном и расширенном. В нормальном режиме объем передаваемых данных ограничен 256 байтами, но допустима транзакция по не выравненному адресу и передача типа «память-периферия». В расширенном режиме адресации объем передаваемых данных может достигать 64 кБ.

Контроллер DMA имеет в своем составе модуль вычисления циклического избыточного кода (CRC), который может быть подключен к любому каналу. Модуль позволяет вычислять CRC любой разрядности с произвольным полиномом.

Набор теневых регистров

В процессорах PIC32MX реализовано два набора Регистров Общего Назначения (РОН, General Purpose Registers – GPR). Второй набор предназначен для использования с высокоприоритетными прерываниями. Этот дополнительный набор РОН так же называется теневым набором регистров (shadow register set). Когда происходит высокоприоритетное прерывание, процессор автоматически переключается на теневой набор РОН без вмешательства программы. Это снижает задержку в обработчике прерывания на сохранение контекста и уменьшает время реакции на прерывание. Набор теневых регистров управляется регистрами системного сопроцессора (System Coprocessor – CP0), а так же контроллером прерываний.

Контроллер прерываний

Ядро M4K поддерживает три варианта реализации контроллера прерываний: совместимый с ранней реализацией MIPS32 Release 1; векторный; внешний контроллер прерываний. Векторный контроллер прерываний в M4K поддерживает только восемь приоритетных прерываний, поэтому в SoC PIC32MX реализован внешний векторный контроллер прерываний, аналогичный применяемым в 16-и разрядных контроллерах Microchip (PIC24 и dsPIC).

Контроллер прерываний в PIC32MX обладает следующими характеристиками:

  • время реакции на прерывание – не более 5 тактов генератора
  • до 96 источников прерываний
  • до 64 векторов прерываний
  • каждый вектор прерывания может иметь приоритет от 1 до 7
  • каждый вектор прерывания может иметь дополнительный приоритет от 0 до 3
  • теневой набор РОН для обслуживания высокоприоритетного прерывания
  • конфигурируемое положение векторов прерываний
  • конфигурируемая дистанция между векторами прерываний
  • возможность программной генерации любого прерывания
  • таймер отложенных прерываний

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

Вектора с приоритетами 7 могут использовать дополнительный набор РОН, что позволяет снизить время входа в функцию обработки прерывания, так как в этом случае контекст сохранять не требуется.

Интересной особенностью контроллера прерываний является наличие таймера отложенных прерываний. Для использования этого таймера необходимо установить его период (32-битный регистр) и приоритет прерывания таймера. При возникновении запроса на прерывание все источники с приоритетом ниже или равным приоритету таймера запустят этот таймер. Как только значение таймера будет равно нулю, установится флаг источника прерывания, запустившего таймер.

Процессоры PIC32MX являются системой на кристалле. Аналогично и процессоры на базе Cortex-M3 нужно рассматривать не как «голое» ядро, а как систему со своими особенностями. Рассмотрим отличия контроллеров прерываний, реализованных в SoC PIC32 и некоторых из System on Chip на базе Cortex-M3. Ядру Cortex-M3 требуется 12 циклов для сохранения контекста. Однако, в практических реализациях процессоров на базе Cortex-M3, ситуация несколько иная. Так, в SoC на базе Cortex-M3, обработчику прерываний нужно от 18 до 28 циклов на вход в прерывание (см. рис. 3). Время входа в обработчик прерывания состоит из: 6 циклов реакции на прерывание и синхронизации периферийной шины SoC; автоматического сохранения контекста ядра C-M3 (сохранение регистров r0-r3, r12, LR, PC) за 12 циклов; и полного сохранение контекста – еще 10 циклов (сохранение регистров r4-r11, r13, r14).

Рис. 3. Различие во времени входа в прерывание для «голого» ядра Cortex M3 и практических реализаций контроллеров на базе Cortex-M3.

При обработке высокоприоритетного прерывания, как писалось выше, в PIC32MX используется набор теневых РОН, поэтому не требуется сохранение и восстановление контекста. На вход в прерывание требуется только 11 циклов (рис. 4).

Рис. 4. Обработка высокоприоритетного прерывания в PIC32MX.

При обработке низкоприоритетных прерываний процессору PIC32 требуется 28 цикла (см. рис. 5). Время обработчика низкоприоритетных прерываний состоит из: 5 циклов реакции на прерывание и синхронизации периферии; 5-6 циклов для автоматического сохранения регистров ядра и 13 циклов на сохранение контекста.

Рис. 5. Сравнение обработчика прерываний для PIC32MX и контроллеров на базе Cortex M3.

Только простой обработчик прерываний выигрывает от автосохранения контекста в Cortex-M3. Компиляторы Си автоматически сохраняют контекст при вызове функций и использовании регистров, поэтому общее время обработчика прерывания становится больше.

Рассмотрим случай, когда начата обработка одного прерывания и поступает второе прерывание с таким же приоритетом. Автосохранение контекста в SoC Cortex-M3 в таком случае не эффективно (см. рис. 6), поэтому применяется специальный механизм цепочек.

Рис. 6. Вариант автосохранения контекста без использования цепочек.

Механизм цепочек уменьшает задержку между обработкой двух прерываний, запрещая автосохранение контекста (рис.7).

Рис.7. Механизм чепочек в SoC Cortex-M3

Архитектура PIC32MX не требует специальных механизмов для обработки нескольких прерываний. Всего 3 дополнительных цикла требуется для обработки двух прерываний в многовекторном режиме.

Рис. 8. Сравнение обработки последовательных прерываний в PIC32MX и SoC Cortex-M3.

Интерфейс отладки ICSP

Помимо стандартного для архитектуры MIPS интерфейса JTAG, в PIC32 добавлен интерфейс отладки ICSP, присутствующий во всех PIC-микроконтроллерах Microchip, что обеспечивает совместимость отладочных средств и программаторов с остальными семействами контроллеров.

За счет этого, разработчики могут переходить от одного семейства контроллеров к другому, в рамках одного производителя, не меняя отладочные средства.

Для тех же, кто имеет JTAG отладчики остается возможность отладки через этот интерфейс.

Итоги

За счет перечисленных особенностей ядра MIPS M4K, а так же перечисленных улучшений, внесенных Microchip при разработке PIC32MX, получившиеся процессоры имеют большее быстродействие, чем «голое» ядро M4K (1.56DMIPs/MГц против стандартных 1.5 DMIPS/МГц).

Архитектура ядра M4K, а соответственно и PIC32 имеет хорошую гибкость кода, позволяя применять две системы команд: MIPS32 и MIPS16e. Разработчик может использовать обе системы команд одновременно. Система команд Thumb2 конкурирующего ядра ARM Cortex-M3 теряет гибкость – можно применять либо 16-, либо 32-битные команды.

На многих задачах с плавающей точкой PIC32MX работает существенно быстрее, чем, например Cortex-M3. Диаграмма на рис. 9 демонстрирует нормированное, приведенное к одной частоте время выполнения алгоритмов работы с плавающей точкой на контроллерах Cortex-M3 (Thumb2) относительно PIC32MX (источник: http://www.smxrtos.com, данные для Cortex-M3 приведены для STM32F103VBT6 и компилятора Keil v4.13; для LM3S8962 и компилятора IAR v5.20; для PIC32 используется GNU компилятор). Диаграмма показывает, что при использовании библиотек плавающей точки в компиляторах Keil и IAR архитектура Cortex-M3 существенно проигрывает MIPS32 M4K и в частности контроллерам PIC32MX.

Рис. 9. Сравнение времени выполнения алгоритмов с плавающей точкой для PIC32 и контроллеров, на базе Cortex-M3.

Контроллеры PIC32 являются лидерами в своем классе по производительности. Одно и то же приложение занимает меньше памяти и выполняется быстрее, что позволяет уменьшить тактовую частоту процессора, обеспечив меньше потребление.

Ядро microAptiv

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

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

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

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

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

Ядро microAptive, как и 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% меньше циклов.

Рис. 11. Сравнение 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 предлагает более богатый набор микроконтроллерных и ЦОС возможностей. Сравнение основных отличий приведено в табл. 3.

Таблица 3. Сравнение архитектур 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 (рис. 12).

При оценке возможностей Цифровой Обработки Сигналов отличия становятся еще более существенными. Расширение 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. Отличия в производительности одних и тех же алгоритмов приведены на рис. 12. Результаты были получены для платы ST32FM4 Discovery с использованием отладочной платформы Keil MDK. Результаты для ядра microAptiv были измерены на плате MIPS SEAD-3 с применением компилятора Mentor Sourcery CodeBench gcc. Полученные результаты иллюстрируют существенное превосходство ядра microAptive при выполнении наиболее часто применяемых ЦОС алгоритмов.

Рис. 12. Сравнение возможностей архитектуры 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МГц.

Таблица. 4. Основные параметры контроллеров 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 бит при 18Msps (суммарно) по 6 УВХ (для контроллеров EF серии). Наличие 6-и УВХ позволяет производить одновременную выборку 6-и каналов. Пять каналов АЦП подключаются к фиксированным выводам контроллера, а шестой имеет возможность измерения множества каналов. Все каналы АЦП могут быть включены в автоматизированный список сканирования (scan list). Часть каналов имеют выделенные триггеры на запуск измерения, а часть имеют общий триггер запуска. Модуль АЦП имеет шесть цифровых фильтров передискретизации для увеличения разрядности и шесть цифровых компараторов, для формирования прерываний при попадании сигнала в заданное окно результатов.

Модуль аппаратной поддержки вычисления с плавающей точкой получило семейство контроллеров PIC32MZ EF. Это семейство содержит модуль FPU и модуль сопроцессора CP1, поддерживающие MIPS ISA для вычислений с плавающей точкой. Реализация поддерживает стандарт ANSI/IEEE 754 (IEEE for Binary Floating Point Arithmetic) для вычислений с одиночной или двойной точности. Модуль FPU может быть запрограммирован и иметь тридцать два 32- или 64-х битных регистра для использования в вычислениях с плавающей точкой.

Таблица 5. Семейство контроллеров PIC32MZ EC и EF.

Микроконтроллер Тактовая частота, МГц Плавающая точка Размер памяти Flash/RAM, кБ Число выводов UART/SPI/I2C I2S/AC97 USB Крипто CAN Ethernet PPS
PIC32MZ1024ECG 200 Нет 1024 / 512 64/100/124/144 6/6/5 (6/4/5 в 64выв. корпусах) да HS Host/OTG - - да да
PIC32MZ1024ECH - 2 да
PIC32MZ1024ECM да 2 да
PIC32MZ2048ECG 2048 / 512 - - да
PIC32MZ2048ECH - 2 да
PIC32MZ2048ECM да 2 да
PIC32MZ2048EFG 200 Да, Двойной точности от 1024 / 512 до 2048 / 512 64/100/124/144 6/6/5 (6/4/5 в 64выв. корпусах) да HS Host/OTG - - да да
PIC32MZ2048EFH - 2 да
PIC32MZ2048EFM да 2 да
PIC32MZ1024EFE от 512 / 128 до 1024 / 256 - - да
PIC32MZ1024EFF - 2 да
PIC32MZ1024EFK да 2 да

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

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

Вместе с анонсом 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). Альянс включает более ста компаний, которые предлагают сотни решений для поддержки 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, основанные на процессорном варианте ядра MIPS microAptive, имеют уникальные параметры и могут применяться как в задачах управления, так и в задачах Цифровой Обработки Сигналов. Существенное превосходство в быстродействии по сравнению с процессорами ARM Cortex позволяют выполнять одни и те же задачи быстрее или на более низкой частоте, что позволит уменьшить потребление системы.

Регистрация e-mail на получение новостей ::

Статьи для разработчиков

Новости производителей