Nová verze Windows 11 s označením 24H2, která byla nedávno vydána, přinesla velké změny na platformě procesorů ARM – mimo AI funkcí pro tzv. Copilot+ PC to bylo také zlepšení emulace Prism, která umožňuje na procesorech ARM přímo spouštět klasické windowsí programy pro procesory x86 od AMD a Intelu. Prism ale dostane další velkou aktualizaci, která by měla být důležitá pro ty, kdo chtějí na ARMu hrát náročné nové hry.
Microsoft tento měsíc oznámil další zlepšení, které se teď dá testovat v novém insider sestavení 27744 před tím, než se dostane do běžné distribuce. Je možné, že toto zlepšení mělo původně být už součástí aktualizace 24H2, ale nakonec nestihlo deadline.
AVX2 kód na ARMu
Tato nová verze emulace Prism přidává podporu dalších instrukcí virtuálnímu procesoru, který pro x86 aplikace poskytuje. Doteď byly podporovány instrukce jen po SSE4. Ty byly poprvé v procesorech Nehalem a částečně v předchozím Core 2 Penryn z let 2007 a 2008, ale obvykle by k běhu programů měly stačit, protože na platformě Windows panuje kultura kompatibility, kdy je software obvykle kompilován tak, aby fungoval na širokém spektru i starých počítačů. Obvykle je to tak, že optimalizace používající nové instrukce jsou zkompilovány s detekcí funkcí CPU, takže na novém procesoru se aktivují, ale pokud používáte starší CPU, použije se alternativní kód se staršími instrukcemi a aplikace normálně běží, byť s horším výkonem.
V některých případech je ale program zkompilovaný tak, že podporu nových instrukcí vyžaduje natvrdo a v takových případech emulování takové x86 aplikace v ARM Windows selhávalo. Nová verze Prismu už poskytuje procesor, který umí instrukce AVX i AVX2 a také některé další dosud neimplementované – FMA, F16|C, BMI, RDRAND, XSAVE, XSTOR, XSETBV/XGETBV.
Díky tomuto budou fungovat některé aplikace, které jsou na například AVX a/nebo AVX2 závislé, což budou asi zejména různé workstation aplikace typu CAD/CAM, ale vedle nich také hry. AVX2 vyžadují například některé tituly série Yakuza, Assissin's Creed Odyssey nebo Death Stranding. Nejmodernější 512bitové instrukce AVX-512 v emulaci podporované stále nejsou, ale to by nemělo blokovat spuštění prakticky žádného softwaru. Programy používající tyto instrukce mají pravděpodobně vždy záložní kód pro procesor bez nich.
Podporované instrukce lze zobrazit třeba pomocí utility Coreinfo64. Toto reportuje virtuální procesor v nové verzi Prism podporující AVX2
Určité omezení je, že podpora těchto instrukčních rozšíření je implementována jenom pro programy, které běží v 64bitovém režimu, 32bitové x86 aplikace je nebudou vidět. Toto by v praxi nemělo vadit, protože program, který natvrdo vyžaduje AVX či AVX2, bude zpravidla 64bitový. Problém teoreticky může vzniknout, pokud třeba výbavu procesoru nedetekuje přímo samotný 64bitový program, ale separátní binárka nebo instalátor, které jsou 32bitové.
Příkladem softwaru, který díky této vylepšené emulaci bude běžet a dříve neběžel, je Adobe Premiere Pro 25, který zatím nemá verzi pro ARM Windows. Ovšem Microsoft právě pro tento program nasadil podporu AVX2 v jakési zkušební preview verzi již ve Windows 11 24H2, díky tomu program funguje již v tomto updatu. Pro ostatní software ale nová verze zpřístupněná doteď nebyla a do praxe ji uvolní až ono sestavení 27744. Proto jsme zmiňovali, že možná Microsoft zamýšlel dřívější vydání, ze kterého nakonec zbylo jen specifické nasazení pro Premiere 25 Pro.
Na ARMu asi AVX2 výkon zvyšovat nebude
Tato implementace nových instrukčních rozšíření má za cíl hlavně kompatibilitu, tedy schopnost spustit daný software. Neočekávejte od ní zlepšený výkon, protože pokud na x86 procesorech tyto instrukce zrychlují práci, je to díky tomu, že daná CPU mají širší 256bitové jednotky SIMD. Oproti 128bitovým instrukcím SSE až SSE4 na nich jedna instrukce udělá dvojnásobek výpočetní práce. Ovšem současné procesory ARM nemají 256bitové jednotky, a v softwaru používajícím AVX nebo AVX2 budou tedy všechny výpočty stále překládané na dvě dílčí 128bitové operace, bez zvýšení výkonu.
AVX2 kvůli hrám implementuje i Apple
Schopnost emulovat novější instrukční rozšíření procesorů až po AVX2 ze začátku nemělo ani řešení (Rosetta 2), které používá pro kompatibilitu na ARM procesorech Apple ve svém operačním systému. Apple ji ale přidal letos, přičemž cílem je zřejmě zlepšit kompatibilitu s novými hrami (nebo usnadnit jejich portování), které už někdy mohou AVX2 vyžadovat.
V případě Windows má zřejmě toto vylepšení emulace stejný cíl, tedy pokrýt některé hry, které AVX2 vyžadují natvrdo a bez těchto instrukcí se nespustí. Instrukce AVX2 poskytují prakticky všechny procesory staré méně než deset let s výjimkou Celeronů a Pentií s malými jádry, takže v případě her se je už někdy vývojáři rozhodují vyžadovat, jelikož hry jsou obecně náročné a na lowendové mobilní čipy na ně stejně nemají dost výkonu.
S touto změnou by se tedy měl zmenšit počet her pro Windows nefungujících na procesorech ARM. Je ale třeba říct, že toto je jen jedna z možných příčin nekompatibility, častější asi budou problémy spojené s ovladači GPU a zejména pak to, že některé hry používají ochranu DRM, která má ovladač kompatibilní pouze s procesory x86. Emulovat ovladače překladové vrstvy Microsoftu ani Applu neumí, a takovou hru pak nelze spustit, byť by ji jinak procesor a GPU zvládaly, kdyby ochrana proti kopírování nebyla aktivní. S tímto problémem tato vylepšená verze překladače nepomůže.
Zdroj: Microsoft