stringtranslate.com

AArch64

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

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

Состояние выполнения AArch64

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

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

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

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

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

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

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

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

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

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

ARMv8.1-A

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

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

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

ARMv8.2-A

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

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

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

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

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

ARMv8.3-A

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

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

ARMv8.4-A

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

ARMv8.5-A и ARMv9.0-A

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

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]

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

ARMv8.7-A и ARMv9.2-A

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

ARMv8.8-A и ARMv9.3-A

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

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

ARMv8.9-A и ARMv9.4-A

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

ARMv9.5-A

В октябре 2023 года был анонсирован ARMv9.5-A, включающий: [50]

ARMv9.6-A

В октябре 2024 года был анонсирован ARMv9.6-A, включающий: [51]

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

Архитектура ARM-R , в частности профиль Armv8-R, разработана для удовлетворения потребностей приложений реального времени, где предсказуемое и детерминированное поведение имеет важное значение. Этот профиль фокусируется на обеспечении высокой производительности, надежности и эффективности во встраиваемых системах, где ограничения реального времени имеют решающее значение.

С введением дополнительной поддержки AArch64 в профиле Armv8-R возможности реального времени были еще больше улучшены. Cortex-R82 [52] является первым процессором, реализующим эту расширенную поддержку, привнося несколько новых функций и улучшений в область реального времени. [53]

Основные характеристики Armv8-R с поддержкой AArch64

  1. Набор инструкций AArch64 (A64) :
    • Инструкция A64 [25], установленная в Cortex-R82, обеспечивает 64-битную обработку данных и операции, что повышает производительность для определенных вычислительных задач и повышает общую эффективность системы. [52]
    • Пример инструкции : ADD X0, X1, X2складывает значения в 64-битных регистрах X1 и X2 и сохраняет результат в X0. Эта 64-битная операция позволяет выполнять более крупные и сложные вычисления по сравнению с 32-битными операциями предыдущего набора инструкций A32.
  2. Улучшенное управление памятью :
    • Инструкции барьера памяти : Cortex-R82 представляет улучшенные инструкции барьера памяти для обеспечения правильного порядка операций с памятью, что имеет решающее значение в системах реального времени, где синхронизация операций с памятью должна строго контролироваться. [54]
      • Барьер синхронизации данных (DSB) : гарантирует, что все доступы к данным до барьера будут завершены до продолжения последующих операций.
      • Барьер памяти данных (DMB) : гарантирует, что все обращения к памяти до барьера будут завершены, прежде чем любые обращения к памяти после барьера смогут быть продолжены.
    • Пример : в системе управления автомобилем в режиме реального времени DSB может использоваться для обеспечения полной записи данных датчиков в память до того, как система приступит к обработке или принятию решений, предотвращая повреждение данных или несоответствия.
  3. Улучшенное адресное пространство :
    • 64-битная адресация : AArch64 позволяет Cortex-R82 адресовать гораздо большее пространство памяти по сравнению с его 32-битными предшественниками, что делает его пригодным для приложений, требующих большого объема памяти.
    • Пример : сложная система промышленной автоматизации может использовать расширенное адресное пространство для более эффективного управления большими наборами данных и буферами, повышая производительность и возможности системы.
  4. Улучшения производительности в реальном времени :
    • Обработка прерываний : благодаря поддержке AArch64 Cortex-R82 может обрабатывать прерывания с меньшей задержкой и улучшенной предсказуемостью, что имеет решающее значение для операций в реальном времени.
    • Пример : в робототехнических приложениях улучшенная обработка прерываний Cortex-R82 может обеспечить своевременную реакцию на внешние раздражители, такие как изменения данных датчиков или команд управления.

Ссылки

  1. ^ "Обзор". Изучите архитектуру: Понимание расширений Armv8.x и Armv9.x .
  2. ^ "Процессор Cortex-A32 – ARM" . Получено 18 декабря 2016 г.
  3. ^ "ARM раскрывает технические подробности следующей версии архитектуры ARM" (пресс-релиз). Arm Holdings . 27 октября 2011 г. Архивировано из оригинала 1 января 2019 г. Получено 20 сентября 2013 г.
  4. ^ Grisenthwaite, Richard (2011). "ARMv8-A Technology Preview" (PDF) . Архивировано из оригинала (PDF) 11 ноября 2011 г. . Получено 31 октября 2011 г. .
  5. ^ "ARM запускает серию Cortex-A50, самые энергоэффективные 64-битные процессоры в мире" (пресс-релиз). Arm Holdings . Получено 31 октября 2012 г. .
  6. ^ "AppliedMicro Showcases World's First 64-bit ARM v8 Core" (пресс-релиз). AppliedMicro. 28 октября 2011 г. Получено 11 февраля 2014 г.
  7. ^ "Samsung's Exynos 5433 is an A57/A53 ARM SoC". AnandTech . Получено 17 сентября 2014 г. .
  8. ^ "Техническое справочное руководство по процессору ARM Cortex-A53 MPCore: Расширение криптографии". ARM . Получено 11 сентября 2016 г. .
  9. ^ ab "Влияние реализованных уровней исключений". Изучите архитектуру - Модель исключений AArch64 . Arm.
  10. ^ "Cortex-A32". Разработчик Arm .
  11. ^ "Cortex-A34". Разработчик Arm .
  12. ^ "Cortex-A72". Разработчик Arm .
  13. ^ Браш, Дэвид (2 декабря 2014 г.). «Архитектура ARMv8-A и ее текущее развитие» . Получено 23 января 2015 г.
  14. ^ "Игнорирование верхнего байта (TBI)". WikiChip .
  15. ^ Браш, Дэвид (5 января 2016 г.). "Эволюция архитектуры ARMv8-A" . Получено 7 июня 2016 г.
  16. ^ "Масштабируемое векторное расширение sve для архитектуры ARMv8 a". Arm Community . 22 августа 2016 г. Получено 8 июля 2018 г.
  17. ^ ab "GCC 8 Release Series – Changes, New Features, and Fixes – GNU Project – Free Software Foundation (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 First to Break the Exaflop Ceiling". Top500 . 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. ^ ab "A64 Floating-point Instructions: FJCVTZS". arm.com . Получено 11 июля 2019 .
  26. ^ "GCC 7 Release Series – Changes, New Features, and Fixes". Архитектура ARMv8.3-A теперь поддерживается. Ее можно использовать, указав опцию -march=armv8.3-a. [..] Опция -msign-return-address= поддерживается для включения защиты обратного адреса с использованием расширений аутентификации указателя ARMv8.3-A.
  27. ^ «Представляем расширения архитектуры Arm 2017 года». community.arm.com . 2 ноября 2017 г. Получено 15 июня 2019 г.
  28. ^ «Изучение машинного обучения методом скалярного произведения». community.arm.com . 6 декабря 2017 г. . Получено 15 июня 2019 г. .
  29. ^ "ARM готовит поддержку ARMv8.4-A для компилятора GCC – Phoronix". www.phoronix.com . Получено 14 января 2018 г. .
  30. ^ abcd "Расширения и функции ARMv8.x и ARMv9.x". Изучите архитектуру: Понимание расширений ARMv8.x и ARMv9.x .
  31. ^ "Arm Architecture ARMv8.5-A Announcement – ​​Processors blog – Processors – Arm Community". community.arm.com . Получено 26 апреля 2019 г. .
  32. ^ "Arm Architecture Reference Manual ARMv8, for ARMv8-A architecture profile". Разработчик ARM . Получено 6 августа 2019 г.
  33. ^ «Arm MTE architecture: Enhancing memory safety» (Архитектура Arm MTE: повышение безопасности памяти). community.arm.com . 5 августа 2019 г. Получено 27 июля 2021 г.
  34. ^ «Внедрение расширения Arm Memory Tagging в Android». Блог Google Online Security . Получено 6 августа 2019 г.
  35. ^ "Решение Arm для будущих потребностей ИИ, безопасности и специализированных вычислений — v9". Arm | Архитектура для цифрового мира . Получено 27 июля 2021 г.
  36. ^ Шор, Дэвид (30 марта 2021 г.). «Arm запускает ARMv9». WikiChip Fuse . Получено 27 июля 2021 г. .
  37. ^ Фрумусану, Андрей. «Arm анонсирует архитектуру ARMv9: SVE2, безопасность и следующее десятилетие». www.anandtech.com . Получено 27 июля 2021 г. .
  38. ^ abc "Arm выпускает SVE2 и TME для архитектуры A-profile – Блог о процессорах – Процессоры – Сообщество Arm". community.arm.com . 18 апреля 2019 г. . Получено 25 мая 2019 г. .
  39. ^ ab "Arm SVE2 Support Aligning For GCC 10, LLVM Clang 9.0 – Phoronix". www.phoronix.com . Получено 26 мая 2019 г. .
  40. ^ «Раскрытие потенциала данных с помощью Arm CCA». community.arm.com . 23 июня 2021 г. . Получено 27 июля 2021 г. .
  41. ^ "Arm представляет свою конфиденциальную вычислительную архитектуру". WikiChip Fuse . 23 июня 2021 г. Получено 27 июля 2021 г.
  42. ^ "Обновление архитектуры профиля Arm A 2019". community.arm.com . 25 сентября 2019 . Получено 26 сентября 2019 .
  43. ^ "LLVM 11.0.0 Release Notes". releases.llvm.org . Получено 11 марта 2021 г. .
  44. ^ "Расширения BFloat16 для ARMv8-A". community.arm.com . 29 августа 2019 . Получено 30 августа 2019 .
  45. ^ Вайдманн, Мартин (21 сентября 2020 г.). «Разработки архитектуры Arm A-Profile 2020». community.arm.com . ARM . Получено 28 сентября 2022 г. .
  46. ^ «Масштабируемое матричное расширение для архитектуры ARMv9-A». community.arm.com . 14 июля 2021 г. . Получено 27 июля 2021 г. .
  47. ^ Вайдманн, Мартин (8 сентября 2021 г.). «Разработки архитектуры Arm A-Profile 2021». community.arm.com . ARM . Получено 28 сентября 2022 г. .
  48. ^ "Что нового в LLVM 15? - Блог об архитектурах и процессорах - Блоги сообщества Arm - Сообщество Arm". 27 февраля 2023 г. Получено 15 апреля 2023 г.
  49. ^ "Разработки архитектуры Arm A-Profile 2022 - Блог об архитектурах и процессорах - Блоги сообщества Arm - Сообщество Arm". community.arm.com . 29 сентября 2022 г. . Получено 9 декабря 2022 г. .
  50. ^ "Разработки архитектуры Arm A-Profile 2023 - Блог об архитектурах и процессорах - Блоги сообщества Arm - Сообщество Arm". community.arm.com . 5 октября 2023 г. . Получено 14 октября 2024 г. .
  51. ^ "Разработки архитектуры Arm A-Profile 2024 - Блог об архитектурах и процессорах - Блоги сообщества Arm - Сообщество Arm". community.arm.com . 1 октября 2024 г. Получено 14 октября 2024 г.
  52. ^ ab Фрумусану, Андрей (3 сентября 2020 г.). "ARM анонсировала Cortex-R82: первый 64-битный процессор реального времени". AnandTech .
  53. ^ "Дополнение к справочному руководству по архитектуре Arm - Armv8, для профиля архитектуры Armv8-R AArch64". Arm Ltd.
  54. ^ «Техническое справочное руководство Cortex-R82».

Внешние ссылки