Πώς λειτουργεί η μετάφραση x86 στα Windows στο Arm;

click fraud protection

Πολλές εφαρμογές Windows γράφτηκαν για x86, και ωστόσο μπορούν να λειτουργήσουν σε Arm CPU. Να πώς είναι δυνατόν.

Τα Windows ήταν πάντα φτιαγμένα για Επεξεργαστές x86 από την Intel και την AMD, αλλά από τότε που τα Windows RT κυκλοφόρησαν πριν από μια δεκαετία για smartphone, το λειτουργικό σύστημα γίνεται σιγά-σιγά πιο φιλικό προς Βραχίονες CPU. Σήμερα, τόσο τα Windows 10 όσο και τα Windows 11 προσφέρουν πλήρη υποστήριξη για Arm CPUs, αλλά υπάρχει ένα πρόβλημα. Ενώ το ίδιο το λειτουργικό σύστημα λειτουργεί μια χαρά σε αυτές τις CPU, οι περισσότερες εφαρμογές δεν έχουν κυκλοφορήσει μια έκδοση συμβατή με Arm. Παρόλο που τα Windows μπορούν να εκτελούνται σε τσιπ Arm, το να υπάρχουν λίγα προγράμματα για χρήση στην πραγματικότητα θα ήταν πρόβλημα.

Ωστόσο, η Microsoft έχει ένα κόλπο στο μανίκι της: έναν εξομοιωτή για την εκτέλεση εφαρμογών x86 σε μηχανήματα που βασίζονται σε βραχίονα. Είναι το βασικό στοιχείο που έχει δώσει τη δυναμική του στα Windows στο Arm από τότε που κυκλοφόρησε ο μεταφραστής το 2017. Δείτε πώς λειτουργεί ο εξομοιωτής και γιατί οι υπολογιστές Arm πρέπει να τον χρησιμοποιούν εάν θέλουν να εκτελούν λογισμικό που έχει σχεδιαστεί για τσιπ x86.

Εξομοίωση κωδικού x86 για Arm CPU σε πραγματικό χρόνο

Η ιδέα της εξομοίωσης κώδικα που έχει κατασκευαστεί για ένα είδος επεξεργαστή, ώστε να μπορεί να εκτελεστεί σε άλλο, δεν είναι κάτι καινούργιο. Έτσι λειτουργεί η εξομοίωση παιχνιδιών, η οποία χρησιμοποιείται ευρέως για την εκτέλεση παλαιών βιντεοπαιχνιδιών σε νέες συσκευές με πολύ διαφορετικό υλικό. Όταν εκτελείτε μια εφαρμογή x86 σε έναν υπολογιστή Arm, τα Windows λαμβάνουν μπλοκ του κώδικα της εφαρμογής και τον μεταγλωττίζουν σε κάτι που μπορεί να εκτελεστεί σε ένα τσιπ Arm. Όλα αυτά γίνονται σε πραγματικό χρόνο και τα Windows πρέπει να αποθηκεύουν προσωρινά όλο τον κώδικα που έχει μεταφραστεί, πράγμα που σημαίνει ότι δεν χρειάζεται να μεταφράζει ξανά και ξανά.

Δυστυχώς, η απόδοση θα είναι χειρότερη στις προσομοιωμένες εφαρμογές σε σύγκριση με τον κώδικα που έχει σχεδιαστεί για το υλικό. Είναι δύσκολο να πούμε πόση απόδοση χάνετε εκτελώντας εξομοιωμένο κώδικα στα Windows, καθώς τα δεδομένα δοκιμών είναι πολύ αραιά, αλλά για σύγκριση, Μεταφραστής Rosetta 2 της Apple (το οποίο επίσης μεταφράζει τις εφαρμογές x86 σε Arm) χάνει περίπου 20%. Είναι δυνατό να μειωθεί αυτός ο αριθμός, αλλά συνήθως, η εξομοίωση και η μετάφραση έχουν ως αποτέλεσμα ποινή απόδοσης ανεξάρτητα από το τι.

Γιατί οι εφαρμογές x86 δεν μπορούν να εκτελεστούν στο Arm χωρίς εξομοίωση

Ίσως αναρωτιέστε γιατί το λογισμικό πρέπει να γράφεται ειδικά για x86, Arm και άλλα είδη CPU. Ανέρχεται στο διαφορά στην αρχιτεκτονική, και σε αυτήν την περίπτωση, μιλάμε για την αρχιτεκτονική συνόλου εντολών (ISA). Αποτελούν τον πιο θεμελιώδη σχεδιασμό ενός επεξεργαστή και καθορίζουν εάν κάτι απλό όπως ο πολλαπλασιασμός ή κάτι πολύπλοκο όπως το AVX μπορεί να γίνει εγγενώς. Η αλλαγή του ISA επηρεάζει τον πιο θεμελιώδη τρόπο αλληλεπίδρασης του λογισμικού με το υλικό, μέχρι τα βασικά και τα μηδενικά που διαβάζει η CPU.

Το x86 είναι το ISA των επεξεργαστών Intel και AMD, οι οποίες ιστορικά ήταν οι μοναδικές CPU στις οποίες μπορούν ακόμη και να λειτουργήσουν τα Windows. Ο βραχίονας, εν τω μεταξύ, έχει χρησιμοποιηθεί κυρίως για smartphone και η επικάλυψη μεταξύ λογισμικού υπολογιστή και λογισμικού τηλεφώνου είναι πολύ μικρή. Φυσικά, τα περισσότερα προγράμματα είναι κατασκευασμένα είτε για x86 είτε για Arm, και για τα Windows on Arm, αυτό ήταν ένα τεράστιο πρόβλημα επειδή Η μετάφραση δεν κυκλοφόρησε το 2020, ενώ το Windows RT (η πρώτη έκδοση των Windows που υποστηρίζει Arm) κυκλοφόρησε στο 2012.

Έχει περάσει περίπου μια δεκαετία από τότε που τα Windows άρχισαν να υποστηρίζουν το Arm, οπότε πού βρίσκονται όλες οι εγγενείς εφαρμογές; Το πρωταρχικό ζήτημα είναι ότι χρειάζεται χρόνος και τεχνογνωσία για να ξαναγράψετε λογισμικό για διαφορετικό ISA, ειδικά εάν οι προγραμματιστές θέλουν να το κάνουν καλά. Οι προγραμματιστές που δεν λαμβάνουν την κατάλληλη φροντίδα για να μεταφέρουν μια εφαρμογή από το ένα ISA στο άλλο μπορεί να έχουν ως αποτέλεσμα δυσλειτουργίες και σφάλματα. Ένα εξαιρετικό παράδειγμα αυτού είναι το Photoshop για Windows στο Arm. Εκτελείται εγγενώς σε Windows στο Arm, ακόμα στην κριτική μας για το Lenovo Thinkpad X13s, αντιμετωπίσαμε πολλά σφάλματα και πολλές προειδοποιήσεις ότι το OpenCL και το OpenGL δεν υποστηρίζονταν. Σε συνδυασμό με μια πολύ μικρότερη βάση χρηστών που χρησιμοποιούν το Arm στα Windows, υπάρχει λιγότερο κίνητρο για τους προγραμματιστές να ενδιαφέρονται.

Έτσι, όταν οι προγραμματιστές δεν μπορούν ή δεν θέλουν να αφιερώσουν τους πόρους για τη δημιουργία εγγενούς λογισμικού, η εναλλακτική είναι η εξομοίωση. Αν και η μετάφραση εφαρμογών x86 για Windows στο Arm δεν είναι τέλεια, είναι εντυπωσιακό ότι λειτουργεί καθόλου και μερικές φορές αξίζει να γνωρίζουμε ότι η εφαρμογή θα εκτελείται όπως αναμένεται να χάσει την απόδοση. Τουλάχιστον έως ότου τα Windows on Arm φτάσουν στο σημείο όπου οι προγραμματιστές δεν μπορούν πλέον να το αγνοήσουν, η μετάφραση και η εξομοίωση του δίνουν την απαραίτητη ώθηση στο οικοσύστημα υλικού-λογισμικού του.