Cum funcționează traducerea x86 pe Windows on Arm?

click fraud protection

O mulțime de aplicații Windows au fost scrise pentru x86 și totuși pot funcționa pe procesoarele Arm. Iată cum este posibil.

Windows a fost întotdeauna făcut pentru procesoare x86 de la Intel și AMD, dar de când Windows RT a apărut acum un deceniu pentru smartphone-uri, sistemul de operare a devenit încet-încet mai prietenos cu Armează CPU-urile. Astăzi, atât Windows 10, cât și Windows 11 oferă suport complet pentru procesoarele Arm, dar există o problemă. În timp ce sistemul de operare în sine funcționează bine pe aceste procesoare, majoritatea aplicațiilor nu au lansat o versiune compatibilă cu Arm. Deși Windows poate rula pe cipuri Arm, a avea puține programe de utilizat ar fi o problemă.

Cu toate acestea, Microsoft are un truc în mânecă: un emulator pentru a obține aplicații x86 care rulează pe mașini bazate pe Arm. Este lucrul cheie care a dat avântul Windows on Arm de când a apărut traducătorul în 2017. Iată cum funcționează emulatorul și de ce PC-urile Arm trebuie să-l folosească dacă doresc să ruleze software creat pentru cipuri x86.

Emularea codului x86 pentru CPU-urile Arm în timp real

Ideea de a emula codul creat pentru un tip de procesor, astfel încât să poată fi rulat pe altul, nu este nimic nou. Acesta este modul în care funcționează emularea jocului, care este folosită în mod popular pentru a rula jocuri video vechi pe dispozitive noi cu hardware foarte diferit. Când rulați o aplicație x86 pe un PC Arm, Windows preia blocuri din codul aplicației și îl compilează în ceva care poate rula pe un cip Arm. Toate acestea se fac în timp real, iar Windows trebuie să memoreze în cache tot codul tradus, ceea ce înseamnă că nu trebuie să retraducă iar și iar.

Din păcate, performanța va fi mai slabă pentru aplicațiile emulate în comparație cu codul proiectat pentru hardware. Este greu de spus cât de multă performanță pierzi rulând cod emulat pe Windows, deoarece datele de testare sunt foarte rare, dar pentru comparație, Translatorul Rosetta 2 de la Apple (care traduce și aplicațiile x86 în Arm) pierde aproximativ 20%. Este posibil să reduceți acest număr, dar, de obicei, emularea și traducerea au ca rezultat o penalizare de performanță, indiferent de situație.

De ce aplicațiile x86 nu pot rula pe Arm fără emulare

S-ar putea să vă întrebați de ce software-ul trebuie scris special pentru x86, Arm și alte tipuri de procesoare. Se reduce la diferenta de arhitectura, iar în acest caz, vorbim despre arhitectura setului de instrucțiuni (ISA). Sunt cel mai fundamental design al unui procesor și determină dacă ceva simplu, cum ar fi multiplicarea sau ceva complex, precum AVX, poate fi realizat nativ. Schimbarea ISA afectează cel mai fundamental mod în care software-ul interacționează cu hardware-ul, până la cele de bază și zerourile pe care le citește CPU.

x86 este ISA pentru procesoarele Intel și AMD, care au fost din istorie singurele procesoare pe care Windows poate rula. Arm, între timp, a fost folosit în cea mai mare parte pentru smartphone-uri, iar suprapunerea între software-ul pentru computer și software-ul telefonului este foarte mică. Desigur, majoritatea programelor sunt fie pentru x86, fie pentru Arm, iar pentru Windows on Arm, aceasta a fost o problemă masivă, deoarece traducerea nu a apărut în 2020, în timp ce Windows RT (prima versiune de Windows care acceptă Arm) a apărut în 2012.

A trecut aproximativ un deceniu de când Windows a început să accepte Arm, așa că unde sunt toate aplicațiile native? Problema principală este că este nevoie de timp și expertiză pentru a rescrie software-ul pentru un alt ISA, mai ales dacă dezvoltatorii doresc să o facă bine. Dezvoltatorii care nu au grija adecvată pentru a porta o aplicație de la un ISA la altul pot duce la erori și erori. Un exemplu excelent în acest sens este Photoshop pentru Windows on Arm. Funcționează nativ pe Windows on Arm, totuși, în recenzia noastră despre Lenovo Thinkpad X13s, am întâlnit mai multe erori și o mulțime de avertismente că OpenCL și OpenGL nu au fost acceptate. Împreună cu o bază de utilizatori mult mai mică care utilizează Arm pe Windows, există mai puțin stimulent pentru dezvoltatori să le pese.

Deci, atunci când dezvoltatorii nu pot sau nu vor dedica resursele pentru crearea de software nativ, alternativa este emularea. Deși traducerea aplicațiilor x86 pentru Windows on Arm nu este perfectă, este impresionant că funcționează deloc și, uneori, pierderea performanței merită să știi că aplicația va rula așa cum era de așteptat. Cel puțin până când Windows on Arm ajunge în punctul în care dezvoltatorii nu îl mai pot ignora, traducerea și emularea îi oferă un impuls atât de necesar ecosistemului său hardware-software.