Що таке AArch64? Що вам потрібно знати про цю архітектуру ЦП

Хоча ви, напевно, користувалися пристроєм із процесором 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, більшість людей використовують цей термін саме так, на краще чи на гірше.