Obecne nemusi, i kdyz soucasna jadra (snad vsechna) jsou zpetne kompatibilni s ARMv-7A
Mne se to nejak nezda. Ve specifikaci ARMv8 je:
ARM defines three architecture profiles:
A Application profile, described in this manual: ... Supports the A64, A32 and T32 instruction sets.
Takze asi to bude povinne.
Je to nekde v praxi zapotrebi?
Pro ruzne SBC jako Raspi nejsou prakticky pouzitelne 64bitove distribuce. Takze fallback do 32bitoveho rezimu je nutny, i kdyz je tam 64bitovy procesor.
To jsou ale dve veci - ARMv8 je architektura se sadami ARM32 (A32), Thumb (T32) a (A64). ARM32+Thumb se ted oznacuje AArch32, A64 ma instrukcni sadu AArch64. Tady to ma ARM rozdelene do chlivecku:
https://www.arm.com/assets/images/V5_to_V8_Architecture.jpg
Ale nikde uz IMHO neni psano, ze budouci procesory (treba ARMv8.3-A nebo neco uplne jineho) budou mit vzdy jak AArch32 tak i AArch64, to nema smysl. Stejne jako u Cortexu-M odrezali A32.
Dokonce je to uz ted tak volne, ze ani neni specifikovano, jestli po resetu je CPU ve stavu A32 nebo A64.
Jeste jednou a pomaleji. Tazatel se ptal: ,,Musi CPU s architekturou AArch64 umet provadet i instrukce 32-bit ARM''.
Podle soucasne specifikace profilu A, kde se A64 pouziva, je odpoved: Ano.
Mimochodem hned v uvodu specifikace mas:
An important feature of the ARMv8 architecture is backwards compatibility, combined with the freedom for optimal implementation in a wide range of standard and more specialized use cases. The ARMv8 architecture supports:
A 64-bit Execution state, AArch64.
A 32-bit Execution state, AArch32, that is compatible with previous versions of the ARM architecture.
Ale nikde uz IMHO neni psano, ze budouci procesory (treba ARMv8.3-A nebo neco uplne jineho) budou mit vzdy jak AArch32 tak i AArch64
To je naprosto zbytecna relativizace s nulovou informacni hodnotou. Stejne tak nikde neni napsane, ze zemi neovladnou mravenci.
Ano, tazatel se skutecne ptal: ,,Musi CPU s architekturou AArch64 umet provadet i instrukce 32-bit ARM''.
Z toho (DNES) muzeme vyvodit, ze asi myslel spis ARMv8-A. Obecne to ale to nemusi a jsem si jisty ze ani nebude pravda pro vsechny CPU s AArch64, protoze nikde neni napsana ekvivalence ARMv8-A == AArch64, je to jen implikace.
Vidim, ze jsem podcenil zaludnost dotazu a je treba jej upresnit. Proc jsem se ptal. Narazil jsem na problem, ze se mi nedari spustit 32-bit kod na 64-bit ARM. Jedna se o ARM64-2 server v cloudu "Scaleway". Jen jsem zkusil rozchodit klienta pro Boinc (Asteroids@home), a nepodarilo se mi to, ten 32 bitovy kod rychle skoncil chybou. Duvodu muze byt cela rada, napadlo me mimo jine i to, ze na tech CPU jiz nejsou podporovany 32-bit instrukce. Doma mi podobna konfigurace bezi na ODROID-C2 dobre (64-bit Ubuntu, 32-bit aplikace pro Asteroids@home).
https://blog.online.net/2017/04/27/scaleway-disruptive-armv8-cloud-servers/
http://www.cavium.com/ThunderX_ARM_Processors.html
https://m4gu5.tumblr.com/post/146102127922/odroid-c2-dedicated-linux-boinc-cruncher-how-to
Jen pro zajimavost, u tech ARM procesoru se toho moc nepozna, je to chaoticke, kazdy vyrobce to dela trosicku jinak.. :-(
# cat /proc/cpuinfo
processor : 0
BogoMIPS : 200.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics
CPU implementer : 0x43
CPU architecture: 8
CPU variant : 0x1
CPU part : 0x0a1
CPU revision : 1
Jeste jsem doufal, ze bude treba jen problem v konfiguraci kernelu, ze nebude povolano spousteni 32-bit kodu.
Po mnoha dnech cekani jsem dostal vyjadreni od supportu, ze ty procesory neumoznuji spoustet 32-bit kod a nejde to zmenit. Rozumim tomu tak, ze procesorum ARM ThunderX firmy Cavium skutecne chybi podpora pro 32-bit instrukce, ze je podporovana jen instrukcni sada AArch64. Jsou to vykonne serverove procesory, zrejme bylo vyhodnejsi obetovat 32-bit instrukce pro zvyseni poctu jader na jednom cipu...
Pravděpodobně budou existovat výrobci, kteří ve snaze zjednodušit a hlavně zefektivnit procesor odříznou podporu 32b úplně. Například Apple už v letošní (budoucí) verzi iOS nebude podporovat 32b procesory a iOS bude kompetně 64b (nebude obsahovat ani 32b knihovny pro běh 32b aplikací).