Box86 և Box64 էմուլյատորների նոր տարբերակները, որոնք թույլ են տալիս գործարկել x86 խաղեր ARM համակարգերում

Հրապարակվել են Box86 0.2.6 և Box64 0.1.8 էմուլյատորների թողարկումները, որոնք նախատեսված են x86 և x86_64 ճարտարապետությունների համար կազմված Linux ծրագրերը ARM, ARM64, PPC64LE և RISC-V պրոցեսորներով սարքավորումների վրա գործարկելու համար: Նախագծերը մշակվում են համաժամանակյա ծրագրավորողների մեկ թիմի կողմից. Box86-ը սահմանափակված է 32-բիթանոց x86 հավելվածներ գործարկելու ունակությամբ, իսկ Box64-ը տրամադրում է 64-բիթանոց գործարկվող նյութեր գործարկելու հնարավորություն: Նախագիծը մեծ ուշադրություն է հատկացնում խաղային հավելվածների գործարկման կազմակերպմանը, այդ թվում՝ Windows-ի բլոկները գինու և Proton-ի միջոցով գործարկելու հնարավորության ապահովմանը: Նախագծի սկզբնական կոդը գրված է C-ով և տարածվում է (Box86, Box64) MIT լիցենզիայի ներքո:

Նախագծի առանձնահատկությունն է հիբրիդային կատարման մոդելի օգտագործումը, որում էմուլյացիան կիրառվում է միայն բուն հավելվածի մեքենայի կոդի և կոնկրետ գրադարանների վրա: Տիպիկ համակարգի գրադարանները, ներառյալ 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%: ) Բացի այդ, համեմատություն է կատարվել Rosetta 2 էմուլյատորի հետ, որն օգտագործվում է Apple-ի կողմից x86 կոդը գործարկելու համար M1 ARM չիպով համակարգերում: Rosetta 2-ը տրամադրել է 7zip-ի վրա հիմնված թեստը բնօրինակի 71% կատարողականությամբ, իսկ Box64-ը` 57%:

Box86 և Box64 էմուլյատորների նոր տարբերակները, որոնք թույլ են տալիս գործարկել x86 խաղեր ARM համակարգերում

Ինչ վերաբերում է հավելվածների հետ համատեղելիությանը, ապա փորձարկված 165 խաղերից մոտ 70%-ը հաջող է աշխատել։ Մոտ 10 տոկոս էլ աշխատում է, բայց որոշակի վերապահումներով ու սահմանափակումներով։ Աջակցվող խաղերը ներառում են WorldOfGoo, Airline Tycoon Deluxe, FTL, Undertale, A Risk of Rain, Cook Serve Delicious և GameMaker խաղերի մեծ մասը: Խաղերի շարքում, որոնց հետ կապված խնդիրներ են նշվել, նշվում են Unity3D շարժիչի վրա հիմնված խաղերը, որը կապված է Mono փաթեթի հետ, որի էմուլյացիան միշտ չէ, որ աշխատում է Mono-ում օգտագործվող JIT կոմպիլացիայի պատճառով, ինչպես նաև բավականին գրաֆիկական բարձր պահանջներ, որոնք միշտ չէ, որ հասանելի են ARM տախտակների վրա: GTK հավելվածների գրադարանների փոխարինումը ներկայումս սահմանափակված է GTK2-ով (GTK3/4-ի փոխարինումն ամբողջությամբ չի իրականացվում):

Հիմնական փոփոխությունները նոր թողարկումներում.

  • Ավելացվել է պարտադիր Vulkan գրադարանի համար: Ավելացվեց Vulkan և DXVK գրաֆիկական API-ի աջակցություն (DXGI, Direct3D 9, 10 և 11-ի իրականացում Vulkan-ի վերևում):
  • Բարելավված կապեր GTK գրադարանների համար: Ավելացվել են կապեր gstreamer-ի և գրադարանների համար, որոնք սովորաբար օգտագործվում են GTK հավելվածներում:
  • Ավելացվել է նախնական աջակցություն (այժմ միայն մեկնաբանման ռեժիմ) RISC-V և PPC64LE ճարտարապետությունների համար:
  • Ուղղումներ են կատարվել SteamPlay-ի և Proton շերտի աջակցությունը բարելավելու համար: Ապահովում է շատ Linux և Windows խաղեր Steam-ից գործարկելու հնարավորություն AArch64 տախտակների վրա, ինչպիսիք են Raspberry Pi 3 և 4:
  • Բարելավված հիշողության կառավարում, mmap-ի կատարողականություն և հիշողության պաշտպանության խախտումների հետևում:
  • Կլոնավորման համակարգի զանգի բարելավված աջակցություն libc-ում: Ավելացվեց նոր համակարգային զանգերի աջակցություն:
  • Դինամիկ վերակոմպիլյացիայի շարժիչը բարելավել է աշխատանքը SSE/x87 ռեգիստրների հետ, ավելացրել է նոր մեքենաների կոդերի աջակցությունը, float և կրկնակի թվերի օպտիմիզացված փոխարկումները, բարելավվել է ներքին անցումների մշակումը և պարզեցրել է նոր ճարտարապետությունների աջակցության ավելացումը:
  • Բարելավված ELF ֆայլի բեռնիչ:

Source: opennet.ru

Добавить комментарий