|
Radim Visinka, Leos Chalupa, Ivan Skalka
Введение в архитектуру Cortex-M3. Часть III
В предыдущих частях статьи подробно рассматривались основные составные части микроконтроллеров с архитектурой Cortex-M3 и их особенности, позволяющие использовать данные микроконтроллеры в широчайшем спектре применений от простейших и самых дешевых до сложных систем обработки информации в режиме реального времени, требующих высокой производительности. Наибольшим преимуществом микроконтроллеров с архитектурой Cortex-M3 на чрезвычайно конкурентном рынке микроконтроллеров является их высочайшая способность к адаптации к требованиям рынка при сохранении неизменно низкой стоимости решения.
В данной части статьи мы рассмотрим одну из самых важных составляющих любой микроконтроллерной системы, а именно, память и способы ее использования, реализованные в архитектуре Cortex-M3.
Поскольку стоимость памяти, реализованной на кристалле, составляет очень существенную часть стоимости всего микроконтроллера (по некоторым данным до 30—40 %), то вполне естественно было бы обратить самое пристальное внимание на способы ее экономичного использования. Именно эту цель преследовали разработчики компании ARM, когда внедряли систему команд Thumb-2 в архитектуру CortexM3 совместно с оригинальной шиной для повышения гибкости использования памяти путем повышения плотности кода и введением команд для работы с битами и битовыми полями.
Как уже говорилось в предыдущих частях статьи, система команд Thumb-2 является смесью оригинальных команд системы Thumb и новых 32-разрядных команд, подобным командам системы ARM, призванных обеспечить более высокую производительность. 16-разрядные команды выравниваются в памяти и вычитываются по две за один такт, в то время как 32-разрядные команды вычитываются целиком за один такт в случае, если они выровнены по границе слова. В противном случае, если они выровнены посередине слова, они вычитываются за максимальное время, равное двум тактам. Данная система хранения данных обеспечивает более гибкое использование памяти при существенно меньших задержках, чем у оригинальных ARM микроконтроллеров с архитектурой ARM7.
Встроенная флэш-память программ уже давно стала стандартом де-факто в микроконтроллерах. Однако, с ростом максимальных тактовых частот ядра, наблюдается диссонанс между ядром и флэш-памятью именно в области максимальных тактовых частот. Дело в том, что физические свойства технологий производства флэш-памяти не позволяют ей оперировать на частотах более 30..40 МГц и поэтому производители микроконтроллеров идут на некоторые ухищрения, которые позволяют пусть не полностью, но хотя бы частично снизить потери производительности системы изза несовпадения максимальных тактовых частот ядра и флэш-памяти.
Такую задачу перед собой ставили и разработчики архитектуры Cortex-M3. Для этого они разработали как новый интерфейс с памятью, так и новую систему команд, позволяющие вычитывать более чем одно 16-разрядное значение из памяти за один такт. Например, команды MOVW и MOVT работают с 16-разрядными константами более эффективно, так как данные доступны одновременно с командой, а не вычитываются последовательно, как в случае с традиционным пулом литералов.
Аналогичная задача стоит и перед оптимизацией работы с ОЗУ. Многие архитектуры используют массивы флагов в ОЗУ, организованные в байты или слова флагов. Классический способ работы с ними — вычитывание байта флагов, сложение этого байта с маской или изменение состояния одного из битов, запись байта по его адресу. В архитектуре Cortex-M3 работа с ОЗУ организована несколько проще и быстрее. Адресное пространство вплоть до 1 Мбайт отображается в 32 Мбайт адресов битов. В случае, если изменяется бит в области с битовой адресацией, это изменение автоматически отображается по соответствующему адресу в области с байтовой адресацией. Такая схема работы существенно упрощает и ускоряет работу в случае многочисленных операций с битами.
Также применена новая технология расположения данных в ОЗУ, которая базируется на принципе хранения невыровненных данных, что очень существенно уменьшает требуемый объем ОЗУ для работы приложения. Проблема с неэффективным использованием ОЗУ связана с тем, что в программе пользователя часто используются разные типы данных (например long, integer, char), имеющие разные разрядности. На рис. 1 визуально показана разница между традиционным способом хранения данных с разными разрядностями и способом, используемым в архитектуре Cortex-M3.
Рис. 1. Иллюстрация эффективности способов хранения выровненных и невыровненных данных
Отдельно стоит, хотя бы кратко, упомянуть еще раз о полностью переработанной системе обработки прерываний. В обычных микроконтроллерах ядро, в ущерб производительности всей системы, вынуждено самостоятельно поддерживать обработку прерываний и выполнять все функции, связанные с этим процессом. В микроконтроллерах с архитектурой Cortex-M3 ситуация совершенно иная: контроллер прерываний выделен в отдельный аппаратно реализованный узел, который обрабатывает прерывания с исключительно малыми и при этом фиксированными временами задержки, снимая максимум нагрузки с ядра. За счет этого время входа в прерывание по сравнению с классическими ARM контроллерами уменьшилось на очень существенные и приятные 70% за счет независимого аппаратного сохранения и восстановления необходимых регистров и очень грамотной обработки ситуаций с последовательно сгенерированными прерываниями.
Очень важной темой с бурным развитием разработки и производства портативных устройств стала экономичность микроконтроллеров. Микроконтроллеры с архитектурой ARM всегда «славились» своей относительной «прожорливостью» и с этим до сих пор приходится мириться. Однако, поскольку законы физики никто не отменял, в частности пропорциональную зависимость потребляемой мощности от тактовой частоты, разработчикам микроконтроллеров пришлось потрудиться для создания развитой системы управления тактированием как ядра, так и периферии. В микроконтроллерах с архитектурой Cortex-M3 практически все периферийные модули, не принимающие участия в реализации конкретной программы, могут быть индивидуально отключены от источника тактирования. Кроме этого, в микроконтроллеры на базе архитектуры Cortex-M3 добавлено несколько дополнительных режимов «сна», например, WFI (Waut For Interrupt) или WFE (Wait For Event), которые переводят микроконтроллер в режим глубокого «сна» до возникновения прерывания или события соответственно.
Но не только благодаря множеству энергосберегающих режимов можно достичь экономии потребляемой мощности. Ведь кроме высокоэкономичного режима «сна» есть еще и активная фаза работы микроконтроллера, во время которой он потребляет максимум энергии в соответствии с вполне определенными законами физики. Здесь может помочь, как это парадоксально ни звучит, только повышение производительности микроконтроллера. Но ни в коем случае не за счет тактовой частоты. За счет применения новой системы команд и повышения эффективности работы памяти, микроконтроллеры на базе архитектуры Cortex-M3 показывают впечатляющий прирост производительности, равный 1.25 DMIPS/МГц (в табл. 1 приведены сравнительные данные по производительности, приведенной к потреблению энергии, для различных серий ARM микроконтроллеров).
Таблица 1. Сравнение производительности, приведенной к потреблению энергии, для различных серий ARM микроконтроллеров
И эта производительность позволяет либо быстрее выполнить поставленную задачу при той же тактовой частоте и таким образом уменьшить длительность активной фазы, либо выполнить ту же задачу за то же время, но с значительно меньшей тактовой частотой. Оба эти способа позволяют существенно уменьшить общее потребление энергии, а значит, улучшить эксплуатационные параметры конкретного устройства.
Микроконтроллеры с архитектурой Cortex-M3 стали значительным явлением на рынке ARM микроконтроллеров. Ядро микроконтроллера, построенное на базе Гарвардской архитектуры с использованием 3-уровневого конвейера, использует много новых решений, таких как предсказание переходов в командах ветвления, однотактное умножение и деление и многих других, показывает впечатляющий уровень производительности, равный 1.25 DMIPS/МГц. Комбинация системы команд Thumb-2 и уникальных возможностей по работе с невыровненными данными и битами позволяет смело говорить о том, что микроконтроллеры с архитектурой Cortex-M3 устанавливают стандарты производительности 32-разрядных архитектур наравне со стоимостью, сравнимой со стоимостью 8-разрядных микроконтроллеров.
Гибкое управление интегрированными периферийными компонентами, быстрый процесс создания и отладки кода позволяют свести время разработки нового устройства до минимума. Для ресурсоемких и высоконадежных приложений незаменимым будет аппаратный контроллер вложенных прерываний, который обеспечивает чрезвычайно малое, а, главное, фиксированное время входа в прерывание. При этом обеспечивается быстрая обработка последовательных и вложенных прерываний, которых может быть до 240. Для ответственных применений будет незаменим модуль распределения приоритетов и защиты памяти от несанкционированного доступа (MPU — Memory Protection Unit). И еще много приятных «мелочей», которые в совокупности дают совсем не мелочный результат, позволяют смело утверждать, что архитектуру Cortex-M3 в микроконтроллерах общего применения ждет очень большое и светлое будущее.
Немаловажной составляющей общей привлекательности архитектуры Cortex-M3 является широкая ее поддержка ведущими производителями программного обеспечения. В частности, поддержку этой архитектуры ввели в свои продукты многие всемирно известные производители. В табл. 2 перечислены основные производители программных и программно-аппаратных комплексов для создания и отладки программного кода для микроконтроллеров с архитектурой Cortex-M3.
Таблица 2. Некоторые производители программных продуктов для ARM MCU Cortex-M3
Производитель |
Продукты |
Keil Software |
Полный комплекс разработки и отладки программного кода, а также аппаратные средства программирования и отладки |
IAR Systems |
Полный программный комплекс разработки и отладки программного кода |
CodeSousery |
Полнофункциональный комплекс разработки и отладки GNU G++ |
Rowley Associates |
Полнофункциональный пакет разработки и отладки CrossWorks |
FreeRTOS.org |
Встраиваемые операционные системы реального времени RTOS |
Pumpkin |
RTOS |
Express Logic |
RTOS, TCP/IP стеки, файловые системы, USB стеки |
Micrium |
RTOS, TCP/IP стеки, файловые системы, USB стеки,
библиотеки для работы с протоколами CAN и Modbus |
CMX Systems |
RTOS, TCP/IP стеки, файловые системы, USB стеки |
SEGGER Microcontroller Systeme |
RTOS, GUI, файловые системы, USB стеки, JTAG эмуляторы |
Interniche Technogies |
RTOS, сетевые стеки и файловые системы |
В заключение следует отметить, что на момент написания статьи число компаний, разрабатывающих микроконтроллеры на базе архитектуры Cortex всех серий, достигло 11 (среди них такие известные как Actel Corporation, Altera Corporation, Samsung Electronics, Luminary Micro Inc., а также STMicroelectronics). Среди них две компании начали разработку микроконтроллеров на основе архитектуры Cortex-M3 (Samsung Electronics Co., Ltd. и Luminary Micro Inc.). Также, о практически полной готовности к выходу линейки микроконтроллеров на базе Cortex-M3, 11 июня 2007 г. заявила компания STMicroelectronics, но, по состоянию на сегодняшний день, пока не ясно, запущена ли она в производство или нет. По крайней мере, нет никаких данных о предполагаемой дате начала производства от дистрибьюторов этой компании. Фактическим и единоличным лидером в производстве микроконтроллеров на базе архитектуры Cortex-M3 на сегодня является компания Luminary Micro Inc., выпустившая уже более 100 типов микроконтроллеров на базе архитектуры Cortex-M3. Среди них есть как простейшие, с минимальным объёмом флэш-памяти и ОЗУ, с тактовой частотой 20 МГц, с минимальным набором периферии, в корпусе SOIC28 и с минимальной ценой, так и сложные, с максимальным объемом флэш-памяти 256 кбайт и ОЗУ 64 кбайт, со встроенными контроллерами Ethernet+PHY, CAN (в том числе и микроконтроллеры, содержащие оба эти контроллера на кристалле), декодерами сигналов квадратурных энкодеров, многоканальных ШИМ и прочими «вкусностями».
Подробный обзор продукции Luminary Micro Inc. будет дан в следующей части статьи.
Павел Вовк компания Элтис Компоненты
|