AArch64

редактировать
64-битное расширение архитектуры ARM

AArch64или ARM6464-битное расширение архитектуры ARM.

платформа ARMv8-A с процессором Cortex A57 / A53 MPCore big.LITTLE

Впервые он был представлен с архитектурой ARMv8-A.

Содержание

  • 1 ARMv8-A
    • 1.1 Функции AArch64
    • 1.2 ARMv8.1-A
    • 1.3 ARMv8.2-A
      • 1.3.1 Расширение масштабируемых векторов (SVE)
    • 1.4 ARMv8.3-A
    • 1.5 ARMv8.4-A
    • 1.6 ARMv8.5-A
    • 1.7 ARMv8.6-A
    • 1.8 Будущие особенности архитектуры ARM
      • 1.8.1 Расширение масштабируемого вектора 2 (SVE2)
      • 1.8.2 Transactional Memory Extension (TME)
  • 2 Ссылки

ARMv8-A

Объявленный в октябре 2011 г., ARMv8-A(часто называемый просто ARMv8, хотя есть также 32-разрядная ARMv8-R) представляет собой фундаментальное изменение архитектуры ARM. Он добавляет дополнительную 64-битную архитектуру (например, Cortex-A32 - это 32-битный процессор ARMv8-A, в то время как большинство процессоров ARMv8-A поддерживают 64-битную архитектуру, в отличие от всех ARMv8-R), названную "AArch64", и соответствующий новый " A64 "набор инструкций. AArch64 обеспечивает совместимость пользовательского пространства с ARMv7-A, 32-битной архитектурой, в ней упоминаемой как «AArch32», и старым 32-битным набором команд, теперь называемым «A32». Набор команд Thumb упоминается как «T32» и не имеет 64-битного аналога. ARMv8-A позволяет выполнять 32-разрядные приложения в 64-разрядной ОС, а 32-разрядную ОС - под управлением 64-разрядного гипервизора. ARM анонсировала свои ядра Cortex-A53 и Cortex-A57 30 октября 2012 года. Apple первой выпустила ARMv8-A-совместимое ядро ​​(Apple A7 ) в потребительском продукте (iPhone 5S ). AppliedMicro, использующий FPGA, был первым, кто продемонстрировал ARMv8-A. Первый ARMv8-A SoC от Samsung - это Exynos 5433, используемый в Galaxy Note 4, который имеет два кластера из четырех Cortex-A57 и Cortex-A53. ядра в конфигурации big.LITTLE; но он будет работать только в режиме AArch32.

И для AArch32, и для AArch64 ARMv8-A делает VFPv3 / v4 и расширенный стандарт SIMD (Neon). Он также добавляет инструкции криптографии, поддерживающие AES, SHA-1 / SHA-256 и арифметику конечных полей.

функции AArch64

  • Новая инструкция set, A64
    • Имеет 31 64-разрядный регистр общего назначения.
    • Имеет специальный регистр нуля или указателя стека (SP) (в зависимости от инструкции).
    • Счетчик программы (ПК) больше не доступен напрямую как регистр.
    • Инструкции по-прежнему имеют длину 32 бита и в основном такие же, как A32 (с инструкциями LDM / STM и большей частью условного выполнения).
      • Имеет парные загрузки / сохранения (вместо LDM / STM).
      • Нет предикации для большинства инструкций (кроме ветвей).
    • Большинство инструкций могут занимать 32 -битные или 64-битные аргументы.
    • Предполагается, что адреса являются 64-битными.
  • Расширенный SIMD (Neon) расширенный
  • Новая система исключений
    • Меньшее количество банков и режимов.
  • Преобразование памяти из 48-битных виртуальных адресов на основе существующего расширения большого физического адреса ( LPAE), который был разработан с возможностью простого расширения до 64-разрядной версии.

AArch64 был представлен в ARMv8-A и включен в последующие версии ARMV8-A. AArch64 не входит в ARMv8-R или ARMv8-M, поскольку они обе являются 32-разрядными архитектурами.

ARMv8.1-A

В декабре 2014 года было объявлено о выпуске ARMv8.1-A, обновления с «дополнительными преимуществами по сравнению с версией 8.0». Усовершенствования делятся на две категории: изменения набора инструкций и изменения модели исключений и преобразование памяти.

Усовершенствования набора команд включают следующее:

  • Набор атомарных инструкций чтения-записи AArch64.
  • Дополнения к набору инструкций Advanced SIMD для AArch32 и AArch64, чтобы открыть возможности для некоторых библиотек оптимизации:
    • Знаковое округление с насыщением, удвоение, умножение, накопление, возврат высокой половины.
    • Знаковое округление с насыщением, округление, удвоение, умножение, вычитание, возврат высокой половины.
    • Инструкции складываются в векторном и скалярном виде формы.
  • Набор инструкций загрузки и сохранения AArch64, которые могут обеспечивать порядок доступа к памяти, который ограничен настраиваемыми адресными областями.
  • Дополнительные инструкции CRC в версии 8.0 становятся обязательными в ARMv8.1.

Усовершенствования для модели исключений и системы преобразования памяти включали следующее:

  • Новый бит состояния Privileged Access Never (PAN) обеспечивает контроль, который предотвращает привилегированный доступ к пользовательским данным, если он явно не включен.
  • Увеличенный VMID диапазон для виртуализации; поддерживает большее количество виртуальных машин.
  • Дополнительная поддержка аппаратного обновления флага доступа к таблице страниц и стандартизация дополнительного, аппаратно обновляемого механизма грязных битов.
  • Расширения узла виртуализации (VHE). Эти усовершенствования повышают производительность гипервизоров 2-го типа за счет снижения нагрузки на программное обеспечение, связанной с переходом между хостовой и гостевой операционными системами. Расширения позволяют ОС хоста работать на EL2, в отличие от EL1, без существенных изменений.
  • Механизм, освобождающий некоторые биты таблицы трансляции для использования операционной системой, где аппаратная поддержка не требуется ОС.
  • для.

ARMv8.2-A

В январе 2016 года было объявлено о выпуске ARMv8.2-A. Его усовершенствования делятся на четыре категории:

Расширение масштабируемых векторов (SVE)

Расширение Scalable Vector Extension (SVE) - это «дополнительное расширение архитектуры ARMv8.2-A и новее», разработанное специально для векторизации высокопроизводительных вычислений научных рабочих нагрузок. Спецификация позволяет реализовать переменную длину вектора от 128 до 2048 бит. Расширение является дополнением к расширениям NEON и не заменяет их.

512-битный вариант SVE уже реализован на суперкомпьютере Fugaku с использованием процессора Fujitsu A64FX ARM. Он нацелен на то, чтобы стать самым производительным суперкомпьютером в мире с «целью начать полноценную работу около 2021 года».

SVE поддерживается компилятором GCC, а GCC 8 поддерживает автоматическую векторизацию и GCC. 10 поддерживающих встроенных функций C. По состоянию на июль 2020 года LLVM и clang поддерживают встроенные функции C и IR. Собственный форк LLVM от ARM поддерживает автоматическую векторизацию.


ARMv8.3-A

В октябре 2016 года было объявлено о выпуске ARMv8.3-A. Его усовершенствования делятся на шесть категорий:

  • аутентификация указателя (только AArch64); обязательное расширение (на основе нового блочного шифра) архитектуры (компиляторы должны использовать функцию безопасности, но, поскольку инструкции находятся в пространстве NOP, они обратно совместимы, хотя и не обеспечивают дополнительной безопасности на старых чипах).
  • Вложенная виртуализация (только AArch64)
  • Расширенная поддержка SIMD комплексного числа (AArch64 и AArch32); например повороты на кратные 90 градусов.
  • Новая инструкция FJCVTZS (с плавающей точкой Javascript Преобразовать в знаковую фиксированную точку, округление к нулю).
  • Изменение памяти модель согласованности (только AArch64); для поддержки (не по умолчанию) более слабой модели RCpc (согласованный с выпуском процессора) модели C ++ 11 / C11 (модель согласованности C ++ 11 / C11 по умолчанию уже поддерживалась в предыдущем ARMv8).
  • Поддержка механизма ID для больших видимых системой кешей (AArch64 и AArch32)

Архитектура ARMv8.3-A теперь поддерживается (по крайней мере) GCC Компилятор 7.

ARMv8.4-A

В ноябре 2017 года был анонсирован ARMv8.4-A. Его усовершенствования попали в следующие категории:

  • «SHA3 / SHA512 / SM3 / SM4 криптографические расширения»
  • Улучшенная поддержка виртуализации
  • Возможности разделения и мониторинга памяти (MPAM)
  • Новые мониторы состояния и активности Secure EL2.
  • Инструкции знакового и беззнакового целочисленного произведения (SDOT и UDOT).

ARMv8.5-A

В сентябре 2018 г. Анонсирован ARMv8.5-A. Его усовершенствования попали в следующие категории:

  • Расширение тегов памяти (MTE),
  • Индикаторы цели перехода (BTI) для уменьшения «способности злоумышленника выполнить произвольный код»
  • Случайное число Инструкции генератора - «предоставление детерминированных и истинных случайных чисел, соответствующих различным национальным и международным стандартам».

2 августа 2019 года Google объявил, что Android примет расширение тегов памяти (MTE).

ARMv8.6-A

В сентябре 2019 года был анонсирован ARMv8.6-A. Он добавляет:

  • General Matrix Multiply (GEMM)
  • Формат Bfloat16 поддерживает
  • инструкции манипулирования матрицей SIMD, BFDOT, BFMMLA, BFMLAL и BFCVT
  • улучшения для виртуализации, системы управление и безопасность

Например, мелкие прерывания, инструкции ожидания события (WFE), EnhancedPAC2 и FPAC. Расширения Bfloat16 для SVE и Neon в основном предназначены для использования в глубоком обучении.

Будущие функции архитектуры ARM

В мае 2019 года ARM анонсировала свои предстоящие Scalable Vector Extension 2 (SVE2) и Transactional Memory Extension ( TME).

Расширение масштабируемого вектора 2 (SVE2)

SVE2 основывается на масштабируемой векторизации SVE для повышения уровня детализации параллелизма уровня данных (DLP), что позволяет выполнять больше работы сделано по инструкции. SVE2 стремится предоставить эти преимущества более широкому спектру программного обеспечения, включая DSP и мультимедийный код SIMD, которые в настоящее время используют Neon. Коды разработки LLVM / Clang 9.0 и GCC 10.0 были обновлены для поддержки SVE2.

Transactional Memory Extension (TME)

Вслед за расширениями x86 TME обеспечивает поддержку аппаратной транзакционной памяти (HTM) и исключения транзакционной блокировки (TLE). TME стремится обеспечить масштабируемый параллелизм для увеличения общего параллелизма на уровне потоков (TLP), чтобы можно было выполнять больше работы в каждом потоке. Коды разработки LLVM / Clang 9.0 и GCC 10.0 были обновлены для поддержки TME.

Ссылки

Последняя правка сделана 2021-06-07 19:07:01
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте