Νέες εκδόσεις των εξομοιωτών Box86 και Box64 που σας επιτρέπουν να εκτελείτε παιχνίδια x86 σε συστήματα ARM

Έχουν δημοσιευτεί εκδόσεις εξομοιωτών Box86 0.2.6 και Box64 0.1.8 για την εκτέλεση προγραμμάτων Linux κατασκευασμένα για αρχιτεκτονικές x86 και x86_64 σε επεξεργαστές ARM, ARM64, PPC64LE και RISC-V. Τα έργα αναπτύσσονται σε συγχρονισμό με μία ομάδα ανάπτυξης - Το Box86 περιορίζεται στη δυνατότητα εκτέλεσης εφαρμογών 32-bit x86, ενώ το Box64 παρέχει τη δυνατότητα εκτέλεσης εκτελέσιμων αρχείων 64-bit. Το έργο δίνει μεγάλη προσοχή στην οργάνωση της κυκλοφορίας εφαρμογών παιχνιδιών, συμπεριλαμβανομένης της δυνατότητας εκκίνησης εκδόσεων Windows μέσω του κρασιού και του Proton. Τα κείμενα πηγής του έργου είναι γραμμένα στη γλώσσα C και διανέμονται (Box86, Box64) υπό την άδεια MIT.

Ένα χαρακτηριστικό του έργου είναι η χρήση ενός υβριδικού μοντέλου εκτέλεσης, στο οποίο η εξομοίωση εφαρμόζεται μόνο στον κώδικα μηχανής της ίδιας της εφαρμογής και σε συγκεκριμένες βιβλιοθήκες. Οι γενικές βιβλιοθήκες συστήματος, συμπεριλαμβανομένων των libc, libm, GTK, SDL, Vulkan και OpenGL, αντικαθίστανται με παραλλαγές εγγενείς στις πλατφόρμες-στόχους. Έτσι, οι κλήσεις βιβλιοθήκης εκτελούνται χωρίς εξομοίωση, γεγονός που επιτρέπει σημαντική αύξηση της απόδοσης.

Η εξομοίωση κώδικα που δεν έχει εγγενείς αντικαταστάσεις για την πλατφόρμα προορισμού εκτελείται χρησιμοποιώντας την τεχνική δυναμικής ανασύνταξης (DynaRec) από το ένα σύνολο εντολών μηχανής στο άλλο. Σε σύγκριση με την ερμηνεία των οδηγιών του μηχανήματος, η δυναμική επανασύνταξη δείχνει 5-10 φορές υψηλότερη απόδοση.

Σε δοκιμές απόδοσης, όταν εκτελούνταν στις πλατφόρμες Armhf και Aarch86, οι εξομοιωτές Box64 και Box64 ξεπέρασαν σημαντικά τα έργα QEMU και FEX-emu και σε ορισμένες δοκιμές (glmark2, openarena) πέτυχαν απόδοση πανομοιότυπη με την εκτέλεση ενός συγκροτήματος εγγενούς στην πλατφόρμα προορισμού . Στα σημεία αναφοράς 7-zip και dav1d με ένταση υπολογιστών, η απόδοση του Box64 ήταν μεταξύ 27% και 53% αυτής της εγγενούς εφαρμογής (σε σύγκριση με το QEMU στο 5-16% και το FEX-emu στο 13-26%). Επιπλέον, έγινε σύγκριση με τον εξομοιωτή Rosetta 2 που χρησιμοποιείται από την Apple για την εκτέλεση κώδικα x86 σε συστήματα με τσιπ ARM ​​M1. Το 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. Προστέθηκε υποστήριξη για το API γραφικών Vulkan και DXVK (υλοποίηση 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.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο