Введение в архитектуру Cortex-M3. Часть II

   
Radim Visinka, Leos Chalupa, Ivan Skalka
Введение в архитектуру Cortex-M3. Часть II

В предыдущей части были рассмотрены основные принципы работы ядра Cortex-М3, а также в общих чертах была описана структура ядра, основные отличия ядра Cortex-М3 от традиционного ядра с архитектурой ARM7, описаны основные принципы взаимодействия функциональных узлов процессоров на базе архитектуры Cortex-М3.

Так уже упоминалось в первой части, ядро Cortex-М3 содержит декодер команд как для традиционной Thumb, так и для новой системы команд Thumb-2. Также расширенное АЛУ поддерживает аппаратные умножение и деление, содержит блок управляющей логики и интерфейсы к остальным компонентам процессора. Процессоры на базе ядра Cortex-М3 имеют простую, фиксированную карту памяти с максимальным адресуемым пространством вплоть до 4 гигабайт, с предопределенными, заранее выделенными адресными массивами для памяти программ, ОЗУ, устройствами внешней памяти или периферийными устройствами, а также встроенной периферией (рис. 1). Также имеется специальная область памяти, которая содержит адреса, зарезервированные производителем.


Рис. 1. Карта памяти процессоров с архитектурой Cortex-M3

Процессоры на базе ядра CortexМ3 обеспечивают прямой доступ к битам данных при помощи довольно простого механизма (рис. 2). Заметим, что операции с битами являются элементарными и не могут быть прерванными другими операциями, в том числе и прерываниями.


Рис. 2. Сравнение механизма битовых операций в традиционной архитектуре ARM7 (а) и Cortex-M3 (б)

Традиционные процессоры на базе архитектуры ARM7 поддерживают только доступ к выровненным данным, что подразумевает, что сохраняемые и вычитываемые данные должны быть выровнены по границе слова. Процессоры же на базе архитектуры Cortex-М3 позволяют обращаться к невыровненным данным и сводят к минимуму временные задержки, связанные с доступом к данным. В случае, если происходит обращение к невыровненным данным, это обращение разбивается на несколько параллельных обращений к выровненным данным, но этот процесс является прозрачным для программы пользователя, поскольку происходит автоматически внутри ядра.

Вдобавок процессоры с архитектурой Cortex-М3 поддерживают операции 32-разрядного умножения за 1 такт, а также знаковое и беззнаковое деление, которое требует от 2 до 12 тактов в зависимости от размера операндов. Операция деления происходит быстрее, в случае, если делимое и делитель имеют небольшой размер. Такие улучшения в реализации математических операций дают процессорам с архитектурой CortexМ3 значительное преимущество перед процессорами на базе стандартной архитектуры ARM7 при решении задач, требующих интенсивных математических вычислений.

Микроконтроллеры с архитектурой ARMv7-M является продолжением архитектуры ARM7 и отличается от более ранних ARM архитектур поддержкой системы команд Thumb-2. Технология Thumb-2 является развитием 16- и 32-битных систем команд и обладает производительностью 32-битных команд ARM и беспрецедентно малым объемом результирующего кода. Следует отметить, что система команд Thumb-2 имеет обратную совместимость с 16-разрядной системой команд Thumb. На рис. 3 показан результат теста Drystone, который иллюстрирует производительность системы команд Thumb-2 по сравнению с другими системами команд. В предыдущих версиях процессоров с архитектурой ARM7 для получения эффективного кода, производительного с одной стороны и компактного с другой, требовалось разные участки программы создавать с использованием либо ARM-системы команд, либо Thumb. В то же время процессоры с архитектурой CortexМ3 не требуют таких сложных манипуляций, поскольку вполне толерантно относятся как к 16-разрядным, так и к 32-разрядным командам в одном и том же режиме. Поскольку система команд Thumb-2 является развитием 16-разрядной системы команд Thumb, процессоры с архитектурой Cortex-М3 могут выполнять программы, написанные с использованием системы команд Thumb для более ранних версий процессоров, и, таким образом, процессоры Cortex-М3 являются совместимыми по коду с более ранними версиями процессоров серии ARM7.


Рис. 3. Карта памяти процессоров с архитектурой Cortex-M3

Система команд Thumb-2 включает в себя команды, которые позволяют упростить и уменьшить объем кода для многих приложений. Так, команды BFA и BFC являются командами для работы с битовыми полями, которые часто используются при решении задач обработки, например, сетевых пакетов данных в телекоммуникационных приложениях. Команды SBFX и UBFX облегчают работу с битами внутри регистров, что очень полезно в автомобильных приложениях. Команда RBIT переставляет биты в слове и, в следствие этого, часто используется при реализации DSP алгоритмов, таких, как преобразование Фурье. Команды табличных переходов TBB и TBH позволяют добиться баланса между компактностью кода и высокой производительностью. В систему команд Thumb-2 также входит новая реализация конструкции if/then, которая предсказывает последовательность исполнения вплоть до четырех последующих команд.

Конфигурируемый контроллер NVIC является существенной частью архитектуры Cortex-М3 и обеспечивает процессору прекрасные возможности по обработке прерываний. По умолчанию он генерирует немаскируемое прерывание и 32 физических прерывания общего назначения с 8 уровнями приоритета. В то же время он может быть сконфигурирован для генерации любого количества от 1 до 240 физических прерываний с вплоть до 256 уровней приоритета при помощи простого метода конфигурирования.

Процессоры с архитектурой CortexМ3 используют перемещаемую таблицу векторов-обработчиков прерывания, которые содержат адреса функций, выполняемых каждым отдельно взятым обработчиком. При возникновении прерывания процессор использует адреса из таблицы векторов-обработчиков прерывания, используя интерфейс шины команд. Таблица векторов прерывания по умолчанию расположена по нулевому адресу, но может быть перемещена перепрограммированием соответствующего управляющего регистра.В случае возникновения ситуаций, когда прерывания следуют одно за другим, процессоры с традиционной архитектурой будут повторять полный цикл сохранения и восстановления данных дважды, при выходе из обработанного прерывания и при входе в следующее, что приводит к значительным задержкам и, как следствие, существенному падению производительности системы. Процессоры с архитектурой CortexМ3 упрощают переход от активного к следующему прерыванию благодаря применению новейшей технологии стыковки прерываний в аппаратной реализации контроллера NVIC. Технология стыковки прерываний позволяет получить значительно меньшие времена задержки благодаря замене последовательного восстановления и сохранения данных, которое обычно занимает около 30 тактов, простым механизмом, который требует всего 6 тактов (рис. 4). Регистры состояния процессоры автоматически сохраняются при входе в прерывание и восстанавливаются при выходе из него в течение всего нескольких тактов, что значительно быстрее, чем при полностью программной реализации обработчика прерываний. Это улучшение позволяет получить очень высокую производительность, что особенно важно при выполнении задач, связанных с обработкой большого количества прерываний.


Рис. 4. Механизм обработки прерываний в процессорах с архитектурой Cortex-M3

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

Контроллер NVIC также содержит интегрированный 24-разрядный декрементирующий системный таймер, который используется для генерирования прерываний при отсчете временных интервалов и является незаменимым блоком при реализации операционных систем реального времени.

MPU (модуль защиты памяти) – опциональный компонент процессоров архитектуры Cortex-М3, который позволяет существенно улучшить надежность всей системы при помощи защиты критических участков кода, используемого операционной системой при помощи разделения обрабатываемых задач путем запрета доступа к определенным данным, областям памяти, определением некоторых областей памяти как «только для чтения» и детектированием нежелательных событий доступа к памяти, которые потенциально могут нарушить работу системы.

MPU позволяет приложению быть разбитым на набор процессов. Каждому процессу выделяется собственная область памяти (включающая выделенные память программ, память данных, стек и т.п.) и периферия, и в то же время он может обращаться к общей памяти и общим модулям периферии. Таким образом, в MPU реализованы привилегированные уровни доступа. Они включают в себя как выполнение кода с соответствующим привилегированным уровнем, так и работу с выделенной памятью и периферией.MPU может разделять память на независимые области и реализовывать их защиту для предупреждения нежелательного доступа. MPU поддерживает вплоть до 8 таких областей, каждая из которых может быть разделена на 8 субобластей. Минимальный поддерживаемый размер области — 32 байта и увеличивается с шагом, кратным двум, вплоть до максимального адресуемого объема памяти 4 Гб. Доступ к памяти, не включенной в области, выделенные MPU, или запрещенные свойствами области памяти, будет приводить к генерированию соответствующей ошибки.

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

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

В следующей части статьи будут подробно рассмотрены работа с невыровненными данными, механизм поддержки прерываний с малым временем латентности, методы энергосбережения при работе в портативных и беспроводных системах, а также дан подробный обзор 32-разрядных ARM процессоров с архитектурой Cortex-M3 производства Luminary Micro Inc.

Павел Вовк
компания Элтис Компоненты






Рекомендуемый контент




Copyright © 2010-2017 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.