Хоча ви, напевно, користувалися пристроєм із процесором AArch64, можливо, ви не знаєте, що це означає. Ось що вам потрібно знати.
ЦП багато архітектури там, де є найбільші x86 і ARM. Зважаючи на це, AArch64, ймовірно, потрапив під ваш радар. Навіть досить начитаний технічний ентузіаст може ніколи не чути про нього, незважаючи на те, що він присутній у мільйонах пристроїв. Справа в тому, що AArch64 не стільки таємничий, скільки дуже заплутаний технічний термін. Ось що вам потрібно знати про AArch64.
AArch64 — це, начебто, ARM64
Джерело: Арм
Коротше кажучи, AArch64 — це офіційна назва 64-розрядної архітектури набору інструкцій (ISA) Arm, яка була представлена разом з оновленням Armv8-A. Це майже завжди відноситься до AArch64. Незрозуміло, чому ARM64 часто використовується замість AArch64, але частина плутанини, схоже, походить з двох місць. Частково це тому, що 64-розрядне розширення x86 є x86-64, тому, природно, 64-розрядне розширення ARM має бути ARM64. Apple, безсумнівно, думала так і називала AArch64 ARM64 до 2014 року. Для більшості людей «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.
Чому і 32-біт, і 64-біт важливі для ARM
Отже, 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, більшість людей використовують цей термін саме так, на краще чи на гірше.