Monet Windows-sovellukset on kirjoitettu x86:lle, mutta ne voivat silti toimia Arm-suorittimissa. Näin se on mahdollista.
Windows on aina tehty Intelin ja AMD: n x86-suorittimet, mutta siitä lähtien, kun Windows RT julkaistiin vuosikymmen sitten älypuhelimille, käyttöjärjestelmä on vähitellen muuttunut ystävällisemmäksi Käsi prosessorit. Nykyään sekä Windows 10 että Windows 11 tarjoavat täydellisen tuen Arm CPU: ille, mutta siinä on saalis. Vaikka käyttöjärjestelmä itsessään toimii hienosti näissä prosessoreissa, useimmat sovellukset eivät ole käynnistäneet Arm-yhteensopivaa versiota. Vaikka Windows voi toimia Arm-siruilla, muutaman ohjelman käyttäminen olisi ongelma.
Microsoftilla on kuitenkin hihassaan yksi temppu: emulaattori, joka saa x86-sovellukset toimimaan Arm-pohjaisissa koneissa. Se on avainasia, joka on antanut Windows on Armille vauhtia sen jälkeen, kun kääntäjä julkaistiin vuonna 2017. Näin emulaattori toimii ja miksi Arm PC -tietokoneiden on käytettävä sitä, jos he haluavat käyttää x86-siruille tehtyjä ohjelmistoja.
Emuloi x86-koodia Arm CPU: ille reaaliajassa
Ajatus yhdelle prosessorille tehdyn koodin emuloimisesta, jotta sitä voidaan käyttää toisella, ei ole uusi. Näin toimii peliemulointi, jota käytetään yleisesti vanhojen videopelien saamiseen toimimaan uusilla laitteilla, joissa on huomattavasti erilaisia laitteita. Kun käytät x86-sovellusta Arm PC: ssä, Windows ottaa lohkoja sovelluksen koodista ja kokoaa sen jostakin, joka voi toimia Arm-sirun avulla. Tämä kaikki tapahtuu reaaliajassa, ja Windowsin on tallennettava välimuistiin kaikki käännetty koodi, mikä tarkoittaa, että sen ei tarvitse kääntää uudelleen kerta toisensa jälkeen.
Valitettavasti suorituskyky on huonompi emuloiduissa sovelluksissa verrattuna laitteistolle suunniteltuun koodiin. On vaikea sanoa, kuinka paljon suorituskykyä menetät suorittamalla emuloitua koodia Windowsissa, koska testaustiedot ovat hyvin niukkoja, mutta vertailun vuoksi Applen Rosetta 2 -kääntäjä (joka myös kääntää x86-sovellukset Armiksi) menettää noin 20%. On mahdollista pienentää tätä lukua, mutta yleensä emulointi ja käännös johtavat suorituskykyyn mitä tahansa.
Miksi x86-sovellukset eivät voi toimia Armissa ilman emulointia
Saatat ihmetellä, miksi ohjelmisto on kirjoitettava erityisesti x86-, Arm- ja muun tyyppisille prosessoreille. Se tulee alas ero arkkitehtuurissa, ja tässä tapauksessa puhumme käskysarjaarkkitehtuurista (ISA). Ne ovat prosessorin perustavanlaatuisin rakenne ja määrittävät, voidaanko jotain yksinkertaista, kuten kertolaskua, tai jotain monimutkaista, kuten AVX, tehdä natiivisti. ISA: n muuttaminen vaikuttaa perustavanlaatuisimpaan tapaan, jolla ohjelmisto on vuorovaikutuksessa laitteiston kanssa, aina perusyksikoihin ja nolliin, joita CPU lukee.
x86 on Intel- ja AMD-suorittimien ISA, jotka ovat historiallisesti olleet ainoita suorittimia, joissa Windows voi jopa toimia. Armia on puolestaan käytetty enimmäkseen älypuhelimissa, ja päällekkäisyys PC-ohjelmiston ja puhelinohjelmiston välillä on hyvin vähäistä. Luonnollisesti useimmat ohjelmat on tehty joko x86:lle tai Armille, ja Windows on Armille tämä oli valtava ongelma, koska käännös ei ilmestynyt vuonna 2020, kun taas Windows RT (ensimmäinen Armia tukeva Windowsin versio) julkaistiin 2012.
On kulunut noin vuosikymmen siitä, kun Windows alkoi tukea Armia, joten missä ovat kaikki alkuperäiset sovellukset? Ensisijainen ongelma on, että ohjelmiston uudelleen kirjoittaminen eri ISA: lle vie aikaa ja asiantuntemusta, varsinkin jos kehittäjät haluavat tehdä sen hyvin. Kehittäjät, jotka eivät huolehdi sovelluksen siirtämisestä ISA: sta toiseen, voivat aiheuttaa häiriöitä ja bugeja. Hyvä esimerkki tästä on Photoshop for Windows on Arm. Se toimii natiivisti Windows on Arm -käyttöjärjestelmässä, vielä Lenovo Thinkpad X13s -arvostelussamme, kohtasimme useita virheitä ja monia varoituksia siitä, että OpenCL: ää ja OpenGL: ää ei tueta. Yhdessä paljon pienemmän käyttäjäkunnan kanssa, joka käyttää Armia Windowsissa, kehittäjät eivät kannusta välittämään.
Joten kun kehittäjät eivät voi tai halua omistaa resursseja alkuperäisten ohjelmistojen luomiseen, vaihtoehto on emulointi. Vaikka x86-sovellusten kääntäminen Windowsille Armissa ei ole täydellistä, on vaikuttavaa, että se toimii ollenkaan, ja joskus suorituskyvyn heikkeneminen kannattaa tietää, että sovellus toimii odotetusti. Ainakin siihen asti, kunnes Windows on Arm saavuttaa pisteen, jossa kehittäjät eivät voi enää sivuuttaa sitä, kääntäminen ja emulointi antavat sille kipeästi kaivattua vauhtia sen laitteisto-ohjelmistoekosysteemiin.