Noves versions dels emuladors Box86 i Box64, que us permeten executar jocs x86 en sistemes ARM

S'han publicat versions dels emuladors Box86 0.2.6 i Box64 0.1.8, dissenyats per executar programes Linux compilats per a arquitectures x86 i x86_64 en equips amb processadors ARM, ARM64, PPC64LE i RISC-V. Els projectes es desenvolupen de forma sincrònica per un equip de desenvolupadors: Box86 es limita a la capacitat d'executar aplicacions x32 de 86 bits i Box64 ofereix la possibilitat d'executar executables de 64 bits. El projecte presta molta atenció a l'organització del llançament d'aplicacions de jocs, inclosa la possibilitat de llançar compilacions de Windows mitjançant Win i Proton. El codi font del projecte està escrit en C i distribuït (Box86, Box64) sota la llicència MIT.

Una característica del projecte és l'ús d'un model d'execució híbrid, en el qual l'emulació només s'aplica al codi màquina de la pròpia aplicació i biblioteques específiques. Les biblioteques típiques del sistema, com libc, libm, GTK, SDL, Vulkan i OpenGL, es substitueixen per opcions natives de les plataformes de destinació. D'aquesta manera, les trucades a la biblioteca s'executen sense emulació, el que resulta en guanys de rendiment significatius.

L'emulació de codi per al qual no hi ha substitucions natives de la plataforma objectiu es realitza mitjançant una tècnica de recompilació dinàmica (DynaRec) d'un conjunt d'instruccions de màquina a un altre. En comparació amb la interpretació de les instruccions de la màquina, la recompilació dinàmica demostra un rendiment 5-10 vegades superior.

A les proves de rendiment, els emuladors Box86 i Box64, quan s'executaven a les plataformes Armhf i Aarch64, van superar significativament els projectes QEMU i FEX-emu, i en proves individuals (glmark2, openarena) van aconseguir un rendiment idèntic a l'execució d'un muntatge natiu de l'objectiu. plataforma. A les proves de 7-zip i dav1d intensives en càlcul, el rendiment de Box64 va oscil·lar entre el 27% i el 53% del rendiment de l'aplicació nativa (en comparació, QEMU va aconseguir un 5-16% i FEX-emu 13-26%). A més, es va fer una comparació amb l'emulador Rosetta 2, utilitzat per Apple per executar codi x86 en sistemes amb el xip M1 ARM. Rosetta 2 va proporcionar la prova basada en 7zip amb un rendiment del 71% de la construcció nativa i Box64 - 57%.

Noves versions dels emuladors Box86 i Box64, que us permeten executar jocs x86 en sistemes ARM

Pel que fa a la compatibilitat amb les aplicacions, dels 165 jocs provats, al voltant del 70% van funcionar amb èxit. Un altre 10% aproximadament funciona, però amb certes reserves i restriccions. Els jocs compatibles inclouen WorldOfGoo, Airline Tycoon Deluxe, FTL, Undertale, A Risk of Rain, Cook Serve Delicious i la majoria de jocs de GameMaker. Entre els jocs amb els quals s'han observat problemes, s'esmenten els jocs basats en el motor Unity3D, que està lligat al paquet Mono, l'emulació del qual no sempre funciona a causa de la compilació JIT que s'utilitza a Mono, i que també té força requisits gràfics elevats que no sempre es poden assolir a les plaques ARM. La substitució de biblioteques d'aplicacions GTK està limitada actualment a GTK2 (la substitució de GTK3/4 no està totalment implementada).

Principals canvis en les noves versions:

  • S'ha afegit l'enllaç per a la biblioteca Vulkan. S'ha afegit suport per a l'API de gràfics Vulkan i DXVK (implementació de DXGI, Direct3D 9, 10 i 11 a la part superior de Vulkan).
  • Enllaços millorats per a biblioteques GTK. S'han afegit enllaços per a gstreamer i biblioteques que s'utilitzen habitualment a les aplicacions GTK.
  • S'ha afegit suport inicial (només mode d'interpretació de moment) per a arquitectures RISC-V i PPC64LE.
  • S'han fet correccions per millorar la compatibilitat amb SteamPlay i la capa Proton. Proporciona la possibilitat d'executar molts jocs de Linux i Windows des de Steam a taulers AArch64 com ara Raspberry Pi 3 i 4.
  • Gestió de la memòria millorada, rendiment mmap i seguiment d'infraccions de protecció de memòria.
  • Suport millorat per a la crida al sistema de clons a libc. S'ha afegit suport per a noves trucades al sistema.
  • El motor de recompilació dinàmica ha millorat el treball amb registres SSE/x87, ha afegit suport per a nous codis de màquina, ha optimitzat les conversions de nombres flotants i dobles, ha millorat el processament de transicions internes i ha simplificat l'addició de suport per a noves arquitectures.
  • Carregador de fitxers ELF millorat.

Font: opennet.ru

Afegeix comentari