Jaunas Box86 un Box64 emulatoru versijas, kas ļauj palaist x86 spēles ARM sistēmās

Ir publicēti Box86 0.2.6 un Box64 0.1.8 emulatoru laidieni, kas paredzēti, lai palaistu Linux programmas, kas kompilētas x86 un x86_64 arhitektūrām iekārtās ar ARM, ARM64, PPC64LE un RISC-V procesoriem. Projektus sinhroni izstrādā viena izstrādātāju komanda – Box86 ir ierobežota ar iespēju palaist 32 bitu x86 lietojumprogrammas, un Box64 nodrošina iespēju palaist 64 bitu izpildāmos failus. Projektā liela uzmanība tiek pievērsta spēļu lietojumprogrammu palaišanas organizēšanai, tostarp nodrošinot iespēju palaist Windows būvējumus, izmantojot vīnu un Proton. Projekta pirmkods ir rakstīts C valodā un tiek izplatīts (Box86, Box64) saskaņā ar MIT licenci.

Projekta iezīme ir hibrīda izpildes modeļa izmantošana, kurā emulācija tiek piemērota tikai pašas lietojumprogrammas mašīnkodam un konkrētām bibliotēkām. Tipiskas sistēmas bibliotēkas, tostarp libc, libm, GTK, SDL, Vulkan un OpenGL, tiek aizstātas ar opcijām, kas ir vietējās mērķa platformās. Tādā veidā bibliotēkas izsaukumi tiek izpildīti bez emulācijas, tādējādi ievērojami uzlabojot veiktspēju.

Tāda koda emulācija, kuram nav aizstājēju mērķa platformai, tiek veikta, izmantojot dinamiskas pārkompilācijas paņēmienu (DynaRec) no vienas mašīnas instrukciju kopas uz citu. Salīdzinot ar mašīnas instrukciju interpretāciju, dinamiskā pārkompilācija demonstrē 5–10 reizes lielāku veiktspēju.

Veiktspējas testos Box86 un Box64 emulatori, kad tie tika izpildīti Armhf un Aarch64 platformās, ievērojami pārspēja QEMU un FEX-emu projektus, un atsevišķos testos (glmark2, openarena) tie sasniedza veiktspēju, kas bija identiska mērķa montāžas palaišanai. platforma. Aprēķinu intensīvajos 7-zip un dav1d testos Box64 veiktspēja svārstījās no 27% līdz 53% no vietējās lietojumprogrammas veiktspējas (salīdzinājumam, QEMU uzrādīja rezultātus 5-16% un FEX-emu - 13-26%. ). Turklāt tika veikts salīdzinājums ar emulatoru Rosetta 2, ko Apple izmantoja, lai palaistu x86 kodu sistēmās ar M1 ARM mikroshēmu. Rosetta 2 nodrošināja uz 7zip balstītu testu ar veiktspēju 71% no sākotnējās versijas, bet Box64 — 57%.

Jaunas Box86 un Box64 emulatoru versijas, kas ļauj palaist x86 spēles ARM sistēmās

Runājot par saderību ar lietojumprogrammām, no 165 pārbaudītajām spēlēm aptuveni 70% darbojās veiksmīgi. Vēl aptuveni 10% strādā, bet ar zināmām atrunām un ierobežojumiem. Atbalstītās spēles ietver WorldOfGoo, Airline Tycoon Deluxe, FTL, Undertale, A Risk of Rain, Cook Serve Delicious un lielāko daļu GameMaker spēļu. Starp spēlēm, ar kurām tika konstatētas problēmas, tiek minētas spēles, kuru pamatā ir Unity3D dzinējs, kas ir piesaistīts Mono pakotnei, kuras emulācija ne vienmēr darbojas Mono izmantotās JIT kompilācijas dēļ, kā arī ir diezgan augstas grafikas prasības, kas ne vienmēr ir sasniedzamas ARM platēs. GTK lietojumprogrammu bibliotēku aizstāšana pašlaik ir ierobežota ar GTK2 (GTK3/4 aizstāšana nav pilnībā ieviesta).

Galvenās izmaiņas jaunajos izlaidumos:

  • Pievienots iesējums Vulkan bibliotēkai. Pievienots atbalsts Vulkan un DXVK grafikas API (DXGI, Direct3D 9, 10 un 11 ieviešana papildus Vulkan).
  • Uzlaboti iesējumi GTK bibliotēkām. Pievienoti saistījumi gstreamer un bibliotēkām, ko parasti izmanto GTK lietojumprogrammās.
  • Pievienots sākotnējais atbalsts (pagaidām tikai interpretācijas režīms) RISC-V un PPC64LE arhitektūrām.
  • Ir veikti labojumi, lai uzlabotu SteamPlay un Proton slāņa atbalstu. Nodrošina iespēju palaist daudzas Linux un Windows spēles no Steam uz AArch64 dēļiem, piemēram, Raspberry Pi 3 un 4.
  • Uzlabota atmiņas pārvaldība, mmap veiktspēja un atmiņas aizsardzības pārkāpumu izsekošana.
  • Uzlabots atbalsts klonēšanas sistēmas izsaukumam programmā libc. Pievienots atbalsts jauniem sistēmas zvaniem.
  • Dinamiskais pārkompilācijas dzinējs ir uzlabojis darbu ar SSE/x87 reģistriem, pievienojis atbalstu jauniem mašīnkodiem, optimizējis peldošo un dubulto skaitļu pārveidošanu, uzlabojis iekšējo pāreju apstrādi un vienkāršojis atbalsta pievienošanu jaunām arhitektūrām.
  • Uzlabots ELF failu ielādētājs.

Avots: opennet.ru

Pievieno komentāru