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 биттик аткарылуучу файлдарды иштетүү мүмкүнчүлүгүн берет. Долбоор оюн тиркемелерин ишке киргизүүнү уюштурууга чоң көңүл бурат, анын ичинде вино жана Протон аркылуу 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 файл жүктөгүч.

Source: opennet.ru

Комментарий кошуу