Nye versjoner av Box86 og Box64 emulatorer, som lar deg kjøre x86-spill på ARM-systemer

Emulatorene Box86 0.2.6 og Box64 0.1.8 er lansert. De er designet for å kjøre Linux-programmer kompilert for x86- og x86_64-arkitekturer på maskinvare med ARM-, ARM64-, PPC64LE- og RISC-V-prosessorer. Prosjektene utvikles synkront av ett team av utviklere – Box86 er begrenset til å kjøre 32-bits x86-applikasjoner, mens Box64 tilbyr 64-bits kjørbare filer. Prosjektet legger stor vekt på å organisere lanseringen av spillapplikasjoner, inkludert å gi muligheten til å kjøre Windows-bygg via Wine og Proton. Prosjektets kildekode er skrevet i C og distribuert (Box86, Box64) under MIT-lisensen.

Prosjektets spesielle trekk er bruken av en hybrid utførelsesmodell, der emulering kun brukes på maskinkoden til selve applikasjonen og spesifikke biblioteker. Typiske systembiblioteker, inkludert libc, libm, GTK, SDL, Vulkan og OpenGL, erstattes med varianter som er opprinnelige for målplattformene. Dermed utføres bibliotekkall uten emulering, noe som gir en betydelig økning i ytelse.

Emulering av kode som det ikke er noen erstatninger for målplattformen utføres ved å bruke en teknikk for dynamisk rekompilering (DynaRec) fra ett sett med maskininstruksjoner til et annet. Sammenlignet med å tolke maskininstruksjoner, viser dynamisk rekompilering 5-10 ganger høyere ytelse.

I ytelsestester overgikk Box86- og Box64-emulatorene QEMU- og FEX-emu-prosjektene betydelig når de ble kjørt på Armhf- og Aarch64-plattformene, og i noen tester (glmark2, openarena) oppnådde de ytelse identisk med å kjøre den native assemblyen på målplattformen. I 7-zip- og dav1d-testene, som utfører intensive beregninger, varierte ytelsen til Box64 fra 27 % til 53 % av ytelsen til den native applikasjonen (til sammenligning viste QEMU et resultat på 5–16 %, og FEX-emu – 13–26 %). En ytterligere sammenligning ble gjort med Rosetta 2-emulatoren, som brukes av Apple til å kjøre x86-kode på systemer med ARM M1-brikken. Rosetta 2 sikret utførelse av testen basert på 7zip med en ytelse på 71 % av den native assemblyen, og Box64 – 57 %.

 Nye versjoner av Box86 og Box64 emulatorer, som lar deg kjøre x86-spill på ARM-systemer

Når det gjelder kompatibilitet med applikasjoner, fungerte omtrent 165 % av de 70 spillene som ble testet. Ytterligere rundt 10 % fungerer, men med visse forbehold og begrensninger. Blant de støttede spillene er WorldOfGoo, Airline Tycoon Deluxe, FTL, Undertale, A Risk of Rain, Cook Serve Delicious og de fleste spillene fra GameMaker. Blant spillene som har problemer, nevnes spill basert på Unity3D-motoren, som er knyttet til Mono-pakken, hvis emulering ikke alltid fungerer ennå på grunn av JIT-kompileringen som brukes i Mono, og som også har ganske høye grafikkkrav, ikke alltid oppnåelig på ARM-kort. Substitusjon av GTK-applikasjonsbiblioteker er for øyeblikket begrenset til GTK2 (substitusjon av GTK3/4 er ikke fullt implementert).

Viktige endringer i de nye utgivelsene:

  • Lagt til binding for Vulkan-biblioteket. Lagt til støtte for Vulkan grafikk API og DXVK (en implementering av DXGI, Direct3D 9, 10 og 11 på toppen av Vulkan).
  • Forbedrede bindinger for GTK-biblioteker. La til bindinger for gstreamer og biblioteker som vanligvis brukes i GTK-applikasjoner.
  • La til innledende støtte (kun tolkningsmodus foreløpig) for RISC-V- og PPC64LE-arkitekturer.
  • Det er gjort rettelser for å forbedre støtten for SteamPlay og Proton-laget, noe som gjør det mulig å kjøre mange Linux- og Windows-spill fra Steam på AArch64-kort som Raspberry Pi 3 og 4.
  • Forbedret minnehåndtering, mmap-oppførsel og sporing av brudd på minnebeskyttelse.
  • Forbedret støtte for klonesystemkallet i libc. La til støtte for nye systemkall.
  • Den dynamiske rekompileringsmotoren har forbedret arbeidet med SSE/x87-registre, lagt til støtte for nye maskinkoder, optimaliserte flyt- og dobbelttallskonverteringer, forbedret intern overgangsbehandling og forenklet tillegg av støtte for nye arkitekturer.
  • Forbedret ELF-fillaster.

Kilde: opennet.ru

Legg til en kommentar