Nové verze emulátorů Box86 a Box64, které vám umožňují spouštět hry x86 na systémech ARM

Byla zveřejněna vydání emulátorů Box86 0.2.6 a Box64 0.1.8 pro spouštění linuxových programů vytvořených pro architektury x86 a x86_64 na procesorech ARM, ARM64, PPC64LE a RISC-V. Projekty se vyvíjejí synchronizovaně s jedním vývojovým týmem – Box86 je omezen na schopnost spouštět 32bitové x86 aplikace, zatímco Box64 poskytuje možnost spouštět 64bitové spustitelné soubory. Projekt věnuje velkou pozornost organizaci spouštění herních aplikací, včetně možnosti spouštět sestavení Windows přes víno a Proton. Zdrojové texty projektu jsou napsány v jazyce C a distribuovány (Box86, Box64) pod licencí MIT.

Charakteristickým rysem projektu je použití hybridního exekučního modelu, ve kterém je emulace aplikována pouze na strojový kód samotné aplikace a konkrétní knihovny. Obecné systémové knihovny, včetně libc, libm, GTK, SDL, Vulkan a OpenGL, jsou nahrazeny variantami nativními pro cílové platformy. Volání knihoven se tedy provádějí bez emulace, což umožňuje výrazné zvýšení výkonu.

Emulace kódu, který nemá nativní náhrady pro cílovou platformu, se provádí pomocí techniky dynamické rekompilace (DynaRec) z jedné sady strojových instrukcí do druhé. Ve srovnání s interpretací strojových instrukcí vykazuje dynamická rekompilace 5-10krát vyšší výkon.

Ve výkonnostních testech při běhu na platformách Armhf a Aarch86 emulátory Box64 a Box64 výrazně překonaly projekty QEMU a FEX-emu a v některých testech (glmark2, openarena) dosáhly výkonu identického s provozem sestavy nativní pro cílovou platformu. . Ve výpočetně náročných benchmarcích 7-zip a dav1d byl výkon Box64 mezi 27 % a 53 % výkonu nativní aplikace (ve srovnání s QEMU na 5-16 % a FEX-emu na 13-26 %). Navíc bylo provedeno srovnání s emulátorem Rosetta 2, který Apple používá ke spouštění kódu x86 na systémech s čipem ARM M1. Rosetta 2 provedla test 7zip na 71 % nativního sestavení a Box64 na 57 %.

Nové verze emulátorů Box86 a Box64, které vám umožňují spouštět hry x86 na systémech ARM

Pokud jde o kompatibilitu aplikací, ze 165 testovaných her jich asi 70 % úspěšně vydělalo. Asi o 10 % více práce, ale s určitými výhradami a omezeními. Mezi podporované hry patří WorldOfGoo, Airline Tycoon Deluxe, FTL, Undertale, A Risk of Rain, Cook Serve Delicious a většina her GameMaker. Z her, se kterými jsou zaznamenány problémy, jsou zmíněny hry založené na enginu Unity3D, který je vázán na balíček Mono, jehož emulace zatím ne vždy funguje kvůli kompilaci JIT použité v Mono, a má také poměrně vysokou grafiku požadavky, které nejsou vždy na ARM deskách dosažitelné. Nahrazení knihoven aplikací GTK je v současnosti omezeno na GTK2 (nahrazení GTK3/4 není plně implementováno).

Hlavní změny v nových verzích:

  • Přidána vazba pro knihovnu Vulkan. Přidána podpora pro Vulkan a DXVK grafické API (implementace DXGI, Direct3D 9, 10 a 11 nad Vulkanem).
  • Vylepšené vazby pro knihovny GTK. Přidány vazby pro gstreamer a knihovny běžně používané v aplikacích GTK.
  • Přidána počáteční podpora (zatím pouze režim interpretace) pro architektury RISC-V a PPC64LE.
  • Byly provedeny opravy chyb s cílem zlepšit podporu SteamPlay a vrstvu Proton. Je možné provozovat mnoho her pro Linux a Windows ze Steamu na deskách AArch64, jako jsou Raspberry Pi 3 a 4.
  • Vylepšená správa paměti, chování mmap a sledování porušení ochrany paměti.
  • Vylepšená podpora pro klonování systémového volání v libc. Přidána podpora pro nová systémová volání.
  • V dynamickém rekompilačním enginu byla vylepšena práce s registry SSE/x87, přidána podpora pro nové strojové kódy, optimalizovány převody plovoucích a dvojitých čísel, vylepšeno zpracování interních skoků a podpora nových architektur. zjednodušený.
  • Vylepšený program pro nahrávání souborů ELF.

Zdroj: opennet.ru

Přidat komentář