Хотя вы, вероятно, использовали устройство с процессором AArch64 внутри, вы можете не знать, что это значит. Вот что вам нужно знать.
Есть много процессоров архитектуры там, причем самые большие из них x86 и РУКА. Сказав это, AArch64, вероятно, пролетел мимо вашего радара. Даже достаточно начитанный технический энтузиаст, возможно, никогда о нем не слышал, несмотря на то, что он присутствует в миллионах устройств. Ну, дело в том, что AArch64 не столько загадочный, сколько очень запутанный технический термин. Вот что вам нужно знать об AArch64.
AArch64 - это ARM64, вроде
Источник: Арм
Короче говоря, AArch64 — это официальное название 64-битной архитектуры набора инструкций (ISA) Arm, представленной в обновлении Armv8-A. Это почти всегда относится к AArch64. Точно неясно, почему ARM64 часто используется вместо AArch64, но часть путаницы, похоже, связана с двумя причинами. Частично это связано с тем, что 64-битное расширение x86 — это x86-64, поэтому, естественно, 64-битное расширение ARM должно быть ARM64. Apple, похоже, так думала и до 2014 года называла AArch64 ARM64. Для большинства людей «AArch64 — это ARM64» — очень удовлетворительное объяснение.
Если вы хотите получить действительно технические сведения, AArch64 — это не ISA, а скорее состояние выполнения это позволяет процессорам ARM использовать (и только использовать) набор инструкций A64 ARMv8 ISA, который впервые был представлен в архитектуре Armv8-A. Если это звучит сбивающе с толку, это потому, что так оно и есть. Даже если вы знакомы с архитектурой компьютера, это может быть трудно понять, поэтому я объясню это шаг за шагом.
Так что технически AArch64 — это состояние, а не ISA, но это никого не волнует, даже самого Arm.
ARM — это семейство связанных ISA, и хотя разные ISA обычно подразумевают несовместимость, это не совсем так. Различные версии ARM ISA называются ARMv1, ARMv2 и т. д., но эти ISA содержат то, что по сути является суб-ISA: A-профиль, M-профиль и R-профиль. Основное различие между этими суб-ISA заключается в минимальном количестве инструкций, которые каждая из них использует, при этом A-профиль использует больше всего, а M-профиль использует меньше всего. Таким образом, ARM ISA делится на отдельные версии, такие как ARMv8, а затем эти версии далее делятся на различные реализации ISA.
Armv8-A — это начальная реализация A-профиля ARMv8 ISA, которая добавила две новые вещи: AArch32 и AArch64. Они называются состояниями или режимами и позволяют ЦП ARM получать доступ к различным наборам инструкций. с AArch32, содержащим 32-битные инструкции A32 и T32, и AArch64, содержащим 64-битные инструкции A64. инструкции. Например, если процессор в настоящее время находится в состоянии AArch64 и хочет использовать инструкции A32, он должен изменить свое состояние на AArch32. Кроме того, в режиме AArch64 доступны как 32-битные, так и 64-битные регистры, а в режиме AArch32 можно использовать только 32-битные регистры. Самая запутанная часть всего этого заключается в том, что все эти вещи по-разному называются ISA, и даже Arm (компания, которая разрабатывает ARM ISA) виновата в этом.
Но если мы будем супертехничными, то на самом деле так оно и есть: восьмая версия ARM ISA, ARMv8, была впервые реализована с помощью Armv8-A, который содержит два состояния, называемые AArch32 и AArch64. Когда процессор находится в состоянии AArch64, он может выполнять 64-битные инструкции A64. Так что технически AArch64 — это состояние, а не ISA, но это никого не волнует, даже самого Arm.
Почему для ARM важны как 32-разрядные, так и 64-разрядные версии
Таким образом, AArch64 на самом деле довольно сложен, и необходимость переключения состояний только для использования 32-битных и 64-битных инструкций кажется громоздкой. Дело в том, что поддержка как 32-битных, так и 64-битных систем была слишком важна, чтобы отказываться от нее, поэтому так и должно быть. На самом деле все сводилось к двум основным проблемам: необходимости поддерживать старое 32-разрядное программное обеспечение и поиску современных высокопроизводительных вычислений.
Если бы Arm не включил встроенную поддержку 32-битного программного обеспечения в свою первую 64-битную ISA, это могло бы стать катастрофой, потому что, проще говоря, никто не хочет переписывать код. Если бы ARMv8 требовал, чтобы все писали новое программное обеспечение с нуля, это могло бы загнать ISA в смертельную спираль, когда никто не производит и не покупает Устройства ARMv8 из-за отсутствия программного обеспечения, а затем разработчики не делают приложения из-за отсутствия пользователей, и так до бесконечности, пока Arm не призовет это. уходит. Таким образом, 32-битная поддержка не подлежит обсуждению.
С другой стороны, отказ от реализации 64-битных вычислений также не был вариантом. Intel и AMD, компании, разработавшие x86, использовали 64-битные архитектуры с начала 2000-х для своих нужд. удивительные процессоры, хотя в то время не было потребности в 64-битных чипах ARM, поскольку телефоны в них не нуждались. Но изобретение смартфона все изменило, и всем хотелось, чтобы их телефоны могли делать больше. Поддержка 64-битных технологий не только помогла бы смартфонам стать более мощными, но и открыла бы новые возможности. компаниям производить чипы ARM для рынков, где традиционно доминирует x86, таких как ноутбуки и серверы.
По сути, вся эта путаница с именами возникла из-за того, что Arm необходимо было модернизировать свои технологии в ответ на изменение приоритетов. Возможно, Arm не нужно было реализовывать 64-битную поддержку таким образом, но это было необходимо, и так появился AArch64. Хотя AArch64 не является ISA, именно так большинство людей используют этот термин, к лучшему или к худшему.