Jump to content

AArch64

(Перенаправлено с ARMv8.4-A )

Платформа Armv8-A с Cortex-A57 / A53 MPCore big.LITTLE процессорным чипом

AArch64 или ARM64 — это 64-битное состояние выполнения семейства архитектуры ARM . Впервые он был представлен в архитектуре Armv8-A и имел множество обновлений расширений. [1]

ARM-A (архитектура приложения)

[ редактировать ]

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

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

Процессор ARMv8-A может поддерживать один или оба AArch32 и AArch64; он может поддерживать AArch32 и AArch64 на более низких уровнях исключений и только AArch64 на более высоких уровнях исключений. [8] Например, ARM Cortex-A32 поддерживает только AArch32. [9] ARM Cortex-A34 поддерживает только AArch64, [10] а ARM Cortex-A72 поддерживает как AArch64, так и AArch32. [11] Процессор ARMv9-A должен поддерживать AArch64 на всех уровнях исключений и может поддерживать AArch32 на уровне EL0. [8]

Соглашения об именах

[ редактировать ]
  • 64-бит:
    • Состояние выполнения: AArch64.
    • Наборы инструкций: A64.
  • 32-битный:
    • Состояние выполнения: AArch32.
    • Наборы инструкций: A32 + T32.
    • Пример: ARMv8-R, Cortex-A32. [12]

Возможности AArch64

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

Расширение: подсказка по сбору данных (ARMv8.0-DGH).

AArch64 был представлен в ARMv8-A и включен в последующие версии ARMv8-A. Он также был представлен в ARMv8-R в качестве опции после его появления в ARMv8-A; он не включен в ARMv8-M.

Форматы инструкций

[ редактировать ]

Основной код операции для выбора группы, к которой принадлежит инструкция A64, находится в битах 25–28.

Форматы инструкций A64
Type Bit
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved 0 op0 0 0 0 0 op1
SME 1 op0 0 0 0 0 Varies
Unallocated 0 0 0 1
SVE 0 0 1 0 Varies
Unallocated 0 0 1 1
Data Processing — Immediate PC-rel. op immlo 1 0 0 0 0 immhi Rd
Data Processing — Immediate Others sf 1 0 0 01–11 Rd
Branches + System Instructions op0 1 0 1 op1 op2
Load and Store Instructions op0 1 op1 0 op2 op3 op4
Data Processing — Register sf op0 op1 1 0 1 op2 op3
Data Processing — Floating Point and SIMD op0 1 1 1 op1 op2 op3

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

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

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

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

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

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

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

[ редактировать ]

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

512-битный вариант SVE уже реализован на суперкомпьютере Fugaku с использованием ARM-процессора Fujitsu A64FX ; этот компьютер [18] был самым быстрым суперкомпьютером в мире в течение двух лет, с июня 2020 года. [19] до мая 2022 года. [20] Более гибкая версия — 2x256 SVE — реализована на базе ARM-процессора AWS Graviton3 .

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

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

  • Аутентификация указателя [23] (только AArch64); обязательное расширение (на основе нового блочного шифра QARMA [24] ) к архитектуре (компиляторам необходимо использовать эту функцию безопасности, но, поскольку инструкции находятся в пространстве NOP, они обратно совместимы, хотя и не обеспечивают дополнительной безопасности на старых чипах).
  • Вложенная виртуализация (только AArch64).
  • Расширенная поддержка комплексных номеров SIMD (AArch64 и AArch32); например, повороты на угол, кратный 90 градусам.
  • преобразование чисел с плавающей запятой Новая инструкция FJCVTZS ( JavaScript- в знаковую фиксированную точку, округление в сторону нуля). [25]
  • Изменение модели согласованности памяти (только AArch64); для поддержки (не по умолчанию) более слабой модели RCpc (Release Consistent Processor Consistent) C++11 / C11 (модель согласованности C++11/C11 по умолчанию уже поддерживалась в предыдущей версии ARMv8).
  • Поддержка механизма идентификации для более крупных кэшей, видимых системой (AArch64 и AArch32).

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

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

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

ARMv8.5-A и ARMv9.0-A

[ редактировать ]

В сентябре 2018 года был анонсирован ARMv8.5-A. Его улучшения попали в следующие категории: [30] [31] [32]

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

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

В марте 2021 года был анонсирован ARMv9-A. Базовая версия ARMv9-A — это все функции ARMv8.5. [35] [36] [37] ARMv9-A также добавляет:

ARMv8.6-A и ARMv9.1-A

[ редактировать ]

В сентябре 2019 года был анонсирован ARMv8.6-A. Его улучшения попали в следующие категории: [30] [42]

  • Общее матричное умножение (GEMM).
  • Поддержка формата Bfloat16 .
  • Инструкции по манипуляции матрицей SIMD, BFDOT, BFMMLA, BFMLAL и BFCVT.
  • Улучшения в области виртуализации, управления системой и безопасности.
  • И следующие расширения (в которые в LLVM 11 уже добавлена ​​поддержка [43] ):
    • Расширенная виртуализация счетчиков (ARMv8.6-ECV).
    • Мелкозернистые ловушки (ARMv8.6-FGT).
    • Виртуализация мониторов активности (ARMv8.6-AMU).

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

ARMv8.7-A и ARMv9.2-A

[ редактировать ]

В сентябре 2020 года был анонсирован ARMv8.7-A. Его улучшения попали в следующие категории: [30] [45]

  • Расширение масштабируемой матрицы (SME) (только ARMv9.2). [46] SME добавляет новые функции для эффективной обработки матриц, такие как:
    • Матричное хранение тайлов.
    • Транспонирование матрицы «на лету».
    • Загрузка/сохранение/вставка/извлечение векторов тайлов.
    • Матричное внешнее произведение векторов SVE.
    • «Потоковый режим» СВЕ.
  • Расширенная поддержка горячего подключения PCIe (AArch64).
  • Атомная 64-байтовая загрузка и сохранение в ускорители (AArch64).
  • Ожидание инструкции (WFI) и ожидание события (WFE) с тайм-аутом (AArch64).
  • Запись ветвей записи (только ARMv9.2).

ARMv8.8-A и ARMv9.3-A

[ редактировать ]

В сентябре 2021 года были анонсированы ARMv8.8-A и ARMv9.3-A. Их улучшения попали в следующие категории: [30] [47]

  • Немаскируемые прерывания (AArch64).
  • Инструкции по оптимизации операций стилей memcpy() и memset() (AArch64).
  • Улучшения PAC (AArch64).
  • Условные переходы с подсказками (AArch64).

LLVM 15 поддерживает ARMv8.8-A и ARMv9.3-A. [48]

ARMv8.9-A и ARMv9.4-A

[ редактировать ]

В сентябре 2022 года были анонсированы ARMv8.9-A и ARMv9.4-A, в том числе: [49]

  • Улучшения архитектуры системы виртуальной памяти (VMSA).
    • Косвенное разрешение и наложения.
    • Усиление перевода.
    • 128-битные таблицы трансляции (только ARMv9).
  • Расширение масштабируемой матрицы 2 (SME2) (только ARMv9).
    • Многовекторные инструкции.
    • Многовекторные предикаты.
    • Сжатие веса 2b/4b.
    • 1б бинарные сети.
    • Предварительная выборка диапазона.
  • Защищенный стек управления (GCS) (только ARMv9).
  • Конфиденциальные вычисления.
    • Контексты шифрования памяти.
    • Назначение устройства.

ARM-R (архитектура реального времени)

[ редактировать ]

В профиль Armv8-R была добавлена ​​дополнительная поддержка AArch64, причем первым ядром Arm, реализующим ее, стал Cortex-R82. [50] Он добавляет набор инструкций A64 с некоторыми изменениями в инструкциях по барьеру памяти. [51]

  1. ^ «Обзор» . Изучите архитектуру: понимание расширений Armv8.x и Armv9.x .
  2. ^ «ARM раскрывает технические подробности следующей версии архитектуры ARM» (пресс-релиз). Арм Холдингс . 27 октября 2011 г. Архивировано из оригинала 1 января 2019 г. . Проверено 20 сентября 2013 г.
  3. ^ Гризентуэйт, Ричард (2011). «Обзор технологии ARMv8-A» (PDF) . Архивировано из оригинала (PDF) 11 ноября 2011 года . Проверено 31 октября 2011 г.
  4. ^ «ARM выпускает серию Cortex-A50, самые энергоэффективные 64-битные процессоры в мире» (пресс-релиз). Арм Холдингс . Проверено 31 октября 2012 г.
  5. ^ «AppliedMicro представляет первое в мире 64-битное ядро ​​ARM v8» (пресс-релиз). ПрикладнойМикро. 28 октября 2011 года . Проверено 11 февраля 2014 г.
  6. ^ «Samsung Exynos 5433 представляет собой SoC A57/A53 ARM» . АнандТех . Проверено 17 сентября 2014 г.
  7. ^ «Техническое справочное руководство процессора ARM Cortex-A53 MPCore: Расширение криптографии» . РУКА . Проверено 11 сентября 2016 г.
  8. ^ Jump up to: а б «Влияние реализованных уровней исключений» . Изучите архитектуру — Модель исключений AArch64 . Рука.
  9. ^ «Кортекс-А32» . Разработчик рук .
  10. ^ «Кортекс-А34» . Разработчик рук .
  11. ^ «Кортекс-А72» . Разработчик рук .
  12. ^ «Процессор Cortex-A32 – ARM» . Проверено 18 декабря 2016 г.
  13. ^ Браш, Дэвид (2 декабря 2014 г.). «Архитектура ARMv8-A и ее постоянное развитие» . Проверено 23 января 2015 г.
  14. ^ «Игнорирование верхнего байта (TBI)» . ВикиЧип .
  15. ^ Браш, Дэвид (5 января 2016 г.). «Эволюция архитектуры ARMv8-A» . Проверено 7 июня 2016 г.
  16. ^ «Масштабируемое векторное расширение для архитектуры ARMv8» . Арм Сообщество . 22 августа 2016 года . Проверено 8 июля 2018 г.
  17. ^ Jump up to: а б «Серия выпусков GCC 8 – Изменения, новые функции и исправления – Проект GNU – Фонд свободного программного обеспечения (FSF)» . gcc.gnu.org . Проверено 9 июля 2018 г.
  18. ^ «Fujitsu завершает создание прототипа процессора суперкомпьютера Post-K и начинает функциональные испытания – Fujitsu Global» . www.fujitsu.com (пресс-релиз) . Проверено 8 июля 2018 г.
  19. ^ «Японский Fugaku завоевал титул самого быстрого суперкомпьютера в мире» (пресс-релиз). www.riken.jp. 23 июня 2020 г. Проверено 7 декабря 2020 г.
  20. ^ «ORNL's Frontier первым преодолел потолок эксафлопа» . Топ500 . 30 мая 2022 г. Проверено 30 мая 2022 г.
  21. ^ «⚙ D71712 Реализация нисходящего SVE/SVE2 (LLVM)» . Reviews.llvm.org .
  22. ^ Дэвид Браш (26 октября 2016 г.). «Архитектура ARMv8-A – дополнения 2016 г.» .
  23. ^ . «[Ping~,AArch64] Добавить поддержку командной строки для -march=armv8.3-a» . Расширение аутентификации указателя определено как обязательное расширение в ARMv8.3-A и не является необязательным.
  24. ^ «Qualcomm выпускает технический документ с подробным описанием аутентификации указателя на ARMv8.3» . 10 января 2017 г.
  25. ^ «Инструкции A64 с плавающей запятой: FJCVTZS» . Arm.com . Проверено 11 июля 2019 г.
  26. ^ «Серия выпусков GCC 7 – изменения, новые функции и исправления» . Теперь поддерживается архитектура ARMv8.3-A. Его можно использовать, указав опцию -march=armv8.3-a. [..] Опция -msign-return-address= поддерживается для включения защиты обратного адреса с помощью расширений аутентификации указателей ARMv8.3-A.
  27. ^ «Представляем расширения 2017 года для Arm Architecture» . сообщество.arm.com . 2 ноября 2017 года . Проверено 15 июня 2019 г.
  28. ^ «Изучение машинного обучения скалярного произведения» . сообщество.arm.com . 6 декабря 2017 года . Проверено 15 июня 2019 г.
  29. ^ «ARM готовит поддержку ARMv8.4-A для компилятора GCC — Phoronix» . www.phoronix.com . Проверено 14 января 2018 г.
  30. ^ Jump up to: а б с д «Расширения и возможности ARMv8.x и ARMv9.x» . Изучите архитектуру: понимание расширений ARMv8.x и ARMv9.x .
  31. ^ «Анонс Arm Architecture ARMv8.5-A — Блог о процессорах — Процессоры — Сообщество Arm» . сообщество.arm.com . Проверено 26 апреля 2019 г.
  32. ^ «Справочное руководство по архитектуре Arm ARMv8, для профиля архитектуры ARMv8-A» . ARM-разработчик . Проверено 6 августа 2019 г.
  33. ^ «Архитектура Arm MTE: повышение безопасности памяти» . сообщество.arm.com . 5 августа 2019 года . Проверено 27 июля 2021 г.
  34. ^ «Внедрение расширения тегов памяти Arm в Android» . Блог Google по онлайн-безопасности . Проверено 6 августа 2019 г.
  35. ^ «Решение Arm для будущих потребностей искусственного интеллекта, безопасности и специализированных вычислений — это v9» . Рука | Архитектура цифрового мира . Проверено 27 июля 2021 г.
  36. ^ Шор, Дэвид (30 марта 2021 г.). «ARM запускает ARMv9» . Викичип-предохранитель . Проверено 27 июля 2021 г.
  37. ^ Фрумусану, Андрей. «Arm анонсирует архитектуру ARMv9: SVE2, безопасность и следующее десятилетие» . www.anandtech.com . Проверено 27 июля 2021 г.
  38. ^ Jump up to: а б с «Arm выпускает SVE2 и TME для архитектуры A-профиля — Блог процессоров — Процессоры — Сообщество Arm» . сообщество.arm.com . 18 апреля 2019 года . Проверено 25 мая 2019 г.
  39. ^ Jump up to: а б «Выравнивание поддержки Arm SVE2 для GCC 10, LLVM Clang 9.0 – Phoronix» . www.phoronix.com . Проверено 26 мая 2019 г.
  40. ^ «Раскрытие возможностей данных с помощью Arm CCA» . сообщество.arm.com . 23 июня 2021 г. Проверено 27 июля 2021 г.
  41. ^ «Arm представляет свою конфиденциальную вычислительную архитектуру» . Викичип-предохранитель . 23 июня 2021 г. Проверено 27 июля 2021 г.
  42. ^ «Обновление архитектуры профиля Arm A 2019» . сообщество.arm.com . 25 сентября 2019 года . Проверено 26 сентября 2019 г.
  43. ^ «Примечания к выпуску LLVM 11.0.0» . Releases.llvm.org . Проверено 11 марта 2021 г.
  44. ^ «Расширения BFloat16 для ARMv8-A» . сообщество.arm.com . 29 августа 2019 года . Проверено 30 августа 2019 г.
  45. ^ Вайдманн, Мартин (21 сентября 2020 г.). «Развитие архитектуры Arm A-профиля 2020» . сообщество.arm.com . РУКА . Проверено 28 сентября 2022 г.
  46. ^ «Масштабируемое матричное расширение для архитектуры ARMv9-A» . сообщество.arm.com . 14 июля 2021 г. Проверено 27 июля 2021 г.
  47. ^ Вайдманн, Мартин (8 сентября 2021 г.). «Развитие архитектуры Arm A-профиля 2021» . сообщество.arm.com . РУКА . Проверено 28 сентября 2022 г.
  48. ^ «Что нового в LLVM 15? — Блог «Архитектура и процессоры» — Блоги сообщества Arm — Сообщество Arm» . 27 февраля 2023 г. Проверено 15 апреля 2023 г.
  49. ^ «Развитие архитектуры Arm A-Profile 2022 — Блог об архитектурах и процессорах — Блоги сообщества Arm — Сообщество Arm» . сообщество.arm.com . 29 сентября 2022 г. Проверено 9 декабря 2022 г.
  50. ^ Фрумусану, Андрей (3 сентября 2020 г.). «ARM анонсировала Cortex-R82: первый 64-битный процессор реального времени» . АнандТех .
  51. ^ «Дополнение к справочному руководству по архитектуре Arm — Armv8, для профиля архитектуры Armv8-R AArch64» . Арм, ООО
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 823d97f1093ba5efe6429dc5c76e224b__1720042680
URL1:https://arc.ask3.ru/arc/aa/82/4b/823d97f1093ba5efe6429dc5c76e224b.html
Заголовок, (Title) документа по адресу, URL1:
AArch64 - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)