Kā x86 tulkošana darbojas operētājsistēmā Windows on Arm?

Daudzas Windows lietojumprogrammas tika rakstītas priekš x86, taču tās var darboties ar Arm CPU. Lūk, kā tas ir iespējams.

Windows vienmēr ir paredzēts x86 CPU no Intel un AMD, taču kopš Windows RT iznākšanas pirms desmit gadiem viedtālruņiem operētājsistēma lēnām ir kļuvusi draudzīgāka Apbruņojiet CPU. Mūsdienās gan operētājsistēma Windows 10, gan Windows 11 piedāvā pilnīgu Arm CPU atbalstu, taču ir arī viens āķis. Lai gan pati operētājsistēma šajos procesoros darbojas lieliski, lielākā daļa lietojumprogrammu nav palaista ar Arm saderīgu versiju. Lai gan operētājsistēmā Windows var darboties Arm mikroshēmas, būtu problēma, ja faktiski izmantotu dažas programmas.

Tomēr Microsoft ir piedāvājis kādu triku: emulators, lai x86 lietotnes darbotos uz Arm balstītās iekārtās. Tā ir galvenā lieta, kas ir devusi Windows on Arm impulsu kopš tulka iznākšanas 2017. gadā. Lūk, kā darbojas emulators un kāpēc Arm PC tas ir jāizmanto, ja tie vēlas palaist programmatūru, kas paredzēta x86 mikroshēmām.

X86 koda emulēšana Arm CPU reāllaikā

Ideja emulēt kodu, kas paredzēts viena veida procesoram, lai to varētu palaist citā procesorā, nav nekas jauns. Šādi darbojas spēļu emulācija, ko plaši izmanto, lai vecās videospēles palaistu jaunās ierīcēs ar ļoti atšķirīgu aparatūru. Palaižot x86 lietotni Arm PC, sistēma Windows ņem lietotnes koda blokus un apkopo to tādā formātā, kas var darboties Arm mikroshēmā. Tas viss tiek darīts reāllaikā, un sistēmai Windows ir jāglabā viss tulkotais kods kešatmiņā, kas nozīmē, ka tai nav jātulko atkal un atkal.

Diemžēl emulēto lietotņu veiktspēja būs sliktāka, salīdzinot ar aparatūrai paredzēto kodu. Ir grūti pateikt, cik daudz veiktspējas jūs zaudējat, operētājsistēmā Windows palaižot emulētu kodu, jo testēšanas dati ir ļoti maz, taču salīdzinājumam Apple Rosetta 2 tulkotājs (kas arī pārvērš x86 lietotnes Arm) zaudē aptuveni 20%. Šo skaitli ir iespējams samazināt, taču parasti emulācija un tulkošana rada sodu par veiktspēju neatkarīgi no tā.

Kāpēc x86 lietojumprogrammas nevar darboties Arm bez emulācijas

Jums varētu rasties jautājums, kāpēc programmatūra ir jāraksta īpaši x86, Arm un cita veida CPU. Tas nāk uz leju, lai atšķirība arhitektūrā, un šajā gadījumā mēs runājam par instrukciju kopas arhitektūru (ISA). Tie ir vissvarīgākais procesora dizains un nosaka, vai kaut ko vienkāršu, piemēram, reizināšanu vai kaut ko sarežģītu, piemēram, AVX, var veikt sākotnēji. ISA maiņa ietekmē vissvarīgāko veidu, kā programmatūra mijiedarbojas ar aparatūru, līdz pat pamata vienībām un nullēm, ko nolasa centrālais procesors.

x86 ir Intel un AMD centrālo procesoru ISA, kas vēsturiski ir bijuši vienīgie CPU, ar kuriem Windows pat var darboties. Tikmēr Arm galvenokārt ir izmantots viedtālruņiem, un datoru programmatūras un tālruņa programmatūras pārklāšanās ir ļoti maza. Protams, lielākā daļa programmu ir paredzētas x86 vai Arm, un operētājsistēmai Windows on Arm tā bija milzīga problēma, jo tulkojums netika izdots 2020. gadā, savukārt Windows RT (pirmā Windows versija, kas atbalsta Arm) iznāca 2012.

Ir pagājuši aptuveni desmit gadi, kopš Windows sāka atbalstīt Arm, kur tad ir visas vietējās lietotnes? Galvenā problēma ir tāda, ka ir nepieciešams laiks un zināšanas, lai pārrakstītu programmatūru citai ISA, it īpaši, ja izstrādātāji vēlas to izdarīt labi. Izstrādātāji, kas neveic pienācīgu rūpību, lai pārsūtītu lietotni no vienas ISA uz citu, var rasties kļūmes un kļūdas. Lielisks piemērs tam ir Photoshop for Windows on Arm. Tas darbojas sākotnēji operētājsistēmā Windows on Arm, vēl mūsu pārskatā par Lenovo Thinkpad X13s, mēs saskārāmies ar vairākām kļūdām un daudziem brīdinājumiem, ka OpenCL un OpenGL netika atbalstīti. Kopā ar daudz mazāku lietotāju bāzi, kas izmanto Arm operētājsistēmā Windows, izstrādātājiem ir mazāks stimuls rūpēties.

Tātad, ja izstrādātāji nevar vai nevēlas veltīt resursus vietējās programmatūras izveidei, alternatīva ir emulācija. Lai gan x86 lietotņu tulkošana operētājsistēmai Windows on Arm nav ideāla, ir iespaidīgi, ka tā vispār darbojas, un dažkārt ir vērts zināt, ka lietotne darbosies, kā paredzēts. Vismaz līdz brīdim, kad Windows on Arm sasniegs punktu, kurā izstrādātāji vairs nevar to ignorēt, tulkošana un emulācija sniedz tai tik nepieciešamo stimulu aparatūras un programmatūras ekosistēmai.