ARM жүйелерінде x86 ойындарын іске қосуға мүмкіндік беретін Box64 және Box86 эмуляторларының жаңа нұсқалары

ARM, ARM86, PPC0.2.6LE және RISC-V процессорлары бар жабдықта x64 және x0.1.8_86 архитектуралары үшін құрастырылған Linux бағдарламаларын іске қосуға арналған Box86 64 және Box64 64 эмуляторларының шығарылымдары жарияланды. Жобаларды әзірлеушілердің бір тобы синхронды түрде әзірлейді - Box86 32 биттік x86 қолданбаларын іске қосу мүмкіндігімен шектеледі, ал Box64 64 биттік орындалатын файлдарды іске қосу мүмкіндігін береді. Жоба ойын қолданбаларын іске қосуды ұйымдастыруға, соның ішінде шарап пен Proton арқылы Windows құрастыруларын іске қосу мүмкіндігін қамтамасыз етуге үлкен көңіл бөледі. Жобаның бастапқы коды C тілінде жазылған және MIT лицензиясы бойынша таратылады (Box86, Box64).

Жобаның ерекшелігі гибридті орындау үлгісін пайдалану болып табылады, онда эмуляция тек қосымшаның машиналық кодына және нақты кітапханаларға қолданылады. Әдеттегі жүйелік кітапханалар, соның ішінде libc, libm, GTK, SDL, Vulkan және OpenGL, мақсатты платформаларға тән опциялармен ауыстырылады. Осылайша, кітапхана шақырулары эмуляциясыз орындалады, нәтижесінде айтарлықтай өнімділік артады.

Мақсатты платформаға тән алмастырулары жоқ кодты эмуляциялау бір машиналық нұсқаулар жинағынан екіншісіне динамикалық қайта құрастыру (DynaRec) әдісі арқылы орындалады. Машиналық нұсқауларды түсіндірумен салыстырғанда, динамикалық қайта құрастыру 5-10 есе жоғары өнімділікті көрсетеді.

Өнімділік сынақтарында Box86 және Box64 эмуляторлары Armhf және Aarch64 платформаларында орындалғанда, QEMU және FEX-emu жобаларынан айтарлықтай асып түсті және жеке сынақтарда (glmark2, openarena) олар мақсатқа арналған жинақты іске қосумен бірдей өнімділікке қол жеткізді. платформа. Есептеуді қажет ететін 7-zip және dav1d сынақтарында Box64 өнімділігі жергілікті қолданба өнімділігінің 27%-дан 53%-ға дейін ауытқиды (салыстыру үшін QEMU 5-16% және FEX-emu - 13-26% нәтиже көрсетті. ). Бұған қоса, Apple M2 ARM чипі бар жүйелерде x86 кодын іске қосу үшін пайдаланатын Rosetta 1 эмуляторымен салыстыру жүргізілді. Rosetta 2 7zip негізіндегі сынақты жергілікті құрылымның 71% және Box64 - 57% өнімділігімен қамтамасыз етті.

ARM жүйелерінде x86 ойындарын іске қосуға мүмкіндік беретін Box64 және Box86 эмуляторларының жаңа нұсқалары

Қолданбалармен үйлесімділікке келетін болсақ, сыналған 165 ойынның шамамен 70% сәтті жұмыс істеді. Тағы 10% жұмыс істейді, бірақ белгілі бір ескертпелер мен шектеулер бар. Қолдау көрсетілетін ойындарға WorldOfGoo, Airline Tycoon Deluxe, FTL, Undertale, A Risk of Rain, Cook Service Delicious және GameMaker ойындарының көпшілігі кіреді. Мәселелер атап өтілген ойындардың ішінде Mono пакетімен байланыстырылған Unity3D қозғалтқышына негізделген ойындарды атап өтуге болады, олардың эмуляциясы Mono-да қолданылатын JIT компиляциясының арқасында әрдайым жұмыс істемейді, сонымен қатар әділетті. ARM тақталарында әрқашан қол жеткізе бермейтін жоғары графикалық талаптар. GTK қолданбаларының кітапханаларын ауыстыру қазіргі уақытта GTK2-мен шектелген (GTK3/4 ауыстыру толығымен орындалмаған).

Жаңа шығарылымдардағы негізгі өзгерістер:

  • Вулкан кітапханасы үшін қосылды. Vulkan және DXVK графикалық API үшін қосымша қолдау (Vulkan үстіне DXGI, Direct3D 9, 10 және 11 енгізу).
  • GTK кітапханалары үшін жақсартылған байланыстар. GTK қолданбаларында жиі қолданылатын gstreamer және кітапханалар үшін қосылды.
  • RISC-V және PPC64LE архитектуралары үшін бастапқы қолдау (әзірше тек түсіндіру режимі) қосылды.
  • SteamPlay және Proton қабатын қолдауды жақсарту үшін түзетулер жасалды. Raspberry Pi 64 және 3 сияқты AArch4 тақталарында Steam жүйесінен көптеген Linux және Windows ойындарын іске қосу мүмкіндігін береді.
  • Жақсартылған жадты басқару, mmap өнімділігі және жадты қорғауды бұзуды қадағалау.
  • libc жүйесінде клондық жүйе шақыруына жақсартылған қолдау. Жаңа жүйелік қоңырауларға қолдау қосылды.
  • Динамикалық қайта құрастыру механизмі SSE/x87 регистрлерімен жұмысты жақсартты, жаңа машина кодтарына қолдау қосты, қалқымалы және қос сандарды оңтайландырылған түрлендірулер, ішкі ауысуларды өңдеуді жақсарту және жаңа архитектуралар үшін қолдауды қосуды жеңілдету.
  • Жақсартылған ELF файл жүктеушісі.

Ақпарат көзі: opennet.ru

пікір қалдыру