Υπερνημάτωση

Ο όρος Υπερνημάτωση (αγγλ. Hyper-threading ή Hyper-threading Technology), αποτελεί την ονομασία που έδωσε η Intel στη τεχνολογία ταυτόχρονης πολυνημάτωσης που ανέπτυξε η ίδια και υλοποίησε για πρώτη φορά το Φεβρουάριο του 2002 στους επεξεργαστές Xeon και Pentium 4. Αργότερα, η συγκεκριμένη τεχνολογία ενσωματώθηκε μεταξύ άλλων και στις σειρές επεξεργαστών Itanium, Atom και Core. Η τεχνολογία αυτή της Intel, επιτρέπει την παράλληλη επεξεργασία δεδομένων (πολλές διεργασίες/νήματα ταυτόχρονα) στους επεξεργαστές που κατασκευάζει. Κάθε επεξεργαστικός πυρήνας, γίνεται αντιληπτός από το λειτουργικό σύστημα ως δυο λογικοί/φανταστικοί πυρήνες (συγκεκριμένα ένας πραγματικός επεξεργαστικός πυρήνας και ένας επιπλέον "λογικός"), και διαμοιράζει το φόρτο ανάμεσά τους όταν παρίσταται η ανάγκη. Η ουσιαστική λειτουργία της υπερνημάτωσης είναι η μείωση του αριθμού των εξαρτημένων εντολών στον δίαυλο μεταφοράς εντολών του επεξεργαστή. Η υπερνημάτωση απαιτεί την ύπαρξη λειτουργικού συστήματος το οποίο όχι μόνο θα πρέπει να υποστηρίζει πολλαπλούς πυρήνες επεξεργασίας αλλά και να είναι ειδικά σχεδιασμένο να εκμεταλλεύεται τη τεχνολογία αυτή. Η Intel έχει συστήσει την απενεργοποίηση της εν λόγω λειτουργίας σε λειτουργικά συστήματα τα οποία δεν είναι βελτιστοποημένα για την τεχνολογία αυτή. Σήμερα, τα πιο ευρέως διαδεδομένα λειτουργικά συστήματα είναι άκρως βελτιστοποιημένα για τη συγκεκριμένη τεχνολογία. Η υπερνημάτωση αποτελεί μια μορφή ταυτόχρονης πολυνημάτωσης η οποία εκμεταλλεύεται την υπερβαθμωτή αρχιτεκτονική (πολλαπλές εντολές οι οποίες επενεργούν σε διαφορετικά δεδομένα παράλληλα, δηλαδή ταυτόχρονα). Το λειτουργικό σύστημα αντιλαμβάνεται τον ένα πυρήνα επεξεργασίας ως δύο, και έτσι μπορεί να αποδώσει δύο διεργασίες με τη μία. Επίσης, δύο ή περισσότερες διεργασίες μπορούν να χρησιμοποιούν τους ίδιους πόρους συστήματος. Εάν μια διεργασία αποτύχει, τότε οι δεσμευμένοι πόροι ανακατανέμονται.

 Η Υπερνημάτωση πραγματοποιείται με την αντιγραφή ορισμένων τμημάτων του επεξεργαστή – συγκεκριμένα των καταχωρητών στους οποίους αποθηκεύεται η αρχιτεκτονική κατάσταση του επεξεργαστή, εκτός από τους κυρίως πόρους επεξεργασίας. Με αυτό τον τρόπο, ο κάθε επεξεργαστικός πυρήνας εμφανίζεται ως δύο "λογικοί" πυρήνες στο λειτουργικό σύστημα, επιτρέποντάς το να διευθετεί δύο διεργασίες(ή νήματα) ταυτόχρονα. Έτσι, ένας επεξεργαστής που ενσωματώνει την τεχνολογία της υπερνημάτωσης μπορεί να εκμεταλλευτεί επεξεργαστικούς πόρους για να εκτελέσει κάποια άλλη προγραμματισμένη διεργασία, όταν εκείνη που εκτελείται ήδη δεν τους χρησιμοποιεί. Η τεχνολογία της υπερνημάτωσης είναι "αόρατη" από το λειτουργικό σύστημα και τα προγράμματα. Το λειτουργικό σύστημα αντιλαμβάνεται τον συμπληρωματικό "λογικό" πυρήνα ως πραγματικό. Έτσι θα πρέπει το λειτουργικό σύστημα να υποστηρίζει τη λειτουργία συμμετρικής πολυεπεξεργασίας (Symmetric Multiprocessing – SMP), για να εκμεταλλευτεί τον συμπληρωματικό "λογικό" πυρήνα. Η συμπεριφορά του λειτουργικού συστήματος θα πρέπει να είναι βελτιστοποιημένη για την υποστήριξη επεξεργαστών με τεχνολογία υπερνημάτωσης. Για παράδειγμα, έστω ότι έχουμε ένα σύστημα με έναν διπύρηνο επεξεργαστή (δηλαδή συνολικά 4 πυρήνες επεξεργασίας – δύο πραγματικούς και δύο "λογικούς"). Εάν ο προγραμματιστής διεργασιών του λειτουργικού συστήματος δεν αντιλαμβάνεται τη τεχνολογία της υπερνημάτωσης, θα συμπεριφέρεται στους επεξεργαστικούς πυρήνες σαν να ήταν όλοι πραγματικοί. Έτσι, αν κάποια χρονική στιγμή επιτρέπεται να διευθετούνται μόνο δύο διεργασίες ταυτόχρονα, τότε το λειτουργικό σύστημα είναι πολύ πιθανό να τις κατανείμει μόνο στον έναν πραγματικό πυρήνα ( αφού ο κάθε ένας εμφανίζεται ως δύο, ένας πραγματικός και ένας "λογικός" πυρήνας). Αυτός ο πυρήνας τότε θα γινόταν εξαιρετικά απασχολημένος, ενώ οι άλλοι θα ήταν σε κατάσταση αναμονής μη κάνοντας τίποτα. Αυτή η κατάσταση οδηγεί σε χαμηλές επιδόσεις από ότι είναι πραγματικά δυνατόν με καλύτερη διευθέτηση των διεργασιών. Αυτό το πρόβλημα λύνεται, εξελίσσοντας τον προγραμματιστή διεργασιών έτσι ώστε να συμπεριφέρεται διαφορετικά στους "λογικούς" πυρήνες απ’ ότι στους πραγματικούς. Η τεχνολογία της υπερνημάτωσης, έχει τις ρίζες της στην εταιρεία Digital Equipment, ωστόσο διατέθηκε στην αγορά από την Intel. Ενσωματώθηκε για πρώτη φορά στους επεξεργαστές Xeon οι οποίοι διατέθηκαν στην αγορά τον Μάρτιο του 2002. Επίσης ενσωματώθηκε στoν επεξεργαστή Pentium 4 (βασισμένου στον πυρήνα Northwood) των 3.06 GHz τον ίδιο χρόνο, και από τότε εμφανίστηκε σε όλες τις σειρές των Pentium 4 μέχρι την παύση της παραγωγής τους. Η γενιά επεξεργαστών που ακολούθησε και η οποία κατασκευάστηκε με βάση την μικροαρχιτεκτονική Core δεν ενσωμάτωνε την τεχνολογία της υπερνημάτωσης (Core, Core 2, Core 2 Quad και Extreme). Ο λόγος ήταν ότι η συγκεκριμένη αρχιτεκτονική ήταν απόγονος της μικροαρχιτεκτονικής P6, προγόνου της μικροαρχιτεκτονικής Netburst με την οποία κατασκευάζονταν οι Pentium 4 και οι προκάτοχοί του Pentium Pro, Pentium III και Celeron (βασισμένοι στους πυρήνες Covington, Mendocino, Coppermine και Tualatin), όπως και οι σειρές Pentium ΙΙ Xeon και Pentium III Xeon. Η τεχνολογία της υπερνημάτωσης επανεμφανίστηκε με την έλευση των επεξεργαστών Nehalem στις σειρές Core i7, τον Νοέμβρη του 2008. Η πρώτη γενιά επεξεργαστών Nehalem, αποτελούνταν από 4 πυρήνες και μπορούσε να επεξεργαστεί 8 νήματα ταυτόχρονα. Από τότε, κυκλοφόρησαν τόσο διπύρηνα όσο και εξαπύρηνα μοντέλα με τέσσερα και δώδεκα νήματα επεξεργασίας αντίστοιχα. Η τεχνολογία της υπερνημάτωσης ενσωματώνεται επίσης στους επεξεργαστές Intel Atom οι οποίοι είναι επεξεργαστές χαμηλής κατανάλωσης σχεδιασμένοι κυρίως για φορητά συστήματα. Πλεονεκτήματα της υπερνημάτωσης είναι η βελτίωση στην αντίδραση και το χρόνο απόκρισης του συστήματος αφού πολλές διεργασίες εκτελούνται ταυτόχρονα. Σε αυτό έχει συνεισφέρει και η βελτίωση του προγραμματιστικού κώδικα για την αποδοτικότερη εκμετάλλευση της συγκεκριμένης τεχνολογίας. Σύμφωνα με την Intel, η πρώτη υλοποίηση της τεχνολογίας έδινε αύξηση των επιδόσεων του επεξεργαστή από 15 έως 30%, ενώ η συνολική επιφάνεια του ήταν μόλις 5% μεγαλύτερη από έναν απλό επεξεργαστή. Επίσης σύμφωνα με αναφορές της, ένας Pentium 4 με τεχνολογία υπερνημάτωσης απέδιδε σημαντικά καλύτερα σε ορισμένους αλγόριθμους τεχνητής νοημοσύνης. Η αύξηση αυτή των επιδόσεων είναι ωστόσο κατά πολύ εξαρτώμενη από τις εφαρμογές που τους χρησιμοποιούν. Παρ’ όλα αυτά, όταν εκτελούνταν δύο προγράμματα τα οποία απαιτούσαν και τα δύο την πλήρη αφοσίωση του επεξεργαστή σε καθ’ ένα από αυτά, φαινόταν ότι το ένα ή και τα δύο προγράμματα επιβραδύνονταν λίγο, με ενεργοποιημένη την τεχνολογία της υπερνημάτωσης. Αυτό οφειλόταν σε ένα ειδικό υποσύστημα των Pentium 4 (replay system) το οποίο εξισορροπούσε τους επεξεργαστικούς πόρους ανάμεσα στα δύο προγράμματα και προσέθετε επιπλέον χρόνο για επεξεργασία. Μια τροποποίηση σε αυτό το σύστημα προστέθηκε στους, βασισμένους στον πυρήνα Prescott, Pentium 4, η οποία έλυσε οριστικά αυτό το κόλλημα στην απόδοση. Όταν κυκλοφόρησαν για πρώτη φορά επεξεργαστές με τεχνολογία υπερνημάτωσης, ορισμένοι χρήστες ήταν αμφίβολοι ως προς την ενεργοποίησή της, κυρίως επειδή η πλειοψηφία τους χρησιμοποιούσε ακόμα λειτουργικά συστήματα τα οποία δεν την εκμεταλλεύονταν (π.χ. Windows 2000 και εκδόσεις του Linux προγενέστερες της έκδοσης 2.4). Επίσης, υπήρχαν ελάχιστα προγράμματα τα οποία εκμεταλλεύονταν τη συγκεκριμένη τεχνολογία καθώς όλα ήταν γραμμένα για μονοπύρηνους επεξεργαστές. Το 2006 η υπερνημάτωση στοχοποιήθηκε ως ενεργειακά μη αποδοτική. Η εταιρεία ARM, εξειδικευμένη στη κατασκευή και παραγωγή χαμηλής κατανάλωσης επεξεργαστών ανέφερε ότι η τεχνολογία της ταυτόχρονης πολυνημάτωσης (SMT) κατανάλωνε 46% περισσότερη ενέργεια σε σχέσης με τους απλούς διπύρηνους επεξεργαστές. Επιπλέον, ισχυρίζονταν ότι η τεχνολογία SMT αύξανε την απόρριψη δεδομένων από την κρυφή μνήμη του επεξεργαστή κατά 42% σε σχέση με τους απλούς διπύρηνους οι οποίοι είχαν μείωση σε αυτό το τομέα της τάξεως του 37%. Η Intel αμφισβήτησε αυτούς τους ισχυρισμούς, αναφέροντας ότι η υπερνημάτωση έχει υψηλή απόδοση επειδή απλώς κάνει χρήση πόρων που σε διαφορετική περίπτωση θα ήταν στο ρελαντί. Το 2010, η ARM ανακοίνωσε ότι θα ενσωματώσει τη τεχνολογία της ταυτόχρονης πολυνημάτωσης και στους δικούς της μελλοντικούς επεξεργαστές. Τον Μάιο του 2005, ο Colin Percival κατέδειξε ότι ένα κακόβουλο λογισμικό του οποίου η διεργασία μπορεί να τρέχει σε ένα νήμα του επεξεργαστή, μπορεί με ένα συγκεκριμένο είδος επίθεσης να καταγράψει το πρότυπο πρόσβασης στη μνήμη μιας διεργασίας που τρέχει σε ένα άλλο νήμα αρκεί οι διεργασίες να μοιράζονταν τη κρυφή μνήμη του επεξεργαστή. Αυτό θα επέτρεπε στο προγραμματιστή του κακόβουλου λογισμικού να κρυπτογραφεί πληροφορίες. Ως πιθανές λύσεις σε αυτό το κενό ασφαλείας συμπεριλαμβάνονται η αλλαγή της στρατηγικής με την οποία η κρυφή μνήμη απορρίπτει δεδομένα, ή το λειτουργικό σύστημα να εμποδίζει την ταυτόχρονη επεξεργασία στον ίδιο φυσικό πυρήνα, διεργασίες με διαφορετικά δικαιώματα χρήσης. Πολύ-πύρηνος επεξεργαστής