Nove različice emulatorjev Box86 in Box64, ki vam omogočajo poganjanje iger x86 na sistemih ARM

Objavljeni sta bili izdaji emulatorjev Box86 0.2.6 in Box64 0.1.8, zasnovanih za izvajanje programov Linux, prevedenih za arhitekturi x86 in x86_64 na opremi s procesorji ARM, ARM64, PPC64LE in RISC-V. Projekte sinhrono razvija ena ekipa razvijalcev – Box86 je omejen na zmožnost zagona 32-bitnih x86 aplikacij, Box64 pa omogoča zagon 64-bitnih izvršljivih datotek. Projekt posveča veliko pozornosti organizaciji zagona igralnih aplikacij, vključno z zagotavljanjem možnosti za zagon gradenj sistema Windows prek vina in Protona. Izvorna koda za projekt je napisana v C in distribuirana (Box86, Box64) pod licenco MIT.

Značilnost projekta je uporaba hibridnega izvedbenega modela, pri katerem se emulacija uporablja samo za strojno kodo same aplikacije in posebnih knjižnic. Tipične sistemske knjižnice, vključno z libc, libm, GTK, SDL, Vulkan in OpenGL, so nadomeščene z možnostmi, ki so izvorne za ciljne platforme. Na ta način se klici knjižnice izvajajo brez emulacije, kar ima za posledico znatno izboljšanje zmogljivosti.

Emulacija kode, za katero ni nadomestkov, ki izvirajo iz ciljne platforme, se izvaja s tehniko dinamičnega ponovnega prevajanja (DynaRec) iz enega nabora strojnih ukazov v drugega. V primerjavi s tolmačenjem strojnih navodil dinamično ponovno prevajanje pokaže 5-10-krat večjo zmogljivost.

V testih zmogljivosti sta emulatorja Box86 in Box64, ko sta bila izvedena na platformah Armhf in Aarch64, precej prehitela projekta QEMU in FEX-emu, v posameznih testih (glmark2, openarena) pa sta dosegla zmogljivost, ki je enaka izvajanju sestava, ki je izvorno na cilju platforma. V računalniško intenzivnih testih 7-zip in dav1d je zmogljivost Box64 znašala od 27 % do 53 % zmogljivosti izvorne aplikacije (za primerjavo, QEMU je pokazal rezultate 5-16 %, FEX-emu pa 13-26 %. ). Poleg tega je bila narejena primerjava z emulatorjem Rosetta 2, ki ga Apple uporablja za izvajanje kode x86 v sistemih s čipom M1 ARM. Rosetta 2 je zagotovila test, ki temelji na 7zip, z zmogljivostjo 71 % izvorne zgradbe, Box64 pa 57 %.

Nove različice emulatorjev Box86 in Box64, ki vam omogočajo poganjanje iger x86 na sistemih ARM

Kar se tiče združljivosti z aplikacijami, je od 165 testiranih iger približno 70% uspešno delovalo. Približno 10% dela, vendar z določenimi zadržki in omejitvami. Podprte igre vključujejo WorldOfGoo, Airline Tycoon Deluxe, FTL, Undertale, A Risk of Rain, Cook Serve Delicious in večino iger GameMaker. Med igrami, pri katerih so bile opažene težave, so omenjene igre, ki temeljijo na motorju Unity3D, ki je vezan na paket Mono, katerega emulacija zaradi prevajanja JIT, ki se uporablja v Monu, ne deluje vedno in ima tudi precej visoke grafične zahteve, ki niso vedno dosegljive na ploščah ARM. Zamenjava aplikacijskih knjižnic GTK je trenutno omejena na GTK2 (zamenjava GTK3/4 ni v celoti izvedena).

Glavne spremembe v novih izdajah:

  • Dodana vezava za knjižnico Vulkan. Dodana podpora za grafični API Vulkan in DXVK (implementacija DXGI, Direct3D 9, 10 in 11 na vrhu Vulkana).
  • Izboljšane vezave za knjižnice GTK. Dodane so bile vezave za gstreamer in knjižnice, ki se običajno uporabljajo v aplikacijah GTK.
  • Dodana začetna podpora (zaenkrat samo način interpretacije) za arhitekturi RISC-V in PPC64LE.
  • Izvedeni so bili popravki za izboljšanje podpore za SteamPlay in sloj Proton. Omogoča izvajanje številnih iger za Linux in Windows iz Steama na ploščah AArch64, kot sta Raspberry Pi 3 in 4.
  • Izboljšano upravljanje pomnilnika, zmogljivost mmap in sledenje kršitvam zaščite pomnilnika.
  • Izboljšana podpora za sistemski klic kloniranja v libc. Dodana podpora za nove sistemske klice.
  • Motor za dinamično ponovno prevajanje je izboljšal delo z registri SSE/x87, dodal podporo za nove strojne kode, optimiziral pretvorbe float in dvojnih števil, izboljšal obdelavo notranjih prehodov in poenostavil dodajanje podpore za nove arhitekture.
  • Izboljšan nalagalnik datotek ELF.

Vir: opennet.ru

Dodaj komentar