Kako prevod x86 deluje v sistemu Windows on Arm?

Veliko aplikacij za Windows je bilo napisanih za x86, vendar lahko delujejo na procesorjih Arm. Evo, kako je to mogoče.

Windows je bil vedno ustvarjen za procesorji x86 proizvajalcev Intel in AMD, a odkar je pred desetletjem izšel Windows RT za pametne telefone, je operacijski sistem počasi postajal bolj prijazen Arm CPE. Danes tako Windows 10 kot Windows 11 ponujata popolno podporo za procesorje Arm, vendar obstaja ulov. Medtem ko sam operacijski sistem na teh procesorjih deluje dobro, večina aplikacij ni zagnala različice, združljive z Armom. Čeprav lahko Windows deluje na čipih Arm, bi bilo imeti malo programov za dejansko uporabo težava.

Vendar ima Microsoft trik v rokavu: emulator za izvajanje aplikacij x86 na strojih, ki temeljijo na Armu. To je ključna stvar, ki je sistemu Windows on Arm dala zagon, odkar je leta 2017 izšel prevajalnik. Evo, kako deluje emulator in zakaj ga morajo osebni računalniki Arm uporabljati, če želijo zagnati programsko opremo, narejeno za čipe x86.

Posnemanje kode x86 za procesorje Arm v realnem času

Zamisel o posnemanju kode, izdelane za eno vrsto procesorja, tako da jo je mogoče izvajati na drugem, ni nič novega. Tako deluje emulacija iger, ki se pogosto uporablja za izvajanje starih video iger v novih napravah z zelo drugačno strojno opremo. Ko zaženete aplikacijo x86 na računalniku Arm, Windows vzame bloke kode aplikacije in jo prevede v nekaj, kar lahko deluje na čipu Arm. Vse to poteka v realnem času in Windows mora predpomniti vso kodo, ki jo prevede, kar pomeni, da mu ni treba znova in znova prevajati.

Na žalost bo zmogljivost slabša pri emuliranih aplikacijah v primerjavi s kodo, zasnovano za strojno opremo. Težko je reči, koliko zmogljivosti izgubljate z izvajanjem emulirane kode v sistemu Windows, saj so podatki o testiranju zelo redki, toda za primerjavo, Applov prevajalnik Rosetta 2 (ki tudi prevaja aplikacije x86 v Arm) izgubi približno 20 %. To število je mogoče zmanjšati, vendar običajno posnemanje in prevajanje povzročita znižanje zmogljivosti ne glede na vse.

Zakaj aplikacije x86 ne morejo delovati na Arm brez emulacije

Morda se sprašujete, zakaj je treba programsko opremo napisati posebej za x86, Arm in druge vrste procesorjev. Pride do razlika v arhitekturiin v tem primeru govorimo o arhitekturi nabora navodil (ISA). So najbolj temeljna zasnova procesorja in določajo, ali je nekaj preprostega, kot je množenje, ali nekaj zapletenega, kot je AVX, mogoče narediti izvorno. Spreminjanje ISA vpliva na najbolj temeljni način interakcije programske opreme s strojno opremo, vse do osnovnih enic in ničel, ki jih bere CPE.

x86 je ISA procesorjev Intel in AMD, ki so bili zgodovinsko edini procesorji, na katerih lahko Windows sploh deluje. Arm se je medtem večinoma uporabljal za pametne telefone, prekrivanje med programsko opremo za osebne računalnike in programsko opremo za telefone pa je zelo malo. Seveda je večina programov izdelanih za x86 ali Arm, za Windows on Arm pa je bil to velik problem, ker prevod ni izšel leta 2020, medtem ko je Windows RT (prva različica sistema Windows s podporo za Arm) izšel leta 2020. 2012.

Minilo je približno desetletje, odkar je Windows začel podpirati Arm, kje so torej vse izvorne aplikacije? Primarna težava je, da sta potrebna čas in strokovno znanje za ponovno pisanje programske opreme za drugo ISA, še posebej, če razvijalci želijo to narediti dobro. Razvijalci, ki ne poskrbijo ustrezno za prenos aplikacije iz enega ISA v drugega, lahko povzročijo napake in napake. Odličen primer tega je Photoshop za Windows on Arm. Deluje izvorno v sistemu Windows on Arm, še v našem pregledu Lenovo Thinkpad X13s, smo naleteli na več napak in veliko opozoril, da OpenCL in OpenGL nista podprta. Skupaj z veliko manjšo bazo uporabnikov, ki uporabljajo Arm v operacijskem sistemu Windows, ni več spodbude za razvijalce, da bi skrbeli.

Torej, ko razvijalci ne morejo ali nočejo nameniti sredstev ustvarjanju domače programske opreme, je alternativa emulacija. Čeprav prevajanje aplikacij x86 za Windows on Arm ni popolno, je impresivno, da sploh deluje, in včasih je zaradi izgube zmogljivosti vredno vedeti, da bo aplikacija delovala po pričakovanjih. Vsaj dokler Windows on Arm ne doseže točke, ko ga razvijalci ne morejo več ignorirati, mu prevajanje in emulacija dajeta prepotrebno spodbudo njegovemu ekosistemu strojne in programske opreme.