Wydanie Box64 0.4.0, emulatora do uruchamiania gier x86 na systemach ARM64, RISC-V i Loongarch64

Opublikowano wydanie emulatora Box64 0.4.0, przeznaczonego do uruchamiania programów Linux skompilowanych dla architektury x86_64 na sprzęcie z procesorami ARM64, RISC-V oraz Loongarch64. Projekt kładzie duży nacisk na uruchamianie aplikacji gier i zapewnia możliwość uruchamiania wersji Windows za pomocą Wine i Proton. Kody źródłowe projektu są napisane w języku C i udostępniane na licencji MIT.

Cechą projektu jest zastosowanie hybrydowego modelu wykonania, w którym emulacja stosowana jest tylko do kodu maszynowego samej aplikacji i specyficznych bibliotek. Typowe biblioteki systemowe, w tym libc, libm, GTK, SDL, Vulkan i OpenGL, są zastępowane wariantami dostosowanymi do docelowych platform. Dzięki temu wywołania bibliotek są wykonywane bez emulacji, co pozwala osiągnąć znaczny wzrost wydajności.

Emulacja kodu, dla którego brakuje natywnych zamienników dla docelowej platformy, odbywa się przy użyciu techniki dynamicznej rekompilacji (DynaRec) z jednego zestawu instrukcji maszynowych do drugiego. W porównaniu z interpretacją instrukcji maszynowych, dynamiczna rekompilacja wykazuje 5-10 razy większą wysoką wydajność.

W nowej wersji:

  • Przedstawiono zunifikowany dekoder prefiksów kodów operacji (prefix opcode decoder), zaangażowany w interpreterze oraz we wszystkich backendach dynamicznej rekompilacji (DynaRec). Nowy dekoder bardziej uniwersalnie przetwarza rzadkie kombinacje prefiksów kodów operacji i pozwala uniknąć specyficznych „haków” oraz duplikacji kodu w interpreterze i backendach DynaRec. Przeróbka dekodera doprowadziła do usunięcia zbędnego kodu, uproszczenia utrzymania bazy kodu i umożliwienia DynaRec pracy z nietypowymi kombinacjami prefiksów kodów operacji.
  • Rozpoczęto prace nad mechanizmem usuwania z pamięci bloków kodu, skonwertowanych na kod natywny, które nie są już używane. Tego rodzaju optymalizacja pozwala zredukować zużycie pamięci podczas uruchamiania aplikacji, które wykonują dużą liczbę operacji przy uruchomieniu, takich jak Steam oraz aplikacje korzystające z libcef.
  • Udoskonalono wsparcie dla architektury ARM64: Wdrożono profil kompilacji dla procesora NVIDIA GB10. W backendzie dynamicznej rekompilacji (DynaRec) kontynuowano wdrażanie technik optymalizacji pętli, takich jak wynoszenie operacji ustawiania rejestrów XMM/YMM z ciała pętli.
  • Zwiększono stabilność i wydajność backendu dynamicznej rekompilacji dla architektury RISC-V. Zapewniono poprawne uruchamianie Steam, Proton i Wine, ale do obsługi chronionych treści DRM, które wymagają emulacji wywołań systemowych Windows, potrzebny jest sprzęt z obsługą 48-bitowej przestrzeni adresowej (SV48) lub użycie zmodyfikowanych wersji Wine i Proton.
  • Rozwój backendu dla architektury Loongarch znacznie posunął się do przodu. Jest już gotowy do uruchomienia Steam, Wine i Proton, jednak wciąż ustępuje funkcjonalnością backendowi dla systemów ARM64. Wymagana jest użycie stron pamięci w jądrze o rozmiarze 4K (domyślnie dla Loongarch zazwyczaj ustawiane jest 16K). Wydajność jest już wystarczająca do uruchamiania gier na CPU Loongarch 3A6000 (2,5 GHz z 4 fizycznymi rdzeniami).
    Odtwarzaj wideo
  • Zwiększona została stabilność trybu Box32, który zapewnia wsparcie dla 32-bitowych plików wykonywalnych w Box64. W tym trybie odnotowano poprawę stabilności działania Steam na wszystkich architekturach oraz możliwość korzystania z wewnętrznych nakładek w niektórych grach OpenGL.

Ź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