XSAVE
Το XSAVE είναι ο επεκτάσιμος μηχανισμός του x86 για την αποθήκευση της κατάστασης του επεξεργαστή, όπως οι διανυσματικοί καταχωρητές. Η υποστήριξη υλικού, η ενεργοποίηση από το λειτουργικό σύστημα και τα ενεργοποιημένα στοιχεία κατάστασης αποτελούν ξεχωριστά ζητήματα.
Τι πρέπει να γνωρίζετε
Το XSAVE είναι ο επεκτάσιμος μηχανισμός του x86 για την αποθήκευση της κατάστασης του επεξεργαστή, όπως οι διανυσματικοί καταχωρητές. Η υποστήριξη υλικού, η ενεργοποίηση από το λειτουργικό σύστημα και τα ενεργοποιημένα στοιχεία κατάστασης αποτελούν ξεχωριστά ζητήματα.
Πώς λειτουργεί
Η αρχιτεκτονική XSAVE χρησιμοποιεί μια απαριθμημένη διάταξη κατάστασης και μάσκες για να περιγράψει ποια στοιχεία είναι ενεργοποιημένα και αποθηκεύονται. Το CPUID leaf 0DH περιγράφει τα υποστηριζόμενα στοιχεία και μεγέθη. Το XCR0 ελέγχει τα κατάλληλα στοιχεία κατάστασης χρήστη, ενώ το OSXSAVE ενημερώνει το λογισμικό ότι το λειτουργικό σύστημα ενεργοποίησε το περιβάλλον XSAVE.
Πού είναι χρήσιμο
Ένα περιβάλλον εκτέλεσης (runtime) που αποφασίζει εάν μπορεί να χρησιμοποιήσει AVX χρειάζεται τόσο το bit AVX του επεξεργαστή όσο και την ενεργοποιημένη από το λειτουργικό σύστημα κατάσταση XMM/YMM. Μια υλοποίηση context ή σημάτων πρέπει να δεσμεύει χώρο σύμφωνα με την ενεργοποιημένη κατάσταση και όχι να υποθέτει ότι ένα buffer σταθερού μεγέθους παλαιού τύπου είναι αρκετό.
Πώς να ελέγξετε την υποστήριξη και την ενεργοποίηση
Ελέγξτε το CPUID.01H:ECX bit 26 για το XSAVE και το bit 27 για το OSXSAVE. Μόνο τότε χρησιμοποιήστε το XGETBV όπως επιτρέπεται και εξετάστε τα απαιτούμενα bit του XCR0. Απαριθμήστε το leaf 0DH για τη διάταξη κατάστασης αντί να ορίζετε στατικά ένα μέγεθος από άλλο μηχάνημα.
Οι δυνατότητες διαχείρισης κατάστασης αποτελούν κυρίως ευθύνη του λειτουργικού συστήματος και του runtime. Τα buffers, οι μάσκες, τα μεγέθη στοιχείων, η ευθυγράμμιση και οι κανόνες επαναφοράς πρέπει να συμφωνούν με την αρχιτεκτονική και τον τρόπο εκτέλεσης. Η αποθήκευση μόνο ενός υποσυνόλου μπορεί να καταστρέψει κώδικα που χρησιμοποιεί πρόσθετη ενεργοποιημένη κατάσταση.
Τι δεν καθορίζει η δυνατότητα
Η υποστήριξη XSAVE δεν σημαίνει από μόνη της ότι το AVX, το AVX-512 ή το AMX είναι χρησιμοποιήσιμα. Το XGETBV δεν πρέπει να χρησιμοποιείται πριν διαπιστωθεί η απαιτούμενη υποστήριξη και η ενεργοποίηση από το λειτουργικό σύστημα. Διαφορετικές εντολές της οικογένειας XSAVE έχουν ξεχωριστούς κανόνες απαρίθμησης και διάταξης.
Συμβατότητα και απόδοση στην πράξη
Ο εντοπισμός δυνατοτήτων σε επίπεδο εφαρμογής θα πρέπει να χρησιμοποιεί μια συντηρούμενη διεπαφή runtime όταν είναι δυνατόν. Διακρίνετε την υποστήριξη υλικού από την ενεργοποίηση του λειτουργικού συστήματος και, για δυναμικές δυνατότητες, από τα δικαιώματα διεργασίας. Μια ετικέτα CPU από μόνη της δεν μπορεί να αποδείξει ότι μια αυθαίρετη ακολουθία αποθήκευσης/επαναφοράς είναι σωστή.
Μια πρακτική λίστα ελέγχου επαλήθευσης
- Καταγράψτε το ακριβές μοντέλο επεξεργαστή ή πλατφόρμας και τις εμπλεκόμενες εκδόσεις εφαρμογής, λειτουργικού συστήματος και περιβάλλοντος εκτέλεσης (runtime). Διατηρήστε τη διατύπωση του πραγματικού σφάλματος ή της απαίτησης.
- Ελέγξτε τις αναφορές του κατασκευαστή για το συγκεκριμένο μοντέλο και, στη συνέχεια, εξετάστε την πραγματική δυνατότητα και την ενεργοποιημένη κατάσταση στο περιβάλλον όπου εκτελείται το πρόγραμμα.
- Συγκρίνετε κάθε απαίτηση του επιλεγμένου εκτελέσιμου αρχείου (binary) ή του backend. Μια δυνατότητα με παρόμοιο όνομα, ένα ψευδώνυμο ή μια ευρεία ετικέτα τεχνολογίας δεν επαρκεί.
- Επιβεβαιώστε ότι η εφαρμογή επέλεξε την προβλεπόμενη υλοποίηση. Χρησιμοποιήστε τα τεκμηριωμένα διαγνωστικά της και μια υποστηριζόμενη εναλλακτική λύση (fallback) όταν δεν πληρούνται οι απαιτήσεις.
- Κάντε μία υποστηριζόμενη αλλαγή τη φορά και επαναλάβετε τον ίδιο φόρτο εργασίας. Διατηρήστε διαθέσιμη την αρχική διαμόρφωση και τη διαδρομή επαναφοράς.
Εάν η δυνατότητα αναφέρεται αλλά το λογισμικό δεν μπορεί να τη χρησιμοποιήσει
Ξεκινήστε με το ακριβές στοιχείο που αποτυγχάνει. Μια βάση δεδομένων υλικού περιγράφει την καταγεγραμμένη δυνατότητα· το λειτουργικό σύστημα ή ο hypervisor μπορεί να εκθέσει ένα διαφορετικό πραγματικό περιβάλλον. Ένα σφάλμα μη έγκυρης εντολής (illegal-instruction error) απαιτεί επίσης διερεύνηση της πραγματικής εντολής που προκάλεσε το σφάλμα και της έκδοσης του εκτελέσιμου (binary build), καθώς η αλλοίωση δεδομένων ή μια άσχετη μη υποστηριζόμενη εντολή μπορεί να προκαλέσει παρόμοιο σύμπτωμα.
Εγκαταστήστε την έκδοση της εφαρμογής, του προγράμματος οδήγησης ή του περιβάλλοντος εκτέλεσης που υποστηρίζεται για την ακριβή πλατφόρμα και χρησιμοποιήστε τη βασική γραμμή (baseline) ή την εναλλακτική έκδοση (fallback build) που τεκμηριώνει ο κατασκευαστής, εάν χρειάζεται. Μια ενημέρωση λογισμικού δεν μπορεί να δημιουργήσει μια εντολή που λείπει από τον επεξεργαστή. Οι αλλαγές στο υλικολογισμικό (firmware) και στην πολιτική ασφαλείας θα πρέπει να ακολουθούν τη διαδικασία του κατασκευαστή του συστήματος και ένα σχέδιο επαναφοράς και όχι μια γενική συνταγή βελτιστοποίησης.
Πηγές και πεδίο εφαρμογής αυτής της επεξήγησης
Intel 64 and IA-32 Architectures Software Developer's Manual · Πυρήνας Linux: χρήση δυνατοτήτων XSTATE στον χώρο χρήστη
Αυτές οι αναφορές καθορίζουν την αρχιτεκτονική συμπεριφορά και τις απαιτήσεις λογισμικού. Δεν επαληθεύουν ανεξάρτητα κάθε τιμή δυνατότητας σε μια συνδεδεμένη σελίδα μοντέλου υλικού. Για την υποστήριξη του μοντέλου, χρησιμοποιήστε τα στοιχεία τεκμηρίωσης του κατασκευαστή αυτής της σελίδας και ελέγξτε την πραγματική διαμόρφωση του συστήματος. Αυτό το άρθρο δεν παρέχει ημερομηνία δοκιμής επιδόσεων (benchmark), πιστοποίησης ή ανεξάρτητης αξιολόγησης.
Πηγές και επαλήθευση
Συντακτική ιδιοκτησία: Feex. Δεν έχει καταγραφεί ημερομηνία ανεξάρτητης αναθεώρησης. Πώς ερευνούμε.
- Intel 64 and IA-32 Architectures Software Developer's Manual · Οι τόμοι 1 και 2 περιγράφουν τις κατονομαζόμενες οικογένειες εντολών και το CPUID· ο τόμος 3 περιγράφει την κατάσταση, τη σελιδοποίηση, το VMX και τους ελέγχους προστασίας. Η τεκμηρίωση αρχιτεκτονικής δεν καθορίζει την υποστήριξη για ένα συγκεκριμένο μοντέλο.
- Πυρήνας Linux: χρήση δυνατοτήτων XSTATE στον χώρο χρήστη · Κατάσταση διανύσματος ενεργοποιημένη από το λειτουργικό σύστημα, δυναμικά ενεργοποιημένη κατάσταση πλακιδίων, απαιτήσεις στοίβας σημάτων και ροή δικαιωμάτων AMX. Η συμπεριφορά που αφορά ειδικά το Linux δεν αποτελεί υπόσχεση για άλλο λειτουργικό σύστημα.
Ήταν χρήσιμο αυτό το άρθρο;
Ένα ναι ή όχι είναι αρκετό. Επιλέξτε έναν λόγο εάν θέλετε ή προσθέστε μια σύντομη σημείωση.
Ευχαριστούμε. Αυτό μας βοηθά να βελτιώσουμε αυτή τη σελίδα.