ตัวจำลอง Box86 และ Box64 เวอร์ชันใหม่ช่วยให้คุณรันเกม x86 บนระบบ ARM

มีการเผยแพร่ตัวจำลอง Box86 0.2.6 และ Box64 0.1.8 ซึ่งออกแบบมาเพื่อรันโปรแกรม Linux ที่คอมไพล์สำหรับสถาปัตยกรรม x86 และ x86_64 บนอุปกรณ์ที่มีโปรเซสเซอร์ ARM, ARM64, PPC64LE และ RISC-V โปรเจ็กต์ได้รับการพัฒนาพร้อมกันโดยทีมนักพัฒนาทีมเดียว - Box86 ถูกจำกัดความสามารถในการรันแอปพลิเคชัน x32 แบบ 86 บิต และ Box64 ให้ความสามารถในการรันไฟล์ปฏิบัติการแบบ 64 บิต โปรเจ็กต์นี้ให้ความสำคัญกับการจัดเตรียมการเปิดตัวแอพพลิเคชั่นเกม รวมถึงความสามารถในการเปิดตัว Windows builds ผ่านทางไวน์และ 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 ซึ่งการจำลองนั้นไม่ได้ผลเสมอไปเนื่องจากการคอมไพล์ JIT ที่ใช้ใน Mono และยังมีค่อนข้าง ข้อกำหนดด้านกราฟิกระดับสูงที่ไม่สามารถทำได้บนบอร์ด 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 เพิ่มการรองรับรหัสเครื่องใหม่ การแปลงตัวเลขทศนิยมและเลขคู่ที่ได้รับการปรับปรุง การประมวลผลการเปลี่ยนแปลงภายในที่ได้รับการปรับปรุง และทำให้การเพิ่มการรองรับสถาปัตยกรรมใหม่ง่ายขึ้น
  • ปรับปรุงตัวโหลดไฟล์ ELF

ที่มา: opennet.ru

เพิ่มความคิดเห็น