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

Архитектура ARMv8

ARMv8 — это 64-битная архитектура системы команд (ISA), разработанная британской компанией ARM Holdings (ныне входит в состав SoftBank Group). Она представляет собой первое поколение 64-битных архитектур ARM, обеспечивающее обратную совместимость с 32-битными приложениями и ориентированное на широкий спектр устройств: от мобильных телефонов и планшетов до серверов и суперкомпьютеров. ARMv8 была анонсирована в 2011 году, а первые коммерческие процессоры на её основе появились в 2013 году.

История создания

Разработка ARMv8 началась в середине 2000-х годов, когда стало очевидно, что 32-битная архитектура ARMv7 достигла предела производительности для задач, требующих более 4 ГБ оперативной памяти. Рост объёмов памяти в мобильных устройствах, а также потребность в энергоэффективных серверных решениях подтолкнули ARM к созданию 64-битной архитектуры. В отличие от конкурентов (x86-64 от Intel и AMD), ARMv8 не была расширением существующей 32-битной архитектуры, а разрабатывалась с нуля, хотя и сохранила общие принципы RISC (Reduced Instruction Set Computer).

Первая версия спецификации ARMv8-A была опубликована в 2011 году. В 2013 году компания Apple выпустила первый коммерческий процессор на ARMv8 — Apple A7, установленный в iPhone 5s. Вслед за Apple свои 64-битные процессоры представили Qualcomm (Snapdragon 810), Samsung (Exynos 5433) и другие производители. В 2017 году ARM анонсировала обновлённую версию ARMv8.2-A, которая включала поддержку новых инструкций для машинного обучения и криптографии.

Архитектурные особенности

Режимы работы

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

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

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

Регистровая модель

В режиме AArch64 доступны 31 регистр общего назначения (X0–X30), каждый из которых имеет 64-битный размер. Кроме того, существует 32-битный поднабор (W0–W30), который является нижней половиной соответствующих 64-битных регистров. Регистры X30 используется как регистр-ссылка (link register) для хранения адреса возврата из подпрограммы. Счётчик команд (PC) является отдельным регистром, не доступным для прямого чтения.

Система команд

ARMv8 использует фиксированную длину инструкций — 32 бита (4 байта) в обоих режимах, что упрощает декодирование и повышает производительность. Набор команд включает:

  • Арифметические и логические операции (ADD, SUB, AND, ORR, EOR)
  • Операции с памятью (LD, ST) с поддержкой различных режимов адресации
  • Условные инструкции (CSEL, CSINC)
  • Инструкции для работы с плавающей точкой (FADD, FMUL, FCVT) — поддержка одинарной (32-бит) и двойной (64-бит) точности
  • Векторные инструкции (NEON) — SIMD-расширение для параллельной обработки данных
  • Криптографические инструкции (AES, SHA) — в версии ARMv8.2-A

Исключения и привилегии

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

  • EL0 — пользовательский режим (приложения)
  • EL1 — режим операционной системы (ядро)
  • EL2 — режим гипервизора (виртуализация)
  • EL3 — режим монитора безопасности (Secure Monitor)

Каждый уровень имеет собственный набор регистров и системных таблиц, что обеспечивает строгую изоляцию между компонентами системы. Виртуализация на ARMv8 реализована через расширения Virtualization Extensions (VE), которые позволяют запускать несколько гостевых ОС без потери производительности.

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

Архитектура ARMv8 включает несколько профилей, адаптированных для разных сфер применения:

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

Применение

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

ARMv8 стала основой для большинства современных мобильных процессоров. Apple A7–A17, Qualcomm Snapdragon 800–8 Gen 3, Samsung Exynos 7–2200, MediaTek Dimensity — все они используют ядра ARMv8-A. Это позволило увеличить производительность смартфонов и планшетов при сохранении низкого энергопотребления.

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

В 2010-х годах началось внедрение ARMv8 в серверный сегмент. Процессоры на базе ARMv8 (например, Amazon Graviton, Ampere Altra, Huawei Kunpeng) используются в центрах обработки данных для выполнения веб-серверов, баз данных и задач машинного обучения. Основные преимущества — высокая энергоэффективность (соотношение производительности на ватт) и низкая стоимость.

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

ARMv8-M широко применяется в микроконтроллерах для Интернета вещей (IoT). Например, процессоры Cortex-M23 и Cortex-M33 используются в умных датчиках, носимых устройствах и промышленных контроллерах. Благодаря малому энергопотреблению такие устройства могут работать от батарейки годами.

Суперкомпьютеры

В 2020 году суперкомпьютер Fugaku (Япония) на базе процессоров Fujitsu A64FX (ARMv8-A) занял первое место в рейтинге TOP500, достигнув производительности 442 петафлопс. Это продемонстрировало пригодность ARMv8 для высокопроизводительных вычислений.

Критика и ограничения

Несмотря на успехи, ARMv8 подвергается критике по нескольким причинам:

  • Фрагментация экосистемы — разные производители реализуют архитектуру с собственными модификациями, что затрудняет унификацию программного обеспечения.
  • Ограниченная поддержка в серверном сегменте — по сравнению с x86-64, количество оптимизированных приложений для ARMv8 на серверах остаётся меньшим.
  • Энергопотребление в высокопроизводительных ядрах — хотя ARMv8 энергоэффективнее x86, при максимальной нагрузке (например, в серверах) разница сокращается.

Интересные факты

  • ARMv8 стала первой архитектурой ARM, которая поддерживает 64-битные вычисления, но при этом сохраняет полную совместимость с 32-битным кодом на уровне ISA.
  • В 2021 году ARM анонсировала ARMv9 — преемника ARMv8, который расширил возможности безопасности и машинного обучения, но сохранил обратную совместимость с ARMv8.
  • Процессор Apple M1 (2020) использует ядра на базе ARMv8-A, что позволило перевести линейку Mac на собственную архитектуру компании.

Источники

  • ARM Architecture Reference Manual, ARMv8-A (ARM DDI 0487)
  • ARM Holdings. ARMv8-A Architecture Overview (2011)
  • Smith, R. ARMv8: The 64-bit ARM Architecture. IEEE Micro, 2012
  • TOP500. November 2020 List
  • Официальная документация ARM (developer.arm.com)

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

На главную BFOmetr →