Μετάβαση στο περιεχόμενο

MMX

Αναφορά αρχιτεκτονικήςFeex

Το MMX είναι μια πρώιμη επέκταση εντολών packed-integer για x86 που χρησιμοποιεί καταχωρητές 64-bit, οι οποίοι μοιράζονται τον αρχιτεκτονικό χώρο αποθήκευσης με το αρχείο καταχωρητών κινητής υποδιαστολής x87. Αυτή η κοινόχρηστη κατάσταση έχει σημασία κατά την ανάμειξη κώδικα.

Τι πρέπει να γνωρίζετε

Το MMX είναι μια πρώιμη επέκταση εντολών packed-integer για x86 που χρησιμοποιεί καταχωρητές 64-bit, οι οποίοι μοιράζονται τον αρχιτεκτονικό χώρο αποθήκευσης με το αρχείο καταχωρητών κινητής υποδιαστολής x87. Αυτή η κοινόχρηστη κατάσταση έχει σημασία κατά την ανάμειξη κώδικα.

Πώς λειτουργεί

Οι λειτουργίες MMX αντιμετωπίζουν έναν καταχωρητή 64-bit ως πακεταρισμένα ακέραια στοιχεία. Τα ονόματα των καταχωρητών MMX λειτουργούν ως ψευδώνυμα (alias) του χώρου αποθήκευσης των καταχωρητών x87 αντί να παρέχουν μια ανεξάρτητη σύγχρονη διανυσματική κατάσταση. Το EMMS επισημαίνει την κατάσταση των ετικετών (tags) του x87 ως κενή μετά τη χρήση του MMX, ώστε ο μεταγενέστερος κώδικας x87 να μπορεί να χρησιμοποιήσει σωστά τη στοίβα κινητής υποδιαστολής.

Πού είναι χρήσιμο

Το παλαιού τύπου λογισμικό πολυμέσων μπορεί να χρησιμοποιεί το MMX για κορεσμένη αριθμητική byte. Ο νέος κώδικας χρησιμοποιεί συνήθως XMM ή ευρύτερες διανυσματικές δυνατότητες, αποφεύγοντας την αλληλεπίδραση των καταστάσεων MMX/x87. Τα υπάρχοντα δυαδικά αρχεία ενδέχεται να εξακολουθούν να περιέχουν MMX ακόμη και σε έναν πολύ νεότερο επεξεργαστή.

Πώς να ελέγξετε την υποστήριξη και την ενεργοποίηση

Το CPUID.01H:EDX bit 23 απαριθμεί το MMX. Για τον εντοπισμό σφαλμάτων σε παλαιό κώδικα, ελέγξτε τόσο την πραγματική ακολουθία εντολών όσο και τον χειρισμό των EMMS/καταστάσεων. Μια σημαία δυνατότητας δεν μπορεί να διαπιστώσει εάν μια ρουτίνα ακολουθεί σωστά τη σύμβαση κλήσης.

Μια δυνατότητα SIMD περιγράφει εντολές, όχι επιπλέον πυρήνες. Η μορφή της εντολής καθορίζει το εύρος των στοιχείων, το πρόσημο, τη στρογγυλοποίηση, την ευθυγράμμιση και το ποιες λωρίδες αλληλεπιδρούν. Το λογισμικό πρέπει να διατηρεί την κατάσταση των καταχωρητών του ABI και να χρησιμοποιεί ένα υποστηριζόμενο περιβάλλον εκτέλεσης.

Τι δεν καθορίζει η δυνατότητα

Το MMX είναι SIMD ακεραίων, όχι εκτέλεση γενικού σκοπού 64-bit ή υποστήριξη x86-64. Δεν συνεπάγεται το SSE ή μεταγενέστερες επεκτάσεις. Η έλλειψη εκκαθάρισης κατά την ανάμειξη MMX και x87 μπορεί να προκαλέσει προβλήματα ορθότητας που δεν σχετίζονται με το αν ο επεξεργαστής υποστηρίζει τις εντολές.

Συμβατότητα και απόδοση στην πράξη

Μεταγενέστερα ονόματα στην οικογένεια SSE έχουν ξεχωριστά bit δυνατοτήτων. Για ένα ανεπτυγμένο δυαδικό αρχείο, ελέγξτε το πλήρες ελάχιστο σύνολο δυνατοτήτων, συμπεριλαμβανομένων των βιβλιοθηκών και του κώδικα εκκίνησης. Ένα fallback είναι χρήσιμο μόνο εάν δεν εκτελεστεί καμία μη υποστηριζόμενη εντολή πριν από το βήμα επιλογής.

Μια πρακτική λίστα ελέγχου επαλήθευσης

  1. Καταγράψτε το ακριβές μοντέλο επεξεργαστή ή πλατφόρμας και τις εμπλεκόμενες εκδόσεις εφαρμογής, λειτουργικού συστήματος και περιβάλλοντος εκτέλεσης (runtime). Διατηρήστε τη διατύπωση του πραγματικού σφάλματος ή της απαίτησης.
  2. Ελέγξτε τις αναφορές του κατασκευαστή για το συγκεκριμένο μοντέλο και, στη συνέχεια, εξετάστε την πραγματική δυνατότητα και την ενεργοποιημένη κατάσταση στο περιβάλλον όπου εκτελείται το πρόγραμμα.
  3. Συγκρίνετε κάθε απαίτηση του επιλεγμένου εκτελέσιμου αρχείου (binary) ή του backend. Μια δυνατότητα με παρόμοιο όνομα, ένα ψευδώνυμο ή μια ευρεία ετικέτα τεχνολογίας δεν επαρκεί.
  4. Επιβεβαιώστε ότι η εφαρμογή επέλεξε την προβλεπόμενη υλοποίηση. Χρησιμοποιήστε τα τεκμηριωμένα διαγνωστικά της και μια υποστηριζόμενη εναλλακτική λύση (fallback) όταν δεν πληρούνται οι απαιτήσεις.
  5. Κάντε μία υποστηριζόμενη αλλαγή τη φορά και επαναλάβετε τον ίδιο φόρτο εργασίας. Διατηρήστε διαθέσιμη την αρχική διαμόρφωση και τη διαδρομή επαναφοράς.

Εάν η δυνατότητα αναφέρεται αλλά το λογισμικό δεν μπορεί να τη χρησιμοποιήσει

Ξεκινήστε με το ακριβές στοιχείο που αποτυγχάνει. Μια βάση δεδομένων υλικού περιγράφει την καταγεγραμμένη δυνατότητα· το λειτουργικό σύστημα ή ο hypervisor μπορεί να εκθέσει ένα διαφορετικό πραγματικό περιβάλλον. Ένα σφάλμα μη έγκυρης εντολής (illegal-instruction error) απαιτεί επίσης διερεύνηση της πραγματικής εντολής που προκάλεσε το σφάλμα και της έκδοσης του εκτελέσιμου (binary build), καθώς η αλλοίωση δεδομένων ή μια άσχετη μη υποστηριζόμενη εντολή μπορεί να προκαλέσει παρόμοιο σύμπτωμα.

Εγκαταστήστε την έκδοση της εφαρμογής, του προγράμματος οδήγησης ή του περιβάλλοντος εκτέλεσης που υποστηρίζεται για την ακριβή πλατφόρμα και χρησιμοποιήστε τη βασική γραμμή (baseline) ή την εναλλακτική έκδοση (fallback build) που τεκμηριώνει ο κατασκευαστής, εάν χρειάζεται. Μια ενημέρωση λογισμικού δεν μπορεί να δημιουργήσει μια εντολή που λείπει από τον επεξεργαστή. Οι αλλαγές στο υλικολογισμικό (firmware) και στην πολιτική ασφαλείας θα πρέπει να ακολουθούν τη διαδικασία του κατασκευαστή του συστήματος και ένα σχέδιο επαναφοράς και όχι μια γενική συνταγή βελτιστοποίησης.

Πηγές και πεδίο εφαρμογής αυτής της επεξήγησης

Intel 64 and IA-32 Architectures Software Developer's Manual · x86-64 psABI: επίπεδα αρχιτεκτονικής και μικροαρχιτεκτονικής επεξεργαστή

Αυτές οι αναφορές καθορίζουν την αρχιτεκτονική συμπεριφορά και τις απαιτήσεις λογισμικού. Δεν επαληθεύουν ανεξάρτητα κάθε τιμή δυνατότητας σε μια συνδεδεμένη σελίδα μοντέλου υλικού. Για την υποστήριξη του μοντέλου, χρησιμοποιήστε τα στοιχεία τεκμηρίωσης του κατασκευαστή αυτής της σελίδας και ελέγξτε την πραγματική διαμόρφωση του συστήματος. Αυτό το άρθρο δεν παρέχει ημερομηνία δοκιμής επιδόσεων (benchmark), πιστοποίησης ή ανεξάρτητης αξιολόγησης.

Πηγές και επαλήθευση

Συντακτική ιδιοκτησία: Feex. Δεν έχει καταγραφεί ημερομηνία ανεξάρτητης αναθεώρησης. Πώς ερευνούμε.

  • Intel 64 and IA-32 Architectures Software Developer's Manual · Οι τόμοι 1 και 2 περιγράφουν τις κατονομαζόμενες οικογένειες εντολών και το CPUID· ο τόμος 3 περιγράφει την κατάσταση, τη σελιδοποίηση, το VMX και τους ελέγχους προστασίας. Η τεκμηρίωση αρχιτεκτονικής δεν καθορίζει την υποστήριξη για ένα συγκεκριμένο μοντέλο.
  • x86-64 psABI: επίπεδα αρχιτεκτονικής και μικροαρχιτεκτονικής επεξεργαστή · Διεπαφή μηχανής, Αρχιτεκτονική επεξεργαστή: πίνακας βασικών και σωρευτικών δυνατοτήτων v2/v3/v4, έλεγχοι κατάστασης λειτουργικού συστήματος και συστάσεις ανάπτυξης.

Ήταν χρήσιμο αυτό το άρθρο;

Ένα ναι ή όχι είναι αρκετό. Επιλέξτε έναν λόγο εάν θέλετε ή προσθέστε μια σύντομη σημείωση.

Ήταν χρήσιμο αυτό το άρθρο;