Без сомнения, наиболее успешной и широко распространённой архитектурой команд (ISA) в мире является набор инструкций Arm. На сегодняшний день развернуто более 300 миллиардов процессоров, основанных на Arm ISA. При населении Земли более восьми миллиардов человек это примерно 38 процессоров Arm на каждого.
Что делает Arm ISA столь привлекательной? Она относится к классу архитектур с уменьшенным набором команд (RISC) и разработана для использования в самых разных приложениях — от небольших устройств с батарейным питанием до систем реального времени, а также для высокопроизводительных вычислений на периферии и в облаке. Чтобы поддерживать такие варианты использования, архитектура Arm эволюционировала от Armv1 до современного Armv9-A.
Линейка процессоров Arm Cortex включает три различные группы, каждая из которых предназначена для определённых приложений.
Cortex-M
Эти микроконтроллерные процессоры предназначены для низкоуровневых реализаций, максимально приближенных к оборудованию. Они разработаны с упором на низкую стоимость и малое энергопотребление. Типичные области применения — управление сенсорами, работа с системным вводом-выводом, дисплеями и зарядными устройствами. Как правило, процессоры Cortex-M не работают под управлением операционных систем, таких как Linux, поскольку не имеют блока управления памятью (MMU).
Cortex-R
Этот класс процессоров предназначен для задач реального времени и критически важных приложений. Для поддержки этих функций они оснащены тесно связанными памятью, возможностью работы в режиме блокировки (lockstep), блоками защиты памяти и кодами исправления ошибок для кешей и тесно связанной памяти (TCM). Процессоры Cortex-R обеспечивают детерминированные прерывания, что важно для приложений реального времени. Обычно такие процессоры работают под управлением операционных систем реального времени (RTOS).
Cortex-A
Этот класс процессоров предназначен для выполнения высокопроизводительных программных приложений, требующих работы с полноценными операционными системами или гипервизорами. Cortex-A также включает такие функции, как NEON (одна инструкция — множество данных, SIMD), модули векторной плавающей запятой (VFP) и TrustZone, обеспечивающий разделение зон безопасности.
Процессоры Cortex-M используют 32-битную архитектуру, тогда как Cortex-R и Cortex-A поддерживают как 32-, так и 64-битные инструкции.
Особенности архитектуры Arm
Одним из ключевых отличий архитектуры Arm является набор инструкций Thumb-2. Изначально Thumb представлял собой 16-битное кодирование инструкций Arm ISA. Thumb-2 расширил этот набор, добавив поддержку 32-битных инструкций, что привело к появлению переменной длины команд. Thumb-2 позволяет достичь высокой плотности кода при одновременном увеличении производительности. Процессоры Cortex-A и Cortex-R могут работать как с полным набором команд Arm ISA, так и с Thumb-2, тогда как многие процессоры Cortex-M поддерживают только Thumb-2, поскольку у них обычно ограниченные объёмы памяти.
Разумеется, сам процессор — это не единственный элемент, необходимый разработчикам. Arm также разработала спецификацию межсоединений Advanced Microcontroller Bus Architecture (AMBA), которая определяет несколько интерфейсных стандартов для процессорных ядер и позволяет создавать многопроцессорные решения с различными периферийными устройствами. В AMBA входят простые интерфейсы передачи памяти, такие как AXI Lite, а также более сложные интерфейсы, поддерживающие высокую пропускную способность, такие как AXI и кэш-когерентные межсоединения (CCI), обеспечивающие когерентность кеша в многопроцессорных системах.
Эти интерфейсы позволяют производителям процессоров, лицензирующим ядра Arm, создавать собственные процессорные решения. Например, одной из самых популярных линеек процессоров на основе Arm Cortex являются STM32. Эти чипы предлагают широкий выбор процессоров Arm с множеством встроенных периферийных устройств, таких как UART, SPI и I2C, а также более сложные модули, включая USB, интерфейсы для камер, CAN и Ethernet. Это даёт разработчикам возможность выбрать наиболее подходящее ядро для их приложения.
Arm Cortex и искусственный интеллект
Большинство процессоров Arm используется на периферии (Edge). Некоторые приложения развертываются в облаке, например, робототехника с управлением на основе компьютерного зрения (Cortex-A), автономное управление транспортными средствами (Cortex-R) или мониторинг промышленных систем управления.
Всё больше приложений на периферии используют выводы машинного обучения (ML). Например, в процессорах класса Cortex-A реализуется распознавание изображений, где требуется мощность процессоров прикладного уровня. Другие ML-приложения могут работать на Cortex-M, например, для предсказания отказов оборудования. Один из примеров такого применения — мониторинг потребляемого тока, где модель машинного обучения может предсказать потенциальный отказ системы. Такие задачи особенно критичны для ML на периферии. Обычно системы мониторинга и диагностики реализуются на Cortex-M, хотя этот класс процессоров не подходит для выполнения полноценных ML-стеков. Однако всё большую популярность набирают фреймворки TinyML, предназначенные для запуска машинного обучения на процессорах класса Cortex-M. Эти фреймворки поддерживают 32-битные архитектуры, что позволяет реализовать ML-модели без необходимости перехода на более мощные процессоры.
Итоги
Независимо от того, какое приложение вы разрабатываете — обработку изображений, машинное обучение, робототехнику, промышленный контроль, мониторинг состояния здоровья и многое другое — существует подходящее устройство Arm Cortex для его реализации. Гибкость этой архитектуры обусловлена компактным размером кода, поддержкой множества отраслевых стандартов и фреймворков, а также широкой базой разработчиков, хорошо знакомых с платформой Arm Cortex.