Nowe wersje emulatorów Box86 i Box64, pozwalających na uruchamianie gier x86 w systemach ARM

Opublikowane zostały wydania emulatorów Box86 0.2.6 i Box64 0.1.8, przeznaczonych do uruchamiania programów Linux, skompilowanych dla architektur x86 i x86_64, na sprzęcie z procesorami ARM, ARM64, PPC64LE i RISC-V. Projekty rozwijane są równolegle przez ten sam zespół programistów — Box86 ogranicza się do uruchamiania 32-bitowych aplikacji x86, natomiast Box64 umożliwia uruchamianie 64-bitowych plików wykonywalnych. Projekt kładzie duży nacisk na organizację uruchamiania aplikacji gier, w tym umożliwiając uruchamianie wydań Windows za pomocą wine i Proton. Kody źródłowe projektu są napisane w języku C i są udostępniane (Box86, Box64) na licencji MIT.

Cechą charakterystyczną projektu jest zastosowanie hybrydowego modelu wykonywania, w którym emulacja stosowana jest tylko do kodu maszynowego samej aplikacji oraz specyficznych bibliotek. Typowe biblioteki systemowe, w tym libc, libm, GTK, SDL, Vulkan i OpenGL, są zastępowane wariantami rodzimymi dla docelowych platform. W ten sposób wywołania biblioteczne są realizowane bez emulacji, co pozwala na znaczne zwiększenie wydajności.

Emulacja kodu, dla którego brak native'owych zamienników na docelowej platformie, realizowana jest przy użyciu techniki dynamicznej rekompilacji (DynaRec) z jednego zestawu instrukcji maszynowych na inny. W porównaniu z interpretacją instrukcji maszynowych, dynamiczna rekompilacja wykazuje 5-10 razy wyższą wydajność.

W testach wydajnościowych emulatory Box86 i Box64 na platformach Armhf i Aarch64 znacznie wyprzedziły projekty QEMU i FEX-emu, a w niektórych testach (glmark2, openarena) uzyskano wydajność równą uruchomieniu wersji natywnej dla docelowej platformy. W testach 7-zip i dav1d, wykonujących intensywne obliczenia, wydajność Box64 wyniosła od 27% do 53% wydajności natywnej aplikacji (dla porównania, QEMU uzyskał wynik od 5% do 16%, a FEX-emu — od 13% do 26%). Dodatkowo dokonano porównania z emulatorem Rosetta 2, stosowanym przez firmę Apple do uruchamiania kodu x86 na systemach z chipem ARM M1. Rosetta 2 zapewniła wykonanie testu na bazie 7zip z wydajnością 71% wersji natywnej, a Box64 — 57%.

Nowe wersje emulatorów Box86 i Box64, pozwalających na uruchamianie gier x86 w systemach ARM

Jeśli chodzi o zgodność z aplikacjami, wśród 165 przetestowanych gier, około 70% działa prawidłowo. Około 10% działa, ale z pewnymi zastrzeżeniami i ograniczeniami. Wśród wspieranych gier znajdują się WorldOfGoo, Airline Tycoon Deluxe, FTL, Undertale, A Risk of Rain, Cook Serve Delicious oraz większość gier od firmy GameMaker. W przypadku gier, z którymi występują problemy, wymienia się tytuły oparte na silniku Unity3D, który wymaga pakietu Mono, którego emulacja nie zawsze działa poprawnie z powodu zastosowanej w Mono kompilacji JIT, a także ma stosunkowo wysokie wymagania graficzne, które nie zawsze są osiągalne na platformach ARM. Możliwości podmiany bibliotek w aplikacjach GTK ograniczają się na razie do GTK2 (podmiana GTK3/4 nie jest jeszcze całkowicie zrealizowana).

Podstawowe zmiany w nowych wydaniach:

  • Dodano opakowanie dla biblioteki Vulkan. Dodano wsparcie dla graficznego API Vulkan oraz DXVK (implementacja DXGI, Direct3D 9, 10 i 11 na Vulkanie).
  • Ulepszono opakowania dla bibliotek GTK. Dodano opakowania dla gstreamer oraz bibliotek zwykle używanych w aplikacjach GTK.
  • Dodano wstępną obsługę (na razie tylko tryb interpretacji) architektur RISC-V i PPC64LE.
  • Wprowadzono poprawki mające na celu poprawienie wsparcia dla SteamPlay oraz warstwy Proton. Umożliwiono uruchamianie wielu gier Linux i Windows z Steam na płytkach AArch64, takich jak Raspberry Pi 3 i 4.
  • Ulepszono zarządzanie pamięcią, działanie mmap oraz monitorowanie naruszeń ochrony pamięci.
  • Ulepszono wsparcie dla wywołania systemowego clone w libc. Dodano wsparcie dla nowych wywołań systemowych.
  • W silniku dynamicznej rekonstrukcji ulepszono obsługę rejestrów SSE/x87, dodano wsparcie dla nowych kodów maszynowych, zoptymalizowano konwersje liczb float i double, poprawiono obsługę wewnętrznych przejść oraz uproszczono dodawanie wsparcia dla nowych architektur.
  • Ulepszono program rozruchowy dla plików w formacie ELF.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster