- •Глава 21. Особенности архитектур arMv7a, arMv8, arMv7m
- •21.1. Версии архитектуры процессоров arm
- •21.2. Архитектура arMv7a
- •Условное восполнение
- •21.3. Рабочие состояния процессора
- •21.4. Типы данных
- •21.5. Организация памяти
- •21.6. Режимы работы
- •21.7. Регистры
- •21.7. Исключительные ситуации
- •21.8. Особенности архитектуры arMv8
- •21.9. Особенности архитектуры CortexM
- •Регистры
- •Организация памяти
- •21.10. Контрольные вопросы
21.7. Исключительные ситуации
Исключительные ситуации возникают всякий раз, когда нормальный ход выполнения программы необходимо временно прерывать, например, для обслуживания прерывания от периферийного устройства. Перед началом обработки исключительной ситуации процессор запоминает текущее состояние для того, чтобы по завершении подпрограммы обработчика возобновить нормальное выполнение программы. Если две или более исключительных ситуации возникает одновременно, то данные ситуации обрабатываются в фиксированном порядке, представленном в таблице 21.1.
Таблица 21.1. Приоритет исключительных ситуаций
Приоритет |
Исключительная ситуация |
Наивысший |
Сброс (Reset) |
|
Авар. данные (Data Abort) |
|
Запрос быстрого прерывания (FIQ) |
|
Запрос прерывания (IRQ) |
|
Авар. выборка (Prefetch Abort) |
Низший |
Неопределенная команда и программное прерывание (SWI) |
Запрос быстрого прерывания FIQ
Исключительная ситуация запроса быстрого прерывания (FIQ) поддерживает передачу данных или обработку канала. В состоянии ARM режим FIQ имеет 8 альтернативных регистров, что исключает необходимость предварительного запоминания регистров. Этим минимизируется потеря производительности при переключении контекста.
Исключительные ситуации FIQ могут быть отключены в привилегированном режиме путем установки флага F в CPSR.
Запрос на прерывание IRQ
Запрос на прерывание IRQ – это обычное прерывание.
Запрос IRQ имеет более низкий приоритет по сравнению с запросом FIQ и маскируется при вызове последовательности запросов FIQ.
Отключить прерывание можно в любой момент путем установки разряда I в регистре CPSR из привилегированного режима.
Аварийная ситуация
Аварийная ситуация указывает, что текущий доступ к оперативной памяти не может быть завершен.
Аварийный механизм позволяет реализовать систему виртуальной памяти с подкачкой страниц по требованию. Если данные по адресу не доступны, то блок управления памятью (MMU) сигнализирует об аварии.
21.8. Особенности архитектуры arMv8
Процессоры ARM доказали свое преимущество во встроенных системах, мобильных телефонах, планшетах, но их использование для более серьезных приложений главным образом было ограничено возможностями 32-разрядной адресации. В качестве промежуточного решения в процессорах Cortex-A15, при сохранении общей 32-разрядной архитектуры, для адресации к оперативной памяти до 1 Тбайт было предложено расширение 40-bit Large Physical Address Extensions. Однако, это решение не обеспечивало будущее развитие процессоров фирмы ARM как в уже завоеванных областях, так и в новых областях применения типа серверов и т.п..
Архитектура ARMv8 была представлена в конце 2011 года и стала восьмой по счету версией архитектуры ARM, отсюда и ее название — ARMv8 (рис.21. 6).
Рис. 21.6. Архитектура ARMv8 в ряду других архитектур ARM
В архитектуре ARMv8-А реализован один из наиважнейших принципов при внедрении новых технологий - абсолютно полная обратная программная совместимость с версией архитектуры ARMv7-А (режим AArch32).
Режим AArch64 является принципиально новым решением с новым набором команд A64. Со временем, когда не нужно будет поддерживать унаследованные приложения, планируется отказаться от режима AArch32.
В архитектуре ARMv8 по сравнению с архитектурой ARMv7 более полно отражается идеология архитектуры RISC, созданной не для встроенных систем, а для решения классических задач счета и обработки данных. В архитектуре ARMv7 и в ее предшественниках изначально были заложены свойства, уходящие корнями в требования со стороны встроенных систем и диктующие необходимость специальным образом использовать регистры, чтобы успевать в реальном времени обрабатывать прерывания. Эти особенности не находят свое отражение в режиме AArch64, поэтому в архитектуре ARMv8 были совмещены обе системы команд. Набор команд режима AArch64 адаптирован к работе в одном из двух режимов в зависимости от операционной системы. Если установлена операционная система Linux или другие распространенные клоны UNIX, то выбирается режим LP64, где целые числа имеют длину 32 разряда и длинные целые — 64 разряда, а если операционная система Windows, то режим LLP64, где целые и длинные целые имеют длину 32 разряда, а очень длинные целые (long long integers) — 64 разряда.
В режиме AArch64 используется новый набор команд А64 с 32-разрядными командами и 5-разрядными указателями регистров для доступа к 32/64/128-разрядным регистрам. При выполнении большинства команд доступен выделенный нулевой регистр. Указатель стека и счетчик команд не входят в группу регистров.
Новые команды поддерживают 32- и 64-разрядные данные. В наборе А64 отсутствует несколько команд загрузки или хранения произвольной длины. Поддержка архитектуры SIMD и операций с плавающей точкой схожи с поддержкой предыдущей версией архитектуры – ARMv7А.
В архитектуре ARMv8 используются четыре иерархических уровня привилегий (EL0-EL3). Уровень EL3 поддерживает технологию TrustZone. Эта система поддерживает множество 32- и 64-разрядных конфигураций безопасной виртуализации.
Рис.
20.8
В архитектуре появился режим Embedded Trace Mode 4 (ETM4), который расширяет адреса до 64 разрядов. Он позволяет выявить «промежуточные этапы» выполнения команд, что эффективнее, чем предоставление информации об адресах.
Аппаратная поддержка криптографии, способна ускорить процессы, использующие шифрование, в десятки раз.
Архитектура ARMv8 сохраняет и приумножает ключевые функции своей предшественницы, такие, как TrustZone, SIMD-команды NEON и виртуализация, которые позволяют устанавливать на мобильные платформы гипервизоры виртуальных машин, обеспечивающие работу нескольких гостевых операционных систем.
Cortex-A53 и Cortex-A57 были первыми процессорами, в которых реализована архитектура ARMv8-A. Они имеют общую систему команд, почти неразличимы для приложений, но процессор Cortex-A57 быстрее и потребляет больше энергии. Наличие такой пары процессоров (рис. 21.8) позволяет устройству иметь два набора процессоров и в нужный момент переключаться на тот, который точнее соответствует текущей нагрузке.
Рис. 21. 8. Процессоры ARM 50-й серии
Условно процессор Cortex-A57 можно представить как процессор Cortex-A15 с 64-разрядной архитектурой, а процессор Cortex-A53 – как процессор Cortex-A7 с 64-разрядной архитектурой. Эти процессоры даже при выполнении программ для 32-разрядной архитектуры ARMv7-А на 20–30% быстрее предшественников.
Специально для встроенных систем будет создана сокращенная 32-разрядная версия архитектуры ARMv8-R.
Выводы
В архитектуре ARMv8 реализованы 2 режима Aarch32 (32-разрядный ARMv7 и 64-разрядный режим AArch64.
Основные особенности 64-разрядного режима AArch64:
Новый набор команд A64.
31 64-разрядный регистр общего назначения.
Отдельные регистры SP и PC.
Команды 32-разрядные и многие совпадают с командами архитектуры ARMv7.
Большинство команд работают как с 32-, так и с 64-разрядными аргументами.
Адреса 64-разрядные.
Реализовано расширение NEON.
С 16 до 32 увеличено количество 128-разрядных регистров, доступных через сопроцессоры NEON, VFPv4, криптокоманды AES, SHA.
Поддерживаются вычисления с числами с плавающей точкой двойной точности. Полная совместимость со стандартом обработки чисел с плавающей точкой IEEE 754.
Новая система исключений.
