Η λειτουργία Hyper V επηρεάζει την απόδοση του υπολογιστή. Hyper-Threading - τι είναι; Πώς να ενεργοποιήσετε το Hyper-Threading; Πώς λειτουργεί το Hyper-Threading

«...Και είμαστε περήφανοι και ο εχθρός μας είναι περήφανος
Χέρι, ξεχάστε την τεμπελιά. Ας δούμε,
ποιος έχει ποιανού τις μπότες στο τέλος
επιτέλους θα σκύψει τα γόνατά του...»
© ταινία "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. Σίγουρα ο συντάκτης δεν δικαιολογείται εκτός από τις εκτιμήσεις της "συμμετρίας":-) η άποψη είναι ότι υπάρχουν περίπου εκατοντάδες από αυτούς. Δεν βρέθηκαν αξιόπιστες πληροφορίες για τον αριθμό τους. Σύμφωνα με ανεπιβεβαίωτα ακόμη στοιχεία, είναι 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 σταδίων.Έτσι, από την ανάκτηση δεδομένων από τη μνήμη cache έως τη λήψη του αποτελέσματος, προφανώς, υπάρχουν περίπου 30 35 στάδια ( συμπεριλαμβανομένου του αγωγού Net Burst, ανατρέξτε στην αναφορά Microdesign Resources August 2000 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 είναι 2x64kb ή 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.) και Ilya Vaitsman(γνωστός και ως Stranger_NN) για επαναλαμβανόμενη και ανεκτίμητη βοήθεια στη συγγραφή του άρθρου.
Θα ήθελα επίσης να ευχαριστήσω όλους τους συμμετέχοντες στο φόρουμ που επανειλημμένα εξέφρασαν πολύτιμα σχόλια.

Υπερ-Νηματοποίηση (hyper threading, "hyper threading", hyper threading - Russian) - τεχνολογία που αναπτύχθηκε από την εταιρεία Intel, επιτρέποντας στον πυρήνα του επεξεργαστή να εκτελεί περισσότερα από ένα (συνήθως δύο) νήματα δεδομένων. Δεδομένου ότι διαπιστώθηκε ότι ένας τυπικός επεξεργαστής στις περισσότερες εργασίες δεν χρησιμοποιεί περισσότερο από 70% Από όλη την υπολογιστική ισχύ, αποφασίστηκε να χρησιμοποιηθεί μια τεχνολογία που επιτρέπει, όταν ορισμένες υπολογιστικές μονάδες είναι σε αδράνεια, να τις φορτώνουν με εργασία με ένα άλλο νήμα. Αυτό σας επιτρέπει να αυξήσετε την απόδοση του πυρήνα από 10 έως 80%ανάλογα με την εργασία.

Κατανόηση του τρόπου λειτουργίας του Hyper-Threading .

Ας υποθέσουμε ότι ο επεξεργαστής εκτελεί απλούς υπολογισμούς και ταυτόχρονα το μπλοκ εντολών είναι αδρανές και SIMDεπεκτάσεις.

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

Φυσικά, το εικονικό νήμα δεν φτάνει σε έναν πλήρη πυρήνα, αλλά αυτό σας επιτρέπει να επιτύχετε σχεδόν 100% αποδοτικότητα της υπολογιστικής ισχύος, φορτώνοντας σχεδόν ολόκληρο τον επεξεργαστή με εργασία, αποτρέποντάς τον να παραμείνει αδρανής. Με όλα αυτά, για την εφαρμογή της τεχνολογίας HTχρειάζεται μόνο περίπου 5% πρόσθετος χώρος στο τσιπ και μερικές φορές μπορεί να προστεθεί η απόδοση 50% . Αυτή η πρόσθετη περιοχή περιλαμβάνει πρόσθετα μπλοκ καταχωρητών και προβλέψεις διακλάδωσης, τα οποία υπολογίζουν σε ροή πού μπορεί να χρησιμοποιηθεί η υπολογιστική ισχύς και στέλνουν δεδομένα εκεί από το πρόσθετο μπλοκ διευθύνσεων.

Για πρώτη φορά, η τεχνολογία εμφανίστηκε στους επεξεργαστές Pentium 4, αλλά δεν υπήρξε μεγάλη αύξηση στην απόδοση, αφού ο ίδιος ο επεξεργαστής δεν είχε υψηλή υπολογιστική ισχύ. Η αύξηση ήταν στην καλύτερη περίπτωση 15-20% , και σε πολλές εργασίες ο επεξεργαστής δούλευε πολύ πιο αργά από ό,τι χωρίς HT.

Επιβράδυνση επεξεργαστή λόγω τεχνολογίας Υπερ Threading, εμφανίζεται εάν:

  • Ανεπαρκής κρυφή μνήμηγια όλα αυτά και κάνει επανεκκίνηση κυκλικά, επιβραδύνοντας τον επεξεργαστή.
  • Δεν είναι δυνατή η σωστή επεξεργασία των δεδομένων από το πρόγραμμα πρόβλεψης κλάδου. Εμφανίζεται κυρίως λόγω έλλειψη βελτιστοποίησηςγια συγκεκριμένο λογισμικό ή υποστήριξη από το λειτουργικό σύστημα.
  • Μπορεί επίσης να εμφανιστεί λόγω εξαρτήσεις δεδομένων, όταν, για παράδειγμα, το πρώτο νήμα απαιτεί άμεσα δεδομένα από το δεύτερο, αλλά δεν είναι ακόμα έτοιμο ή βρίσκεται στη σειρά για άλλο νήμα. Ή τα κυκλικά δεδομένα απαιτούν ορισμένα μπλοκ για γρήγορη επεξεργασία και φορτώνονται με άλλα δεδομένα. Μπορεί να υπάρχουν πολλές παραλλαγές της εξάρτησης δεδομένων.
  • Εάν ο πυρήνας είναι ήδη πολύ φορτωμένος και η μονάδα πρόβλεψης κλάδου "ανεπαρκώς έξυπνη" εξακολουθεί να στέλνει δεδομένα που επιβραδύνουν τον επεξεργαστή (σχετικό για Pentium 4).

Μετά Pentium 4, Intelάρχισε να χρησιμοποιεί τεχνολογία μόνο από την Core i7πρώτης γενιάς, παρακάμπτοντας τη σειρά 2 .

Η υπολογιστική ισχύς των επεξεργαστών έχει γίνει επαρκής για την πλήρη εφαρμογή του hyperthreading χωρίς μεγάλη ζημιά, ακόμη και για μη βελτιστοποιημένες εφαρμογές. Αργότερα, Υπερ-Νηματοποίησηεμφανίστηκε σε μεσαίας κατηγορίας, ακόμη και οικονομικά και φορητούς επεξεργαστές. Χρησιμοποιείται σε όλες τις σειρές Πυρήνας i (i3; i5; i7) και σε κινητούς επεξεργαστές Ατομο(καθόλου). Αυτό που είναι ενδιαφέρον είναι ότι οι επεξεργαστές διπλού πυρήνα με HT, θα έχετε μεγαλύτερο κέρδος απόδοσης από τους τετραπύρηνους από τη χρήση Υπερ-Νηματοποίηση, στέκεται επάνω 75% πλήρης τετραπυρηνική.

Πού είναι χρήσιμη η τεχνολογία HyperThreading;

Θα είναι χρήσιμο για χρήση σε συνδυασμό με επαγγελματικά, γραφικά, αναλυτικά, μαθηματικά και επιστημονικά προγράμματα, προγράμματα επεξεργασίας βίντεο και ήχου, αρχειοθέτες ( Photoshop, Corel Draw, Maya, 3D’s Max, WinRar, Sony Vegas & και τα λοιπά). Όλα τα προγράμματα που χρησιμοποιούν μεγάλο αριθμό υπολογισμών, HTσίγουρα θα είναι χρήσιμο χρήσιμο. Ευτυχώς, σε 90% περιπτώσεις, τέτοια προγράμματα είναι καλά βελτιστοποιημένα για τη χρήση του.

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

Πολλά παιχνίδια στον υπολογιστή, έχουν αρνητική στάση απέναντι στην παρουσία Υπερ-Νηματοποίηση, λόγω του οποίου μειώνεται ο αριθμός των καρέ ανά δευτερόλεπτο. Αυτό οφείλεται στην έλλειψη βελτιστοποίησης για Υπερ-Νηματοποίησηαπό την πλευρά του παιχνιδιού. Η βελτιστοποίηση μόνο από την πλευρά του λειτουργικού συστήματος δεν είναι πάντα αρκετή, ειδικά όταν εργάζεστε με ασυνήθιστα, διαφορετικά και πολύπλοκα δεδομένα.

Σε μητρικές που υποστηρίζουν HT, μπορείτε πάντα να απενεργοποιήσετε την τεχνολογία hyperthreading.

Γεια σας λάτρεις των υπολογιστών και του υλικού.

Θα θέλατε να έχετε έναν επεξεργαστή υψηλής απόδοσης στον υπολογιστή σας που να μπορεί να εκτελεί πολλές εργασίες ταυτόχρονα με αστραπιαία ταχύτητα; Ποιος θα αρνιόταν, σωστά; Στη συνέχεια, σας προτείνω να εξοικειωθείτε με την τεχνολογία hyperthreading: τι είναι και πώς λειτουργεί, θα μάθετε από αυτό το άρθρο.


Επεξήγηση της έννοιας

Το Hyper-threading μεταφράζεται από τα αγγλικά ως "hyper-precision". Η τεχνολογία έλαβε ένα τόσο δυνατό όνομα για έναν λόγο. Εξάλλου, το λειτουργικό σύστημα παίρνει έναν φυσικό επεξεργαστή εξοπλισμένο με αυτόν ως δύο λογικούς πυρήνες. Κατά συνέπεια, περισσότερες εντολές υποβάλλονται σε επεξεργασία χωρίς κανένα αντίκτυπο στην απόδοση.

Πώς είναι αυτό δυνατόν? Λόγω του γεγονότος ότι ο επεξεργαστής:

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

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

Σχετικά με τη βελτίωση της παραγωγικότητας

Η απόδοση ενός φυσικού επεξεργαστή, κατά κανόνα, δεν υπερβαίνει το 70%. Γιατί; Συχνά ορισμένα μπλοκ απλά δεν χρειάζονται για να ολοκληρωθεί μια συγκεκριμένη εργασία. Για παράδειγμα, όταν η CPU εκτελεί τετριμμένες υπολογιστικές ενέργειες, το μπλοκ εντολών και οι επεκτάσεις SIMD δεν χρησιμοποιούνται. Συμβαίνει ότι παρουσιάζεται μια αποτυχία στη μονάδα πρόβλεψης κλάδου ή κατά την πρόσβαση στη μνήμη cache.

Σε καταστάσεις όπως αυτή, το Hyper-threading γεμίζει τα «κενά» με άλλες εργασίες. Έτσι, η αποτελεσματικότητα της τεχνολογίας έγκειται στο γεγονός ότι η χρήσιμη εργασία δεν είναι αδρανής και δίνεται σε ανενεργές συσκευές.

Εμφάνιση και εφαρμογή

Μπορούμε να θεωρήσουμε ότι το Hyper-threading έχει ήδη γιορτάσει την 15η επέτειό του. Εξάλλου, αναπτύχθηκε με βάση την τεχνολογία super-threading, η οποία κυκλοφόρησε το 2002 και άρχισε να εργάζεται για πρώτη φορά σε προϊόντα Xeon, στη συνέχεια την ίδια χρονιά ενσωματώθηκε στο Pentium 4. Τα πνευματικά δικαιώματα για αυτές τις τεχνολογίες ανήκουν στην Intel.

Το HT υλοποιείται σε επεξεργαστές που εκτελούνται με τη μικροαρχιτεκτονική NetBurst, η οποία χαρακτηρίζεται από υψηλές ταχύτητες ρολογιού. Η υποστήριξη τεχνολογίας έχει εφαρμοστεί σε μοντέλα των οικογενειών Core vPro, M και Xeon. Ωστόσο, η σειρά Core 2 ("Duo", "Quad") δεν είναι ενσωματωμένη. Μια τεχνολογία παρόμοια στην αρχή λειτουργίας εφαρμόζεται στους επεξεργαστές Atom και Itanium.

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

Πλεονεκτήματα και μειονεκτήματα του Hyper-threading

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

  • Σταθερή λειτουργία πολλών προγραμμάτων παράλληλα.
  • Μειωμένος χρόνος απόκρισης κατά την πλοήγηση στο Διαδίκτυο ή την εργασία με εφαρμογές.

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

  • Ανεπαρκής μνήμη cache. Για παράδειγμα, οι επεξεργαστές i7 4 πυρήνων έχουν 8 MB προσωρινής μνήμης, αλλά υπάρχει ο ίδιος αριθμός λογικών πυρήνων. Λαμβάνουμε μόνο 1 MB ανά πυρήνα, το οποίο δεν είναι αρκετό για τα περισσότερα προγράμματα για την εκτέλεση υπολογιστικών εργασιών. Εξαιτίας αυτού, η παραγωγικότητα όχι μόνο σταματά, αλλά και πέφτει.

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

Πού χρειάζεται το Hyper-threading;

Η τεχνολογία θα είναι χρήσιμη κατά τη χρήση προγραμμάτων έντασης πόρων: επεξεργαστές ήχου, βίντεο και φωτογραφιών, παιχνίδια, αρχειοθέτες. Αυτά περιλαμβάνουν Photoshop, Maya, 3D’s Max, Corel Draw, WinRar κ.λπ.

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

Σας περιμένουμε να επισκεφτείτε το blog μου.

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

Ιστορία της εμφάνισης της τεχνολογίας HT

Ο πρώτος επιτραπέζιος επεξεργαστής που υποστήριξε τη λογική πολλαπλών νημάτων ήταν ο Pentium τέταρτης γενιάς. Το Hyper-Threading είναι μια τεχνολογία που σε αυτή την περίπτωση κατέστησε δυνατή την επεξεργασία δύο ροών δεδομένων ταυτόχρονα σε έναν φυσικό πυρήνα. Επιπλέον, αυτό το τσιπ εγκαταστάθηκε στην υποδοχή του επεξεργαστή PGA478, λειτουργούσε σε λειτουργία υπολογισμού 32 bit και η συχνότητα ρολογιού του ήταν 3,06 GHz. Πριν από αυτό, μπορούσε να βρεθεί μόνο σε συσκευές επεξεργαστή διακομιστή της σειράς XEON.

Αφού πέτυχε επιτυχημένα αποτελέσματα σε αυτή τη θέση, η Intel αποφάσισε να επεκτείνει το HT στο τμήμα επιτραπέζιων υπολογιστών. Στη συνέχεια, μια ολόκληρη οικογένεια τέτοιων επεξεργαστών κυκλοφόρησε στο PGA478. Μετά το ντεμπούτο της υποδοχής LGA775, το NT ξεχάστηκε προσωρινά. Αλλά με την έναρξη των πωλήσεων του LGA1156, δέχτηκε έναν δεύτερο αέρα το 2009. Έκτοτε, έχει γίνει υποχρεωτικό χαρακτηριστικό των λύσεων επεξεργαστών από την Intel, τόσο στο τμήμα υπερ-απόδοσης όσο και σε οικονομικά συστήματα υπολογιστών.

Η ιδέα αυτής της τεχνολογίας

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

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

Σε επίπεδο υλικού

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

Η κατάσταση σε αυτή την περίπτωση έχει αλλάξει δραματικά από το LGA1156. Αυτή η υπολογιστική πλατφόρμα σχεδιάστηκε αρχικά για τη χρήση του Hyper-Threading. Επομένως, οι χρήστες δεν αντιμετώπισαν σημαντικά προβλήματα με τη χρήση του τελευταίου σε αυτήν την περίπτωση. Το ίδιο ισχύει για τις επόμενες υποδοχές επεξεργαστή όπως οι LGA1155, LGA1151 και LGA1150.

Οι υποδοχές υψηλής απόδοσης LGA1366, LGA2011 και LGA2011-v3 θα μπορούσαν να καυχηθούν για παρόμοια έλλειψη προβλημάτων με τη χρήση του HT. Για να το ολοκληρώσουμε, ο άμεσος ανταγωνιστής της Intel, η AMD, εφάρμοσε μια πολύ παρόμοια τεχνολογία λογικής πολλαπλών εργασιών - SMT - στην τελευταία γενιά των επεξεργαστών της για AM4. Χρησιμοποιεί μια σχεδόν πανομοιότυπη έννοια. Η μόνη διαφορά είναι στο όνομα.

Κύρια στοιχεία από την πλευρά του λογισμικού

Θα πρέπει να σημειωθεί ότι ακόμη και αν το NT υποστηρίζεται πλήρως από πόρους υλικού, δεν θα λειτουργεί πάντα με επιτυχία σε επίπεδο λογισμικού. Αρχικά, το λειτουργικό σύστημα πρέπει να μπορεί να λειτουργεί ταυτόχρονα με πολλούς υπολογιστικούς πυρήνες. Οι σημερινές παρωχημένες εκδόσεις του λογισμικού συστήματος MS-DOS ή Windows 98 δεν διαθέτουν αυτήν τη δυνατότητα. Αλλά στην περίπτωση των Windows 10, δεν προκύπτουν προβλήματα και αυτό το λειτουργικό σύστημα έχει ήδη σχεδιαστεί αρχικά για τέτοιους πόρους υλικού ενός προσωπικού υπολογιστή.

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

Ενεργοποίηση τεχνολογίας

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

  • Όταν ενεργοποιείτε τον υπολογιστή, αρχικοποιούμε τη διαδικασία για την είσοδο στο BIOS. Για να το κάνετε αυτό, απλώς κρατήστε πατημένο το κουμπί DEL όταν εμφανιστεί η οθόνη δοκιμής (σε ορισμένες περιπτώσεις πρέπει να κρατήσετε πατημένο το F2).
  • Αφού εμφανιστεί η μπλε οθόνη, χρησιμοποιήστε τα πλήκτρα πλοήγησης για να μεταβείτε στην καρτέλα ΠΡΟΧΩΡΗΜΕΝΕΣ.
  • Στη συνέχεια, βρίσκουμε το στοιχείο Hyper-Threading σε αυτό.
  • Απέναντι από αυτό, πρέπει να ορίσετε την τιμή σε Enabled.

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

Απενεργοποίηση NT

Κατ' αναλογία με τις μεθόδους για την ενεργοποίηση του NT, υπάρχουν δύο τρόποι απενεργοποίησης αυτής της λειτουργίας. Ένα από αυτά μπορεί να εκτελεστεί μόνο κατά την προετοιμασία του συστήματος υπολογιστή. Αυτό, με τη σειρά του, δεν είναι απολύτως βολικό στην πράξη. Επομένως, οι ειδικοί επιλέγουν τη δεύτερη μέθοδο, η οποία βασίζεται στη χρήση ενός βοηθητικού προγράμματος υπολογιστή στη μητρική πλακέτα. Στην πρώτη περίπτωση, εκτελούνται οι ακόλουθοι χειρισμοί:

  1. Κατά τη φόρτωση ενός ηλεκτρονικού υπολογιστή, πηγαίνουμε στο βασικό σύστημα εισόδου-εξόδου (το δεύτερο όνομά του είναι BIOS) σύμφωνα με τη μέθοδο που περιγράφηκε προηγουμένως.
  2. Χρησιμοποιήστε τα πλήκτρα του κέρσορα για να πλοηγηθείτε στο στοιχείο μενού Για προχωρημένους.
  3. Στη συνέχεια, πρέπει να βρείτε το στοιχείο μενού Hyper-Threading (σε ορισμένα μοντέλα μητρικών πλακών μπορεί να ορίζεται ως HT). Απέναντι από αυτό, χρησιμοποιώντας τα κουμπιά PG DN και PG UP, ορίστε την τιμή σε Disabled.
  4. Αποθηκεύουμε τις κατεδαφισμένες αλλαγές χρησιμοποιώντας το F10.
  5. Βγείτε από το BIOS και επανεκκινήστε τον προσωπικό υπολογιστή.

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

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

Μοντέλα επεξεργαστών που υποστηρίζουν NT

Αρχικά, όπως αναφέρθηκε προηγουμένως, η υποστήριξη για το Hyper-Threading υλοποιήθηκε μόνο σε συσκευές επεξεργαστή της σειράς Pentium 4 και μόνο στην έκδοση PGA478. Αλλά στο πλαίσιο του LGA1156 και των μεταγενέστερων υπολογιστικών πλατφορμών, η τεχνολογία που συζητείται σε αυτό το υλικό χρησιμοποιήθηκε σχεδόν σε όλα τα πιθανά μοντέλα τσιπ. Με τη βοήθειά του, οι επεξεργαστές Celeron μετατράπηκαν από μονοπύρηνα σε λύση διπλού νήματος. Με τη σειρά τους, το Penrium και το i3 θα μπορούσαν ήδη να επεξεργαστούν 4 ροές κώδικα με τη βοήθειά τους. Λοιπόν, οι κορυφαίες λύσεις της σειράς i7 μπορούν να λειτουργούν ταυτόχρονα με 8 λογικούς επεξεργαστές.

Για λόγους σαφήνειας, παρουσιάζουμε τη χρήση του NT στην τρέχουσα πλατφόρμα υπολογιστών από την Intel - LGA1151:

  • Οι CPU της σειράς Celeron δεν υποστηρίζουν αυτήν την τεχνολογία και διαθέτουν μόνο 2 υπολογιστικές μονάδες.
  • Τα τσιπ γραμμής Pentium είναι εξοπλισμένα με 2 πυρήνες και τέσσερα νήματα. Ως αποτέλεσμα, το NT σε αυτήν την περίπτωση υποστηρίζεται πλήρως.
  • Οι πιο ισχυρές συσκευές επεξεργαστή της σειράς μοντέλων Core i3 έχουν παρόμοια διάταξη: 2 φυσικές μονάδες μπορούν να λειτουργήσουν σε 4 νήματα.
  • Όπως τα περισσότερα οικονομικά τσιπ Celeron, το Core i5 δεν είναι εξοπλισμένο με υποστήριξη HT.
  • Οι flagship λύσεις i7 υποστηρίζουν επίσης HT. Μόνο που σε αυτήν την περίπτωση, αντί για 2 πραγματικούς πυρήνες, υπάρχουν ήδη 4 μονάδες επεξεργασίας κώδικα. Αυτοί, με τη σειρά τους, μπορούν ήδη να λειτουργήσουν σε 8 νήματα.

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

Σε ποιες περιπτώσεις χρησιμοποιείται καλύτερα αυτή η τεχνολογία;

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

Πλεονεκτήματα και μειονεκτήματα

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

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

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

Μια σύγχρονη εναλλακτική από την AMD

Η τεχνολογία Hyper-Threading δεν είναι η μόνη στο είδος της σήμερα. Έχει μια πραγματική εναλλακτική. Με την κυκλοφορία της πλατφόρμας AM4, η AMD της πρόσφερε έναν άξιο ανταγωνιστή με τη μορφή SMT. Σε επίπεδο υλικού, αυτές είναι πανομοιότυπες λύσεις. Μόνο η ναυαρχίδα της Intel μπορεί να επεξεργαστεί 8 νήματα και το κορυφαίο τσιπ AMD μπορεί να επεξεργαστεί 16. Αυτή η περίσταση από μόνη της δείχνει ότι η δεύτερη λύση είναι πιο ελπιδοφόρα.

Ως εκ τούτου, η Intel αναγκάζεται να προσαρμόσει επειγόντως τα σχέδια προϊόντων της και να προσφέρει εντελώς νέες λύσεις επεξεργαστών που μπορούν να ανταγωνιστούν τους νεοφερμένους από την AMD. Μόνο που σήμερα δεν έχουν ακόμη αναδιαταχθεί. Επομένως, εάν χρειάζεστε μια προσιτή πλατφόρμα υπολογιστή, τότε είναι προτιμότερο να επιλέξετε το LGA1151 από την Intel. Εάν χρειάζεστε ενίσχυση απόδοσης, τότε θα ήταν προτιμότερο το AM4 από την AMD.

Υπήρξε μια εποχή που ήταν απαραίτητο να αξιολογηθεί η απόδοση της μνήμης στο πλαίσιο της τεχνολογίας 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.
mob_info