Post on 11-Oct-2020
Υ-‐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”, 4th/5th 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
Βελτίωση επίδοσης
nn
8
RISC
Move to multi-processor
Ορισμός Επίδοσης Ποιό αεροπλάνο έχει καλύτερη επίδοση;
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
17
€
CPI =1+CPIcache +CPIbranches +CPIstalls + ...
CPIx είναι ο αριθμός των επιπλέον κύκλων που προκαλεί το στοιχείο x
Αντίστοιχα:
€
IPC =1
1+ CPIxx∑
Παράγοντες επίδοσης
Αλγόριθμος – Καθορίζει αριθμό πράξεων
Γλώσσα, μεταφραστής, αρχιτεκτονική – Καθορίζουν αριθμό εντολών μηχανής ανά πράξη (γλώσσας)
Επεξεργαστής και σύστημα μνήμης – Καθορίζουν ταχύτητα εκτέλεσης εντολών
Σύστημα εισόδου-‐εξόδου (και Λ.Σ.) – Καθορίζει ταχύτητα I/O
18
€
CPU Time = Instruction Count ×CPI×Clock Cycle Time
Λεπτομέρειες 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”
€
PerformanceX PerformanceY
= Execution timeY Execution timeX = n Παράδειγμα: χρόνος εκτέλεσης προγράμματος
10s στον A, 15s στον B Execu`on TimeB / Execu`on TimeA = 15s / 10s = 1.5
Ο A είναι 1.5 φορές ταχύτερος από τον B
21
€
Speedup =Performanceenhanced Performanceoriginal
= Execution timeoriginal Execution timeenhanced
O νόμος του Amdahl
Συχνά αλλαγές στην αρχιτεκτονική βελτιώνουν ένα μέρος του χρόνου εκτέλεσης
22
€
Speedup =Tunaffected + Taffected
Tunaffected + Taffected/improvement factor
Αν το ποσοστό του χρόνου που βελτιστοποιεί μία τεχνική είναι p, το μέγιστο speedup που μπορούμε να πάρουμε είναι 1/(1-‐p)
Παγίδα: ο Νόμος του 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×109 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
Συνόψιση αποτελεσμάτων
29
Χρειαζόμαστε κάποιο είδος μέσου όρου
Αριθμητικός μ.ο. (arithme`c mean) Ο χρόνος εκτέλεσης μερικών προγραμμάτων διαφέρει
πολύ (56 φορές gcc mcf στον Opteron)
Σταθμισμένος αριθμητικός μ.ο. (weighted arithme`c mean)
ποιός καθορίζει τους συντελεστές;
Συνόψιση αποτελεσμάτων (2)
Η SPEC απαιτεί κανονικοποίηση ως προς μηχανή αναφοράς
Συνόψιση όλων των μετροπρογραμμάτων χρησιμοποιώντας γεωμετρικό μέσο (geometric mean)
€
G =Ti
Refii=1
n
∏n =
Tii=1
n
∏n
Refii=1
n
∏n
30
Για σύγκριση 2 μηχανών δεν χρειάζονται οι χρόνοι εκτέλεσης της μηχανής αναφοράς
Οι κανονικοποιημένες τιμές θέλουν προσοχή!
Ποιό σύστημα είναι καλύτερο;
31
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
Κανονικοποίηση και μέσος όρος
32
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
ως πρ
ος Β
Αριθμητικός vs Γεωμετρικός μέσος όρος
Ποιό σύστημα είναι καλύτερο;
33
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 γιατί οι χρόνοι εκτέλεσης είναι της
ίδιας τάξης μεγέθους.
Προσομοιωτές
Διαφορετικά επίπεδα λεπτομέρειας – διαφορετική ταχύτητα – αναλογικά κυκλώματα (τάσεις, ρεύματα, ...) – ψηφιακά κυκλωματα (λογικές τιμές) – 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