Ядро Сortex-M3 было представлено в 2004 году. При создании ядра Сortex-M3 ставилась задача замены ядра процессора ARM7TDMI, которое использовалось во множестве высокопроизводительных микроконтроллеров.
32-разрядное ядро Сortex-M3 имеет (рис. 32.5):
Гарвардскую структуру с раздельными памятями команд и данных;
трехступенчатый конвейер;
предсказание переходов;
однотактное умножение и аппаратно реализуемое деление;
блок вложенных прерываний;
предопределенную организацию памяти.
Рис. 32.5. Блок-схема Cortex-M3 процессора
При создании ядра Сortex-M3 в базовую ARM-архитектуру было внесено множество изменений. Так, отказались от ARM-режима, тогда как все предыдущие ядра имели два режима работы – ARM и Thumb, каждый с набором 32- и 16-разрядных команд, соответственно.
В ядре Сortex-M3 предусмотрена поддержка набора команд Thumb-2. При этом в набор Thumb-2 внесено 130 дополнительных команд. Thumb-2 позволяет добиться размеров программ, свойственных 16-разрядному набору команд Thumb, т.е. получить в среднем выигрыш в 20–30% по сравнению с 32-разрядным ARM-набором при снижении производительности всего на единицы процентов. Исключается необходимость переключения между режимами ARM и Thumb, что позволяет обойтись без блока переключения. Процессоры с набором команд Thumb-2 способны создавать программы намного быстрее, проще и эффективнее, чем при работе с ARM-набором команд.
Важное нововведение в ядре Cortex-M3 – возможность аппаратного выполнения операции деления. И хотя операция деления занимает немало тактов процессорных ядер, она выполняется быстрее, чем отдельная подпрограмма. Кроме того, ядро Cortex-М3 может оперировать с не выровненными данными (unaligned data), что также отличает его от предшествующих структур фирмы ARM и поддерживает операции с отдельными разрядами.
Еще один ключевой компонент ядра Cortex-M3 – контроллер векторизованных вложенных прерываний (КВВП), предоставляющий для всех Cortex-микроконтроллеров стандартную структуру прерываний и способы их обработки.
Конфигурируемое ядро Cortex-M3 соединяется с периферией посредством шины Advanced High-PerformanceBus (AHB), что позволяет разработчику с легкостью подключать к нему собственные подсистемы.
Благодаря этим нововведениям применение процессорных ядер Cortex-М3 стало рентабельным даже в самых простых приложениях.