Ty SIMD instrukce nezávislé na šířce registru si nějak z pohledu programování v Assembleru nedokážu představit. Když vím, jak "širokou" instrukci používám, tak když chci udělat třeba 65536 16bitových operací s 256bitovým registrem, tak si udělám cyklus, který proběhne 4096x a v každém udělám tu jednu instrukci, která mi udělá 16 operací. Když programátor netuší, jak je široký ten vektorový registr, tak v programu bude muset mít zjištění šířky registru a podle toho upravovat parametry těch svých cyklů. To by ještě šlo, ale co když těch operací chci udělat opravdu jen 16 a ten registr bude širší? Jelikož jiná instrukce nebude, tak při potřebě 256bitové operace se chca nechca udělá třeba až 2048bitová?
No myslím, že Apple nič z toho nepotrebuje. Čo sa týka bezpečnosti, tak to má dávno vyriešené cez privátny kľúč uložený priamo v procesore a šifrovanie obsahu RAM a obsahu disku. Čo sa týka AI tak na to má Neural Engine. Tie vektorové inštrukcie nepotrebuje, keďže má hardwarový encoder a decoder pre HEVC. ARMv9 iba dobieha Apple. Ak niečo nové bude Apple potrebovať, tak to pridá do svojich procesorov.
To bych ještě pochopil. Jenže, když chci spočítat třeba 25 samplů, tak bude dost podstatný rozdíl, jestli ten ARM, na kterém to běží, bude umět maximálně 16 nebo 32. Pořád nedokážu pochopit, jak to ten programátor bude používat. Když to bude programovat na nějakém ARMu, co umí 16, tak to naprogramuje jako 2 instrukce, když na ARMu, co umí 32 a víc, tak jako jednu instrukci. No a když to pak spustí někdo na jiném ARMu, tak to v prvním případě bude neefektivní a v druhém to nebude fungovat.