Υ- 01 Αρχιτεκτονική Υπολογιστών Εισαγωγή Αρης Ευθυμίου
Το σημερινό μάθημα Οργανωτικά/διαδικαστικά του μαθήματος θέματα που θα καλύψουμε οργάνωση/βαθμολογία Εισαγωγή μέτρα επίδοσης υπολογιστών χρόνος εκτέλεσης CPI,IPC Νόμος του Amdhal Μετροπρογράμματα Προσομοίωση 2
Θέματα που θα καλύψουμε Σύντομη επισκόπιση των βασικών διοχέτευση, κρυφές μνήμες Superscalar processors instruc`on level parallelism Front- end design Branch predic`on Register renaming Back- end design Instruc`on issue and scheduling Memory access instruc`ons Cache hierarchy Mul`processors/mul`threading 3
Reading list Βιβλία: Jean- Loup Baer, Microprocessor Architecture, from simple pipelines to chip mul`processors, Cambridge Un. Press, 2010 John Hennessy, David Payerson Computer Architecture, a quan`ta`ve approach, 4 th /5 th edi`on, MKP Αρθρα: για παρουσίαση, prooject. θα δοθούν αργότερα 4
Οργάνωση μαθήματος Διδάσκοντας: Αρης Ευθυμίου (Β.29, e hym AT cs ) Διαλέξεις Αιθ. B2, Πέμπτη 10.00-13.00 Ως μεταπτυχιακοί φοιτητές, δεν επιτρέπεται καμία απουσία, χωρίς συνεννόηση με το διδάσκοντα ΑΠΟ ΠΡΙΝ Μελέτη papers, προετοιμασία παρουσίασης και συζήτηση στην τάξη Μετράει η συμμετοχή Project Υλοποίηση και μέτρηση αρχιτεκτονικών τεχνικών σε/με προσομοιωτή Θα πούμε παραπάνω πράγματα σε λίγο καιρό 5
Οργάνωση μαθήματος Πρόοδος / τελικές εξετάσεις (???) Θα εξαρτηθούν από τον αριθμό των φοιτητών Πολλοί: εξετάσεις και (αναγκαστικά) ομαδικά project Λίγοι: project και παρουσιάσεις Βαθμολογία Πάλι, θα εξαρτηθεί από τον αριθμό των φοιτητών Σε 2 εβδομάδες θα καθοριστούν τα παραπάνω 6
Μοντέλο von Neumann Ακολουθείται από τη δεκαετία του 40 Παρόμοιο με αυτό του Babbage (19ο αιώνα) 7
Βελτίωση επίδοσης Move to multi-processor RISC nn 8
Ορισμός Επίδοσης Ποιό αεροπλάνο έχει καλύτερη επίδοση; 9
Επίδοση υπολογιστή Χρόνος απόκρισης ή λανθάνον χρόνος (response `me, latency) Ο χρόνος που χρειάζεται για να γίνει μια «δουλειά» Ρυθμός εκτέλεσης (Throughput, Bandwidth) Δουλειές ανά μονάδα χρόνου e.g., tasks/transac`ons/ per hour Αλλα μέτρα επίδοσης Κατανάλωση ενέργειας Αξιοπιστία 10
Η ferrari και το αστικό Ferrari: 2 επιβάτες, 100km/h (στην πόλη) Αστικό: 70 επιβάτες, 10km/h (με τις στάσεις) Σπίτι/στάση- Πανεπιστήμιο 10km Με ποιό μέσο ένας επιβάτης θα πάει πιο γρήγορα στο Πανεπιστήμιο? Ποιό μέσο μεταφέρει περισσότερους επιβάτες ανα ώρα? Επικεντρώνουμε στο χρόνο απόκρισης 11
Μέτρηση χρόνου εκτέλεσης Πραγματικός χρόνος που πέρασε (Elapsed `me) Πλήρης χρόνος απόκρισης, περιλαμβάνει επεξεργασία, είσοδο- έξοδο, χρόνο Λ.Σ., άλλες διεργασίες,... Καθορίζει την επίδοση του συστήματος Χρόνος CPU Χρόνος επεξεργασίας μιας δουλειάς Αγνοεί χρόνο εισόδου- εξόδου, άλλες διεργασίες Αποτελείται από το χρόνο CPU χρήστη και συστήματος (user, system CPU `me) 12
CPU Time Η επίδοση βελτιώνεται: μειώνοντας τον αριθμό κύκλων ρολογιού αυξάνοντας το ρυθμό (συχνότητα) ρολογιού Δυστυχώς συχνά ο σχεδιαστής πρέπει να «ζυγίσει» το ρυθμό ρολογιού με τον αριθμό κύκλων 13
CPU Time, Παράδειγμα Computer A: ρολόι 2GHz, 10s CPU `me Σχεδιάζουμε Computer B Προσπαθούμε για 6s CPU `me Μπορούμε να αυξήσουμε το ρυθμό ρολογιού, αλλά αυτό προκαλεί αύξηση κύκλων ρολογιού 1.2 Πόση πρέπει να είναι η συχνότητα ρολογιού του Computer B; 14
Αριθμός εντολών, CPI Αριθμός (δυναμικών) εντολών προγράμματος Καθορίζονται από το πρόγραμμα, ISA, μεταφραστή Μέσος όρος κύκλων ανά εντολή (CPI) Καθορίζεται από το υλικό 15
Instruc`ons per Cycle (IPC) Το αντίστροφο του CPI Οι συγχρονοι υπολογιστές που εκτελούν πολλές εντολές ταυτόχρονα Εκφράζει ρυθμό εκτέλεσης (throughput) Ψυχολογικά καλύτερο να προσπαθεί κανείς να αυξήσει το CPI αντί να μειώσει το IPC 16
Συνιστώσες του CPI Σε ένα ιδανικό επεξεργαστή που εκτελεί 1 εντολή ανά κύκλο, CPI = 1 Οποιοδήποτε «πρόβλημα» αυξάνει το CPI CPI =1+ CPI cache + CPI branches + CPI stalls +... CPI x είναι ο αριθμός των επιπλέον κύκλων που προκαλεί το στοιχείο x Αντίστοιχα: IPC = 1 x 1+ CPI x 17
Παράγοντες επίδοσης CPU Time = Instruction Count CPI Clock Cycle Time Αλγόριθμος Καθορίζει αριθμό πράξεων Γλώσσα, μεταφραστής, αρχιτεκτονική Καθορίζουν αριθμό εντολών μηχανής ανά πράξη (γλώσσας) Επεξεργαστής και σύστημα μνήμης Καθορίζουν ταχύτητα εκτέλεσης εντολών Σύστημα εισόδου- εξόδου (και Λ.Σ.) Καθορίζει ταχύτητα I/O 18
Λεπτομέρειες CPI Αν οι διάφορες κατηγορίες εντολών έχουν διαφορετικό αριθμό κύκλων εκτέλεσης: Το μέσο CPI πρέπει να χρησιμοποιεί τη σχετική συχνότητα εμφάνισης εντολών Σχετική συχνότητα 19
CPI Παράδειγμα 2 εναλλακτικά προγράμματα με εντολές κατηγοριών A, B, C Κατηγορία A B C CPI κατηγορίας 1 2 3 IC πρόγραµµα 1 2 1 2 IC πρόγραµµα 2 4 1 1 Πρόγραμμα 1: IC = 5 Κύκλοι = 2 1 + 1 2 + 2 3 = 10 μέσο CPI = 10/5 = 2.0 Πρόγραμμα 2: IC = 6 Κύκλοι = 4 1 + 1 2 + 1 3 = 9 μέσο CPI = 9/6 = 1.5 20
Σχετική επίδοση Ορίζουμε Performance = 1/Execu`on Time X είναι n φορές ταχύτερος από τον Y Performance X Performance Y = Execution time Y Execution time X = n Παράδειγμα: χρόνος εκτέλεσης προγράμματος 10s στον A, 15s στον B Execu`on Time B / Execu`on Time A = 15s / 10s = 1.5 Ο A είναι 1.5 φορές ταχύτερος από τον B Speedup =Performance enhanced Performance original = Execution time original Execution time enhanced 21
O νόμος του Amdahl Συχνά αλλαγές στην αρχιτεκτονική βελτιώνουν ένα μέρος του χρόνου εκτέλεσης Speedup = T unaffected + T affected T unaffected + T affected /improvement factor Αν το ποσοστό του χρόνου που βελτιστοποιεί μία τεχνική είναι p, το μέγιστο speedup που μπορούμε να πάρουμε είναι 1/(1- p) 22
Παγίδα: ο Νόμος του Amdahl Βελτιώνοντας ένα τμήμα του υπολογιστή περιμένουμε η συνολική επίδοση να βελτιωθεί κατά το ίδιο μέγεθος Παράδειγμα: ο πολ/σμος ευθύνεται για 80s/100s Πόσο πρέπει να βελτιώσουμε το πολ/σμο για να έχουμε 5 μεγαλύτερη επίδοση συνολικά; Είναι αδύνατο! 23
Φόρτος εργασίας υπολογιστή Αν το σύστημα τρέχει μία εφαρμογή, τελείωσαμε απλά μετράμε το χρόνο απόκρισης ή το ρυθμό (π.χ. για ένα διακομιστή) Αλλά οι υπολογιστές είναι γενικού σκοπού: τρέχουν πολλές εφαρμογές και οι εφαρμογές είναι διαφορετικές Υπάρχει τρόπος να συγκρίνουμε υπολογιστές με αυτές τις συνθήκες; 24
Προγράμματα αναφοράς Φόρτος εργασίας (Workload): Σύνολο προγραμμάτων που τρέχουν Σύνολο πραγματικών εφαρμογών (για κάποια χρήση, π.χ. σχεδίαση κυκλωμάτων) ή προγραμμάτων που μοιάζουν με τις εφαρμογές Καθορίζει τα προγράμματα και τις σχετικές συχνότητες χρήσης Τα προγράμματα περιλαμβάνουν και τυπικά δεδομένα Μετροπρόγραμμα (Benchmark): επιλεγμένο πρόγραμμα για σύγκριση επίδοσης υπολογιστών Συνήθως «τυποποιημένα» ώστε να μπορούν να χρησιμοποιηθούν από πολλούς 25
Αξιολόγηση επίδοσης Αναλυτικά μοντέλα μαθηματικές συναρτήσεις με πολλές παραμέτρους συχνά στηρίζονται σε θεωρία ουράς (queuing theory) Mετρήσεις σε πραγματικά μηχανήματα πρέπει να υπάρχουν! δύσκολο να εξαχθεί λεπτομερής πληροφορία Προσομοίωση πρόγραμμα που διερμηνεύει μετροπρογράμματα στη γλώσσα μηχανής του, προς μελέτη, επεξεργαστή χρειάζεται πολύ χρόνο 26
Μετροπρογράμματα SPEC CPU Standard Performance Evalua`on Corp (SPEC) Αναπτύσει μετροπρογράμματα για CPU, I/O, Web, Θεωρούνται αντιπροσωπευτικά αληθινού φόρτου εργασίας SPEC CPU2006 Πραγματικός χρόνος (elapsed) εκτέλεσης συλλογής προγραμμάτων Ελάχιστο I/O, για να μην επηρεάζεται η επίδοση της CPU Κανονικοποιημένος ως προς μηχανή αναφοράς SPECRa`o Χωριστές κατηγορίες για προγράμματα κινητής υποδιαστολής (SPECFp) και ακεραίων (SPECInt) 27
CINT2006 for Opteron X4 2356 Name Description IC 10 9 CPI Tc (ns) Exec time Ref time SPECratio perl Interpreted string processing 2,118 0.75 0.40 637 9,777 15.3 bzip2 Block-sorting compression 2,389 0.85 0.40 817 9,650 11.8 gcc GNU C Compiler 1,050 1.72 0.47 24 8,050 11.1 mcf Combinatorial optimization 336 10.00 0.40 1,345 9,120 6.8 go Go game (AI) 1,658 1.09 0.40 721 10,490 14.6 hmmer Search gene sequence 2,783 0.80 0.40 890 9,330 10.5 sjeng Chess game (AI) 2,176 0.96 0.48 37 12,100 14.5 libquantum Quantum computer simulation 1,623 1.61 0.40 1,047 20,720 19.8 h264avc Video compression 3,102 0.80 0.40 993 22,130 22.3 omnetpp Discrete event simulation 587 2.94 0.40 690 6,250 9.1 astar Games/path finding 1,082 1.79 0.40 773 7,020 9.1 xalancbmk XML parsing 1,058 2.70 0.40 1,143 6,900 6.0 Geometric mean 11.7 High cache miss rates 28
Συνόψιση αποτελεσμάτων Χρειαζόμαστε κάποιο είδος μέσου όρου Αριθμητικός μ.ο. (arithme`c mean) Ο χρόνος εκτέλεσης μερικών προγραμμάτων διαφέρει πολύ (56 φορές gcc mcf στον Opteron) Σταθμισμένος αριθμητικός μ.ο. (weighted arithme`c mean) ποιός καθορίζει τους συντελεστές; 29
Συνόψιση αποτελεσμάτων (2) Η SPEC απαιτεί κανονικοποίηση ως προς μηχανή αναφοράς Συνόψιση όλων των μετροπρογραμμάτων χρησιμοποιώντας γεωμετρικό μέσο (geometric mean) G = n T n i = i=1 Ref i n n n T i i=1 n i=1 Ref i Για σύγκριση 2 μηχανών δεν χρειάζονται οι χρόνοι εκτέλεσης της μηχανής αναφοράς 30
Οι κανονικοποιημένες τιμές θέλουν προσοχή! Computer A Computer B Computer C Program 1 1 10 20 Program 2 1000 100 20 Arithm mean 500.5 55 20 Geom mean 31.622 31.622 20 Ποιό σύστημα είναι καλύτερο; 31
Κανονικοποίηση και μέσος όρος Computer A Computer B Computer C Program 1 1 10 20 Program 2 1 0.1 0.02 Arithm mean 1 5.05 10.01 Geom mean 1 1 0.632 Computer A Computer B Computer C Program 1 0.1 1 2 Program 2 10 1 0.2 Arithm mean 5.05 1 1.1 Geom mean 1 1 0.632 ως προς Α ως προς Β 32
Αριθμητικός vs Γεωμετρικός μέσος όρος Computer A Computer B Computer C Program 1 1 5 10 Program 2 1 5 2 Arithm mean 1 5 6 Geom mean 1 5 4.5 Ποιό σύστημα είναι καλύτερο; Αν οι τιμές διαφέρουν πολύ, ο γεωμετρικός μ.ο. μπορεί να δώσει παραπλανητικό αποτέλεσμα! Αν το 2 γίνει 3, το B βγαίνει καλύτερο Δε συμβαίνει στο SPEC γιατί οι χρόνοι εκτέλεσης είναι της ίδιας τάξης μεγέθους. 33
Προσομοιωτές Διαφορετικά επίπεδα λεπτομέρειας διαφορετική ταχύτητα αναλογικά κυκλώματα (τάσεις, ρεύματα,...) ψηφιακά κυκλωματα (λογικές τιμές) Register transfer level (RTL) γλώσσες περιγραφής υλικού επίπεδο κύκλου ρολογιού επίπεδο εντολής Trace vs execu`on- driven επίπεδο κύκλου: προσομοίωση μεταβολών μικροαρχιτεκτονικής ανά κύκλο ρολογιού trace: η σειρά εντολών είναι προκαθορισμένη execu`on- driven: διερμηνευτής εντολών 34
Προβλήματα προσομοιωτών Προσομοίωση I/O, κώδικα Λ.Σ. υπάρχουν full- system simulators που προσομοιώνουν όλο το υλικό (κάρτες δικτύου, κτλ) και τρέχουν Λ.Σ χωρίς αλλαγές μοιάζουν με εικονικές μηχανές (τύπου VMware) Χρόνος προσομοίωσης τάξεις μεγέθους πιο αργή εκτέλεση σε σχέση με πραγματική μηχανή υπάρχουν μέχρι και επιταχυντές σε υλικό, αλλά ο χρόνος ανάπτυξής τους προσεγγίζει το χρόνο πραγματικής σχεδίασης του προσομοιούμενου επεξεργαστή 35
Πρακτική χρήση προσομοιωτών 1 Fast- forwarding func`onal simula`on (fast) για ένα αριθμό εντολών ώστε να περάσει η αρχικοποίηση της εφαρμογής μόνο οι τιμές καταχωρητών, μνήμης υπολογίζονται detailed simula`on για ένα μεγάλο αριθμό εντολών προσομοίωση όλων των λεπτομερειών αρχιτεκτονικής Phase- detec`on εύρεση των τμημάτων εκτέλεσης που έχουν ενδιαφέρον με func`onal simula`on αποθήκευση της κατάστασης στην αρχή κάθε φάσης λεπτομερής προσομοίωση των εντολών της φάσης 36
Πρακτική χρήση προσομοιωτών 2 Κατά τη λεπτομερή προσομοίωση συχνά υπάρχουν 2 φάσεις 1. Warm- up Γίνεται λεπτομερής προσομοίωση, αλλά δεν γίνονται μετρήσεις επίδοσης (π.χ. αστοχίες κρυφής μνήμης) Ο σκοπός είναι να ενημερωθούν (warm- up) διάφοροι «πίνακες» της μικροαρχιτεκτονικής: caches, branch predictors, 2. Measurement Κρατούνται δεδομένα επίδοσης (τα τελικά αποτελέσματα) 37
38
Που ξοδεύει χρόνο το δικό σου πρόγραμμα; Ανάλυση χαρακτηριστικών (profiling) ενός προγράμματος (με gprof) δείχνει που ξοδεύεται ο χρόνος ανά συνάρτηση έτσι μπορεί να δεί κανείς πιο είναι το αργότερο κομμάτι και να το βελτιώσει Συνήθως βλέπουμε ένα 90/10 ή 80/20: το 10% του κώδικα ευθύνεται για το 90% του χρόνου Μετάφραση και σύνδεση με κατάλληλες οδηγίες gcc pg progr.c Εκτέλεση κανονικά (λίγο πιο αργά) δημιουργεί ένα αρχείο gmon.out Τρέχουμε gprof για να δούμε τα αποτελέσματα 39
Βελτιστοποίηση μετάφρασης Ο gcc και άλλοι μεταφραστές, έχει διάφορες επιλογές βελτιστοποίησης Συνήθως - Ο[1-3]. Οσο μεγαλύτερος αριθμός τόσο περισσότερο προσπαθεί να βελτιστοποιήσει τον κώδικα Μετά το debugging καλό είναι κανείς να κάνει μια τελική μετάφραση με μια από τις - Ο επιλογές 40
Αριθμός εντολών - υπολογισμός Οι σύγχρονοι επεξεργαστές έχουν μετρητές επίδοσης μετρούν διάφορα γεγονότα (π.χ. cache miss, ) Συνήθως χρειάζεται ειδική έκδοση του πυρήνα του Λ.Σ. και κάποια ειδική βιβλιοθήκη ψάξτε για perfmon2, Intel performance counter monitor, Δεν μπορούν να μετρήσουν οτιδήποτε θέλει ένας αρχιτέκτονας Εναλλακτικά τρέχουμε το πρόγραμμα σε έναν γρήγορο προσομοιωτή ή εργαλείο dynamic binary instrumenta`on PIN hyp://www.pintool.org 41
Παράδειγμα αριθμός εντολών Θα χρησιμοποιήσουμε το μετροπρόγραμμα gzip (SPEC Int 2000) και το pin ~efthym/pin/pin*/pin \ -t ~efthym/pin/pin*/source/tools/ ManualExamples/obj-ia32/inscount2.so \ -- ~efthym/icarus/spec/gzip \ ~efthym/icarus/spec/input.source 60 Αποτέλεσματα στο αρχείο: inscount.out περίπου 70.5 εκατομύρια εντολές IA- 32 42
Υπολογισμός CPI (χονδρικά) Χώρις το pin, τρέχει σε 19.95sec στο hp6000ws12 /usr/bin/time --verbose ~efthym/ /gzip \ ~efthym/ /input.source 60 Κύκλος ρολογιού 376ps 2.66GHz more /proc/cpuinfo 19.95*10^12/376 = 53 εκατομύρια κύκλοι CPI = cycles/instruc`on count = 0.7526 στο παράδειγμα Ο επεξεργαστής εκτελεί πάνω από μία εντολή (1.33) ανά κύκλο 43