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

Invariant TSC

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

Το Invariant TSC περιγράφει έναν μετρητή χρονοσήμανσης (time-stamp counter) του οποίου ο ρυθμός παραμένει σταθερός σε όλες τις αρχιτεκτονικές καταστάσεις ισχύος και συχνότητας που καλύπτονται από τη δυνατότητα. Δεν αποτελεί άμεση μέτρηση της τρέχουσας συχνότητας του πυρήνα.

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

Το Invariant TSC περιγράφει έναν μετρητή χρονοσήμανσης (time-stamp counter) του οποίου ο ρυθμός παραμένει σταθερός σε όλες τις αρχιτεκτονικές καταστάσεις ισχύος και συχνότητας που καλύπτονται από τη δυνατότητα. Δεν αποτελεί άμεση μέτρηση της τρέχουσας συχνότητας του πυρήνα.

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

Ο μετρητής χρονοσήμανσης αυξάνεται με ρυθμό που ορίζεται από την πλατφόρμα. Η συμπεριφορά Invariant διαχωρίζει αυτόν τον ρυθμό από τις αλλαγές στη συχνότητα λειτουργίας του πυρήνα. Η μετατροπή των παλμών (ticks) σε χρόνο που έχει παρέλθει απαιτεί μια έγκυρη αναφορά συχνότητας, ενώ η σύγκριση τιμών μεταξύ επεξεργαστών ή εικονικών μηχανών απαιτεί επίσης εγγυήσεις συγχρονισμού και εικονικοποίησης.

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

Ένα περιβάλλον εκτέλεσης (runtime) μπορεί να χρησιμοποιεί έναν κατάλληλο μετρητή ως μέρος της υλοποίησης χρονισμού υψηλής ανάλυσης. Η διαίρεση της διαφοράς του μετρητή ενός σύντομου φόρτου εργασίας με μια ονομαστική τιμή GHz της CPU μπορεί να είναι εσφαλμένη, επειδή ο ρυθμός του TSC και η συχνότητα του πυρήνα εκτέλεσης είναι διαφορετικά μεγέθη.

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

Το CPUID.80000007H:EDX bit 8 απαριθμεί το invariant TSC σύμφωνα με τον σχετικό ορισμό της αρχιτεκτονικής. Προτιμήστε το υποστηριζόμενο μονοτονικό ρολόι του λειτουργικού συστήματος για συνήθεις μετρήσεις χρονισμού, επειδή μπορεί να λαμβάνει υπόψη την πολιτική της πλατφόρμας και της εικονικοποίησης.

Επιλέξτε ένα ρολόι ανάλογα με το ζητούμενο: ο χρόνος που έχει παρέλθει, ο χρόνος CPU του νήματος και οι κύκλοι αποτελούν διαφορετικές μετρήσεις. Οι διεπαφές ρολογιού του λειτουργικού συστήματος ενσωματώνουν πολιτική πλατφόρμας την οποία ένα ανεπεξέργαστο δείγμα εντολής ενδέχεται να παρακάμπτει.

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

Το Invariant δεν καθορίζει από μόνο του συγχρονισμό μεταξύ υποδοχών (sockets), μονοτονική συμπεριφορά κατά τη μεταφορά (migration) VM, σειριοποίηση γύρω από τις μετρούμενες εντολές ή την απουσία καθυστερήσεων χρονοπρογραμματισμού. Ένα ανεπεξέργαστο δείγμα μετρητή δεν αποτελεί ποσοστό χρήσης της CPU.

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

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

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

  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

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

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

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

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

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

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

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