Τεχνολογία Intel Hyper Threading. Για άλλη μια φορά για το Hyper Threading

Πολλοί επεξεργαστές Intel περιλαμβάνουν ενότητες που υποστηρίζουν την τεχνολογία Hyper-Threading, η οποία, σύμφωνα με την ιδέα των προγραμματιστών, θα συμβάλει στην αύξηση της απόδοσης του τσιπ και στην επιτάχυνση του υπολογιστή στο σύνολό του. Ποιες είναι οι ιδιαιτερότητες αυτής της λύσης από μια αμερικανική εταιρεία; Πώς μπορείτε να επωφεληθείτε από το Hyper-Threading;

Βασικά στοιχεία τεχνολογίας

Ας δούμε μερικές βασικές πληροφορίες σχετικά με το Hyper-Threading. Τι είδους τεχνολογία είναι αυτή; Αναπτύχθηκε από την Intel και παρουσιάστηκε για πρώτη φορά στο κοινό το 2001. Σκοπός της δημιουργίας του ήταν να αυξήσει την απόδοση του διακομιστή. Η κύρια αρχή που εφαρμόζεται στο Hyper-Threading είναι η κατανομή των υπολογισμών του επεξεργαστή σε πολλά νήματα. Επιπλέον, αυτό είναι δυνατό ακόμη και αν είναι εγκατεστημένος μόνο ένας πυρήνας στον αντίστοιχο τύπο τσιπ (με τη σειρά του, εάν υπάρχουν 2 ή περισσότερα από αυτά και τα νήματα στον επεξεργαστή είναι ήδη κατανεμημένα, η τεχνολογία συμπληρώνει με επιτυχία αυτόν τον μηχανισμό).

Η διασφάλιση της λειτουργίας του κύριου τσιπ υπολογιστή μέσα σε πολλά νήματα πραγματοποιείται με τη δημιουργία αντιγράφων αρχιτεκτονικών καταστάσεων κατά τη διάρκεια των υπολογισμών. Αυτό χρησιμοποιεί το ίδιο σύνολο πόρων στο τσιπ. Εάν η εφαρμογή χρησιμοποιεί την κατάλληλη δυνατότητα, τότε οι πρακτικά σημαντικές λειτουργίες πραγματοποιούνται πολύ πιο γρήγορα. Είναι επίσης σημαντικό η εν λόγω τεχνολογία να υποστηρίζεται από το σύστημα εισόδου/εξόδου του υπολογιστή—BIOS.

Ενεργοποίηση Hyper-Threading

Εάν ο επεξεργαστής που είναι εγκατεστημένος στον υπολογιστή υποστηρίζει το αντίστοιχο πρότυπο, συνήθως ενεργοποιείται αυτόματα. Αλλά σε ορισμένες περιπτώσεις, πρέπει να εκτελέσετε με μη αυτόματο τρόπο τις απαραίτητες ενέργειες για να λειτουργήσει η τεχνολογία Hyper-Threading. Πώς να το ενεργοποιήσετε; Πολύ απλό.

Πρέπει να εισαγάγετε την κύρια διεπαφή του BIOS. Για να το κάνετε αυτό, στην αρχή της εκκίνησης του υπολογιστή, πρέπει να πατήσετε DEL, μερικές φορές F2, F10, λιγότερο συχνά άλλα πλήκτρα, αλλά το επιθυμητό εμφανίζεται πάντα σε μία από τις γραμμές κειμένου που εμφανίζεται στην οθόνη αμέσως μετά την ενεργοποίηση το PC. Στη διεπαφή του BIOS πρέπει να βρείτε το στοιχείο Hyper-Threading: στις εκδόσεις του συστήματος I/O που το υποστηρίζουν, συνήθως βρίσκεται σε εμφανές σημείο. Έχοντας επιλέξει την κατάλληλη επιλογή, πατήστε Enter και ενεργοποιήστε την, σημειώνοντάς την ως Ενεργοποιημένη. Εάν αυτή η λειτουργία είναι ήδη ρυθμισμένη, τότε η τεχνολογία Hyper-Threading λειτουργεί. Μπορείτε να επωφεληθείτε από όλα τα οφέλη του. Έχοντας ενεργοποιήσει την τεχνολογία στις ρυθμίσεις, θα πρέπει να αποθηκεύσετε όλες τις καταχωρήσεις στο BIOS επιλέγοντας Αποθήκευση και Έξοδος από τη ρύθμιση. Μετά από αυτό, ο υπολογιστής θα επανεκκινήσει σε μια λειτουργία όπου ο επεξεργαστής εκτελείται με υποστήριξη Hyper-Theading. Το Hyper-Threading είναι απενεργοποιημένο με παρόμοιο τρόπο. Για να το κάνετε αυτό, πρέπει να επιλέξετε μια άλλη επιλογή στο αντίστοιχο στοιχείο - Απενεργοποιημένη και να αποθηκεύσετε τις ρυθμίσεις.

Έχοντας μελετήσει πώς να ενεργοποιήσετε το Hyper-Threading και να απενεργοποιήσετε αυτήν την τεχνολογία, ας δούμε τις δυνατότητές της με περισσότερες λεπτομέρειες.

Επεξεργαστές με υποστήριξη Hyper Threading

Ο πρώτος επεξεργαστής στον οποίο εφαρμόστηκε το επίμαχο concept της εταιρείας, σύμφωνα με ορισμένες πηγές, ήταν ο Intel Xeon MP, γνωστός και ως Foster MP. Αυτό το τσιπ είναι παρόμοιο σε ορισμένα αρχιτεκτονικά στοιχεία με το Pentium 4, στο οποίο εφαρμόστηκε στη συνέχεια η εν λόγω τεχνολογία. Στη συνέχεια, η λειτουργία υπολογισμού πολλαπλών νημάτων εισήχθη σε επεξεργαστές διακομιστή Xeon με τον πυρήνα Prestonia.

Αν μιλάμε για την τρέχουσα επικράτηση του Hyper-Threading, ποιοι «επεξεργαστές» το υποστηρίζουν; Ανάμεσα στα πιο δημοφιλή τσιπ αυτού του τύπου είναι αυτά που ανήκουν στις οικογένειες Core και Xeon. Υπάρχουν επίσης πληροφορίες ότι παρόμοιοι αλγόριθμοι εφαρμόζονται σε επεξεργαστές Itanium και Atom.

Έχοντας μελετήσει τις βασικές πληροφορίες για το Hyper-Threading και τους επεξεργαστές που το υποστηρίζουν, θα εξετάσουμε τα πιο αξιοσημείωτα στοιχεία σχετικά με την ιστορία της ανάπτυξης της τεχνολογίας.

Ιστορία ανάπτυξης

Όπως σημειώσαμε παραπάνω, η Intel παρουσίασε το εν λόγω concept στο κοινό το 2001. Αλλά τα πρώτα βήματα για τη δημιουργία της τεχνολογίας έγιναν στις αρχές της δεκαετίας του '90. Μηχανικοί από μια αμερικανική εταιρεία παρατήρησαν ότι οι πόροι των επεξεργαστών υπολογιστή δεν χρησιμοποιήθηκαν πλήρως κατά την εκτέλεση ορισμένων λειτουργιών.

Όπως έχουν υπολογίσει οι ειδικοί της Intel, ενώ ο χρήστης εργάζεται σε υπολογιστή, το τσιπ δεν χρησιμοποιείται πολύ ενεργά για σημαντικά διαστήματα - σχεδόν τις περισσότερες φορές - κατά περίπου 30%. Οι απόψεις των ειδικών σχετικά με αυτό το ποσοστό είναι πολύ διαφορετικές - ορισμένοι το θεωρούν σαφώς υποτιμημένο, άλλοι συμφωνούν πλήρως με τη θέση των Αμερικανών προγραμματιστών.

Ωστόσο, οι περισσότεροι ειδικοί πληροφορικής συμφώνησαν ότι αν και το 70% της χωρητικότητας του επεξεργαστή δεν είναι σε αδράνεια, είναι ένα πολύ σημαντικό ποσό.

Το κύριο καθήκον των προγραμματιστών

Η Intel αποφάσισε να διορθώσει αυτή την κατάσταση μέσω μιας ποιοτικά νέας προσέγγισης για τη διασφάλιση της αποτελεσματικότητας των κύριων τσιπ υπολογιστή. Προτάθηκε η δημιουργία μιας τεχνολογίας που θα διευκόλυνε την πιο ενεργή χρήση των δυνατοτήτων του επεξεργαστή. Το 1996, οι ειδικοί της Intel ξεκίνησαν την πρακτική της ανάπτυξη.

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

Η Intel κατάφερε να λύσει το πρόβλημα. Η τεχνολογία αρχικά ονομαζόταν Willamette. Το 1999, εισήχθη στην αρχιτεκτονική ορισμένων επεξεργαστών και ξεκίνησε η δοκιμή. Σύντομα η τεχνολογία έλαβε το σύγχρονο όνομά της - Hyper-Threading. Είναι δύσκολο να πούμε τι ακριβώς ήταν - μια απλή αλλαγή επωνυμίας ή ριζικές προσαρμογές στην πλατφόρμα. Γνωρίζουμε ήδη περαιτέρω στοιχεία σχετικά με την εμφάνιση της τεχνολογίας στο κοινό και την εφαρμογή της σε διάφορα μοντέλα επεξεργαστών Intel. Μεταξύ των κοινών ονομάτων ανάπτυξης σήμερα είναι η τεχνολογία Hyper-Threading.

Θέματα συμβατότητας τεχνολογίας

Πόσο καλά εφαρμόζεται η υποστήριξη για την τεχνολογία Hyper-Threading στα λειτουργικά συστήματα; Μπορεί να σημειωθεί ότι αν μιλάμε για σύγχρονες εκδόσεις των Windows, τότε δεν θα υπάρχουν προβλήματα με τον χρήστη να εκμεταλλευτεί πλήρως την τεχνολογία Intel Hyper-Threading. Φυσικά, είναι επίσης πολύ σημαντικό η τεχνολογία να υποστηρίζεται από το σύστημα εισόδου/εξόδου – το είπαμε παραπάνω.

Παράγοντες λογισμικού και υλικού

Όσον αφορά παλαιότερες εκδόσεις του λειτουργικού συστήματος - Windows 98, NT και τα σχετικά ξεπερασμένα XP, απαραίτητη προϋπόθεση για συμβατότητα με το Hyper-Threading είναι η υποστήριξη ACPI. Εάν δεν έχει εφαρμοστεί στο λειτουργικό σύστημα, τότε δεν θα αναγνωρίζονται από τον υπολογιστή όλα τα νήματα υπολογισμού που σχηματίζονται από τις αντίστοιχες μονάδες. Σημειώστε ότι τα Windows XP στο σύνολό τους διασφαλίζουν τη χρήση των πλεονεκτημάτων της εν λόγω τεχνολογίας. Είναι επίσης πολύ επιθυμητό οι αλγόριθμοι πολλαπλών νημάτων να εφαρμόζονται σε εφαρμογές που χρησιμοποιούνται από τον ιδιοκτήτη του υπολογιστή.

Μερικές φορές μπορεί να απαιτείται υπολογιστής - εάν σε αυτόν είναι εγκατεστημένοι επεξεργαστές με υποστήριξη Hyper-Threading αντί για εκείνους που είχαν εγκατασταθεί αρχικά σε αυτόν και δεν ήταν συμβατοί με την τεχνολογία. Ωστόσο, όπως στην περίπτωση των λειτουργικών συστημάτων, δεν θα υπάρξουν ιδιαίτερα προβλήματα εάν ο χρήστης έχει στη διάθεσή του έναν σύγχρονο υπολογιστή ή τουλάχιστον έναν που ταιριάζει με τα στοιχεία υλικού των πρώτων επεξεργαστών Hyper Threading, όπως αναφέραμε παραπάνω, που υλοποιήθηκαν στο τη γραμμή Core, και προσαρμοσμένα σε αυτήν chipset σε μητρικές πλακέτες υποστηρίζουν πλήρως τις αντίστοιχες λειτουργίες του τσιπ.

Κριτήρια επιτάχυνσης

Εάν ο υπολογιστής σε επίπεδο στοιχείων υλικού και λογισμικού δεν είναι συμβατός με το Hyper-Threading, τότε αυτή η τεχνολογία, θεωρητικά, μπορεί ακόμη και να επιβραδύνει τη λειτουργία του. Αυτή η κατάσταση έχει προκαλέσει ορισμένους ειδικούς πληροφορικής να αμφιβάλλουν για τις προοπτικές της λύσης της Intel. Αποφάσισαν ότι δεν ήταν ένα τεχνολογικό άλμα, αλλά ένα τέχνασμα μάρκετινγκ που βασίζεται στην έννοια του Hyper Threading, το οποίο, λόγω της αρχιτεκτονικής του, δεν είναι ικανό να επιταχύνει σημαντικά έναν υπολογιστή. Αλλά οι αμφιβολίες των κριτικών διαλύθηκαν γρήγορα από τους μηχανικούς της Intel.

Έτσι, οι βασικές προϋποθέσεις για την επιτυχή χρήση της τεχνολογίας:

Υποστήριξη Hyper-Threading από σύστημα I/O.

Συμβατότητα της μητρικής πλακέτας με τον επεξεργαστή του αντίστοιχου τύπου.

Τεχνολογική υποστήριξη από το λειτουργικό σύστημα και τη συγκεκριμένη εφαρμογή που εκτελείται σε αυτό.

Εάν δεν υπάρχουν ιδιαίτερα προβλήματα σχετικά με τα δύο πρώτα σημεία, τότε όσον αφορά τη συμβατότητα του προγράμματος με το Hyper-Threading, ενδέχεται να προκύψουν κάποια προβλήματα. Αλλά μπορεί να σημειωθεί ότι εάν μια εφαρμογή υποστηρίζει, για παράδειγμα, εργασία με επεξεργαστές διπλού πυρήνα, τότε θα είναι συμβατή, σχεδόν εγγυημένη, με την τεχνολογία της Intel.

Τουλάχιστον υπάρχουν μελέτες που επιβεβαιώνουν μια αύξηση στην απόδοση των προγραμμάτων προσαρμοσμένων σε τσιπ διπλού πυρήνα κατά περίπου 15-18% εάν ο επεξεργαστής εκτελεί ενότητες Intel Hyper Threading. Γνωρίζουμε ήδη πώς να τα απενεργοποιήσουμε (σε περίπτωση που ο χρήστης έχει αμφιβολίες για τη σκοπιμότητα χρήσης της τεχνολογίας). Πιθανότατα όμως υπάρχουν πολύ λίγοι χειροπιαστοί λόγοι για την εμφάνισή τους.

Πρακτική χρησιμότητα του Hyper-Threading

Η εν λόγω τεχνολογία έχει κάνει απτή διαφορά στην Intel; Υπάρχουν διαφορετικές απόψεις για αυτό το θέμα. Ωστόσο, πολλοί άνθρωποι σημειώνουν ότι η τεχνολογία Hyper-Threading έχει γίνει τόσο δημοφιλής που αυτή η λύση έχει γίνει απαραίτητη για πολλούς κατασκευαστές συστημάτων διακομιστών και επίσης έγινε θετική αποδοχή από τους απλούς χρήστες υπολογιστών.

Επεξεργασία υλικού

Το κύριο πλεονέκτημα της τεχνολογίας είναι ότι υλοποιείται σε μορφή υλικού. Δηλαδή, το μεγαλύτερο μέρος των υπολογισμών θα εκτελεστεί μέσα στον επεξεργαστή σε ειδικές μονάδες και όχι με τη μορφή αλγορίθμων λογισμικού που μεταφέρονται στο επίπεδο του κύριου πυρήνα του τσιπ - κάτι που θα συνεπαγόταν μείωση της συνολικής απόδοσης του υπολογιστή . Σε γενικές γραμμές, όπως σημειώνουν ειδικοί πληροφορικής, οι μηχανικοί της Intel κατάφεραν να λύσουν το πρόβλημα που εντόπισαν στην αρχή της ανάπτυξης της τεχνολογίας - να κάνουν τον επεξεργαστή να λειτουργεί πιο αποτελεσματικά. Πράγματι, όπως έχουν δείξει δοκιμές, όταν επιλύονται πολλά προβλήματα που είναι πρακτικά σημαντικά για τον χρήστη, η χρήση του Hyper-Threading έχει επιταχύνει σημαντικά την εργασία.

Μπορεί να σημειωθεί ότι μεταξύ των 4, εκείνα τα μικροκυκλώματα που ήταν εξοπλισμένα με μονάδες για την υποστήριξη της εν λόγω τεχνολογίας λειτούργησαν σημαντικά πιο αποτελεσματικά από τις πρώτες τροποποιήσεις. Αυτό εκφράστηκε σε μεγάλο βαθμό στην ικανότητα του υπολογιστή να λειτουργεί σε πραγματική λειτουργία πολλαπλών εργασιών - όταν είναι ανοιχτοί πολλοί διαφορετικοί τύποι εφαρμογών Windows και είναι εξαιρετικά ανεπιθύμητο, λόγω της αυξημένης κατανάλωσης πόρων συστήματος από μία από αυτές, η ταχύτητα άλλων να μειώνεται .

Ταυτόχρονη επίλυση διαφορετικών προβλημάτων

Έτσι, οι επεξεργαστές που υποστηρίζουν το Hyper-Threading προσαρμόζονται καλύτερα από τα τσιπ που δεν είναι συμβατά με αυτό για να εκτελούν ταυτόχρονα, για παράδειγμα, ένα πρόγραμμα περιήγησης, να παίζουν μουσική και να δουλεύουν με έγγραφα. Φυσικά, όλα αυτά τα πλεονεκτήματα γίνονται αισθητά από τον χρήστη στην πράξη μόνο εάν τα στοιχεία λογισμικού και υλικού του υπολογιστή είναι επαρκώς συμβατά με αυτόν τον τρόπο λειτουργίας.

Ανάλογες εξελίξεις

Η τεχνολογία Hyper-Threading δεν είναι η μόνη που δημιουργήθηκε για να βελτιώσει την απόδοση του υπολογιστή μέσω υπολογιστών πολλαπλών νημάτων. Έχει ανάλογα.

Για παράδειγμα, οι επεξεργαστές POWER5 που κυκλοφόρησαν από την IBM υποστηρίζουν επίσης multithreading. Δηλαδή, καθένα από αυτά (συνολικά υπάρχουν 2 αντίστοιχα στοιχεία εγκατεστημένα σε αυτό) μπορεί να εκτελέσει εργασίες μέσα σε 2 νήματα. Έτσι, το τσιπ επεξεργάζεται 4 νήματα υπολογισμού ταυτόχρονα.

Η AMD έχει επίσης εξαιρετική δουλειά στον τομέα των εννοιών πολλαπλών νημάτων. Έτσι, είναι γνωστό ότι η αρχιτεκτονική Bulldozer χρησιμοποιεί αλγόριθμους παρόμοιους με το Hyper-Threading. Η ιδιαιτερότητα της λύσης AMD είναι ότι κάθε νήμα επεξεργάζεται ξεχωριστά μπλοκ επεξεργαστή. Το δεύτερο επίπεδο παραμένει γενικό. Παρόμοιες ιδέες εφαρμόζονται στην αρχιτεκτονική Bobcat της AMD, η οποία είναι προσαρμοσμένη για φορητούς υπολογιστές και μικρούς υπολογιστές.

Φυσικά, οι έννοιες από την AMD, την IBM και την Intel μπορούν να θεωρηθούν άμεσες αναλογίες πολύ υπό όρους. Καθώς και γενικά προσεγγίσεις σχεδιασμού αρχιτεκτονικής επεξεργαστών. Αλλά οι αρχές που εφαρμόζονται στις αντίστοιχες τεχνολογίες μπορούν να θεωρηθούν αρκετά παρόμοιες και οι στόχοι που έθεσαν οι προγραμματιστές όσον αφορά την αύξηση της απόδοσης των μικροκυκλωμάτων μπορεί να είναι πολύ κοντά στην ουσία, αν όχι πανομοιότυποι.

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

Υπήρξε μια εποχή που ήταν απαραίτητο να αξιολογηθεί η απόδοση της μνήμης στο πλαίσιο της τεχνολογίας Hyper-threading. Καταλήξαμε στο συμπέρασμα ότι η επιρροή του δεν είναι πάντα θετική. Όταν εμφανίστηκε ένας όγκος ελεύθερου χρόνου, υπήρχε η επιθυμία να συνεχίσουμε την έρευνα και να εξετάσουμε τις συνεχιζόμενες διαδικασίες με ακρίβεια κύκλων ρολογιού μηχανής και bit, χρησιμοποιώντας λογισμικό δικής μας σχεδίασης.

Πλατφόρμα υπό μελέτη

Το αντικείμενο των πειραμάτων είναι ένας φορητός υπολογιστής ASUS N750JK με επεξεργαστή Intel Core i7-4700HQ. Συχνότητα ρολογιού 2,4 GHz, αυξημένη στη λειτουργία Intel Turbo Boost έως και 3,4 GHz. Εγκατεστημένο 16 gigabyte DDR3-1600 RAM (PC3-12800), που λειτουργεί σε λειτουργία dual-channel. Λειτουργικό σύστημα – Microsoft Windows 8.1 64 bit.

Εικ.1 Διαμόρφωση της υπό μελέτη πλατφόρμας.

Ο επεξεργαστής της υπό μελέτη πλατφόρμας περιέχει 4 πυρήνες, οι οποίοι, όταν είναι ενεργοποιημένη η τεχνολογία Hyper-Threading, παρέχει υποστήριξη υλικού για 8 threads ή λογικούς επεξεργαστές. Το υλικολογισμικό της πλατφόρμας μεταδίδει αυτές τις πληροφορίες στο λειτουργικό σύστημα μέσω του πίνακα ACPI MADT (Multiple APIC Description Table). Δεδομένου ότι η πλατφόρμα περιέχει μόνο έναν ελεγκτή RAM, δεν υπάρχει πίνακας SRAT (System Resource Affinity Table), ο οποίος δηλώνει την εγγύτητα των πυρήνων του επεξεργαστή με τους ελεγκτές μνήμης. Προφανώς, ο υπό μελέτη φορητός υπολογιστής δεν είναι μια πλατφόρμα NUMA, αλλά το λειτουργικό σύστημα, για σκοπούς ενοποίησης, το θεωρεί ως σύστημα NUMA με έναν τομέα, όπως υποδεικνύεται από τη γραμμή NUMA Nodes = 1. Ένα γεγονός που είναι θεμελιώδες για μας πειράματα είναι ότι η κρυφή μνήμη πρώτου επιπέδου έχει μέγεθος 32 kilobyte για καθέναν από τους τέσσερις πυρήνες. Δύο λογικοί επεξεργαστές που μοιράζονται έναν πυρήνα μοιράζονται τις κρυφές μνήμες L1 και L2.

Λειτουργία υπό μελέτη

Θα μελετήσουμε την εξάρτηση της ταχύτητας ανάγνωσης ενός μπλοκ δεδομένων από το μέγεθός του. Για να γίνει αυτό, θα επιλέξουμε την πιο παραγωγική μέθοδο, δηλαδή την ανάγνωση τελεστών 256-bit χρησιμοποιώντας την εντολή AVX VMOVAPD. Στα γραφήματα, ο άξονας X δείχνει το μέγεθος του μπλοκ και ο άξονας Y δείχνει την ταχύτητα ανάγνωσης. Γύρω από το σημείο X, που αντιστοιχεί στο μέγεθος της κρυφής μνήμης L1, αναμένουμε να δούμε ένα σημείο καμπής, καθώς η απόδοση θα πρέπει να μειωθεί αφού το επεξεργασμένο μπλοκ εγκαταλείψει τα όρια της κρυφής μνήμης. Στη δοκιμή μας, στην περίπτωση της επεξεργασίας πολλαπλών νημάτων, κάθε ένα από τα 16 ξεκινημένα νήματα λειτουργεί με ξεχωριστό εύρος διευθύνσεων. Για τον έλεγχο της τεχνολογίας Hyper-Threading εντός της εφαρμογής, κάθε νήμα χρησιμοποιεί τη συνάρτηση SetThreadAffinityMask API, η οποία ορίζει μια μάσκα στην οποία αντιστοιχεί ένα bit σε κάθε λογικό επεξεργαστή. Μια τιμή ενός bit επιτρέπει στον καθορισμένο επεξεργαστή να χρησιμοποιηθεί από ένα δεδομένο νήμα, μια μηδενική τιμή το απαγορεύει. Για 8 λογικούς επεξεργαστές της υπό μελέτη πλατφόρμας, η μάσκα 11111111b επιτρέπει τη χρήση όλων των επεξεργαστών (Το Hyper-Threading είναι ενεργοποιημένο), η μάσκα 01010101b επιτρέπει τη χρήση ενός λογικού επεξεργαστή σε κάθε πυρήνα (Το Hyper-Threading είναι απενεργοποιημένο).

Στα γραφήματα χρησιμοποιούνται οι ακόλουθες συντομογραφίες:

MBPS (Megabyte ανά δευτερόλεπτο)μπλοκ ταχύτητα ανάγνωσης σε megabyte ανά δευτερόλεπτο;

CPI (Ρολόγια ανά οδηγία)αριθμός κύκλων ρολογιού ανά εντολή;

TSC (Time Stamp Counter)Μετρητής ρολογιού CPU.

Σημείωση: Η ταχύτητα ρολογιού του καταχωρητή TSC ενδέχεται να μην ταιριάζει με την ταχύτητα ρολογιού του επεξεργαστή όταν εκτελείται σε λειτουργία Turbo Boost. Αυτό πρέπει να λαμβάνεται υπόψη κατά την ερμηνεία των αποτελεσμάτων.

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

Εμπειρία Νο. 1. Ένα νήμα



Εικ.2 Ανάγνωση ενός νήματος

Η μέγιστη ταχύτητα είναι 213563 megabyte ανά δευτερόλεπτο. Το σημείο καμπής εμφανίζεται σε μέγεθος μπλοκ περίπου 32 kilobyte.

Εμπειρία Νο 2. 16 νήματα σε 4 επεξεργαστές, το Hyper-Threading είναι απενεργοποιημένο



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

Το Hyper-Threading είναι απενεργοποιημένο. Η μέγιστη ταχύτητα είναι 797598 megabyte ανά δευτερόλεπτο. Το σημείο καμπής εμφανίζεται σε μέγεθος μπλοκ περίπου 32 kilobyte. Όπως ήταν αναμενόμενο, σε σύγκριση με την ανάγνωση με ένα νήμα, η ταχύτητα αυξήθηκε κατά περίπου 4 φορές, με βάση τον αριθμό των πυρήνων εργασίας.

Εμπειρία Νο 3. 16 νήματα σε 8 επεξεργαστές, ενεργοποιημένο το Hyper-Threading



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

Το Hyper-Threading είναι ενεργοποιημένο. Η μέγιστη ταχύτητα είναι 800.722 megabyte ανά δευτερόλεπτο· ως αποτέλεσμα της ενεργοποίησης του Hyper-Threading, σχεδόν δεν αυξήθηκε. Το μεγάλο μείον είναι ότι το σημείο καμπής εμφανίζεται σε μέγεθος μπλοκ περίπου 16 kilobyte. Η ενεργοποίηση του Hyper-Threading αύξησε ελαφρώς τη μέγιστη ταχύτητα, αλλά η πτώση ταχύτητας εμφανίζεται τώρα στο μισό μέγεθος του μπλοκ - περίπου 16 kilobyte, επομένως η μέση ταχύτητα έχει μειωθεί σημαντικά. Αυτό δεν προκαλεί έκπληξη, κάθε πυρήνας έχει τη δική του προσωρινή μνήμη L1, ενώ οι λογικοί επεξεργαστές του ίδιου πυρήνα την μοιράζονται.

συμπεράσματα

Η λειτουργία μελετήθηκε αρκετά καλά σε έναν πολυπύρηνο επεξεργαστή. Λόγοι: Κάθε πυρήνας περιέχει τη δική του κρυφή μνήμη L1 και L2, το μέγεθος του μπλοκ στόχου είναι συγκρίσιμο με το μέγεθος της κρυφής μνήμης και κάθε νήμα λειτουργεί με το δικό του εύρος διευθύνσεων. Για ακαδημαϊκούς σκοπούς, δημιουργήσαμε αυτές τις συνθήκες σε ένα συνθετικό τεστ, αναγνωρίζοντας ότι οι εφαρμογές του πραγματικού κόσμου συνήθως απέχουν πολύ από την ιδανική βελτιστοποίηση. Αλλά η ενεργοποίηση του Hyper-Threading, ακόμη και κάτω από αυτές τις συνθήκες, είχε αρνητικό αποτέλεσμα· με μια ελαφρά αύξηση στην ταχύτητα αιχμής, υπάρχει σημαντική απώλεια στην ταχύτητα επεξεργασίας μπλοκ των οποίων το μέγεθος κυμαίνεται από 16 έως 32 kilobyte.

15.03.2013

Η τεχνολογία Hyper-Threading εμφανίστηκε στους επεξεργαστές Intel, τρομακτικό να πούμε, πριν από περισσότερα από 10 χρόνια. Και αυτή τη στιγμή είναι ένα σημαντικό στοιχείο των Core επεξεργαστών. Ωστόσο, το ζήτημα της ανάγκης για HT στα παιχνίδια δεν είναι ακόμα απολύτως σαφές. Αποφασίσαμε να κάνουμε μια δοκιμή για να καταλάβουμε αν οι παίκτες χρειάζονται Core i7 ή αν είναι καλύτερος ένας Core i5. Και μάθετε επίσης πόσο καλύτερος είναι ο Core i3 από τον Pentium.


Η τεχνολογία Hyper-Threading, που αναπτύχθηκε από την Intel και χρησιμοποιείται αποκλειστικά στους επεξεργαστές της εταιρείας, ξεκινώντας από τον αξέχαστο Pentium 4, είναι κάτι που αυτή τη στιγμή θεωρείται δεδομένο. Με αυτό είναι εξοπλισμένος ένας σημαντικός αριθμός επεξεργαστών τρέχουσας και προηγούμενης γενιάς. Θα χρησιμοποιηθεί στο εγγύς μέλλον.

Και πρέπει να παραδεχτούμε ότι η τεχνολογία Hyper-Threading είναι χρήσιμη και έχει θετική επίδραση στην απόδοση, διαφορετικά η Intel δεν θα τη χρησιμοποιούσε για να τοποθετήσει τους επεξεργαστές της εντός της σειράς. Και όχι ως δευτερεύον στοιχείο, αλλά ένα από τα πιο σημαντικά, αν όχι το πιο σημαντικό. Για να καταστεί σαφές για τι πράγμα μιλάμε, ετοιμάσαμε έναν πίνακα που διευκολύνει την αξιολόγηση της αρχής της τμηματοποίησης των επεξεργαστών Intel.


Όπως μπορείτε να δείτε, υπάρχουν πολύ λίγες διαφορές μεταξύ του Pentium και του Core i3, καθώς και μεταξύ του Core i5 και του Core i7. Στην πραγματικότητα, τα μοντέλα i3 και i7 διαφέρουν από τα Pentium και i5 μόνο στο μέγεθος της κρυφής μνήμης τρίτου επιπέδου ανά πυρήνα (χωρίς να υπολογίζουμε τη συχνότητα ρολογιού, φυσικά). Το πρώτο ζεύγος έχει 1,5 megabyte και το δεύτερο ζεύγος έχει 2 megabyte. Αυτή η διαφορά δεν μπορεί να επηρεάσει θεμελιωδώς την απόδοση των επεξεργαστών, καθώς η διαφορά στο μέγεθος της κρυφής μνήμης είναι πολύ μικρή. Αυτός είναι ο λόγος για τον οποίο οι Core i3 και Core i7 έλαβαν υποστήριξη για την τεχνολογία Hyper-Threading, η οποία είναι το κύριο στοιχείο που επιτρέπει σε αυτούς τους επεξεργαστές να έχουν πλεονέκτημα απόδοσης έναντι των Pentium και Core i5, αντίστοιχα.

Ως αποτέλεσμα, μια ελαφρώς μεγαλύτερη κρυφή μνήμη και υποστήριξη Hyper-Threading θα επιτρέψουν σημαντικά υψηλότερες τιμές για τους επεξεργαστές. Για παράδειγμα, οι επεξεργαστές της σειράς Pentium (περίπου 10 χιλιάδες tenge) είναι περίπου δύο φορές φθηνότεροι από τον Core i3 (περίπου 20 χιλιάδες tenge) και αυτό παρά το γεγονός ότι φυσικά, σε επίπεδο υλικού, είναι απολύτως πανομοιότυποι και, κατά συνέπεια , έχουν το ίδιο κόστος . Η διαφορά τιμής μεταξύ του Core i5 (περίπου 30 χιλιάδες tenge) και του Core i7 (περίπου 50 χιλιάδες tenge) είναι επίσης πολύ μεγάλη, αν και λιγότερο από δύο φορές σε νεότερα μοντέλα.


Πόσο δικαιολογημένη είναι αυτή η αύξηση της τιμής; Τι πραγματικό κέρδος παρέχει το Hyper-Threading; Η απάντηση είναι γνωστή εδώ και καιρό: η αύξηση ποικίλλει, όλα εξαρτώνται από την εφαρμογή και τη βελτιστοποίησή της. Αποφασίσαμε να ελέγξουμε τι μπορεί να κάνει η HT στα παιχνίδια, ως μια από τις πιο απαιτητικές εφαρμογές «οικιακής χρήσης». Επιπλέον, αυτή η δοκιμή θα είναι μια εξαιρετική προσθήκη στο προηγούμενο υλικό μας σχετικά με την επίδραση του αριθμού των πυρήνων στον επεξεργαστή στην απόδοση του παιχνιδιού.

Πριν προχωρήσουμε στις δοκιμές, ας θυμηθούμε (ή ας μάθουμε) τι είναι η τεχνολογία Hyper-Threading. Όπως είπε η ίδια η Intel όταν παρουσίασε αυτήν την τεχνολογία πριν από πολλά χρόνια, δεν υπάρχει τίποτα ιδιαίτερα περίπλοκο σε αυτήν. Στην πραγματικότητα, το μόνο που χρειάζεται για την εισαγωγή του HT σε φυσικό επίπεδο είναι να προσθέσουμε όχι ένα σύνολο καταχωρητών και έναν ελεγκτή διακοπής σε έναν φυσικό πυρήνα, αλλά δύο. Στους επεξεργαστές Pentium 4, αυτά τα πρόσθετα στοιχεία αύξησαν τον αριθμό των τρανζίστορ μόνο κατά πέντε τοις εκατό. Στους σύγχρονους πυρήνες Ivy Bridge (καθώς και στο Sandy Bridge και στο μελλοντικό Haswell), τα πρόσθετα στοιχεία ακόμη και για τέσσερις πυρήνες δεν αυξάνουν το καλούπι ούτε κατά 1 τοις εκατό.


Πρόσθετοι καταχωρητές και ένας ελεγκτής διακοπών, σε συνδυασμό με υποστήριξη λογισμικού, επιτρέπουν στο λειτουργικό σύστημα να βλέπει όχι έναν φυσικό πυρήνα, αλλά δύο λογικούς. Ταυτόχρονα, η επεξεργασία δεδομένων από δύο ροές που αποστέλλονται από το σύστημα εξακολουθεί να πραγματοποιείται στον ίδιο πυρήνα, αλλά με ορισμένες δυνατότητες. Ένα νήμα έχει ακόμα ολόκληρο τον επεξεργαστή στη διάθεσή του, αλλά μόλις μερικά μπλοκ CPU απελευθερωθούν και αδράσουν, δίνονται αμέσως στο δεύτερο νήμα. Χάρη σε αυτό, ήταν δυνατή η ταυτόχρονη χρήση όλων των μπλοκ επεξεργαστών, αυξάνοντας έτσι την απόδοσή του. Όπως δήλωσε η ίδια η Intel, η αύξηση της απόδοσης υπό ιδανικές συνθήκες μπορεί να φτάσει έως και το 30%. Είναι αλήθεια ότι αυτοί οι δείκτες ισχύουν μόνο για το Pentium 4 με τον πολύ μακρύ σωλήνα του· οι σύγχρονοι επεξεργαστές επωφελούνται λιγότερο από το HT.

Αλλά οι ιδανικές συνθήκες για Hyper-Threading δεν ισχύουν πάντα. Και το πιο σημαντικό, το χειρότερο αποτέλεσμα του HT δεν είναι η έλλειψη κέρδους απόδοσης, αλλά η μείωση του. Δηλαδή, υπό ορισμένες συνθήκες, η απόδοση ενός επεξεργαστή με HT θα μειωθεί σε σχέση με έναν επεξεργαστή χωρίς HT λόγω του γεγονότος ότι η επιβάρυνση της διαίρεσης και της ουράς νημάτων θα υπερβεί σημαντικά το κέρδος από την επεξεργασία παράλληλων νημάτων, κάτι που είναι δυνατό σε αυτό το συγκεκριμένο υπόθεση. Και τέτοιες περιπτώσεις συμβαίνουν πολύ πιο συχνά από όσο θα ήθελε η Intel. Επιπλέον, πολλά χρόνια χρήσης του Hyper-Threading δεν έχουν βελτιώσει την κατάσταση. Αυτό ισχύει ιδιαίτερα για παιχνίδια που είναι πολύ περίπλοκα και καθόλου τυπικά όσον αφορά τον υπολογισμό δεδομένων και τις εφαρμογές.

Για να μάθουμε τον αντίκτυπο του Hyper-Threading στην απόδοση του παιχνιδιού, χρησιμοποιήσαμε ξανά τον πολύπαθο δοκιμαστικό επεξεργαστή Core i7-2700K και προσομοιώσαμε τέσσερις επεξεργαστές ταυτόχρονα απενεργοποιώντας τους πυρήνες και ενεργοποιώντας/απενεργοποιώντας το HT. Συμβατικά, μπορούν να ονομάζονται Pentium (2 πυρήνες, HT απενεργοποιημένο), Core i3 (2 πυρήνες, HT ενεργοποιημένο), Core i5 (4 πυρήνες, HT απενεργοποιημένο) και Core i7 (4 πυρήνες, HT ενεργοποιημένο). Γιατί υπό όρους; Πρώτα απ 'όλα, γιατί σύμφωνα με ορισμένα χαρακτηριστικά δεν αντιστοιχούν σε πραγματικά προϊόντα. Συγκεκριμένα, η απενεργοποίηση των πυρήνων δεν οδηγεί σε αντίστοιχη μείωση του όγκου της κρυφής μνήμης τρίτου επιπέδου - ο όγκος της για όλους είναι 8 megabyte. Και, επιπλέον, όλοι οι «υπό όρους» επεξεργαστές μας λειτουργούν στην ίδια συχνότητα των 3,5 gigahertz, κάτι που δεν έχει επιτευχθεί ακόμη από όλους τους επεξεργαστές της σειράς Intel.


Ωστόσο, αυτό είναι ακόμη προς το καλύτερο, καθώς χάρη στη συνεχή αλλαγή όλων των σημαντικών παραμέτρων, θα μπορούμε να μάθουμε τον πραγματικό αντίκτυπο του Hyper-Threading στην απόδοση του παιχνιδιού χωρίς καμία επιφύλαξη. Και η ποσοστιαία διαφορά στην απόδοση μεταξύ του "υπό όρους" Pentium και του Core i3 θα είναι κοντά στη διαφορά μεταξύ πραγματικών επεξεργαστών, υπό την προϋπόθεση ότι οι συχνότητες είναι ίσες. Επίσης, δεν πρέπει να προκαλεί σύγχυση το γεγονός ότι χρησιμοποιούμε επεξεργαστή με αρχιτεκτονική Sandy Bridge, καθώς οι δοκιμές απόδοσης, για τις οποίες μπορείτε να διαβάσετε στο άρθρο «Γυμνές επιδόσεις - Εξέταση της απόδοσης των ALUs και των FPUs», έδειξαν ότι η επιρροή της υπερ- Το Threading στις τελευταίες γενιές επεξεργαστών Core παραμένει αμετάβλητο. Πιθανότατα, αυτό το υλικό θα είναι επίσης σχετικό με τους επερχόμενους επεξεργαστές Haswell.

Λοιπόν, φαίνεται ότι όλα τα ερωτήματα σχετικά με τη μεθοδολογία δοκιμών, καθώς και τα χαρακτηριστικά λειτουργίας της τεχνολογίας Hyper-Threading, έχουν συζητηθεί και επομένως ήρθε η ώρα να προχωρήσουμε στο πιο ενδιαφέρον πράγμα - τις δοκιμές.

Ακόμη και σε μια δοκιμή στην οποία μελετήσαμε τον αντίκτυπο του αριθμού των πυρήνων επεξεργαστών στην απόδοση του παιχνιδιού, διαπιστώσαμε ότι το 3DMark 11 είναι εντελώς χαλαρό σχετικά με την απόδοση της CPU, λειτουργώντας τέλεια ακόμη και σε έναν πυρήνα. Το Hyper-Threading είχε την ίδια «ισχυρή» επιρροή. Όπως μπορείτε να δείτε, η δοκιμή δεν παρατηρεί διαφορές μεταξύ Pentium και Core i7, για να μην αναφέρουμε τα ενδιάμεσα μοντέλα.

Μετρό 2033

Αλλά το Metro 2033 παρατήρησε ξεκάθαρα την εμφάνιση του Hyper-Threading. Και εκείνη του αντέδρασε αρνητικά! Ναι, αυτό είναι σωστό: η ενεργοποίηση του HT σε αυτό το παιχνίδι έχει αρνητικό αντίκτυπο στην απόδοση. Μια μικρή επίδραση, φυσικά - 0,5 καρέ ανά δευτερόλεπτο με τέσσερις φυσικούς πυρήνες και 0,7 με δύο. Αλλά αυτό το γεγονός δίνει κάθε λόγο να πούμε ότι το Metro 2033 Pentium είναι ταχύτερο από το Core i3 και το Core i5 είναι καλύτερο από το Core i7. Αυτό είναι επιβεβαίωση του γεγονότος ότι το Hyper-Threading δεν δείχνει την αποτελεσματικότητά του πάντα και όχι παντού.

Crysis 2

Αυτό το παιχνίδι έδειξε πολύ ενδιαφέροντα αποτελέσματα. Πρώτα απ 'όλα, σημειώνουμε ότι η επιρροή του Hyper-Threading είναι ξεκάθαρα ορατή σε επεξεργαστές διπλού πυρήνα - ο Core i3 είναι μπροστά από τον Pentium κατά σχεδόν 9 τοις εκατό, κάτι που είναι αρκετά για αυτό το παιχνίδι. Νίκη για HT και Intel; Όχι πραγματικά, αφού ο Core i7 δεν παρουσίασε κανένα κέρδος σε σχέση με τον αισθητά φθηνότερο Core i5. Αλλά υπάρχει μια λογική εξήγηση για αυτό - το Crysis 2 δεν μπορεί να χρησιμοποιήσει περισσότερες από τέσσερις ροές δεδομένων. Εξαιτίας αυτού, βλέπουμε μια καλή αύξηση στον διπύρηνο με το HT - ακόμα, τέσσερα νήματα, αν και λογικά, είναι καλύτερα από δύο. Από την άλλη πλευρά, δεν υπήρχε πουθενά να τοποθετηθούν επιπλέον νήματα Core i7· τέσσερις φυσικοί πυρήνες ήταν αρκετά αρκετοί. Έτσι, με βάση τα αποτελέσματα αυτής της δοκιμής, μπορούμε να σημειώσουμε τη θετική επίδραση του HT στον Core i3, ο οποίος είναι αισθητά καλύτερος από τον Pentium εδώ. Αλλά μεταξύ των τετραπύρηνων επεξεργαστών, ο Core i5 φαίνεται και πάλι σαν μια πιο λογική λύση.

Πεδίο μάχης 3

Τα αποτελέσματα εδώ είναι πολύ περίεργα. Εάν στη δοκιμή για τον αριθμό των πυρήνων, το πεδίο μάχης ήταν ένα παράδειγμα μικροσκοπικής αλλά γραμμικής αύξησης, τότε η συμπερίληψη του Hyper-Threading εισήγαγε χάος στα αποτελέσματα. Μάλιστα, μπορούμε να δηλώσουμε ότι ο Core i3, με τους δύο πυρήνες και το HT, αποδείχθηκε καλύτερος όλων, μπροστά ακόμη και από τους Core i5 και Core i7. Είναι περίεργο, φυσικά, αλλά την ίδια στιγμή, ο Core i5 και ο Core i7 ήταν και πάλι στο ίδιο επίπεδο. Τι εξηγεί αυτό δεν είναι ξεκάθαρο. Πιθανότατα, η μεθοδολογία δοκιμών σε αυτό το παιχνίδι έπαιξε ρόλο εδώ, η οποία δίνει μεγαλύτερα σφάλματα από τα τυπικά σημεία αναφοράς.

Στην τελευταία δοκιμή, το F1 2011 αποδείχθηκε ένα από τα παιχνίδια που είναι πολύ κρίσιμα για τον αριθμό των πυρήνων και σε αυτή τη δοκιμή μας εξέπληξε ξανά με την εξαιρετική επίδραση της τεχνολογίας Hyper-Threading στην απόδοση. Και πάλι, όπως και στο Crysis 2, η συμπερίληψη του HT λειτούργησε πολύ καλά σε επεξεργαστές διπλού πυρήνα. Κοιτάξτε τη διαφορά μεταξύ του υπό όρους Core i3 και του Pentium - είναι υπερδιπλάσια! Είναι ξεκάθαρα ορατό ότι το παιχνίδι στερείται πολύ δύο πυρήνων και ταυτόχρονα ο κώδικας του είναι τόσο καλά παραλληλισμένος που το αποτέλεσμα είναι εκπληκτικό. Από την άλλη πλευρά, δεν μπορείτε να διαφωνήσετε με τέσσερις φυσικούς πυρήνες - ο Core i5 είναι αισθητά ταχύτερος από τον Core i3. Όμως ο Core i7 και πάλι, όπως και στα προηγούμενα παιχνίδια, δεν έδειξε κάτι εξαιρετικό σε σύγκριση με τον Core i5. Ο λόγος είναι ο ίδιος - το παιχνίδι δεν μπορεί να χρησιμοποιήσει περισσότερα από 4 νήματα και η επιβάρυνση της λειτουργίας HT μειώνει την απόδοση του Core i7 κάτω από το επίπεδο του Core i5.

Ένας παλιός πολεμιστής χρειάζεται Hyper-Threading όχι περισσότερο από όσο ένας σκαντζόχοιρος χρειάζεται ένα μπλουζάκι - η επιρροή του δεν είναι σε καμία περίπτωση τόσο ξεκάθαρα αισθητή όσο στο F1 2011 ή στο Crysis 2. Ωστόσο, εξακολουθούμε να σημειώνουμε ότι η ενεργοποίηση του HT σε έναν επεξεργαστή διπλού πυρήνα έφερε 1 επιπλέον πλαίσιο. Αυτό σίγουρα δεν αρκεί για να πούμε ότι ο Core i3 είναι καλύτερος από τον Pentium. Τουλάχιστον, αυτή η βελτίωση σαφώς δεν αντιστοιχεί στη διαφορά στην τιμή αυτών των επεξεργαστών. Και δεν αξίζει καν να αναφέρουμε τη διαφορά τιμής μεταξύ του Core i5 και του Core i7, καθώς ο επεξεργαστής χωρίς υποστήριξη HT αποδείχθηκε και πάλι ταχύτερος. Και αισθητά πιο γρήγορα - κατά 7 τοις εκατό. Ό,τι και να πει κανείς, δηλώνουμε και πάλι το γεγονός ότι τα τέσσερα νήματα είναι το μέγιστο για αυτό το παιχνίδι και επομένως το HyperThreading σε αυτή την περίπτωση δεν βοηθά τον Core i7, αλλά εμποδίζει.

Στο παρελθόν είχαμε μιλήσει για την τεχνολογία SMT (Simultaneous Multi-Threading), η οποία χρησιμοποιείται σε επεξεργαστές Intel. Και παρόλο που αρχικά είχε την κωδική ονομασία Jackson Technology ως πιθανή επιλογή, η Intel ανακοίνωσε επίσημα την τεχνολογία της στο φόρουμ IDF το περασμένο φθινόπωρο. Η κωδική ονομασία Jackson αντικαταστάθηκε από το πιο κατάλληλο Hyper-Threading. Έτσι, για να κατανοήσουμε πώς λειτουργεί η νέα τεχνολογία, χρειαζόμαστε κάποιες αρχικές γνώσεις. Δηλαδή, πρέπει να γνωρίζουμε τι είναι ένα νήμα, πώς εκτελούνται αυτά τα νήματα. Γιατί λειτουργεί η εφαρμογή; Πώς γνωρίζει ο επεξεργαστής ποιες λειτουργίες πρέπει να εκτελέσει σε ποια δεδομένα; Όλες αυτές οι πληροφορίες περιέχονται στον μεταγλωττισμένο κώδικα της εφαρμογής που εκτελείται. Και μόλις η εφαρμογή λάβει οποιαδήποτε εντολή, οποιαδήποτε δεδομένα από τον χρήστη, τα νήματα αποστέλλονται αμέσως στον επεξεργαστή, με αποτέλεσμα να εκτελεί αυτό που πρέπει να κάνει ως απάντηση στο αίτημα του χρήστη. Από την πλευρά του επεξεργαστή, ένα νήμα είναι ένα σύνολο εντολών που πρέπει να εκτελεστούν. Όταν χτυπηθείτε από ένα βλήμα στο Quake III Arena ή όταν ανοίγετε ένα έγγραφο του Microsoft Word, αποστέλλεται στον επεξεργαστή ένα συγκεκριμένο σύνολο οδηγιών που πρέπει να εκτελέσει.

Ο επεξεργαστής ξέρει ακριβώς πού να πάρει αυτές τις οδηγίες. Ένας σπάνια αναφερόμενος καταχωρητής που ονομάζεται Μετρητής Προγράμματος (PC) έχει σχεδιαστεί για αυτό το σκοπό. Αυτός ο καταχωρητής δείχνει τη θέση στη μνήμη όπου είναι αποθηκευμένη η επόμενη εντολή που θα εκτελεστεί. Όταν ένα νήμα αποστέλλεται στον επεξεργαστή, η διεύθυνση μνήμης του νήματος φορτώνεται σε αυτόν τον μετρητή προγράμματος, έτσι ώστε ο επεξεργαστής να γνωρίζει ακριβώς από πού να ξεκινήσει την εκτέλεση. Μετά από κάθε εντολή, η τιμή αυτού του καταχωρητή αυξάνεται. Όλη αυτή η διαδικασία εκτελείται μέχρι να τερματιστεί το νήμα. Στο τέλος της εκτέλεσης του νήματος, η διεύθυνση της επόμενης εντολής που θα εκτελεστεί εισάγεται στον μετρητή προγράμματος. Τα νήματα μπορούν να διακόψουν το ένα το άλλο και ο επεξεργαστής αποθηκεύει την τιμή του μετρητή προγράμματος στη στοίβα και φορτώνει μια νέα τιμή στον μετρητή. Αλλά εξακολουθεί να υπάρχει ένας περιορισμός σε αυτή τη διαδικασία - μόνο ένα νήμα μπορεί να εκτελεστεί ανά μονάδα χρόνου.

Υπάρχει ένας πολύ γνωστός τρόπος για να λυθεί αυτό το πρόβλημα. Συνίσταται στη χρήση δύο επεξεργαστών - εάν ένας επεξεργαστής μπορεί να εκτελέσει ένα νήμα τη φορά, τότε δύο επεξεργαστές μπορούν ήδη να εκτελέσουν δύο νήματα στην ίδια μονάδα χρόνου. Σημειώστε ότι αυτή η μέθοδος δεν είναι ιδανική. Έρχεται με πολλά άλλα προβλήματα. Κάποια που πιθανότατα γνωρίζετε ήδη. Πρώτον, πολλοί επεξεργαστές είναι πάντα πιο ακριβοί από έναν. Δεύτερον, η διαχείριση δύο επεξεργαστών δεν είναι επίσης τόσο εύκολη. Επιπλέον, μην ξεχνάτε την κατανομή των πόρων μεταξύ των επεξεργαστών. Για παράδειγμα, πριν από την εισαγωγή του chipset AMD 760MP, όλες οι πλατφόρμες x86 με υποστήριξη πολλαπλής επεξεργασίας μοιράζονταν όλο το εύρος ζώνης του διαύλου συστήματος μεταξύ όλων των διαθέσιμων επεξεργαστών. Αλλά το κύριο μειονέκτημα είναι διαφορετικό - για μια τέτοια εργασία, τόσο η εφαρμογή όσο και το ίδιο το λειτουργικό σύστημα πρέπει να υποστηρίζουν την πολυεπεξεργασία. Η δυνατότητα διανομής της εκτέλεσης πολλαπλών νημάτων στους πόρους του υπολογιστή ονομάζεται συχνά multithreading. Ταυτόχρονα, το λειτουργικό σύστημα πρέπει να υποστηρίζει multithreading. Οι εφαρμογές πρέπει επίσης να υποστηρίζουν τη λειτουργία πολλαπλών νημάτων για να αξιοποιήσετε στο έπακρο τους πόρους του υπολογιστή σας. Λάβετε αυτό υπόψη καθώς εξετάζουμε μια άλλη προσέγγιση για την επίλυση του προβλήματος πολλαπλών νημάτων, τη νέα τεχνολογία Hyper-Threading της Intel.

Η παραγωγικότητα δεν είναι ποτέ αρκετή

Γίνεται πάντα πολύς λόγος για την αποτελεσματικότητα. Και όχι μόνο σε εταιρικό περιβάλλον, σε κάποια σοβαρά έργα, αλλά και στην καθημερινότητα. Λένε ότι οι homo sapiens χρησιμοποιούν μόνο εν μέρει τις δυνατότητες του εγκεφάλου τους. Το ίδιο ισχύει και για τους επεξεργαστές των σύγχρονων υπολογιστών.

Πάρτε για παράδειγμα τον Pentium 4. Ο επεξεργαστής έχει συνολικά επτά μονάδες εκτέλεσης, δύο από τις οποίες μπορούν να λειτουργήσουν με διπλάσια ταχύτητα από δύο λειτουργίες (micro-ops) ανά κύκλο ρολογιού. Αλλά σε κάθε περίπτωση, δεν θα έβρισκες πρόγραμμα που θα μπορούσε να γεμίσει όλες αυτές τις συσκευές με οδηγίες. Τα συμβατικά προγράμματα αρκούνται σε απλούς υπολογισμούς ακεραίων και μερικές λειτουργίες φόρτωσης και αποθήκευσης δεδομένων, ενώ οι πράξεις κινητής υποδιαστολής αφήνονται στην άκρη. Άλλα προγράμματα (για παράδειγμα, Maya) φορτώνουν κυρίως συσκευές κινητής υποδιαστολής με εργασία.

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

Το παρακάτω σχήμα δείχνει το επίπεδο φορτίου των ενεργοποιητών (το γκρι υποδηλώνει μια συσκευή αδράνειας, το μπλε δείχνει μια συσκευή που λειτουργεί):

Έτσι, βλέπετε ότι σε κάθε κύκλο ρολογιού χρησιμοποιείται μόνο το 33% όλων των ενεργοποιητών. Αυτή τη φορά το FPU παραμένει εντελώς αχρησιμοποίητο. Σύμφωνα με την Intel, τα περισσότερα προγράμματα IA-32 x86 δεν χρησιμοποιούν περισσότερο από το 35% των μονάδων εκτέλεσης του επεξεργαστή Pentium 4.

Ας φανταστούμε ένα άλλο νήμα και ας το στείλουμε στον επεξεργαστή για εκτέλεση. Αυτή τη φορά θα αποτελείται από τις λειτουργίες φόρτωσης δεδομένων, προσθήκης και αποθήκευσης δεδομένων. Θα εκτελεστούν με την ακόλουθη σειρά:

Και πάλι, το φορτίο στους ενεργοποιητές είναι μόνο 33%.

Μια καλή διέξοδος από αυτήν την κατάσταση θα ήταν ο Παραλληλισμός Επιπέδου Διδασκαλίας (ILP). Σε αυτήν την περίπτωση, πολλές εντολές εκτελούνται ταυτόχρονα, αφού ο επεξεργαστής είναι σε θέση να γεμίσει πολλές παράλληλες μονάδες εκτέλεσης ταυτόχρονα. Δυστυχώς, τα περισσότερα προγράμματα x86 δεν είναι επαρκώς προσαρμοσμένα στο ILP. Επομένως, πρέπει να βρούμε άλλους τρόπους για να αυξήσουμε την παραγωγικότητα. Έτσι, για παράδειγμα, εάν το σύστημα χρησιμοποιούσε δύο επεξεργαστές ταυτόχρονα, τότε δύο νήματα θα μπορούσαν να εκτελεστούν ταυτόχρονα. Αυτή η λύση ονομάζεται παραλληλισμός επιπέδου νήματος (TLP). Παρεμπιπτόντως, αυτή η λύση είναι αρκετά ακριβή.

Ποιοι άλλοι τρόποι υπάρχουν για να αυξηθεί η εκτελεστική ισχύς των σύγχρονων επεξεργαστών x86;

Υπερ-Νηματοποίηση

Το πρόβλημα της υποχρησιμοποίησης των ενεργοποιητών οφείλεται σε διάφορους λόγους. Γενικά, εάν ο επεξεργαστής δεν μπορεί να λάβει δεδομένα με την επιθυμητή ταχύτητα (αυτό συμβαίνει ως αποτέλεσμα ανεπαρκούς εύρους ζώνης διαύλου συστήματος και διαύλου μνήμης), τότε οι ενεργοποιητές δεν θα χρησιμοποιηθούν τόσο αποτελεσματικά. Επιπλέον, υπάρχει ένας άλλος λόγος - η έλλειψη παραλληλισμού σε επίπεδο εντολών στα περισσότερα νήματα εντολών.

Επί του παρόντος, οι περισσότεροι κατασκευαστές βελτιώνουν την ταχύτητα των επεξεργαστών αυξάνοντας την ταχύτητα του ρολογιού και τα μεγέθη της προσωρινής μνήμης. Φυσικά, με αυτόν τον τρόπο μπορείτε να αυξήσετε την απόδοση, αλλά και πάλι οι δυνατότητες του επεξεργαστή δεν θα αξιοποιηθούν πλήρως. Εάν μπορούσαμε να εκτελέσουμε πολλά νήματα ταυτόχρονα, θα μπορούσαμε να χρησιμοποιήσουμε τον επεξεργαστή πολύ πιο αποτελεσματικά. Αυτή ακριβώς είναι η ουσία της τεχνολογίας Hyper-Threading.

Το Hyper-Threading είναι το όνομα μιας τεχνολογίας που προϋπήρχε εκτός του κόσμου x86, ταυτόχρονης πολλαπλής νήματος (SMT). Η ιδέα πίσω από αυτή την τεχνολογία είναι απλή. Ένας φυσικός επεξεργαστής εμφανίζεται στο λειτουργικό σύστημα ως δύο λογικοί επεξεργαστές και το λειτουργικό σύστημα δεν βλέπει τη διαφορά μεταξύ ενός επεξεργαστή SMT ή δύο κανονικών επεξεργαστών. Και στις δύο περιπτώσεις, το λειτουργικό σύστημα δρομολογεί νήματα σαν να ήταν σύστημα διπλού επεξεργαστή. Επιπλέον, όλα τα ζητήματα επιλύονται σε επίπεδο υλικού.

Σε έναν επεξεργαστή με Hyper-Threading, κάθε λογικός επεξεργαστής έχει το δικό του σύνολο καταχωρητών (συμπεριλαμβανομένου ενός ξεχωριστού μετρητή προγράμματος) και για να διατηρηθεί η τεχνολογία απλή, δεν υλοποιεί την ταυτόχρονη εκτέλεση εντολών ανάκτησης/αποκωδικοποίησης σε δύο νήματα. Δηλαδή, τέτοιες εντολές εκτελούνται μία προς μία. Μόνο οι συνηθισμένες εντολές εκτελούνται παράλληλα.

Η τεχνολογία ανακοινώθηκε επίσημα στο Φόρουμ προγραμματιστών της Intel το περασμένο φθινόπωρο. Η τεχνολογία επιδείχθηκε σε επεξεργαστή Xeon, όπου η απόδοση πραγματοποιήθηκε με χρήση Maya. Σε αυτήν τη δοκιμή, το Xeon με Hyper-Threading είχε απόδοση 30% καλύτερα από το τυπικό Xeon. Μια ωραία ενίσχυση απόδοσης, αλλά αυτό που είναι πιο ενδιαφέρον είναι ότι η τεχνολογία είναι ήδη παρούσα στους πυρήνες Pentium 4 και Xeon, μόνο που είναι απενεργοποιημένη.

Η τεχνολογία δεν έχει κυκλοφορήσει ακόμη, αλλά όσοι αγοράσατε το Xeon 0,13 micron και εγκαταστήσατε αυτόν τον επεξεργαστή σε πλακέτες με ενημερωμένο BIOS πιθανότατα εκπλαγείτε όταν είδατε μια επιλογή στο BIOS για ενεργοποίηση/απενεργοποίηση του Hyper-Threading.

Στο μεταξύ, η Intel θα αφήσει την επιλογή Hyper-Threading απενεργοποιημένη από προεπιλογή. Ωστόσο, για να το ενεργοποιήσετε, χρειάζεται απλώς να ενημερώσετε το BIOS. Όλα αυτά ισχύουν για σταθμούς εργασίας και διακομιστές· όσον αφορά την αγορά προσωπικών υπολογιστών, η εταιρεία δεν έχει σχέδια σχετικά με αυτήν την τεχνολογία στο εγγύς μέλλον. Αν και είναι δυνατό, οι κατασκευαστές μητρικών πλακών θα παρέχουν τη δυνατότητα να ενεργοποιήσουν το Hyper-Threading χρησιμοποιώντας ένα ειδικό BIOS.

Το πολύ ενδιαφέρον ερώτημα παραμένει, γιατί η Intel θέλει να αφήσει αυτή την επιλογή απενεργοποιημένη;

Προχωρώντας βαθύτερα στην τεχνολογία

Θυμάστε αυτά τα δύο νήματα από τα προηγούμενα παραδείγματα; Ας υποθέσουμε αυτή τη φορά ότι ο επεξεργαστής μας είναι εξοπλισμένος με Hyper-Threading. Ας δούμε τι θα συμβεί αν προσπαθήσουμε να εκτελέσουμε αυτά τα δύο νήματα ταυτόχρονα:

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

Τι βλέπουμε λοιπόν; Ο παραλληλισμός σε επίπεδο νήματος απέτυχε - οι συσκευές εκτέλεσης άρχισαν να χρησιμοποιούνται ακόμη λιγότερο αποτελεσματικά. Αντί να εκτελεί τα νήματα παράλληλα, ο επεξεργαστής τα εκτελεί πιο αργά από ότι αν τα εκτελούσε χωρίς Hyper-Threading. Ο λόγος είναι αρκετά απλός. Προσπαθήσαμε να εκτελέσουμε δύο πολύ παρόμοια νήματα ταυτόχρονα. Εξάλλου, και οι δύο αποτελούνται από εργασίες φόρτωσης/αποθήκευσης και εργασίες προσθήκης. Αν εκτελούσαμε μια εφαρμογή "ακέραιος" και μια εφαρμογή κινητής υποδιαστολής παράλληλα, θα ήμασταν σε πολύ καλύτερη κατάσταση. Όπως μπορείτε να δείτε, η αποτελεσματικότητα του Hyper-Threading εξαρτάται σε μεγάλο βαθμό από τον τύπο του φορτίου στον υπολογιστή.

Επί του παρόντος, οι περισσότεροι χρήστες υπολογιστών χρησιμοποιούν τον υπολογιστή τους περίπου όπως περιγράφεται στο παράδειγμά μας. Ο επεξεργαστής εκτελεί πολλές πολύ παρόμοιες λειτουργίες. Δυστυχώς, όταν πρόκειται για παρόμοιες λειτουργίες, προκύπτουν πρόσθετες διαχειριστικές δυσκολίες. Υπάρχουν περιπτώσεις που δεν έχουν απομείνει ενεργοποιητές του απαιτούμενου τύπου και, όπως θα το είχε η τύχη, υπάρχουν διπλάσιες οδηγίες από ότι συνήθως. Στις περισσότερες περιπτώσεις, εάν οι επεξεργαστές οικιακών υπολογιστών χρησιμοποιούσαν τεχνολογία Hyper-Threading, δεν θα υπήρχε αύξηση της απόδοσης, και ίσως ακόμη και μείωση 0-10%.

Στους σταθμούς εργασίας, ωστόσο, το Hyper-Threading έχει περισσότερες ευκαιρίες για αύξηση της παραγωγικότητας. Αλλά από την άλλη, όλα εξαρτώνται από τη συγκεκριμένη χρήση του υπολογιστή. Ένας σταθμός εργασίας μπορεί να σημαίνει είτε έναν υπολογιστή προηγμένης τεχνολογίας για την επεξεργασία τρισδιάστατων γραφικών είτε απλώς έναν υπολογιστή με μεγάλο φορτίο.

Η μεγαλύτερη αύξηση στην απόδοση από τη χρήση του Hyper-Threading παρατηρείται σε εφαρμογές διακομιστή. Αυτό οφείλεται κυρίως στη μεγάλη ποικιλία λειτουργιών που αποστέλλονται στον επεξεργαστή. Ένας διακομιστής βάσης δεδομένων που χρησιμοποιεί συναλλαγές μπορεί να εκτελείται 20-30% πιο γρήγορα όταν είναι ενεργοποιημένη η επιλογή Hyper-Threading. Ελαφρώς μικρότερα κέρδη απόδοσης παρατηρούνται στους διακομιστές ιστού και σε άλλους τομείς.

Μέγιστη απόδοση από το Hyper-Threading

Πιστεύετε ότι η Intel ανέπτυξε το Hyper-Threading μόνο για τη σειρά επεξεργαστών διακομιστών της; Φυσικά και όχι. Εάν συνέβαινε αυτό, δεν θα σπαταλούσαν τον χώρο των τσιπών στους άλλους επεξεργαστές τους. Στην πραγματικότητα, η αρχιτεκτονική NetBurst που χρησιμοποιείται στα Pentium 4 και Xeon είναι απόλυτα κατάλληλη για έναν πυρήνα που υποστηρίζει ταυτόχρονη πολυνηματική σύνδεση. Ας φανταστούμε ξανά τον επεξεργαστή. Αυτή τη φορά θα έχει έναν ακόμη ενεργοποιητή - μια δεύτερη συσκευή ακέραιου αριθμού. Ας δούμε τι συμβαίνει εάν τα νήματα εκτελούνται και από τις δύο συσκευές:

Χρησιμοποιώντας τη δεύτερη ακέραια συσκευή, η μόνη διένεξη προέκυψε στην τελευταία λειτουργία. Ο θεωρητικός μας επεξεργαστής είναι κάπως παρόμοιος με τον Pentium 4. Διαθέτει έως και τρεις ακέραιες συσκευές (δύο ALU και μία συσκευή αργού ακέραιου αριθμού για περιστρεφόμενες βάρδιες). Το πιο σημαντικό είναι ότι και οι δύο ακέραιες συσκευές Pentium 4 μπορούν να λειτουργούν με διπλή ταχύτητα—εκτελώντας δύο μικρο-λειτουργίες ανά κύκλο ρολογιού. Αυτό, με τη σειρά του, σημαίνει ότι οποιαδήποτε από αυτές τις δύο ακέραιες συσκευές Pentium 4/Xeon θα μπορούσε να εκτελέσει αυτές τις δύο λειτουργίες προσθήκης από διαφορετικά νήματα σε έναν κύκλο ρολογιού.

Αυτό όμως δεν λύνει το πρόβλημά μας. Δεν θα είχε νόημα απλώς να προσθέσουμε πρόσθετες μονάδες εκτέλεσης στον επεξεργαστή για να αυξήσουμε την απόδοση του Hyper-Threading. Όσον αφορά τον χώρο πυριτίου, αυτό θα ήταν εξαιρετικά ακριβό. Αντίθετα, η Intel πρότεινε στους προγραμματιστές να βελτιστοποιήσουν τα προγράμματα για Hyper-Threading.

Χρησιμοποιώντας την εντολή HALT, μπορείτε να αναστείλετε έναν από τους λογικούς επεξεργαστές, αυξάνοντας έτσι την απόδοση των εφαρμογών που δεν επωφελούνται από το Hyper-Threading. Έτσι, η εφαρμογή δεν θα εκτελείται πιο αργά, αλλά ένας από τους λογικούς επεξεργαστές θα σταματήσει και το σύστημα θα λειτουργεί σε έναν λογικό επεξεργαστή - η απόδοση θα είναι η ίδια όπως σε υπολογιστές με έναν επεξεργαστή. Στη συνέχεια, όταν η εφαρμογή αποφασίσει ότι θα επωφεληθεί από το Hyper-Threading σε απόδοση, ο δεύτερος λογικός επεξεργαστής θα συνεχίσει απλώς τη δουλειά του.

Υπάρχει μια παρουσίαση στον ιστότοπο της Intel που περιγράφει ακριβώς πώς να προγραμματίσετε για να αξιοποιήσετε στο έπακρο το Hyper-Threading.

συμπεράσματα

Ενώ όλοι ήμασταν εξαιρετικά ενθουσιασμένοι όταν ακούσαμε φήμες για Hyper-Threading στους πυρήνες όλων των σύγχρονων Pentium 4/Xeons, δεν θα είναι ακόμα δωρεάν απόδοση για όλες τις περιπτώσεις. Οι λόγοι είναι ξεκάθαροι και η τεχνολογία έχει πολύ δρόμο να διανύσει μέχρι να δούμε το Hyper-Threading να εκτελείται σε όλες τις πλατφόρμες, συμπεριλαμβανομένων των οικιακών υπολογιστών. Και με την υποστήριξη των προγραμματιστών, η τεχνολογία μπορεί σίγουρα να είναι ένας καλός σύμμαχος για τους επεξεργαστές Pentium 4, Xeon και μελλοντικής γενιάς της Intel.

Δεδομένων των σημερινών περιορισμών και της διαθέσιμης τεχνολογίας συσκευασίας, το Hyper-Threading φαίνεται πιο έξυπνη επιλογή για την καταναλωτική αγορά από, για παράδειγμα, η προσέγγιση SledgeHammer της AMD - αυτοί οι επεξεργαστές χρησιμοποιούν έως και δύο πυρήνες. Και μέχρι να ωριμάσουν οι τεχνολογίες συσκευασίας όπως το Bumpless Build-Up Layer, το κόστος ανάπτυξης πολυπύρηνων επεξεργαστών μπορεί να είναι απαγορευτικό.

Είναι ενδιαφέρον να σημειωθεί πόσο διαφορετικές έχουν γίνει η AMD και η Intel τα τελευταία χρόνια. Άλλωστε, η AMD κάποτε αντέγραψε ουσιαστικά τους επεξεργαστές Intel. Τώρα οι εταιρείες έχουν αναπτύξει θεμελιωδώς διαφορετικές προσεγγίσεις για μελλοντικούς επεξεργαστές για διακομιστές και σταθμούς εργασίας. Η AMD έχει κάνει πραγματικά πολύ δρόμο. Και αν οι επεξεργαστές Sledge Hammer χρησιμοποιούν πραγματικά δύο πυρήνες, τότε μια τέτοια λύση θα είναι πιο αποτελεσματική σε απόδοση από το Hyper-Threading. Πράγματι, σε αυτή την περίπτωση, εκτός από τον διπλασιασμό του αριθμού όλων των ενεργοποιητών, εξαλείφονται τα προβλήματα που περιγράψαμε παραπάνω.

Το Hyper-Threading δεν θα φτάσει στην αγορά των βασικών υπολογιστών για λίγο, αλλά με την καλή υποστήριξη προγραμματιστών, θα μπορούσε να είναι η επόμενη τεχνολογία που θα κατέβει από το επίπεδο του διακομιστή στους mainstream υπολογιστές.

«...Και είμαστε περήφανοι και ο εχθρός μας είναι περήφανος
Χέρι, ξεχάστε την τεμπελιά. Ας δούμε,
ποιος έχει ποιανού τις μπότες στο τέλος
επιτέλους θα σκύψει τα γόνατά του...»
© ταινία "D"Artagnan and the Three Musketeers"

Πριν από λίγο καιρό, ο συγγραφέας επέτρεψε στον εαυτό του να «γκρίνει λίγο» για το νέο παράδειγμα από το Intel Hyper Threading. Προς τιμή της Intel, η σύγχυση του συγγραφέα δεν πέρασε απαρατήρητη. Ως εκ τούτου, προσφέρθηκε βοήθεια στον συγγραφέα για να ανακαλύψει ( πώς αξιολόγησαν με λεπτότητα τα στελέχη της εταιρείας) «πραγματική» κατάσταση με την τεχνολογία Hyper Threading. Λοιπόν, η επιθυμία να ανακαλύψει κανείς την αλήθεια μπορεί μόνο να επαινεθεί. Δεν είναι έτσι, αγαπητέ αναγνώστη; Τουλάχιστον, έτσι ακούγεται μια από τις αλήθειες: αλήθεια είναι καλό. Λοιπόν, θα προσπαθήσουμε να ενεργήσουμε σύμφωνα με αυτή τη φράση. Επιπλέον, έχει πράγματι εμφανιστεί μια ορισμένη ποσότητα νέων πληροφοριών.

Αρχικά, ας διατυπώσουμε τι ακριβώς γνωρίζουμε για την τεχνολογία Hyper Threading:

1. Αυτή η τεχνολογία έχει σχεδιαστεί για να αυξάνει την απόδοση του επεξεργαστή. Το γεγονός είναι ότι, σύμφωνα με εκτιμήσεις της Intel, μόνο το 30% λειτουργεί τις περισσότερες φορές ( Παρεμπιπτόντως, αυτό είναι ένα αρκετά αμφιλεγόμενο ποσό· οι λεπτομέρειες του υπολογισμού του είναι άγνωστες) όλων των ενεργοποιητών στον επεξεργαστή. Συμφωνώ, αυτό είναι αρκετά προσβλητικό. Και το γεγονός ότι προέκυψε η ιδέα να "προσθέσω" το υπόλοιπο 70% φαίνεται αρκετά λογικό ( Επιπλέον, ο ίδιος ο επεξεργαστής Pentium 4, στον οποίο θα εφαρμοστεί αυτή η τεχνολογία, δεν υποφέρει από υπερβολική απόδοση ανά megahertz). Έτσι ο συγγραφέας αναγκάζεται να παραδεχτεί ότι αυτή η ιδέα είναι αρκετά σωστή.

2. Η ουσία της τεχνολογίας Hyper Threading είναι ότι κατά την εκτέλεση ενός «νήματος» ενός προγράμματος, οι αδρανείς εκτελεστικές συσκευές μπορούν να αρχίσουν να εκτελούν ένα άλλο «νήμα» του προγράμματος ( ή "νήματα" αλλοπρογράμματα). Ή, για παράδειγμα, όταν εκτελείτε μια ακολουθία εντολών, περιμένετε τα δεδομένα από τη μνήμη για να εκτελέσετε μια άλλη ακολουθία.

3. Φυσικά, κατά την εκτέλεση διαφορετικών «νημάτων», ο επεξεργαστής πρέπει με κάποιο τρόπο να διακρίνει ποιες εντολές ανήκουν σε ποιο «νήμα». Αυτό σημαίνει ότι υπάρχει κάποιος μηχανισμός ( κάποιο σημάδι), χάρη στο οποίο ο επεξεργαστής διακρίνει σε ποιο «νήμα» ανήκουν οι εντολές.

4. Είναι επίσης σαφές ότι, δεδομένου του μικρού αριθμού καταχωρητών γενικού σκοπού στην αρχιτεκτονική x86 ( σύνολο 8), κάθε νήμα έχει το δικό του σύνολο καταχωρητών. Ωστόσο, αυτό δεν είναι πλέον είδηση· αυτός ο αρχιτεκτονικός περιορισμός έχει παρακαμφθεί εδώ και αρκετό καιρό χρησιμοποιώντας τη «μετονομασία μητρώου». Με άλλα λόγια, υπάρχουν πολύ περισσότεροι φυσικοί καταχωρητές από τους λογικούς καταχωρητές. Υπάρχουν 40 από αυτά στον επεξεργαστή Pentium III. Σίγουρα αυτός ο αριθμός για το Pentium 4 είναι μεγαλύτερος· ο συγγραφέας δεν έχει καμία δικαιολογία ( εκτός από τις εκτιμήσεις της "συμμετρίας":-) η άποψη είναι ότι υπάρχουν περίπου εκατοντάδες από αυτούς. Δεν βρέθηκαν αξιόπιστες πληροφορίες για τον αριθμό τους. Σύμφωνα με ανεπιβεβαίωτα ακόμη στοιχεία, είναι 256. Σύμφωνα με άλλες πηγές, άλλος αριθμός. Γενικά, πλήρης αβεβαιότητα... Παρεμπιπτόντως, η θέση της Intel για Αυτόο λόγος είναι εντελώς ακατανόητος :-( Ο συγγραφέας δεν καταλαβαίνει τι προκάλεσε τέτοια μυστικότητα.

5. Είναι επίσης γνωστό ότι στην περίπτωση που πολλά «νήματα» διεκδικούν τους ίδιους πόρους ή ένα από τα «νήματα» περιμένει δεδομένα, προκειμένου να αποφευχθεί η πτώση της απόδοσης, ο προγραμματιστής πρέπει να εισάγει μια ειδική «παύση». εντολή. Φυσικά, αυτό θα απαιτήσει άλλη μια εκ νέου μεταγλώττιση των προγραμμάτων.

6. Είναι επίσης σαφές ότι μπορεί να υπάρξουν περιπτώσεις όπου οι προσπάθειες για την ταυτόχρονη εκτέλεση πολλών «νημάτων» θα οδηγήσουν σε πτώση της απόδοσης. Για παράδειγμα, λόγω του γεγονότος ότι το μέγεθος της κρυφής μνήμης L2 δεν είναι άπειρο και τα ενεργά «νήματα» θα προσπαθήσουν να φορτώσουν τη μνήμη cache, είναι πιθανό ένας τέτοιος «αγώνας για τη μνήμη cache» να οδηγήσει σε συνεχή εκκαθάριση και επαναφόρτωση δεδομένα στην κρυφή μνήμη δεύτερου επιπέδου.

7. Η Intel ισχυρίζεται ότι κατά τη βελτιστοποίηση προγραμμάτων για αυτήν την τεχνολογία, το κέρδος θα είναι έως και 30%. ( Ή μάλλον, η Intel ισχυρίζεται ότι στις σημερινές εφαρμογές διακομιστή και στα σημερινά συστήματα έως και 30%) Χμ... Αυτό είναι περισσότερο από αρκετό κίνητρο για βελτιστοποίηση.

Λοιπόν, έχουμε διαμορφώσει ορισμένα χαρακτηριστικά. Τώρα ας προσπαθήσουμε να σκεφτούμε κάποιες συνέπειες ( όποτε είναι δυνατόν, με βάση πληροφορίες που είναι γνωστές σε εμάς). Τι μπορούμε να πούμε? Λοιπόν, πρώτα, πρέπει να ρίξουμε μια πιο προσεκτική ματιά στο τι ακριβώς μας προσφέρεται. Είναι αυτό το τυρί πραγματικά «δωρεάν»; Αρχικά, ας υπολογίσουμε πώς ακριβώς θα συμβεί η "ταυτόχρονη" επεξεργασία πολλών "νημάτων". Παρεμπιπτόντως, τι εννοεί η Intel με τη λέξη "νήμα";

Ο συγγραφέας έχει την εντύπωση ( πιθανώς λανθασμένη), το οποίο σε αυτή την περίπτωση αναφέρεται σε ένα τμήμα προγράμματος που ένα λειτουργικό σύστημα πολλαπλών εργασιών εκχωρεί για εκτέλεση σε έναν από τους επεξεργαστές ενός συστήματος υλικού πολλαπλών επεξεργαστών. "Περίμενε!" ο προσεκτικός αναγνώστης θα πει "αυτός είναι ένας από τους ορισμούς! Τι νέο υπάρχει εδώ;" Και τίποτα μέσα δεδομένοςΟ συγγραφέας δεν διεκδικεί πρωτοτυπία σε αυτή την ερώτηση. Θα ήθελα να καταλάβω ποιο ήταν το "πρωτότυπο" της Intel :-). Λοιπόν, ας το πάρουμε ως υπόθεση εργασίας.

Στη συνέχεια, εκτελείται ένα συγκεκριμένο νήμα. Εν τω μεταξύ, ο αποκωδικοποιητής εντολών ( παρεμπιπτόντως, εντελώς ασύγχρονο και δεν περιλαμβάνεται στα περιβόητα 20 στάδια του Net Burst) εκτελεί δειγματοληψία και αποκρυπτογράφηση ( με όλες τις αλληλεξαρτήσεις) V μικροοδηγίες. Εδώ είναι απαραίτητο να διευκρινιστεί τι εννοεί ο συγγραφέας με τη λέξη "ασύγχρονο" - το γεγονός είναι ότι το αποτέλεσμα της "κατάρρευσης" των εντολών x86 σε μικροεντολές εμφανίζεται στο μπλοκ αποκρυπτογράφησης. Κάθε εντολή x86 μπορεί να αποκωδικοποιηθεί σε μία, δύο ή περισσότερες μικροεντολές. Ταυτόχρονα, στο στάδιο της επεξεργασίας, διευκρινίζονται οι αλληλεξαρτήσεις και παραδίδονται τα απαραίτητα δεδομένα μέσω του διαύλου συστήματος. Κατά συνέπεια, η ταχύτητα λειτουργίας αυτού του μπλοκ εξαρτάται συχνά από την ταχύτητα πρόσβασης δεδομένων από τη μνήμη και, στη χειρότερη περίπτωση, καθορίζεται από αυτήν. Θα ήταν λογικό να το «ξεδέσουμε» από τον αγωγό στον οποίο μάλιστα γίνονται μικροεπεμβάσεις. Αυτό έγινε με την τοποθέτηση ενός μπλοκ αποκρυπτογράφησης πρινίχνος κρυφής μνήμης. Τι προσπαθούμε να πετύχουμε με αυτό; Και με τη βοήθεια αυτής της «αναδιάταξης μπλοκ» πετυχαίνουμε ένα απλό πράγμα: εάν υπάρχουν μικροεντολές για εκτέλεση στη μνήμη cache του ίχνους, ο επεξεργαστής λειτουργεί πιο αποτελεσματικά. Φυσικά, αυτή η μονάδα λειτουργεί στη συχνότητα του επεξεργαστή, σε αντίθεση με το Rapid Engine. Παρεμπιπτόντως, ο συγγραφέας είχε την εντύπωση ότι αυτός ο αποκωδικοποιητής είναι κάτι σαν μεταφορικός ιμάντας μήκους έως 10-15 σταδίων.Έτσι, από την ανάκτηση δεδομένων από την κρυφή μνήμη μέχρι τη λήψη του αποτελέσματος, προφανώς, υπάρχουν περίπου 30 35 στάδια ( συμπεριλαμβανομένου του αγωγού Net Burst, ανατρέξτε στην αναφορά Microdesign Resources August2000 Microprocessor Report Volume14 Archive8, page12).

Το προκύπτον σύνολο μικροεντολών, μαζί με όλες τις αλληλεξαρτήσεις, συσσωρεύεται σε μια προσωρινή μνήμη ίχνους στην ίδια κρυφή μνήμη, η οποία περιέχει περίπου 12.000 μικρολειτουργίες. Σύμφωνα με πρόχειρες εκτιμήσεις, η πηγή μιας τέτοιας εκτίμησης είναι η δομή της μικροεντολής P6. το γεγονός είναι ότι ουσιαστικά το μήκος των εντολών είναι απίθανο να αλλάξει δραματικά ( Λαμβάνοντας υπόψη το μήκος της μικροεντολής μαζί με τα πεδία εξυπηρέτησης είναι περίπου 100 bit) το μέγεθος της κρυφής μνήμης ίχνους λαμβάνεται από 96 KB προς 120 KB!!! Ωστόσο! Σε αυτό το φόντο, μια κρυφή μνήμη μεγέθους δεδομένων 8 Το KB φαίνεται κάπως ασύμμετρο :-)… και χλωμό. Φυσικά, όσο αυξάνεται το μέγεθος, αυξάνονται και οι καθυστερήσεις πρόσβασης ( για παράδειγμα, όταν αυξάνεται στα 32 KB, οι καθυστερήσεις αντί για δύο κύκλους ρολογιού θα είναι 4). Αλλά είναι πραγματικά τόσο σημαντική η ταχύτητα πρόσβασης σε αυτήν την κρυφή μνήμη δεδομένων, ώστε μια αύξηση του λανθάνοντος χρόνου κατά 2 κύκλους ρολογιού ( με φόντο το συνολικό μήκος ολόκληρου του μεταφορέα) καθιστά ασύμφορη μια τέτοια αύξηση όγκου; Ή μήπως είναι απλώς θέμα απροθυμίας να αυξηθεί το μέγεθος του κρυστάλλου; Στη συνέχεια, όμως, όταν μετακινηθείτε στα 0,13 μικρά, το πρώτο βήμα ήταν να αυξήσετε αυτή τη συγκεκριμένη κρυφή μνήμη ( όχι μια κρυφή μνήμη δεύτερου επιπέδου). Όσοι αμφιβάλλουν για αυτή τη διατριβή θα πρέπει να θυμούνται τη μετάβαση από το Pentium στο Pentium MMX χάρη στην αύξηση της κρυφής μνήμης πρώτου επιπέδου διπλασιάστηκεΣχεδόν όλα τα προγράμματα έλαβαν αύξηση απόδοσης 10 15%. Τι να πούμε για την αύξηση; τετραπλάσιο (ειδικά λαμβάνοντας υπόψη ότι οι ταχύτητες του επεξεργαστή έχουν αυξηθεί στα 2 GHz και ο συντελεστής πολλαπλασιασμού από 2,5 σε 20)? Σύμφωνα με ανεπιβεβαίωτες αναφορές, στην επόμενη τροποποίηση του πυρήνα Pentium4 (Prescott) η κρυφή μνήμη πρώτου επιπέδου θα αυξηθεί στα 16 ή 32 KB. Η κρυφή μνήμη δεύτερου επιπέδου θα αυξηθεί επίσης. Ωστόσο, αυτή τη στιγμή όλα αυτά δεν είναι παρά φήμες.Ειλικρινά μιλώντας, αυτή είναι μια ελαφρώς συγκεχυμένη κατάσταση. Αν και, ας κάνουμε μια επιφύλαξη, ο συγγραφέας παραδέχεται πλήρως ότι μια τέτοια ιδέα εμποδίζεται από έναν συγκεκριμένο λόγο. Για παράδειγμα, ορισμένες απαιτήσεις για τη γεωμετρία της διάταξης των μπλοκ ή μια συνηθισμένη έλλειψη ελεύθερου χώρου κοντά στον μεταφορέα ( Είναι σαφές ότι είναι απαραίτητο να εντοπίσετε τη μνήμη cache δεδομένων πιο κοντά στην ALU).

Χωρίς να αποσπάται η προσοχή, ας δούμε τη διαδικασία περαιτέρω. Ο αγωγός εκτελείται, αφήστε τις τρέχουσες ομάδες να χρησιμοποιήσουν την ALU. Είναι σαφές ότι οι FPU, SSE, SSE2 και άλλοι είναι αδρανείς. Δεν υπάρχει τέτοια τύχη Hyper Threading. Παρατηρώντας ότι οι μικροεντολές είναι έτοιμες μαζί με δεδομένα για το νέο νήμα, η μονάδα μετονομασίας καταχωρητή εκχωρεί ένα τμήμα φυσικών καταχωρητών στο νέο νήμα. Παρεμπιπτόντως, δύο επιλογές είναι δυνατές: ένα μπλοκ φυσικών καταχωρητών είναι κοινό για όλα τα νήματα ή ξεχωριστό για το καθένα. Αν κρίνουμε από το γεγονός ότι στην παρουσίαση Hyper Threading από την Intel, το μπλοκ μετονομασίας καταχωρητή δεν αναφέρεται ως μπλοκ που πρέπει να αλλάξουν, επιλέγεται η πρώτη επιλογή. Είναι καλό ή κακό; Από την άποψη των τεχνολόγων, αυτό είναι σαφώς καλό, γιατί εξοικονομεί τρανζίστορ. Από την πλευρά των προγραμματιστών, είναι ακόμα ασαφές. Εάν ο αριθμός των φυσικών μητρώων είναι πραγματικά 128, τότε με οποιοδήποτε εύλογο αριθμό νημάτων δεν μπορεί να προκύψει η κατάσταση «έλλειψης μητρώου». Τότε αυτοί ( μικροοδηγίες) αποστέλλονται στον προγραμματιστή, ο οποίος, στην πραγματικότητα, τα στέλνει στη συσκευή εκτέλεσης ( αν δεν είναι απασχολημένος) ή σε "ουρά" εάν αυτός ο ενεργοποιητής δεν είναι διαθέσιμος αυτήν τη στιγμή. Έτσι, ιδανικά, επιτυγχάνεται πιο αποτελεσματική χρήση των υπαρχόντων ενεργοποιητών. Αυτή τη στιγμή ο εαυτός μου ΕΠΕΞΕΡΓΑΣΤΗΣαπό άποψη λειτουργικού συστήματος μοιάζει με δύο «λογικούς» επεξεργαστές. Χμ... Είναι πραγματικά όλα τόσο χωρίς σύννεφα; Ας ρίξουμε μια πιο προσεκτική ματιά στην κατάσταση: ένα κομμάτι εξοπλισμού ( όπως κρυφές μνήμες, Rapid Engine, μονάδα πρόβλεψης μετάβασης) είναι κοινά και στους δύο επεξεργαστές. Παρεμπιπτόντως, ακρίβεια πρόβλεψης μετάβασηςαπό αυτό, πιθανότατα, ελαφρώς θα υποφέρει. Ειδικά αν τα νήματα που εκτελούνται ταυτόχρονα δεν είναι συνδεδεμένα μεταξύ τους. και μέρος ( για παράδειγμα, MIS microinstruction sequence planner ένα είδος ROM που περιέχει ένα σύνολο προ-προγραμματισμένων ακολουθιών κοινών λειτουργιών και πίνακα μετονομασίας καταχωρητή RAT) τα μπλοκ πρέπει να διακρίνονται από διαφορετικά νήματα που εκτελούνται σε "διαφορετικούς" επεξεργαστές. Στην πορεία ( από την κοινότητα της κρυφής μνήμης) έπεται ότι εάν δύο νήματα είναι άπληστα κρυφής μνήμης ( δηλαδή η αύξηση της κρυφής μνήμης έχει μεγάλο αποτέλεσμα), Οτι Η χρήση του Hyper Threading μπορεί ακόμη και να μειώσει την ταχύτητα. Αυτό συμβαίνει επειδή αυτή τη στιγμή έχει εφαρμοστεί ένας «ανταγωνιστικός» μηχανισμός για την καταπολέμηση της κρυφής μνήμης: το «ενεργό» νήμα αυτή τη στιγμή αντικαθιστά το «ανενεργό». Ωστόσο, ο μηχανισμός προσωρινής αποθήκευσης μπορεί προφανώς να αλλάξει. Είναι επίσης σαφές ότι η ταχύτητα ( τουλάχιστον για τώρα) θα μειωθεί σε εκείνες τις εφαρμογές στις οποίες μειώθηκε σε ειλικρινή SMP. Για παράδειγμα, το SPEC ViewPerf συνήθως δείχνει καλύτερα αποτελέσματα σε συστήματα ενός επεξεργαστή. Επομένως, τα αποτελέσματα θα είναι πιθανότατα χαμηλότερα σε ένα σύστημα με Hyper Threading παρά χωρίς αυτό. Στην πραγματικότητα, τα αποτελέσματα της πρακτικής δοκιμής του Hyper Threading μπορούν να προβληθούν στη διεύθυνση.

Παρεμπιπτόντως, πληροφορίες διέρρευσαν στο Διαδίκτυο ότι ALU σε Pentium 4 16-bit. Στην αρχή, ο συγγραφέας ήταν πολύ δύσπιστος για τέτοιες πληροφορίες - λένε, τι σκέφτηκαν οι ζηλιάρηδες :-). Και μετά η δημοσίευση τέτοιων πληροφοριών στην Έκθεση Micro Design με έκανε να σκεφτώ: τι θα συμβεί αν είναι αλήθεια; Και, παρόλο που οι πληροφορίες σχετικά με αυτό δεν σχετίζονται άμεσα με το θέμα του άρθρου, είναι δύσκολο να αντισταθούμε :-). Από όσο ο συγγραφέας «κατάλαβε αρκετά», το θέμα είναι ότι η ALU είναι όντως 16-bit. τονίζω Μόνο ALU. Αυτό δεν έχει να κάνει με τη χωρητικότητα bit του ίδιου του επεξεργαστή. Έτσι, σε μισό ρυθμό ( λέγεται τικ, τικ) ALU ( διπλή συχνότητα, όπως θυμάστε) υπολογίζει μόνο 16 bit. Οι δεύτεροι 16 υπολογίζονται στον επόμενο ημίχρονο. Ως εκ τούτου, παρεμπιπτόντως, είναι εύκολο να κατανοήσουμε την ανάγκη να γίνει η ALU δύο φορές πιο γρήγορη - αυτό είναι απαραίτητο για την έγκαιρη "άλεση" των δεδομένων. Έτσι, υπολογίζονται πλήρη 32 bit σε έναν πλήρη κύκλο ρολογιού. Μάλιστα, προφανώς χρειάζονται 2 κύκλοι λόγω της ανάγκης «κόλλησης» και «ξεκολλήματος» των κομματιών, αλλά αυτό το θέμα πρέπει να διευκρινιστεί. Στην πραγματικότητα, οι ανασκαφές (για τις οποίες μπορείτε να γράψετε ένα ξεχωριστό ποίημα) απέδωσαν τα εξής: κάθε ALU χωρίζεται σε 2 μισά 16-bit. Ο πρώτος μισός κύκλος επεξεργάζεται 16 bit δύοαριθμοί και μπιτ μεταφοράς φόρμας για τα άλλα μισά. Το άλλο μισό τελειώνει την επεξεργασία αυτή τη στιγμή προηγούμενοςαριθμοί. Δεύτερο τικ πρώτο μισό της ALU επεξεργάζεται 16 bit από Επόμενοζεύγη αριθμών και σχηματίζει τις μεταφορές τους. Το δεύτερο μισό επεξεργάζεται τα υψηλότερα 16 bit πρώτο ζευγάριαριθμοί και λαμβάνει ένα έτοιμο αποτέλεσμα 32-bit. Η καθυστέρηση στη λήψη 1 αποτελέσματος είναι 1 κύκλος ρολογιού, αλλά στη συνέχεια κάθε μισό κύκλο ρολογιού υπάρχει 1 αποτέλεσμα 32 bit. Αρκετά πνευματώδης και αποτελεσματικός.Γιατί επιλέχθηκε το συγκεκριμένο μοντέλο ALU; Προφανώς, με μια τέτοια οργάνωση, η Intel σκοτώνει πολλά πουλιά με μια πέτρα:

1. Είναι σαφές ότι ένας αγωγός πλάτους 16 bit είναι ευκολότερος να υπερχρονιστεί από έναν αγωγό πλάτους 32 bit, απλώς λόγω της παρουσίας crosstalk και συν

2. Προφανώς, η Intel θεώρησε ότι οι λειτουργίες υπολογισμού ακεραίων είναι αρκετά συχνές για να επιταχύνουν την ALU, και όχι, ας πούμε, την FPU. Είναι πιθανό ότι κατά τον υπολογισμό των αποτελεσμάτων των πράξεων ακέραιων αριθμών, χρησιμοποιούνται είτε πίνακες είτε σχήματα "συσσωρευμένα με μεταφορά". Για σύγκριση, ένας πίνακας 32 bit είναι διευθύνσεις 2E32, δηλ. 4 gigabyte. Δύο πίνακες 16 bit είναι 2x64 kb ή 128 kilobyte αισθάνεστε τη διαφορά! Και η συσσώρευση παύλων σε δύο τμήματα 16 bit γίνεται πιο γρήγορα από ό,τι σε ένα τμήμα 32 bit.

3. Εξοικονομεί τρανζίστορ και... θερμότητα. Εξάλλου, δεν είναι μυστικό ότι όλα αυτά τα αρχιτεκτονικά κόλπα θερμαίνονται. Προφανώς, ήταν αρκετά μεγάλο (και ίσως Σπίτι) πρόβλημα τι αξίζει το Thermal Monitor, για παράδειγμα, ως τεχνολογία! Εξάλλου, δεν υπάρχει μεγάλη ανάγκη για μια τέτοια τεχνολογία καθαυτή· είναι, φυσικά, ωραίο που υπάρχει. Αλλά ας είμαστε ειλικρινείς - ένα απλό μπλοκάρισμα θα ήταν αρκετό για επαρκή αξιοπιστία. Εφόσον προβλεπόταν μια τόσο περίπλοκη τεχνολογία, σημαίνει ότι η επιλογή ελήφθη σοβαρά υπόψη όταν τέτοιες αλλαγές συχνότητας εν κινήσει ήταν ένας από τους κανονικούς τρόπους λειτουργίας. Ή μήπως το κύριο; Δεν ήταν για τίποτα που υπήρχαν φήμες ότι το Pentium 4 σχεδιάστηκε με πολύ μεγαλύτερο αριθμό ενεργοποιητών. Τότε το πρόβλημα της θερμότητας θα έπρεπε απλώς να έχει γίνει το κύριο. Ή μάλλον, σύμφωνα με τις ίδιες φήμες, η απελευθέρωση θερμότητας θα έπρεπε να ήταν μέχρι 150 W. Και τότε είναι πολύ λογικό να ληφθούν μέτρα για να διασφαλιστεί ότι ο επεξεργαστής λειτουργεί "με πλήρη χωρητικότητα" μόνο σε συστήματα όπου παρέχεται κανονική ψύξη. Επιπλέον, οι περισσότερες θήκες «κινεζικής» προέλευσης δεν λάμπουν με προσεγμένο σχεδιασμό από την άποψη της ψύξης. Χμ.... Έχουμε κάνει πολύ δρόμο :-)

Όλα αυτά όμως είναι θεωρητικοποίηση. Υπάρχουν σήμερα επεξεργαστές που χρησιμοποιούν αυτήν την τεχνολογία; Τρώω. Αυτό είναι Xeon ( Πρεστόνια) και XeonMP. Επιπλέον, είναι ενδιαφέρον ότι το XeonMP διαφέρει από το Xeon στην υποστήριξη έως και 4 επεξεργαστών ( chipsets όπως το IBM Summit υποστηρίζουν έως και 16 επεξεργαστές, η τεχνική είναι περίπου η ίδια με το chipset ProFusion) και την παρουσία κρυφής μνήμης τρίτου επιπέδου 512 KB και 1 MB, ενσωματωμένη στον πυρήνα. Παρεμπιπτόντως, γιατί ενσωμάτωσαν την κρυφή μνήμη τρίτου επιπέδου; Γιατί δεν αυξάνεται η κρυφή μνήμη πρώτου επιπέδου;? Πρέπει να υπάρχει κάποιος εύλογος λόγος... Γιατί δεν αύξησαν την κρυφή μνήμη δεύτερου επιπέδου; Ίσως ο λόγος είναι ότι η Advanced Transfer Cache χρειάζεται σχετικά χαμηλή καθυστέρηση. Και η αύξηση του μεγέθους της προσωρινής μνήμης οδηγεί σε αυξημένες καθυστερήσεις. Επομένως, η κρυφή μνήμη τρίτου επιπέδου για τον πυρήνα και η κρυφή μνήμη δεύτερου επιπέδου γενικά «αντιπροσωπεύονται» ως δίαυλος. Μόνο ένα λάστιχο :-).Επομένως, η πρόοδος είναι προφανής - έχουν γίνει όλα για να διασφαλιστεί ότι τα δεδομένα τροφοδοτούνται στον πυρήνα όσο το δυνατόν γρηγορότερα ( και, ταυτόχρονα, ο δίαυλος μνήμης φορτώθηκε λιγότερο).

Λοιπόν, αποδεικνύεται ότι δεν υπάρχουν ιδιαίτερα σημεία συμφόρησης; Γιατί ο συγγραφέας δεν θα μπορέσει να «γκρινιάσει»; Ένας επεξεργαστής - και το λειτουργικό σύστημα βλέπει δύο. Πρόστιμο! Δύο επεξεργαστές και το λειτουργικό σύστημα βλέπει 4! Ομορφιά! Να σταματήσει!Τι είδους λειτουργικό σύστημα λειτουργεί με 4 επεξεργαστές; Λειτουργικά συστήματα της Microsoft που καταλαβαίνουν περισσότερο από δύο επεξεργαστές κοστίζουν τελείως διαφορετικόχρήματα. Για παράδειγμα, οι 2000 Professional, XP Professional, NT4.0 κατανοούν μόνο δύο επεξεργαστές. Και, δεδομένου ότι προς το παρόν αυτή η τεχνολογία προορίζεται για την αγορά σταθμών εργασίας ( και διακομιστές) και είναι διαθέσιμο μόνο στους αντίστοιχους επεξεργαστές - αποδεικνύεται ότι είναι απλώς προσβλητικό. Σήμερα μπορούμε να χρησιμοποιήσουμε επεξεργαστές με αυτήν την τεχνολογία μόνο αγοράζοντας μια πλακέτα διπλού επεξεργαστή και εγκαθιστώντας έναςΕΠΕΞΕΡΓΑΣΤΗΣ. Όσο προχωράς, τόσο πιο ξένος γίνεται, όπως έλεγε η Αλίκη στη Χώρα των Θαυμάτων... Δηλαδή, ένα άτομο που επιθυμεί να χρησιμοποιήσει αυτήν την τεχνολογία απλώς αναγκάζεται να αγοράσει τις εκδόσεις Server και Advanced Server των τρεχόντων λειτουργικών συστημάτων. Α, και ο "δωρεάν" επεξεργαστής είναι λίγο ακριβός... Αξίζει να προσθέσουμε, ίσως, ότι η Intel αυτή τη στιγμή «επικοινωνεί» ενεργά με τη Microsoft, προσπαθώντας να συνδέσει την πολιτική αδειοδότησης με φυσικόςεπεξεργαστή. Τουλάχιστον σύμφωνα με το έγγραφο, τα νέα λειτουργικά συστήματα της Microsoft θα αδειοδοτούνται από φυσικό επεξεργαστή. Τουλάχιστον τα WindowsXP έχουν άδεια χρήσης με βάση τον αριθμό των φυσικών επεξεργαστών.

Φυσικά, μπορείτε πάντα να στραφείτε σε λειτουργικά συστήματα άλλων κατασκευαστών. Ας είμαστε ειλικρινείς - αυτή δεν είναι μια πολύ καλή διέξοδος από την τρέχουσα κατάσταση... Έτσι μπορεί κανείς να καταλάβει τον δισταγμό της Intel, η οποία σκέφτηκε για αρκετό καιρό αν θα χρησιμοποιήσει αυτή την τεχνολογία ή όχι.

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

  1. BIOS μητρικής πλακέτας
  2. Λειτουργικό σύστημα (!!!)
  3. Στην πραγματικότητα, η ίδια η εφαρμογή

Επιτρέψτε μου να σταθώ σε αυτό το σημείο με περισσότερες λεπτομέρειες· το θέμα είναι ότι το θέμα δεν είναι το BIOS. Συζητήσαμε το λειτουργικό σύστημα λίγο νωρίτερα. Αλλά σε εκείνα τα νήματα που, για παράδειγμα, αναμένουν δεδομένα από τη μνήμη, θα πρέπει να εισαγάγετε μια ειδική εντολή παύση, για να μην επιβραδύνει τον επεξεργαστή? Εξάλλου, ελλείψει δεδομένων, το νήμα είναι ικανό να μπλοκάρει ορισμένους ενεργοποιητές. Και για να εισαγάγετε αυτήν την εντολή, οι εφαρμογές θα πρέπει να μεταγλωττιστούν εκ νέου - αυτό δεν είναι καλό, αλλά, χάρη στην Intel, όλοι άρχισαν πρόσφατα να το συνηθίζουν :-). Έτσι, το κύριο ( σύμφωνα με τον συγγραφέα) το μειονέκτημα της τεχνολογίας Hyper Threading είναι η ανάγκη για τακτική μεταγλώττιση. Το κύριο πλεονέκτημα αυτής της προσέγγισης είναι μια τέτοια επανασύνταξη στην πορεία ( και πιθανότατα πιο αισθητή :-)θα αυξήσει την απόδοση σε «τίμια» συστήματα διπλού επεξεργαστή και αυτό μπορεί μόνο να γίνει ευπρόσδεκτο. Παρεμπιπτόντως, υπάρχουν ήδη πειραματικές μελέτες που επιβεβαιώνουν ότι στο στις περισσότερες περιπτώσεις, προγράμματα βελτιστοποιημένα για SMP, επωφεληθείτε από το Hyper Threading από 15% έως 18%. Αυτό είναι αρκετά καλό. Παρεμπιπτόντως, μπορείτε επίσης να δείτε σε ποιες περιπτώσεις το Hyper Threading οδηγεί σε πτώση της απόδοσης.

Και τέλος, ας προσπαθήσουμε να φανταστούμε τι θα μπορούσε να αλλάξει ( βελτιώσει) στην περαιτέρω ανάπτυξη αυτής της ιδέας. Είναι προφανές ότι η ανάπτυξη αυτής της τεχνολογίας θα έχει άμεση σχέση με την ανάπτυξη του πυρήνα Pentium 4. Έτσι, ας φανταστούμε πιθανές αλλαγές στον πυρήνα. Τι ακολουθεί στο σχέδιό μας; Τεχνολογία 0,09 micron, πιο γνωστή ως 90nm…. Ο συγγραφέας τείνει να πιστεύει ( αυτή τη στιγμή), ότι η ανάπτυξη αυτής της οικογένειας επεξεργαστών θα πάει σε πολλές κατευθύνσεις ταυτόχρονα:

  • Χάρη σε μια πιο «λεπτή» τεχνική διαδικασία, η συχνότητα του επεξεργαστή θα γίνει ακόμη μεγαλύτερη.
  • Ας ελπίσουμε ότι η κρυφή μνήμη δεδομένων θα αυξηθεί. Τουλάχιστον έως 32 KB.
  • Θα κάνουν μια «τίμια» 32-bit ALU. Αυτό θα πρέπει να βελτιώσει την παραγωγικότητα.
  • Αυξήστε την ταχύτητα διαύλου συστήματος ( Ωστόσο, αυτό είναι ήδη στο εγγύς μέλλον).
  • Θα κάνουν μνήμη DDR δύο καναλιών ( και πάλι, η αναμονή είναι σχετικά μικρή).
  • Ίσως εισάγουν ένα ανάλογο της τεχνολογίας x86-64, εάν αυτή η τεχνολογία ( χάρη στην AMD) θα ριζώσει. Ταυτόχρονα, ο συγγραφέας ελπίζει με όλες του τις δυνάμεις ότι αυτό το ανάλογο θα είναι συμβατό με το x86-64. Σταματήστε να δημιουργείτε επεκτάσεις που δεν είναι συμβατές μεταξύ τους... Και πάλι, ενδιαφέρον για εμάς θα είναι ο Jerry Sanders, στον οποίο δήλωσε ότι η AMD και η Intel πέρυσι συμφώνησαν σε cross-licensing για τα πάντα εκτός από τον δίαυλο συστήματος Pentium4. Σημαίνει αυτό ότι η Intel θα ενσωματώσει το x86-64 στον επόμενο πυρήνα Pentium4 (Prescott) και η AMD θα ενσωματώσει το Hyper Threading στους επεξεργαστές της; Ενδιαφέρουσα ερώτηση...
  • Ίσως ο αριθμός των ενεργοποιητών να αυξηθεί. Είναι αλήθεια ότι, όπως και το προηγούμενο, αυτό είναι ένα αρκετά αμφιλεγόμενο σημείο, καθώς απαιτεί έναν σχεδόν πλήρη επανασχεδιασμό του πυρήνα - και αυτή είναι μια μακρά και εντατική διαδικασία.

Αναρωτιέμαι αν θα αναπτυχθεί η ιδέα του Hyper Threading; Το γεγονός είναι ότι, ποσοτικά, δεν υπάρχει πουθενά να αναπτυχθεί· είναι σαφές ότι δύο φυσικοί επεξεργαστές είναι καλύτεροι από τρεις λογικούς. Ναι, και η τοποθέτηση δεν θα είναι εύκολη... Είναι ενδιαφέρον ότι το Hyper Threading μπορεί επίσης να είναι χρήσιμο κατά την ενσωμάτωση δύο ( ή περισσότερο) επεξεργαστές ανά τσιπ. Λοιπόν, με τις ποιοτικές αλλαγές, ο συγγραφέας εννοεί ότι η παρουσία μιας τέτοιας τεχνολογίας σε συνηθισμένους επιτραπέζιους υπολογιστές θα οδηγήσει στο γεγονός ότι στην πραγματικότητα η πλειοψηφία των χρηστών θα εργάζεται σε [σχεδόν] μηχανές διπλού επεξεργαστή, κάτι που είναι πολύ καλό. Είναι καλό γιατί τέτοια μηχανήματα λειτουργούν πολύ πιο ομαλά και ανταποκρίνονται περισσότερο στις ενέργειες των χρηστών, ακόμη και κάτω από μεγάλο φορτίο. Αυτό, από τη σκοπιά του συγγραφέα, είναι πολύ καλό.

Αντί για υστερόλογο

Ο συγγραφέας πρέπει να παραδεχτεί ότι ενώ εργαζόταν στο άρθρο, η στάση του απέναντι στο Hyper Threading άλλαξε αρκετές φορές. Καθώς οι πληροφορίες συλλέγονταν και επεξεργάζονταν, η στάση έγινε είτε γενικά θετική είτε αντίστροφα :-). Αυτή τη στιγμή μπορούμε να γράψουμε τα εξής:

Υπάρχουν μόνο δύο τρόποι για να βελτιώσετε την απόδοση: να αυξήσετε τη συχνότητα και να αυξήσετε την απόδοση ανά ρολόι. Και, αν ολόκληρη η αρχιτεκτονική Pentium4 έχει σχεδιαστεί για την πρώτη διαδρομή, τότε το Hyper Threading είναι μόνο το δεύτερο. Από αυτή την άποψη, δεν μπορεί παρά να είναι ευπρόσδεκτη. Το Hyper Threading έχει επίσης αρκετές ενδιαφέρουσες συνέπειες, όπως: αλλαγή του παραδείγματος προγραμματισμού, παροχή πολυεπεξεργασίας στις μάζες, αύξηση της απόδοσης του επεξεργαστή. Ωστόσο, υπάρχουν πολλά "μεγάλα χτυπήματα" σε αυτό το μονοπάτι στα οποία είναι σημαντικό να μην "κολλήσετε": η έλλειψη κανονικής υποστήριξης από τα λειτουργικά συστήματα και, το πιο σημαντικό, η ανάγκη για εκ νέου μεταγλώττιση ( και σε ορισμένες περιπτώσεις, αλλαγή του αλγόριθμου) εφαρμογές ώστε να μπορούν να επωφεληθούν πλήρως από το Hyper Threading. Επιπλέον, η παρουσία του Hyper Threading θα επέτρεπε την πραγματική εκτέλεση του λειτουργικού συστήματος και των εφαρμογών παράλληλα, και όχι σε «κομμάτια» ένα κάθε φορά, όπως συμβαίνει τώρα. Φυσικά, με την προϋπόθεση ότι υπάρχουν αρκετοί ελεύθεροι ενεργοποιητές.

Ο συγγραφέας θα ήθελε να τονίσει την ευγνωμοσύνη του Μαξίμ Λένια(γνωστός και ως C.A.R.C.A.S.S.) και Ίλια Βάιτσμαν(γνωστός και ως Stranger_NN) για επαναλαμβανόμενη και ανεκτίμητη βοήθεια στη συγγραφή του άρθρου.
Θα ήθελα επίσης να ευχαριστήσω όλους τους συμμετέχοντες στο φόρουμ που επανειλημμένα εξέφρασαν πολύτιμα σχόλια.

mob_info