Kako x86 prijevod radi na Windows on Arm?

Puno Windows aplikacija je napisano za x86, a ipak može raditi na Arm CPU-ima. Evo kako je to moguće.

Windows je oduvijek stvoren za x86 procesori Intela i AMD-a, ali otkako se prije deset godina pojavio Windows RT za pametne telefone, operativni sustav polako postaje prijateljskiji prema Aktivirajte procesore. Danas i Windows 10 i Windows 11 nude potpunu podršku za Arm CPU-e, ali postoji jedna caka. Dok sam operativni sustav radi sasvim dobro na ovim procesorima, većina aplikacija nije pokrenula verziju kompatibilnu s Armom. Iako Windows može raditi na Arm čipovima, imati malo programa za stvarno korištenje bio bi problem.

Međutim, Microsoft ima trik u rukavu: emulator za pokretanje x86 aplikacija na strojevima koji se temelje na Armu. To je ključna stvar koja je Windows on Armu dala zamah otkako je prevoditelj izašao 2017. godine. Evo kako radi emulator i zašto ga Arm računala moraju koristiti ako žele pokrenuti softver napravljen za x86 čipove.

Emulacija x86 koda za Arm CPU u stvarnom vremenu

Ideja oponašanja koda napravljenog za jednu vrstu procesora kako bi se mogao izvoditi na drugoj nije ništa novo. Ovako funkcionira emulacija igre, koja se popularno koristi za pokretanje starih videoigara na novim uređajima s znatno drugačijim hardverom. Kada pokrenete x86 aplikaciju na Arm računalu, Windows uzima blokove koda aplikacije i kompajlira ga u nešto što može raditi na Arm čipu. Sve se to radi u stvarnom vremenu, a Windows mora predmemorirati sav kod koji je preveden, što znači da se ne mora uvijek iznova prevoditi.

Nažalost, performanse će biti lošije na emuliranim aplikacijama u usporedbi s kodom dizajniranim za hardver. Teško je reći koliko performansi gubite pokretanjem emuliranog koda na Windowsima jer su podaci testiranja vrlo rijetki, ali za usporedbu, Appleov prevoditelj Rosetta 2 (koji također prevodi x86 aplikacije u Arm) gubi oko 20%. Moguće je smanjiti taj broj, ali obično emulacija i prijevod rezultiraju kaznom izvedbe bez obzira na sve.

Zašto x86 aplikacije ne mogu raditi na Armu bez emulacije

Možda se pitate zašto softver treba biti napisan posebno za x86, Arm i druge vrste CPU-a. Svodi se na razlika u arhitekturi, au ovom slučaju govorimo o arhitekturi skupa instrukcija (ISA). Oni su najosnovniji dizajn procesora i određuju može li se nešto jednostavno poput množenja ili nešto složeno poput AVX-a izvesti izvorno. Promjena ISA-e utječe na najosnovniji način na koji softver komunicira s hardverom, sve do osnovnih jedinica i nula koje CPU čita.

x86 je ISA procesora Intel i AMD, koji su kroz povijest bili jedini procesori na kojima Windows uopće može raditi. Arm se u međuvremenu uglavnom koristio za pametne telefone, a preklapanje softvera za računala i softvera za telefone vrlo je malo. Naravno, većina programa napravljena je za x86 ili Arm, a za Windows na Armu ovo je bio veliki problem jer prijevod nije izašao 2020., dok je Windows RT (prva verzija Windowsa koja podržava Arm) izašao u 2012.

Prošlo je desetak godina otkako je Windows počeo podržavati Arm, pa gdje su sve izvorne aplikacije? Primarni problem je da je potrebno vrijeme i stručnost za ponovno pisanje softvera za drugačiji ISA, pogotovo ako programeri žele to učiniti dobro. Programeri koji ne poduzmu odgovarajuću brigu o prijenosu aplikacije s jednog ISA-a na drugi mogu rezultirati smetnjama i greškama. Sjajan primjer za to je Photoshop za Windows on Arm. Izvorno radi na Windows on Arm, još u našoj recenziji Lenovo Thinkpad X13s, naišli smo na nekoliko pogrešaka i puno upozorenja da OpenCL i OpenGL nisu podržani. Zajedno s puno manjom bazom korisnika koji koriste Arm na Windowsima, manje je poticaja za razvojne programere da brinu.

Dakle, kada programeri ne mogu ili ne žele posvetiti resurse stvaranju izvornog softvera, alternativa je emulacija. Iako prevođenje x86 aplikacija za Windows on Arm nije savršeno, impresivno je da uopće radi, a ponekad je vrijedno gubitka performansi znati da će aplikacija raditi kako se očekuje. Barem dok Windows on Arm ne dođe do točke u kojoj ga programeri više ne mogu ignorirati, prijevod i emulacija daju prijeko potreban poticaj njegovom hardversko-softverskom ekosustavu.