Открыть сервис

ARMv8-A

ARMv8-A — это 64-битная архитектура набора команд (ISA), разработанная британской компанией Arm Holdings. Она представляет собой первое значительное расширение архитектуры ARM до 64 бит, обеспечивая поддержку как 64-битного (AArch64), так и 32-битного (AArch32) режимов выполнения. ARMv8-A является основой для современных процессоров, используемых в смартфонах, планшетах, серверах, сетевом оборудовании и встраиваемых системах, начиная с 2013 года.

История

Разработка ARMv8 началась в 2011 году, когда стало очевидно, что 32-битная архитектура ARMv7-A (Cortex-A8, A9, A15) упирается в ограничения по адресации памяти (4 ГБ) и производительности для ресурсоёмких задач, таких как обработка видео высокого разрешения и работа с базами данных. Первая публичная спецификация ARMv8-A была выпущена в октябре 2011 года. Первым коммерческим процессором на этой архитектуре стал Apple A7, представленный в iPhone 5S в сентябре 2013 года. Он использовал ядро Cyclone, разработанное Apple по лицензии ARM.

В последующие годы ARMv8-A была расширена рядом дополнительных наборов инструкций, включая:

  • AArch32 (2013) — режим совместимости с 32-битным кодом ARMv7-A.
  • ARMv8.1-A (2014) — улучшения атомарных операций, поддержка виртуализации и расширения для работы с большими страницами памяти.
  • ARMv8.2-A (2016) — поддержка половинной точности (FP16), расширения для машинного обучения (SVE — Scalable Vector Extension) и улучшенная обработка исключений.
  • ARMv8.3-A (2017) — расширения для криптографии (SHA-512, SHA-3), улучшенная поддержка многопоточности и новые инструкции для работы с матрицами.
  • ARMv8.4-A (2018) — расширения для работы с виртуальной памятью, улучшенная поддержка контейнеров и новые криптографические инструкции (SM3, SM4).
  • ARMv8.5-A (2019) — расширения для безопасности (Memory Tagging Extension — MTE), улучшения в работе с памятью и поддержка новых форматов данных.
  • ARMv8.6-A (2020) — расширения для работы с матрицами (Matrix Multiply — MMA), улучшенная поддержка машинного обучения и новые инструкции для работы с векторами.

В 2021 году ARM представила ARMv9-A, которая является прямым преемником ARMv8-A и включает все её расширения, а также новые технологии, такие как Confidential Compute Architecture (CCA) и улучшенные возможности для машинного обучения. Однако ARMv8-A остаётся широко используемой архитектурой во многих современных процессорах.

Архитектура

Режимы выполнения

ARMv8-A поддерживает два основных режима выполнения:

  • AArch64 — 64-битный режим с 64-битными регистрами общего назначения (X0–X30), 64-битным программным счётчиком (PC) и 64-битным указателем стека (SP). Адресация памяти — 64-битная, что позволяет адресовать до 16 эксабайт (2^64 байт) виртуального адресного пространства. Режим AArch64 использует новый набор инструкций, оптимизированный для 64-битных вычислений.
  • AArch32 — 32-битный режим, полностью совместимый с ARMv7-A. Он поддерживает 32-битные регистры (R0–R15), 32-битный программный счётчик и 32-битный указатель стека. AArch32 позволяет выполнять 32-битные приложения без изменений, что упрощает миграцию с ARMv7-A на ARMv8-A.

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

Регистры

В режиме AArch64 доступны следующие регистры:

  • 31 регистр общего назначения (X0–X30) размером 64 бита. Регистр X30 используется как регистр связи (link register) для хранения адреса возврата из подпрограммы.
  • Программный счётчик (PC) — 64-битный регистр, хранящий адрес текущей инструкции.
  • Указатель стека (SP) — 64-битный регистр, используемый для работы со стеком.
  • Регистры состояния — 64-битный регистр состояния процесса (PSTATE), который хранит флаги условий (N, Z, C, V) и управляющие биты (например, режим выполнения, уровень привилегий).
  • Регистры SIMD и FP — 32 регистра (V0–V31) размером 128 бит, используемые для операций с плавающей точкой (FP) и SIMD-инструкций (Single Instruction, Multiple Data). Каждый регистр может хранить несколько значений меньшего размера (например, 2 64-битных, 4 32-битных, 8 16-битных или 16 8-битных).

В режиме AArch32 доступны 16 32-битных регистров общего назначения (R0–R15), где R15 — программный счётчик, R13 — указатель стека, R14 — регистр связи. Также доступны 32 регистра для SIMD и FP (S0–S31 для одинарной точности, D0–D31 для двойной точности, Q0–Q15 для 128-битных операций).

Набор инструкций

ARMv8-A использует два набора инструкций:

  • A64 — 64-битный набор инструкций для режима AArch64. Инструкции имеют фиксированную длину 32 бита. A64 включает:
  • Арифметические и логические операции (ADD, SUB, AND, ORR, EOR и др.).
  • Операции с памятью (LDR, STR, LDP, STP и др.) с поддержкой различных режимов адресации (базовый, предварительная индексация, пост-индексация).
  • Условные инструкции (CSEL, CSINC, CSINV, CSNEG) для реализации условных выражений без ветвлений.
  • Инструкции для работы с плавающей точкой (FADD, FSUB, FMUL, FDIV, FCMP и др.) и SIMD-инструкции (ADD, SUB, MUL, FMAX, FMIN, SHA-256, AES и др.).
  • Инструкции для управления системой (SVC, HVC, SMC, MSR, MRS и др.).
  • A32 и T32 — 32-битные наборы инструкций для режима AArch32. A32 — это классический 32-битный набор ARM (фиксированная длина 32 бита), а T32 — набор Thumb/Thumb-2 (переменная длина 16 или 32 бита). Они полностью совместимы с ARMv7-A.

Уровни привилегий

ARMv8-A поддерживает четыре уровня привилегий (Exception Levels — EL):

  • EL0 — пользовательский режим (User). Выполняются приложения.
  • EL1 — режим ядра операционной системы (OS). Выполняется ядро ОС.
  • EL2 — режим гипервизора (Hypervisor). Используется для виртуализации.
  • EL3 — режим монитора безопасности (Secure Monitor). Используется для управления безопасностью и переключения между обычным и защищённым мирами.

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

Классификация

ARMv8-A является частью семейства архитектур ARM, которое включает:

  • ARMv8-A — для приложений (Application). Ориентирована на высокопроизводительные системы: смартфоны, планшеты, серверы, сетевые устройства.
  • ARMv8-R — для реального времени (Real-time). Используется в системах с жёсткими требованиями к времени отклика: автомобильные системы, промышленные контроллеры.
  • ARMv8-M — для микроконтроллеров (Microcontroller). Оптимизирована для встраиваемых систем с низким энергопотреблением: датчики, носимые устройства, IoT.

Применение

ARMv8-A широко используется в различных устройствах и системах:

Мобильные устройства

Большинство современных смартфонов и планшетов, начиная с 2013 года, используют процессоры на архитектуре ARMv8-A. Примеры:

  • Apple A7–A16 (iPhone, iPad) — собственные разработки Apple.
  • Qualcomm Snapdragon 800–8 Gen 2 (Android-смартфоны) — лицензированные ядра Kryo.
  • Samsung Exynos 5–2200 (Galaxy S, Note) — собственные ядра Mongoose и Cortex.
  • MediaTek Helio и Dimensity (бюджетные и средние смартфоны) — ядра Cortex-A.
  • Huawei Kirin 920–9000 (смартфоны Huawei) — ядра Cortex-A.

Серверы и облачные вычисления

ARMv8-A активно внедряется в серверный сегмент благодаря высокой энергоэффективности. Примеры:

  • Amazon Graviton (AWS) — процессоры на базе ARMv8-A для облачных вычислений.
  • Ampere Altra — серверные процессоры с 80 ядрами ARMv8-A.
  • Fujitsu A64FX — процессор для суперкомпьютера Fugaku (№1 в рейтинге TOP500 в 2020–2021 годах).

Встраиваемые системы

ARMv8-A используется в роутерах, сетевых хранилищах, промышленных контроллерах и автомобильных системах. Примеры:

  • Qualcomm IPQ8074 — процессор для Wi-Fi 6 роутеров.
  • NXP i.MX 8 — процессор для автомобильных информационно-развлекательных систем.
  • Rockchip RK3399 — процессор для одноплатных компьютеров (например, Raspberry Pi 4).

Ноутбуки и персональные компьютеры

С 2020 года ARMv8-A используется в ноутбуках на базе Windows on ARM и Apple Silicon:

  • Apple M1, M2, M3 — процессоры для MacBook и iPad Pro.
  • Microsoft SQ1, SQ2 — процессоры для Surface Pro X.
  • Qualcomm Snapdragon 8cx Gen 3 — процессор для ноутбуков на Windows on ARM.

Критика

Несмотря на широкое распространение, ARMv8-A имеет ряд недостатков:

  • Сложность реализации — поддержка двух режимов (AArch64 и AArch32) усложняет проектирование процессоров и увеличивает площадь кристалла.
  • Энергопотребление — хотя ARMv8-A энергоэффективнее x86, в высокопроизводительных ядрах (например, Cortex-X1, X2) энергопотребление может быть сопоставимо с мобильными процессорами Intel.
  • Совместимость — приложения, написанные для 32-битной архитектуры, могут работать только в режиме AArch32, что ограничивает использование 64-битных возможностей.
  • Экосистема — на момент выхода (2013) экосистема 64-битных приложений для ARM была слабо развита, что замедляло переход с ARMv7-A.

Источники

  • ARM Architecture Reference Manual ARMv8-A (ARM DDI 0487)
  • ARMv8-A Architecture Overview (Arm Developer)
  • «ARMv8-A: 64-bit Architecture for the Next Generation of Mobile and Embedded Systems» (Arm White Paper, 2011)
  • «The ARMv8-A Architecture and Its Extensions» (IEEE Micro, 2015)
  • «ARMv8-A: A 64-bit Architecture for Mobile and Server Applications» (ACM Computing Surveys, 2016)
  • «Apple A7: The First 64-bit ARM Processor» (AnandTech, 2013)
  • «ARMv8-A: Architecture and Implementation» (Springer, 2018)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →