Η βιομηχανία των ημιαγωγών έχει βασιστεί τις τελευταίες δεκαετίες στο νόμο τουMoore, ο οποίος προβλέπει κάθε 18 μήνες τον διπλασιασμό του αριθμού των transistorsανά μονάδα επιφάνειας σε ολοκληρωμένα κυκλώματα βασισμένα σε τεχνολογία CMOS. Σεαντιδιαστολή με το παρελθόν (πριν από το 2004), όπου οι σχεδιαστές επεξεργαστικώνσυστημάτων, μέσω της αύξησης του αριθμού των transistor, είχαν ως στόχο τηναντίστοιχη αύξηση της απόδοσης, η νέα πραγματικότητα θέτει την μείωση τηςκατανάλωσης ισχύος (και ενέργειας) ως την μεγαλύτερη πρόκληση στην σχεδίασηεπεξεργαστών.Ταυτόχρονα, η μεγάλη πυκνότητα τοποθέτησης των transistors οδηγούν στηναναξιόπιστη λειτουργία των σύγχρονων επεξεργαστών. Η αναξιοπιστία αυτή οφείλεται ενμέρει στις δυναμικές διακυμάνσεις ρεύματος και τάσης (supply voltage) οι οποίες είναι πιοπιθανό να δημιουργήσουν λάθη χρονισμού σε μικρές γεωμετρίες τεχνολογίας CMOS.Επίσης είναι πιο πιθανά τα κατασκευαστικά λάθη (fabrication faults) λόγω ατελειών τηςδιαδικασίας φωτολιθογραφίας. Επιπλέον, παροδικά λάθη (transient faults) που οφείλονταισε εξωγενείς παράγοντες, όπως alpha particles, έχουν μεγαλύτερη επίδραση σεμικρότερες γεωμετρίες τεχνολογίας CMOS. Για να επιτευχθεί αξιόπιστη λειτουργία υπόαυτές τις συνθήκες, οι σχεδιαστές σύγχρονων επεξεργαστικών συστημάτωνχρησιμοποιούν συντηρητικές σχεδιαστικές τεχνικές, όπως υψηλά περιθώρια τάσηςτροφοδοσίας (Vdd) και συχνότητας ρολογιού έτσι ώστε ο επεξεργαστής να προστατεύεταιαπό κάθε πιθανότητα λαθών χρονισμού. Οι συντηρητικές αυτές τεχνικές μπορεί μεν ναπροστατεύουν την αξιόπιστη λειτουργία του επεξεργαστή, έχουν όμως ως αποτέλεσμαμεγάλη σπατάλη σε ισχύ και ενέργεια η οποία φτάνει μέχρι και το 35% σε αρκετέςπεριπτώσεις.Η βασική ιδέα της παρούσας διδακτορικής διατριβής βασίζεται στο ότι αυτές οισυντηρητικές τεχνικές σχεδιασμού είναι σχεδόν πάντα περιττές και αντιστοιχούν σεπεριπτώσεις λειτουργίας που σχεδόν ποτέ δεν πρόκειται να συμβούν ταυτόχρονα κατά τηνδιάρκεια της λειτουργίας του επεξεργαστή. Χρησιμοποιώντας τεχνικές κυρίως στο επίπεδολογισμικού συστήματος και εφαρμογών, η διατριβή προτείνει την λειτουργία τουεπεξεργαστή πολύ κοντά στις ακραίες καταστάσεις λειτουργίας του και την εξάλειψη τουμεγαλύτερου μέρους του σχεδιαστικού περιθωρίου. Για παράδειγμα, η δυναμική μείωσητης τάσης τροφοδοσίας ενός επεξεργαστή κατά την διάρκεια λειτουργίας του μπορεί ναεπιφέρει μεγάλες βελτιώσεις στην κατανάλωση ισχύος του, αλλά, εφόσον δεν ελεγχθεί,είναι δυνατόν να δημιουργήσει λανθασμένα αποτελέσματα ή και να διακόψει απότομα τηνλειτουργία του. Από την άλλη, η αύξηση της συχνότητας του ρολογιού ενός επεξεργαστή,μπορεί μεν να βελτιώσει την απόδοση και να επιφέρει μείωση του χρόνου εκτέλεσης,αλλά, μπορεί να δημιουργήσει προβλήματα στην αξιοπιστία της λειτουργίας του.Η διατριβή βασίζεται στην ιδέα ότι σε πολλές εφαρμογές (ή επιμέρους φάσειςεφαρμογών) το ακριβές αποτέλεσμα είτε δεν μας ενδιαφέρει, είτε είναι πολύ απαιτητικό σεκύκλους μηχανής και κατανάλωση ενέργειας για να μας συμφέρει να υπολογιστεί.Προτείνουμε ένα νέο προγραμματιστικό μοντέλο στο οποίο ο προγραμματιστής μπορεί ναχαρακτηρίσει την σημαντικότητα των διαφορετικών τμημάτων μιάς εφαρμογής και τηνσυνεισφορά τους στην ποιότητα του τελικού αποτελέσματος. Το προγραμματιστικόμοντέλο επεκτείνει το γνωστό μοντέλο OpenMP που χρησιμοποιείται ευρέως στονπαράλληλο προγραμματισμό. Μέσω της πληροφορίας της σημαντικότητας που παρέχει οπρογραμματιστής σε επίπεδο πηγαίου κώδικα (source code) και μιας επιπλέονπαραμέτρου, που ονομάζεται ratio ο προγραμματιστής μπορεί και ελέγχει την αναλογίατης μείωσης της ενέργειας προς την μείωση της ποιότητας του αποτελέσματος.Η διατριβή υλοποιεί την παραπάνω ιδέα σε δύο διαφορετικούς τομείς υπολογισμών,τον προσεγγιστικό (approximate) τομέα και στον τομέα των ανθεκτικών υπολογισμών σεσφάλματα (fault tolerant). Στον τομέα τον ανθεκτικών υπολογισμών, υλοποιείται ηυποδομή του λογισμικού συστήματος (προγραμματιστικό μοντέλο και σύστημα χρόνουεκτέλεσης) για να καλύψει περιβάλλοντα αναξιόπιστης υπολογιστικής. Η υλοποιήση αυτήαναφέρεται κυρίως στο ότι σε αναξιόπιστα περιβάλλοντα που μπορεί να προκαλούνταιαπο χαμηλότερη τάση τροφοδοσίας ή/και υψηλότερη συχνότητα ρολογιού μπορεί νασυμβεί οποιοδήποτε λάθος στο υλικό το οποίο είναι πέρα από τον έλεγχο τουπρογραμματιστή. Αυτό επιβάλλει την ύπαρξη μηχανισμών αναγνώρισης και διόρθωσηςλαθών καθώς και μηχανισμούς απομόνωσης λαθών ώστε αυτά να μην επεκταθούν σεσημεία του κώδικα που μπορεί να είναι κρίσιμα για την σωστότητα της εφαρμογής. Οιμηχανισμοί αυτοί θα πρέπει να έχουν όσο το δυνατόν υψηλότερο ποσοστό ανίχνευσηςλαθών, αλλά και μικρή επιβάρυνση στην απόδοση της εφαρμογής. Η διατριβή προτείνει και υλοποιεί αναλυτικά μοντέλα απόδοσης και κατανάλωσηςενέργειας σε πολυπύρηνους επεξεργαστές. Πολύ σημαντική επίσης είναι και η αναλυτικήμοντελοποίηση των λαθών χρονισμού (fault modeling) που συμβαίνουν σε ένανεπεξεργαστή σε συνάρτηση με την τάση τροφοδοσίας του επεξεργαστή αυτού. Το πλήρεςσύστημα λογισμικού αξιόπιστης υπολογιστικής, μαζί με τα μοντέλα αυτά,χρησιμοποιούνται σε εκτεταμένες προσομοιώσεις εφαρμογών στον προσομοιωτή GemFIγια την εκτίμηση της βελτίωσης κατανάλωση ενέργειας (λόγω μειωμένης τάσηςτροφοδοσίας) χωρίς αλλοίωση των τελικών αποτελεσμάτων του υπολογισμού και χωρίςδιακοπή της λειτουργίας του επεξεργαστή. Τα πειράματα έδειξαν ότι μπορούμε ναμειώσουμε την τάση τροφοδοσίας ενός επεξεργαστή κατά μέσο όρο 15% μέχρι ναφτάσουμε στο Point of First Failure (PoFF), κάτω από το οποίο ο επεξεργαστής εκτίθεταισε μαζικά λάθη χρονισμού και είναι αδύνατη (ή ασύμφορη) κάθε προσπάθεια λειτουργίαςτου. Το σύστημα λογισμικού αξιόπιστης υπολογιστικής επιτρέπει την μείωση της τάσηςτροφοδοσίας μέχρι το PoFF (αλλά όχι πιο χαμηλά) αντιμετωπίζοντας επιτυχώς τα λάθηπου εμφανίζονται στην περιοχή αυτή και επιτυγχάνοντας μεγάλη μείωση της κατανάλωσηςισχύος/ενέργειας χωρίς επίπτωση στην ταχύτητα του επεξεργαστή. ́Οσον αφορά τον προσεγγιστικό τομέα, προτείνουμε και υλοποιούμε ένα παρόμοιοπρογραμματιστικό μοντέλο και ενα σύστημα χρόνου εκτέλεσης (run time system), το οποίοχρησιμοποιώντας αναλυτικά μοντέλα της απόδοσης και κατανάλωσης ισχύος τουεπεξεργαστή παίρνει ενημερωμένες αποφάσεις για τη ροή και το συντονισμό τηςεκτέλεσης του προγράμματος. Ο μηχανισμός αυτός επιτρέπει στον προγραμματιστή ναπροσαρμόσει δυναμικά την ποιότητα των αποτελεσμάτων μιας εφαρμογής με τηναπόδοση του συστήματος και την κατανάλωση ισχύος/ενέργειας.Για πολλες εφαρμογές όμως, είναι απαραίτητοι οι ακριβείς υπολογισμοί καθώς δενανέχονται μείωση της ποιότητας του αποτελέσματος. Επομένως, μέσω μιάς σειράςπειραμάτων σε Intel x86-64 επεξεργαστές αναγνωρίσαμε την μέγιστη μείωση της τάσηςτροφοδοσίας έτσι ώστε ο επεξεργαστής να παραμένει σε ασφαλή ζώνη λειτουργίας (χωρίςσφάλματα). Τα πειράματα αυτά φανέρωσαν ότι τα περιθώρια μείωσης της τάσης φτάνουν μέχρι 22% για επεξεργαστές Skylake και 13% για Haswell.Η παραπάνω ανάλυση των περιθωρίων τάσης έδωσαν την δυνατότητα ναδημιουργηθεί ένα μοντέλο μηχανικής μάθησης που χρησιμοποιήθηκε για την πρόβλεψημελλοντικών περιθωρίων τάσης τροφοδοσίας. Το μοντέλο αυτό δέχεται σαν είσοδο τιμέςτων performance counters του επεξεργαστή (ενώ το πρόγραμμα εκτελείται) και προβλέπειτο περιθώριο τάσης για το επόμενο χρονικό διάστημα. Με άλλα λόγια, η διατριβή αυτή έχειδείξει πειραματικά την συσχέτιση μεταξύ γεγονότων σε επίπεδο μικροαρχιτεκτονικής(όπως αυτά περιγράφονται από τους performance counters του επεξεργαστή) και τουμέγιστου περιθωρίου τάσης τροφοδοσίας. Το μοντέλο αυτό χρησιμοποιείται από ένανεξελιγμένο governor τάσης/συχνότητας που ορίζει κάθε φορά την τάση του επεξεργαστήώστε να επιτυγχάνουμε μεγάλη μείωση στην κατανάλωση ισχύος χωρίς τον κίνδυνομειωμένης αξιοπιστίας. Σε σύγκριση με τον συμβατικό Intel DVFS (Dynamic VoltageFrequency Scaling) governor, η μέθοδός μας επιτυγχάνει μείωση ενέργειας κατά 42% σεεπεξεργαστές Skylake και 34% σε επεξεργαστές Haswell.Η διατριβή αυτή επίσης μελέτησε την επίδραση που έχουν στα περιθώρια τάσηςτροφοδοσίας οι βελτιστοποιήσεις που κάνουν οι μεταγλωττιστές στον κώδικα μιαςεφαρμογής. Με τη χρήση του εργαλείου XM2 διαπιστώθηκε ότι οι μετασχηματισμοί πουμειώνουν τις προσπελάσεις στην κύρια μνήμη έχουν μεγάλη επίδραση στα περιθώρια τηςτάση τροφοδοσίας. Σε γενικές γραμμές όμως, η τάση τροφοδοσίας είναι περισσότεροσυνάρτηση της μικροαρχιτεκτονικής του επεξεργαστή παρά των βελτιστοποίησεων στονκώδικα που επιφέρει ο compiler.Η διδακτορική διατριβή δημιούργησε επίσης την ερευνητική υποδομή για ταπειράματα που διεξήχθησαν στα πλαίσια της αξιολόγησης των τεχνικών πουπεριγράφησαν στις προηγούμενες παραγράφους. Το GemFI είναι ένα εργαλείοδημιουργίας και προσομοίωσης λογικών λαθών σε ένα πολυπύρηνο επεξεργαστικόσύστημα. Δίνει την δυνατότητα στο χρήστη να εισάγει διάφορους τύπους λαθών, σεοποιαδήποτε χρονική στιγμή κατά τη διάρκεια εκτέλεσης του προγράμματος, και σεοποιοδήποτε τμήμα της αρχιτεκτονικής του επεξεργαστή. Το GemFI, το οποίο βασίζεταιστο γνωστό προσομοιωτή Gem5, μπορεί να εκτελέσει πλήρως το λογισμικό εφαρμογώνκαι συστήματος για μεγάλη γκάμα διαφορετικών αρχιτεκτονικών, δίνοντας έτσι τηδυνατότητα μελέτης της αξιοπιστίας του συστήματος κάτω απο διαφορετικές συνθήκες.Επίσης δημιουργήθηκε ένα δεύτερο εργαλείο, ο eXtended Margins eXperimentManager (ΧΜ2) που αυτοματοποιεί τη δημιουργία πειραμάτων σε πραγματικούςεπεξεργαστές που μπορούν να τίθενται σε μη-αξιόπιστες καταστάσεις τάσης καισυχνότητας. Το εργαλείο χρησιμοποιήθηκε για την δημιουργία τέτοιων πειραμάτων για τονχαρακτηρισμό της αξιοπιστίας του υλικού και για τον προσδιορισμό της ανοχής σε λάθηλογισμικού εφαρμογών που εκτελούνται σε επεξεργαστές x86-64 (Skylake, Haswell) καιARM