No jo, jenže platit za licenci se té velké klientele právě už moc nechce, protože jsou to velké peníze. Vůbec bych se nedivil, kdyby za 10 let Apple přecházel na RISC-V. A pro korporaci typu Facebook a Google není takový problém architekturu ve svých serverech vyměnit. Není to tak dávno, kdy vše běželo na x86...
Já myslel, že Apple má "doživotní" licenci na ARMv8-A a nic neplatí.
Ale jo, velké firmy si dnes můžou nechat vyrobit vlastní CPU, klidně i vlastní architektury. RISC-V navíc není špatná architektura, lepší než AArch64, a hlavně se dá rozšiřovat. Já třeba vůbec nechápu, proč má AArch64 instrukce pro 64-bit SIMD, které jsou z dnešního pohledu úplně k ničemu a byly k ničemu i když 64-bit ARM vznikal - místo 64-bit si měli spíš rezervovat opcodes pro 256-bit SIMD a vykašlat se na celé SVE, které je přiliš komplikované na běžné použití.
Se stačí podívat, jak je navržené celé SVE/SVE2 (AArch64). RISC-V je oproti AArch64 rozšiřitelná ISA, která podporuje snadno dekódovatelnou variabilní délku instrukcí (takže nehrozí pohroma jako u x86). V budoucnu může RISC-V poskytnout téměř cokoliv, aniž by někdo byl omezený 32bitovou fixní délkou instrukce, což se podepsalo už i v návrhu SVE/SVE2.
Tím nechci říct, že by AArch64 byla nepoužitelná ISA - určitě tu bude ještě desítky let a SW je na tuto architekturu už celkem dobře optimalizovaný. Na druhou stranu RISC-V má mnohem větší potenciál.
Nejsem odbornik, ale ARMv7/ARMv8 mi prijde jako opravdu promyslene navrzeny. Nekdo si sednul a delal analyzu toho, jak vypada kod, co potrebuje, jake instrukce to muzou zrychlit+zkratit. Kdyz to srovnate s tim, co nabizi R-V, tak ARM mi vzdy vysel tak nejak lepe.
Pokud jde o toolchain, tak jsem delal analyzu delky kodu a R-V gcc je tragedie. Za to ISA nemuze uplne, ale je to aktualni stav a jeden z argumentu - "mame open toolchain".
Nemyslim tedy, ze nas R-V nejak zachrani. Navic to neresi patentovou dzungli, neresi to vlastni implementaci, za kterou si stejne kazdy necha nejak zaplatit. Uplne stejne totiz podle meho nazoru muzete bez lic. poplatku pouzivat treba ARMv7 ISA kdyz si na ni postavite vlastni CPU od nuly a neporusite tim zadny z patentu na nejaky implementacni detail v tom CPU.
ARMv7 určitě ne - vždyť to je zastaralá 32-bit architektura. Moderní návrh dostal až AArch64, což je úplně jiná architektura (ARMv8-A). Původní ARMv8-A je ale z dnešního pohledu taky celkem zastaralá, protože až další rozšiření řeší např. atomické operace (toto rozšíření je např. v Apple M1) - v základní AArch64 ISA se totiž musí testovat v cyklu!
Já psal asm pro 32-bit ARM i 64-bit ARM.
Jak jsem psal - ARMv7 je 32-bit ISA a má všechny nevýhody 32-bit ARMu, je to skoro stejné peklo jako ARMv6, atd... Víc instrukcí, ale stejný základ. Z dnešního pohledu všechno to, co bylo prezentované jako "převratné" se ukázalo jako slepá ulička:
- instruction pointer namapovaný jako GP registr - špatně
- condition codes pro každou instrukci - špatně
- intrukce pro načtení/uložení vectoru registrů z/do paměti - špatně (toto je sranda při context switchi)
- 2 různé kódovaní (ARM vs Thumb) - špatně
- IT bloky v Thumb mode - špatně
- 32-bit SIMD v GP registrech - špatně
Toto jsou všechno věci, které AArch64 odstraňuje, protože to byla slepá ulička. Na druhou stranu AArch64 zřejmě kvůli kompatibilitě zachovává 64-bit SIMD operace, což je z dnešního pohledu zbytečné (stejně jako používat MMX na x86_64). No a aby se to udělalo nějak rozšiřovatelné, tak je tu SVE, což je SIMD bez znalosti délky SIMD registrů - a programuje se pod tím celkem blbě, protože ta znalost velikosti registru je někdy fakt důležitá...
Mel bych sva tvrzeni opravit, anonacct ma skutecne pravdu s temi SIMD apod., ja se zameroval hlavne na "base" cast ISA, ktera u ARMv7 je jen rozsirenim ARMv6. Vidim jen tu "svoji" bublinu.
Dobre jste to vystihl tou "akademicnosti", to je podle meho ten zasadni rozdil, ARMv8 jde proti cistote navrhu prave tou rekl bych zamerenim na real-use, kod je pak hustsi a rychlejsi.
Jestli si to nepletu s necim jinym, tak in-house ARM CC prave umoznil takove experimenty nad kodem delat.
8. 12. 2021, 16:43 editováno autorem komentáře