Kuidas x86 tõlge Windows on Armis töötab?

Paljud Windowsi rakendused on kirjutatud x86 jaoks ja võivad siiski töötada Arm CPU-dega. Siin on, kuidas see võimalik on.

Windows on alati loodud Inteli ja AMD x86 protsessorid, kuid sellest ajast peale, kui Windows RT kümme aastat tagasi nutitelefonidele välja tuli, on operatsioonisüsteem muutunud aeglaselt kasutajasõbralikumaks. Käivitage protsessorid. Tänapäeval pakuvad nii Windows 10 kui ka Windows 11 Arm CPU-de täielikku tuge, kuid sellel on konks. Kuigi operatsioonisüsteem ise töötab nende protsessoritega suurepäraselt, pole enamik rakendusi käivitanud Arm-ühilduva versiooni. Kuigi Windows võib töötada Arm kiipidega, oleks väheste programmide tegelik kasutamine probleem.

Microsoftil on aga varrukas üks nipp: emulaator x86-rakenduste käivitamiseks Arm-põhistes masinates. See on peamine asi, mis on andnud Windows on Armile hoo pärast tõlkija ilmumist 2017. aastal. Siit saate teada, kuidas emulaator töötab ja miks Arm PC-d peavad seda kasutama, kui nad soovivad käivitada x86-kiipide jaoks loodud tarkvara.

Arm CPUde x86 koodi emuleerimine reaalajas

Idee emuleerida ühte tüüpi protsessori jaoks loodud koodi, et seda saaks käitada ka teisel, pole midagi uut. Nii toimib mängude emulatsioon, mida kasutatakse laialdaselt vanade videomängude käivitamiseks uutes seadmetes, millel on väga erinev riistvara. Kui käivitate Arm PC-s x86-rakenduse, võtab Windows rakenduse koodi plokke ja kompileerib selle millekski, mis töötab Arm-kiibil. Seda kõike tehakse reaalajas ja Windows peab kogu tõlgitud koodi vahemällu salvestama, mis tähendab, et seda ei pea ikka ja jälle ümber tõlkima.

Kahjuks on emuleeritud rakenduste jõudlus riistvara jaoks mõeldud koodiga võrreldes halvem. Raske on öelda, kui palju jõudlust te Windowsis emuleeritud koodi käivitamisega kaotate, kuna testimisandmeid on väga vähe, kuid võrdluseks Apple'i Rosetta 2 tõlkija (mis tõlgib ka x86 rakendused Armiks) kaotab umbes 20%. Seda arvu on võimalik vähendada, kuid tavaliselt toob emuleerimine ja tõlkimine kaasa soorituskaristuse, olenemata sellest.

Miks x86 rakendused ei saa Armis ilma emulatsioonita töötada?

Võib tekkida küsimus, miks peab tarkvara olema kirjutatud spetsiaalselt x86, Arm ja muud tüüpi protsessorite jaoks. See taandub sellele arhitektuuri erinevus, ja antud juhul räägime käsukomplekti arhitektuurist (ISA). Need on protsessori kõige põhilisemad konstruktsioonid ja määravad, kas midagi lihtsat, näiteks korrutamist või midagi keerukat, nagu AVX, saab teha natiivselt. ISA muutmine mõjutab kõige põhilisemat viisi, kuidas tarkvara suhtleb riistvaraga, kuni põhiliste ja nullideni, mida CPU loeb.

x86 on Inteli ja AMD protsessorite ISA, mis on ajalooliselt olnud ainsad CPU-d, millel Windows isegi töötada saab. Vahepeal on Armi kasutatud peamiselt nutitelefonide jaoks ning arvutitarkvara ja telefonitarkvara kattumine on väga väike. Loomulikult on enamik programme tehtud kas x86 või Arm jaoks ja Windows on Arm jaoks oli see tohutu probleem, kuna tõlge ei ilmunud 2020. aastal, samas kui Windows RT (esimene Windowsi versioon, mis toetab Armi) tuli välja aastal 2012.

Sellest on möödunud kümmekond aastat, kui Windows alustas Armi toetamist, nii et kus on kõik omarakendused? Peamine probleem seisneb selles, et tarkvara teise ISA jaoks ümberkirjutamine võtab aega ja asjatundlikkust, eriti kui arendajad tahavad seda hästi teha. Arendajad, kes ei võta piisavalt hoolt rakenduse ühest ISA-st teise teisaldamiseks, võivad põhjustada tõrkeid ja vigu. Selle suurepärane näide on Photoshop for Windows on Arm. See töötab algselt opsüsteemis Windows on Arm, veel meie ülevaates Lenovo Thinkpad X13s, ilmnes mitu viga ja palju hoiatusi, et OpenCL-i ja OpenGL-i ei toetatud. Koos palju väiksema kasutajaskonnaga, kes kasutab Armi Windowsis, on arendajatel vähem stiimulit hoolida.

Seega, kui arendajad ei saa või ei taha omatarkvara loomisele ressursse pühendada, on alternatiiviks emuleerimine. Kuigi x86-rakenduste tõlkimine Windowsi jaoks Armi jaoks pole täiuslik, on muljetavaldav, et see üldse töötab ja mõnikord tasub jõudluse kaotamisel teada, et rakendus töötab ootuspäraselt. Vähemalt seni, kuni Windows on Arm jõuab punktini, kus arendajad ei saa seda enam ignoreerida, annavad tõlkimine ja emuleerimine selle riistvara-tarkvara ökosüsteemile väga vajaliku tõuke.