Что такое linux aarch64

Ports/aarch64

Содержание

Портирование Sisyphus на платформу AArch64 (ARM64) [ править ]

Состояние [ править ]

На июнь 2018 года — официально поддерживаемая первичная архитектура; репозиторий доступен на FTP и зеркалах и может быть подключен к apt при помощи такой строчки в /etc/apt/sources.list :

Тестирование [ править ]

Далее предполагается использование в качестве хост-системы ALT Linux Sisyphus (нужен свежий qemu с qemu-system-aarch64 , можно задействовать LiveCD); для других вариантов могут понадобиться изменения процедуры.

Подготовка [ править ]

Установите qemu-system >= 2.0.0-alt1:

Скачайте архив и распакуйте в удобное место (требуется не менее четырёх гигабайт свободного пространства):

Далее предполагается путь к полученному каталогу

/virt64 , который следует зафиксировать и в стартовом скрипте:

сеть [ править ]

Поднимите bridge-интерфейс для сетевой работы на свободном ethernet (в архивной конфигурации предполагается eth1, при необходимости поправьте в файле options ):

Запуск [ править ]

Можно запускать эмулятор:

После успешного завершения загрузки наблюдаем следующее приглашение:

Входим как root без пароля, при желании добавляем публичную часть нужного ssh-ключа в /root/.ssh/authorized_keys , осматриваемся. Если поднялась сеть, должен работать apt .

Далее [ править ]

Далее можно, например, запустить установленную SambaDC или же поставить Xfce:

с тем, чтобы завести непривилегированного пользователя и от его имени запустить графическое приложение:

и с внешней системы (из-под X-сессии):

Если идти с того же хоста, где запущен qemu с aarch64-средой, может понадобиться сперва добавить маршрут через интерфейс, отличающийся от указанного в качестве базового для macvtap (HOST в /etc/net/ifaces/qbox0/options ) и через который доступна та же сеть (например, wlan0 на своём ноутбуке):

Источник

AArch64 — AArch64

AArch64 или ARM64 — это 64-битное расширение архитектуры ARM .

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

СОДЕРЖАНИЕ

ARMv8-A

Анонсированный в октябре 2011 года, ARMv8-A представляет собой фундаментальное изменение архитектуры ARM. Он добавляет дополнительную 64-битную архитектуру под названием «AArch64» и связанный с ней новый набор инструкций «A64». AArch64 обеспечивает совместимость в пространстве пользователя с существующей 32-битной архитектурой («AArch32» / ARMv7-A) и набором инструкций («A32»). 16-32-битный набор инструкций 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.

Читайте также:  Deepin linux обзор 2021

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

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

  • 64 + 32 бит
    • Архитектура: AArch64
    • Спецификация: ARMv8-A
    • Наборы инструкций: A64 + A32
    • Суффиксы: v8-A
  • 32 + 16 (большой палец) бит
    • Архитектура: AArch32
    • Спецификация: ARMv8-R / ARMv7-A
    • Наборы инструкций: A32 + T32
    • Суффиксы: -A32 / -R / v7-A
    • Пример: ARMv8-R, Cortex-A32.

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

  • Новый набор команд, A64
    • Имеет 31 64-битный регистр общего назначения.
    • Имеет специальный регистр нуля или указателя стека (SP) (в зависимости от инструкции).
    • Счетчик программ (ПК) больше не доступен напрямую как регистр.
    • Инструкции по-прежнему имеют длину 32 бита и в основном такие же, как A32 (с удаленными инструкциями LDM / STM и большей частью условного выполнения).
      • Имеет парные нагрузки / магазины (вместо LDM / STM).
      • Нет предиката для большинства инструкций (кроме веток).
    • Большинство инструкций могут принимать 32-битные или 64-битные аргументы.
    • Адреса считаются 64-битными.
  • Advanced SIMD (Neon) улучшенный
    • Имеет 32 × 128-битных регистров (вместо 16), также доступен через VFPv4.
    • Поддерживает формат с плавающей запятой двойной точности .
    • Полностью соответствует стандарту IEEE 754 .
    • Эти регистры также используются в инструкциях шифрования / дешифрования AES и SHA-1 / SHA-2.
  • Новая система исключений
    • Меньше записанных в банк регистров и режимов.
  • Преобразование памяти с 48-битных виртуальных адресов на основе существующего расширения большого физического адреса (LPAE), которое было разработано с возможностью простого расширения до 64-битного.

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

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

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

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

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

Тип Немного
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
Зарезервированный op0 0000 op1 Непосредственная константа 16 бит
Нераспределенный 0001
Инструкции по SVE 0010
Нераспределенный 0011
Обработка данных — Немедленное PC-rel. op Immlo 10000 имми Rd
Обработка данных — непосредственное прочее нф 100 01-11 Rd
Филиалы + Системные инструкции op0 101 op1 op2
Инструкции по загрузке и сохранению op0 1 op1 0 op2 op3 op4
Обработка данных — Регистрация нф op0 op1 101 op2 op3
Обработка данных — с плавающей точкой и SIMD op0 111 op1 op2 op3

ARMv8.1-A

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

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

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

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

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

ARMv8.2-А

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

  • Необязательная обработка данных с плавающей запятой половинной точности (половинная точность уже поддерживалась, но не для обработки, а как формат хранения).
  • Улучшения модели памяти
  • Внедрение расширения надежности, доступности и удобства обслуживания (расширение RAS)
  • Введение статистического профилирования

Масштабируемое векторное расширение (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-А

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

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

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

ARMv8.4-А

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

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

ARMv8.5-А

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

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

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

ARMv8.6-A

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

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

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

ARMv9-A

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

  • Масштабируемое векторное расширение 2 (SVE2). SVE2 основан на масштабируемой векторизации SVE для повышенного параллелизма на уровне данных (DLP) , что позволяет выполнять больше работы за одну инструкцию. SVE2 стремится предоставить эти преимущества более широкому спектру программного обеспечения, включая DSP и мультимедийный код SIMD, которые в настоящее время используют Neon . В LLVM / Clang 9.0 и GCC коды 10,0 развития были обновлены для поддержки SVE2.
  • Расширение транзакционной памяти (TME). Вслед за расширениями x86 TME обеспечивает поддержку аппаратной транзакционной памяти (HTM) и исключения транзакционных блокировок (TLE). TME нацелена на обеспечение масштабируемого параллелизма для увеличения общего параллелизма на уровне потоков (TLP) , чтобы можно было выполнять больше работы в каждом потоке. В LLVM / Clang 9.0 и GCC коды 10,0 развития были обновлены для поддержки TME.
  • Конфиденциальная вычислительная архитектура (CCA)
  • Расширение масштабируемой матрицы (SME). SMX добавляет новые функции для эффективной обработки матриц, такие как:
    • Матричное хранилище плитки
    • Транспонирование матрицы на лету
    • Загрузка / сохранение / вставка / извлечение векторов тайлов
    • Матричное внешнее произведение векторов SVE
    • «Потоковый режим» SVE

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

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

Источник

Оцените статью