Många Windows-applikationer skrevs för x86 och kan ändå fungera på arm-processorer. Så här är det möjligt.
Windows har alltid gjorts för x86-processorer från Intel och AMD, men ända sedan Windows RT kom ut för ett decennium sedan för smartphones har operativsystemet sakta blivit mer vänligt för Aktivera processorer. Idag erbjuder både Windows 10 och Windows 11 komplett stöd för armprocessorer, men det finns en hake. Även om själva operativsystemet fungerar bra på dessa processorer, har de flesta applikationer inte lanserat en Arm-kompatibel version. Även om Windows kan köras på Arm-chips, skulle det vara ett problem att ha få program att faktiskt använda.
Microsoft har dock ett trick i rockärmen: en emulator för att få x86-appar att köra på Arm-baserade maskiner. Det är nyckeln som har gett Windows on Arm dess fart sedan översättaren kom ut 2017. Så här fungerar emulatorn och varför Arm-datorer måste använda den om de vill köra programvara gjord för x86-chips.
Emulerar x86-kod för arm-processorer i realtid
Idén med att emulera kod gjord för en typ av processor så att den kan köras på en annan är ingen nyhet. Så här fungerar spelemulering, som populärt används för att få gamla tv-spel att köras på nya enheter med väldigt olika hårdvara. När du kör en x86-app på en Arm PC tar Windows block av appens kod och kompilerar den till något som kan köras på ett Arm-chip. Allt detta görs i realtid och Windows måste cachelagra all kod som den har översatt, vilket innebär att den inte behöver översättas om och om igen.
Tyvärr kommer prestandan att bli sämre på emulerade appar jämfört med koden designad för hårdvaran. Det är svårt att säga hur mycket prestanda du förlorar genom att köra emulerad kod på Windows eftersom testdatan är väldigt sparsam, men för jämförelse, Apples Rosetta 2-översättare (som också översätter x86-appar till Arm) tappar cirka 20 %. Det är möjligt att sänka den siffran, men vanligtvis resulterar emulering och översättning i ett prestationsstraff oavsett vad.
Varför x86-applikationer inte kan köras på Arm utan emulering
Du kanske undrar varför programvara behöver skrivas specifikt för x86, Arm och andra typer av processorer. Det kommer ner till skillnad i arkitektur, och i det här fallet talar vi om instruktionsuppsättningsarkitekturen (ISA). De är den mest grundläggande designen av en processor och avgör om något enkelt som multiplikation eller något komplext som AVX kan göras inbyggt. Att ändra ISA påverkar det mest grundläggande sättet att mjukvara interagerar med hårdvara, ner till de grundläggande ettor och nollor som processorn läser.
x86 är ISA för Intel- och AMD-processorer, som historiskt sett har varit de enda processorer som Windows ens kan köra på. Arm har under tiden mest använts för smartphones, och överlappningen mellan PC-programvara och telefonmjukvara är mycket liten. Naturligtvis är de flesta program antingen gjorda för x86 eller Arm, och för Windows on Arm var detta ett stort problem eftersom översättning kom inte ut 2020, medan Windows RT (den första versionen av Windows som stöder Arm) kom ut i 2012.
Det har gått ungefär ett decennium sedan Windows började stödja Arm, så var är alla inbyggda appar? Den primära frågan är att det tar tid och expertis att skriva om programvara för en annan ISA, särskilt om utvecklare vill göra det bra. Utvecklare som inte tar ordentligt hand om att porta en app från en ISA till en annan kan resultera i fel och buggar. Ett bra exempel på detta är Photoshop för Windows on Arm. Det körs inbyggt på Windows on Arm, ännu i vår recension av Lenovo Thinkpad X13s, stötte vi på flera fel och massor av varningar om att OpenCL och OpenGL inte stöddes. Tillsammans med en mycket mindre användarbas som använder Arm på Windows, finns det mindre incitament för utvecklare att bry sig.
Så när utvecklare inte kan eller vill ägna resurserna åt att skapa inbyggd programvara, är alternativet emulering. Även om det inte är perfekt att översätta x86-appar för Windows on Arm, är det imponerande att det fungerar överhuvudtaget, och ibland är det värt att veta att appen kommer att fungera som förväntat att förlora prestanda. Åtminstone tills Windows on Arm når den punkt där utvecklare inte längre kan ignorera det, ger översättning och emulering det ett välbehövligt uppsving för dess hårdvaru-mjukvaruekosystem.