LZCNT
Το LZCNT μετρά τα αρχικά μηδενικά bit σε έναν ακέραιο τελεστέο. Διαφέρει από το BSR, συμπεριλαμβανομένου του αποτελέσματός του για το μηδέν, και απαιτεί ρητό έλεγχο δυνατοτήτων.
Τι πρέπει να γνωρίζετε
Το LZCNT μετρά τα αρχικά μηδενικά bit σε έναν ακέραιο τελεστέο. Διαφέρει από το BSR, συμπεριλαμβανομένου του αποτελέσματός του για το μηδέν, και απαιτεί ρητό έλεγχο δυνατοτήτων.
Πώς λειτουργεί
Το αποτέλεσμα είναι ο αριθμός των μηδενικών bit που προηγούνται του υψηλότερου ενεργοποιημένου bit στο επιλεγμένο εύρος τελεστέου. Για έναν τελεστέο με όλα τα bit μηδέν, το LZCNT επιστρέφει το εύρος του τελεστέου. Οι σημαίες του και η συμπεριφορά στο μηδέν ορίζονται διαφορετικά από την παλαιότερη λειτουργία bit-scan-reverse με σχετική κωδικοποίηση.
Πού είναι χρήσιμο
Μια ρουτίνα συμπίεσης ή αριθμητικής μορφοποίησης μπορεί να χρησιμοποιήσει το πλήθος για να προσδιορίσει πόσα σημαντικά bit χρειάζεται μια τιμή. Ο σωστός χειρισμός του μηδενός είναι απαραίτητος για υπολογισμούς μεγέθους και ολισθήσεις, επειδή μια εσφαλμένη υποκατάσταση από bit-scan μπορεί να παράγει μη έγκυρο αποτέλεσμα.
Πώς να ελέγξετε την υποστήριξη και την ενεργοποίηση
Το CPUID.80000001H:ECX bit 5 απαριθμεί το LZCNT σύμφωνα με τον σχετικό ορισμό του κατασκευαστή. Επαληθεύστε πρώτα ότι υπάρχει το εκτεταμένο leaf. Χρησιμοποιήστε ένα υποστηριζόμενο ερώτημα δυνατοτήτων του μεταγλωττιστή/περιβάλλοντος εκτέλεσης και έναν μηχανισμό εφεδρείας (fallback) του οποίου η σημασιολογία για το μηδέν ταυτίζεται.
Ελέγξτε την ακριβή μορφή εντολής και τελεστέου αντί να συμπεραίνετε την υποστήριξη από μια γειτονική επέκταση. Οι δυνατότητες βαθμωτών ακεραίων (scalar integer) χρησιμοποιούν γενικά καταχωρητές γενικής χρήσης· μια κωδικοποίηση που συνδέεται με διανύσματα δεν σημαίνει αυτόματα απαίτηση κατάστασης διανύσματος (vector state).
Τι δεν καθορίζει η δυνατότητα
Το LZCNT δεν μετρά όλα τα ενεργοποιημένα bit και δεν είναι το TZCNT. Ένας μη υποστηριζόμενος επεξεργαστής μπορεί να ερμηνεύσει την κωδικοποίηση ως BSR, επομένως η απλή δοκιμή της εντολής αποτελεί μη ασφαλή έλεγχο δυνατοτήτων. Τα BMI1 και BMI2 είναι ξεχωριστές δυνατότητες.
Συμβατότητα και απόδοση στην πράξη
Η ορθότητα εξαρτάται από τις οριακές περιπτώσεις (edge cases) καθώς και από την ταχύτητα. Η μηδενική είσοδος, η υπερχείλιση, οι σημαίες κρατουμένου (carry flags), το εύρος του τελεστέου, η στοίχιση και η διάταξη μνήμης μπορούν να αλλάξουν τη σημασιολογία. Προτιμάτε διεπαφές μεταγλωττιστή ή βιβλιοθήκης που τεκμηριώνουν αυτές τις λεπτομέρειες και παρέχουν μια υποστηριζόμενη εναλλακτική λύση (fallback).
Μια πρακτική λίστα ελέγχου επαλήθευσης
- Καταγράψτε το ακριβές μοντέλο επεξεργαστή ή πλατφόρμας και τις εμπλεκόμενες εκδόσεις εφαρμογής, λειτουργικού συστήματος και περιβάλλοντος εκτέλεσης (runtime). Διατηρήστε τη διατύπωση του πραγματικού σφάλματος ή της απαίτησης.
- Ελέγξτε τις αναφορές του κατασκευαστή για το συγκεκριμένο μοντέλο και, στη συνέχεια, εξετάστε την πραγματική δυνατότητα και την ενεργοποιημένη κατάσταση στο περιβάλλον όπου εκτελείται το πρόγραμμα.
- Συγκρίνετε κάθε απαίτηση του επιλεγμένου εκτελέσιμου αρχείου (binary) ή του backend. Μια δυνατότητα με παρόμοιο όνομα, ένα ψευδώνυμο ή μια ευρεία ετικέτα τεχνολογίας δεν επαρκεί.
- Επιβεβαιώστε ότι η εφαρμογή επέλεξε την προβλεπόμενη υλοποίηση. Χρησιμοποιήστε τα τεκμηριωμένα διαγνωστικά της και μια υποστηριζόμενη εναλλακτική λύση (fallback) όταν δεν πληρούνται οι απαιτήσεις.
- Κάντε μία υποστηριζόμενη αλλαγή τη φορά και επαναλάβετε τον ίδιο φόρτο εργασίας. Διατηρήστε διαθέσιμη την αρχική διαμόρφωση και τη διαδρομή επαναφοράς.
Εάν η δυνατότητα αναφέρεται αλλά το λογισμικό δεν μπορεί να τη χρησιμοποιήσει
Ξεκινήστε με το ακριβές στοιχείο που αποτυγχάνει. Μια βάση δεδομένων υλικού περιγράφει την καταγεγραμμένη δυνατότητα· το λειτουργικό σύστημα ή ο hypervisor μπορεί να εκθέσει ένα διαφορετικό πραγματικό περιβάλλον. Ένα σφάλμα μη έγκυρης εντολής (illegal-instruction error) απαιτεί επίσης διερεύνηση της πραγματικής εντολής που προκάλεσε το σφάλμα και της έκδοσης του εκτελέσιμου (binary build), καθώς η αλλοίωση δεδομένων ή μια άσχετη μη υποστηριζόμενη εντολή μπορεί να προκαλέσει παρόμοιο σύμπτωμα.
Εγκαταστήστε την έκδοση της εφαρμογής, του προγράμματος οδήγησης ή του περιβάλλοντος εκτέλεσης που υποστηρίζεται για την ακριβή πλατφόρμα και χρησιμοποιήστε τη βασική γραμμή (baseline) ή την εναλλακτική έκδοση (fallback build) που τεκμηριώνει ο κατασκευαστής, εάν χρειάζεται. Μια ενημέρωση λογισμικού δεν μπορεί να δημιουργήσει μια εντολή που λείπει από τον επεξεργαστή. Οι αλλαγές στο υλικολογισμικό (firmware) και στην πολιτική ασφαλείας θα πρέπει να ακολουθούν τη διαδικασία του κατασκευαστή του συστήματος και ένα σχέδιο επαναφοράς και όχι μια γενική συνταγή βελτιστοποίησης.
Πηγές και πεδίο εφαρμογής αυτής της επεξήγησης
Intel 64 and IA-32 Architectures Software Developer's Manual · AMD CPUID Specification, publication 25481 · x86-64 psABI: επίπεδα αρχιτεκτονικής και μικροαρχιτεκτονικής επεξεργαστή
Αυτές οι αναφορές καθορίζουν την αρχιτεκτονική συμπεριφορά και τις απαιτήσεις λογισμικού. Δεν επαληθεύουν ανεξάρτητα κάθε τιμή δυνατότητας σε μια συνδεδεμένη σελίδα μοντέλου υλικού. Για την υποστήριξη του μοντέλου, χρησιμοποιήστε τα στοιχεία τεκμηρίωσης του κατασκευαστή αυτής της σελίδας και ελέγξτε την πραγματική διαμόρφωση του συστήματος. Αυτό το άρθρο δεν παρέχει ημερομηνία δοκιμής επιδόσεων (benchmark), πιστοποίησης ή ανεξάρτητης αξιολόγησης.
Πηγές και επαλήθευση
Συντακτική ιδιοκτησία: Feex. Δεν έχει καταγραφεί ημερομηνία ανεξάρτητης αναθεώρησης. Πώς ερευνούμε.
- Intel 64 and IA-32 Architectures Software Developer's Manual · Οι τόμοι 1 και 2 περιγράφουν τις κατονομαζόμενες οικογένειες εντολών και το CPUID· ο τόμος 3 περιγράφει την κατάσταση, τη σελιδοποίηση, το VMX και τους ελέγχους προστασίας. Η τεκμηρίωση αρχιτεκτονικής δεν καθορίζει την υποστήριξη για ένα συγκεκριμένο μοντέλο.
- AMD CPUID Specification, publication 25481 · Αρχειοθετημένη αναφορά αρχιτεκτονικής για καθιερωμένες λειτουργίες CPUID της AMD και ορισμούς bit. Χρησιμοποιήστε την τρέχουσα αναφορά προγραμματισμού επεξεργαστή για μεταγενέστερες επεκτάσεις ειδικές για κάθε γενιά.
- x86-64 psABI: επίπεδα αρχιτεκτονικής και μικροαρχιτεκτονικής επεξεργαστή · Διεπαφή μηχανής, Αρχιτεκτονική επεξεργαστή: πίνακας βασικών και σωρευτικών δυνατοτήτων v2/v3/v4, έλεγχοι κατάστασης λειτουργικού συστήματος και συστάσεις ανάπτυξης.
Ήταν χρήσιμο αυτό το άρθρο;
Ένα ναι ή όχι είναι αρκετό. Επιλέξτε έναν λόγο εάν θέλετε ή προσθέστε μια σύντομη σημείωση.
Ευχαριστούμε. Αυτό μας βοηθά να βελτιώσουμε αυτή τη σελίδα.