Ako funguje preklad x86 v systéme Windows on Arm?

click fraud protection

Veľa aplikácií pre Windows bolo napísaných pre x86 a napriek tomu môžu pracovať na procesoroch Arm. Tu je návod, ako je to možné.

Windows bol vždy stvorený pre x86 CPU od Intelu a AMD, ale odkedy Windows RT vyšiel pred desiatimi rokmi pre smartfóny, operačný systém sa pomaly stáva priateľskejší k Arm CPU. Dnes Windows 10 aj Windows 11 ponúkajú úplnú podporu pre procesory Arm, má to však háčik. Zatiaľ čo samotný operačný systém beží na týchto CPU v pohode, väčšina aplikácií nespustila verziu kompatibilnú s Arm. Hoci Windows môže bežať na čipoch Arm, mať málo programov na skutočné použitie by bol problém.

Microsoft má však v rukáve trik: emulátor na spustenie x86 aplikácií na počítačoch založených na Arm. Je to kľúčová vec, ktorá dala systému Windows on Arm jeho dynamiku od vydania prekladača v roku 2017. Tu je návod, ako emulátor funguje a prečo ho musia používať počítače Arm, ak chcú spustiť softvér vyrobený pre čipy x86.

Emulácia x86 kódu pre Arm CPU v reálnom čase

Myšlienka emulácie kódu vytvoreného pre jeden druh procesora, aby ho bolo možné spustiť na inom, nie je žiadnou novinkou. Takto funguje emulácia hier, ktorá sa bežne používa na spustenie starých videohier na nových zariadeniach s výrazne odlišným hardvérom. Keď spustíte aplikáciu x86 na počítači Arm, systém Windows vezme bloky kódu aplikácie a skompiluje ho do niečoho, čo možno spustiť na čipe Arm. Všetko sa to deje v reálnom čase a systém Windows musí ukladať do vyrovnávacej pamäte všetok preložený kód, čo znamená, že ho nemusí znova a znova prekladať.

Bohužiaľ, výkon bude v emulovaných aplikáciách horší v porovnaní s kódom navrhnutým pre hardvér. Je ťažké povedať, koľko výkonu strácate spustením emulovaného kódu v systéme Windows, pretože testovacích údajov je veľmi málo, ale na porovnanie, Prekladač Rosetta 2 od Apple (čo tiež prekladá x86 aplikácií do Arm) stráca asi 20 %. Toto číslo je možné znížiť, ale zvyčajne výsledkom emulácie a prekladu je penalizácia výkonu bez ohľadu na to.

Prečo x86 aplikácie nemôžu bežať na Arm bez emulácie

Možno sa čudujete, prečo musí byť softvér napísaný špeciálne pre x86, Arm a iné druhy CPU. Ide to až k rozdiel v architektúrea v tomto prípade hovoríme o architektúre inštrukčného súboru (ISA). Sú najzákladnejším návrhom procesora a určujú, či niečo jednoduché, ako je násobenie alebo niečo zložité, ako je AVX, sa dá urobiť natívne. Zmena ISA ovplyvňuje najzákladnejší spôsob interakcie softvéru s hardvérom, až po základné jednotky a nuly, ktoré CPU číta.

x86 je ISA procesorov Intel a AMD, ktoré boli historicky jedinými procesormi, na ktorých môže systém Windows vôbec bežať. Arm sa medzitým väčšinou používa pre smartfóny a prekrývanie medzi softvérom pre PC a softvérom telefónu je veľmi malé. Prirodzene, väčšina programov je vyrobená buď pre x86 alebo Arm, a pre Windows on Arm to bol obrovský problém, pretože preklad nevyšiel v roku 2020, zatiaľ čo Windows RT (prvá verzia Windowsu s podporou Arm) vyšiel v roku 2012.

Je to asi desať rokov, čo Windows začal podporovať Arm, takže kde sú všetky natívne aplikácie? Hlavným problémom je, že prepísanie softvéru pre inú ISA si vyžaduje čas a odborné znalosti, najmä ak to vývojári chcú robiť dobre. Vývojári, ktorí nevenujú náležitú starostlivosť prenosu aplikácie z jedného ISA do druhého, môžu viesť k chybám a chybám. Skvelým príkladom je Photoshop pre Windows on Arm. Beží natívne v systéme Windows on Arm, ešte v našej recenzii Lenovo Thinkpad X13s, narazili sme na niekoľko chýb a množstvo upozornení, že OpenCL a OpenGL nie sú podporované. V spojení s oveľa menšou používateľskou základňou pomocou Arm v systéme Windows je tu menšia motivácia pre vývojárov, aby sa starali.

Takže, keď vývojári nemôžu alebo nechcú venovať prostriedky na vytváranie natívneho softvéru, alternatívou je emulácia. Aj keď preklad aplikácií x86 pre Windows on Arm nie je dokonalý, je pôsobivé, že to vôbec funguje a niekedy strata výkonu stojí za to vedieť, že aplikácia pobeží podľa očakávania. Prinajmenšom dovtedy, kým Windows on Arm nedosiahne bod, kedy ho vývojári už nebudú môcť ignorovať, preklad a emulácia mu poskytnú veľmi potrebný impulz pre jeho hardvérovo-softvérový ekosystém.