Kaip x86 vertimas veikia sistemoje Windows on Arm?

click fraud protection

Daug Windows programų buvo parašyta x86, tačiau jos gali veikti su Arm CPU. Štai kaip tai įmanoma.

„Windows“ visada buvo sukurta x86 procesoriai iš Intel ir AMD, tačiau nuo tada, kai prieš dešimtmetį pasirodė Windows RT išmaniesiems telefonams, operacinė sistema pamažu tapo draugiškesnė Ginkluoti CPU. Šiandien tiek „Windows 10“, tiek „Windows 11“ siūlo visišką „Arm CPU“ palaikymą, tačiau yra vienas iš jų. Nors pati operacinė sistema šiuose procesoriuose veikia puikiai, dauguma programų nepaleido su Arm suderinamos versijos. Nors „Windows“ gali veikti „Arm“ lustuose, iš tikrųjų naudoti nedaug programų būtų problema.

Tačiau „Microsoft“ turi gudrybę: emuliatorius, skirtas x86 programoms paleisti Arm pagrindu veikiančiuose įrenginiuose. Tai yra pagrindinis dalykas, kuris suteikė „Windows on Arm“ pagreitį nuo tada, kai vertėjas pasirodė 2017 m. Štai kaip veikia emuliatorius ir kodėl Arm PC turi jį naudoti, jei nori paleisti programinę įrangą, skirtą x86 lustams.

Emuliuoja x86 kodą Arm CPU realiuoju laiku

Idėja emuliuoti kodą, sukurtą vienos rūšies procesoriams, kad jį būtų galima paleisti kitame procesoriuje, nėra jokia naujiena. Taip veikia žaidimų emuliacija, kuri populiariai naudojama norint, kad seni vaizdo žaidimai veiktų naujuose įrenginiuose su labai skirtinga aparatūra. Kai paleidžiate x86 programą Arm PC, Windows paima programos kodo blokus ir sukompiliuoja jį į kažką, kas gali veikti Arm lustu. Visa tai daroma realiuoju laiku, o „Windows“ turi talpykloje išsaugoti visą išverstą kodą, o tai reiškia, kad jos nereikia versti iš naujo.

Deja, emuliuotų programų našumas bus prastesnis, palyginti su kodu, skirtu aparatinei įrangai. Sunku pasakyti, kiek našumo prarandate naudodami emuliuotą kodą sistemoje Windows, nes testavimo duomenų yra labai nedaug, bet palyginimui Apple Rosetta 2 vertėjas (tai taip pat verčia x86 programėles į Arm) praranda apie 20 proc. Galima sumažinti šį skaičių, bet paprastai emuliacija ir vertimas sukelia našumo nuobaudą, nesvarbu.

Kodėl x86 programos negali veikti Arm be emuliacijos

Jums gali kilti klausimas, kodėl programinė įranga turi būti sukurta specialiai x86, Arm ir kitų tipų procesoriams. Tai nusileidžia iki architektūros skirtumai, ir šiuo atveju kalbame apie instrukcijų rinkinio architektūrą (ISA). Jie yra svarbiausias procesoriaus dizainas ir nustato, ar ką nors paprasto, pavyzdžiui, daugybos, ar ką nors sudėtingo, pavyzdžiui, AVX, galima atlikti savaime. ISA pakeitimas turi įtakos pagrindiniam programinės įrangos sąveikos su aparatine būdu būdui, iki pagrindinių vienetų ir nulių, kuriuos nuskaito CPU.

x86 yra „Intel“ ir „AMD“ procesorių ISA, kurie istoriškai buvo vieninteliai procesoriai, kuriuos „Windows“ netgi gali paleisti. Tuo tarpu „Arm“ dažniausiai buvo naudojamas išmaniesiems telefonams, o kompiuterių programinės įrangos ir telefono programinės įrangos sutapimas yra labai mažas. Žinoma, dauguma programų yra sukurtos x86 arba Arm, o Windows on Arm tai buvo didžiulė problema, nes vertimas nebuvo išleistas 2020 m., o Windows RT (pirmoji Windows versija, palaikanti Arm) pasirodė 2012.

Praėjo maždaug dešimtmetis nuo tada, kai „Windows“ pradėjo palaikyti „Arm“, taigi kur yra visos vietinės programos? Pagrindinė problema yra ta, kad norint perrašyti programinę įrangą kitai ISA, reikia laiko ir patirties, ypač jei kūrėjai nori tai padaryti gerai. Kūrėjai, kurie netinkamai perkelia programą iš vienos ISA į kitą, gali sukelti trikdžių ir klaidų. Puikus to pavyzdys yra „Photoshop“, skirta „Windows on Arm“. Jis veikia originaliai „Windows on Arm“, dar mūsų apžvalgoje apie Lenovo Thinkpad X13s, susidūrėme su keliomis klaidomis ir daugybe įspėjimų, kad OpenCL ir OpenGL nepalaikomi. Kartu su daug mažesne vartotojų baze, naudojančia Arm Windows sistemoje, kūrėjai yra mažiau skatinami rūpintis.

Taigi, kai kūrėjai negali arba nenori skirti išteklių vietinei programinei įrangai kurti, alternatyva yra emuliacija. Nors išversti x86 programėles, skirtas Windows on Arm, nėra tobula, įspūdinga, kad ji išvis veikia, o kartais prarandant našumą verta žinoti, kad programa veiks taip, kaip tikėtasi. Bent jau tol, kol „Windows on Arm“ nepasieks taško, kai kūrėjai nebegali jo ignoruoti, vertimas ir emuliacija suteikia labai reikalingą postūmį aparatinės ir programinės įrangos ekosistemai.