1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Πρώτο Αρχιτεκτονική και απόδοση Υπολογιστών Μέρος: Δεύτερο Καθηγητής: Α. Βαφειάδης 2008
2 Α. Βαφειάδης Η απόδοση της CPU - Ορισμοί Κύκλος ρολογιού(Clock Cycle: Το διάστημα μεταξύ δύο γεγονότων ρολογιού (π.χ ακμές ανόδου) Συχνότητα ρολογιού (Clock rate) : Η συχνότητα των κύκλων στη μονάδα του χρόνου Περίοδος (Clock cycle time) = η διάρκεια ενός Clock Cycle (σε ns) Clock rate = 1/clock cycle time (σε MΗz)
3 Α. Βαφειάδης ΠΑΡΑΔΕΙΓΜΑ Περίοδος 2ns σε πόσα MΗz αντιστοιχούν ? CR = Clock Rate = συχνότητα ρολογιού CP = Cycle Period = Περίοδος κύκλου
4 Α. Βαφειάδης Η επίδοση της CPU Ορισμοί - τύποι Clock cycles/instruction (μέσο CPI) = = Πλήθος κύκλων/εντολή = = ο μέσος αριθμός των κύκλων που χρειάζεται μια εντολή γλώσσας μηχανής για να εκτελεστεί Instruction count (IC) = = πλήθος εντολών = = το συνολικό πλήθος των εντολών ενός προγράμματος Cycles /instruction (μέσο CPI) = = μέσο πλήθος κύκλων ανά εντολή πλήθος CPU κύκλων ανά πρόγραμμα = πλήθος εντολών προγράμματος
5 Α. Βαφειάδης CPU Time προγράμματος CPU time = πλήθος CPU κύκλων Χ μια περίοδο κύκλου = πλήθος CPU κύκλων = Clock rate CPU time = πλήθος εντολών Χ πλήθος κύκλων ανά εντολή Χ περίοδος κύκλου πλήθος εντολών Χ πλήθος κύκλων ανά εντολή CPU time = Clock rate
6 Α. Βαφειάδης Ο βασικός Τύπος ( CPU time πρoγράμματος) CPU time = Πλήθος εντολών (IC) X X Πλήθος κύκλων / εντολή (CPI) Χ X περίοδος κύκλου (CP) CPU time = IC x CPI x CP Instruction set Architecture + Τεχνολογία Compiler Instruction set Architecture + Οργάνωση Τεχνολογία Hardware + Οργάνωση
7 Α. Βαφειάδης Ο γενικευμένος βασικός τύπος Ιnstruction Count = IC = IC 1 + IC 2 + …. IC N Υποθέτουμε ότι ένα πρόγραμμα αποτελείται από Ν διαφορετικό πλήθος εντολών ή ομάδων εντολών γλώσσας μηχανής όπου ICi παριστάνει το πλήθος των κύκλων της εντολής i στην οποία αντιστοιχεί το CPIi
8 Α. Βαφειάδης Παράδειγμα 1 Έχουμε δύο μηχανές Α και Β που έχουν την ίδια αρχιτεκτονική του instruction set αλλά διαφορετική υλοποίηση. Η μηχανή Α έχει clock cycle time = 1ns και τρέχει ένα πρόγραμμα με CPI=2 Η μηχανή B έχει clock cycle time = 2ns και τρέχει το ίδιο πρόγραμμα με CPI=1.2 Ποια μηχανή έχει μεγαλύτερη απόδοση και πόσες φορές ?
9 Α. Βαφειάδης Απάντηση Ο αριθμός (έστω N) των instructions του προγράμματος θα είναι ο ίδιος και στις δύο μηχανές λόγω της ίδιας αρχιτεκτονικής. Ερμηνεία :Η απόδοση του Α είναι 1.2 φόρες η απόδοσης του Β.
10 Α. Βαφειάδης Παράδειγμα 2 Μια μηχανή έχει Instruction Set το οποίο διαθέτει τρεις κατηγορίες εντολών (A,B και C) γλώσσας μηχανής. Κάθε κατηγορία έχει και διαφορετικό CPI( Cycles per Instruction). H κατηγορία Α έχει CPI=1, η Β έχει CPI=2 και η C έχει CPI=3. δηλαδή οι εντολές τις κατηγορίας Α εκτελούνται σε ένα κύκλο της κατηγορίας B σε δύο κύκλους και της κατηγορίας C σε τρεις κύκλους. Ο σχεδιαστής ενός compiler μιας ανώτερης γλώσσας προγραμματισμού επιθυμεί να βρει την καλύτερη μέθοδο μετάφρασης την οποία και θα ενσωματώσει στον compiler. Πρέπει να διαλέξει μεταξύ δύο μεθόδων. την Χ και την Υ. Καλύτερη θεωρείται η μέθοδος μετάφρασης η οποία παράγει για τον ίδιο πηγαίο κώδικα και για την ίδια CPU τον γρηγορότερο εκτελέσιμό κώδικά Παίρνει ένα τυχαίο πρόγραμμα και το μεταφράζει με τη μέθοδο μετάφρασης Χ και μετά με τη μέθοδο μετάφρασης Υ. Κάθε μέθοδος παράγει κώδικα ο οποίος έχει διαφορετικό instruction mix το οποίο φαίνεται στον παρακάτω πίνακα.
11 Α. Βαφειάδης Παράδειγμα 2 Εντολές Γλώσσας μηχανής (ΙC) Κατηγορία ΑΚατηγορία ΒΚατηγορία C Μέθοδος Χ Μέθοδος Υ Ποια μέθοδος θα προτιμηθεί ?
12 Α. Βαφειάδης Έλεγχος της μεθόδου Χ Επειδή IC A =20 IC B =10 IC C = 20 και CPI A =1 CPI B =2 CPI C =3 και CPU Clock cycles = 1*20 + 2*10 + 3*20 = 100 κύκλοι Instruction count = = 50 εντολές CPI (average) = 100/50 =2.0 κύκλοι/εντολή ή CPI (average) = 20/50 *1 + 10/50*2 + 20/50*3 = = 2.0 κύκλοι/εντολή
13 Α. Βαφειάδης Έλεγχος της μεθόδου Υ Επειδή IC A =40 IC B =10 IC C = 10 και CPI A =1 CPI B =2 CPI C =3 CPU Clock cycles = 1*40 + 2*10 + 3*10 = 90 κύκλοι Instruction count = = 60 εντολές CPI (average) = 90/ κύκλοι/εντολή ή CPI (average) = 40/60 *1 + 10/60*2 + 10/60*3 = = 1.5 κύκλοι/εντολή
14 Α. Βαφειάδης Συμπέρασμα Ο σχεδιαστής θα προτιμήσει την μέθοδο που δημιουργεί εκτελέσιμο κώδικα ο οποίος τελειώνει γρηγορότερα στην ίδια CPU. Δηλαδή αυτή που μας δίνει μικρότερο CPU χρόνο ή μεγαλύτερη απόδοση. CPU time (Χ) / CPU time (Υ) = CPU cycles(Χ) * Clock time / CPU cycles(Υ) * Clock time = CPU cycles(Χ) / CPU cycles( Y) = 100/90 = 1.1 Άρα CPU time(Χ) = CPU time(Υ) * 1.1 ή Απόδοση (Υ) = Απόδοση (Χ) * 1.1 Άρα μέθοδος Υ είναι η καλύτερη γιατί παρουσιάζει μεγαλύτερη απόδοση CPU Παρατήρηση : To clock time είναι ίδιο γιατί πρόκειται για την ίδια CPU
15 Α. Βαφειάδης Amdahl’s Low SO = Ολική επιτάχυνση (βελτίωση) FE = Ποσοστό μέρους που βελτιώνεται (FE < 1 ) SE = Μερική επιτάχυνση επιτάχυνση(speedup) SO = [απόδοση πριν ] / [απόδοση μετά ]
16 Α. Βαφειάδης Amdahl’s Low (Παράδειγμα 1) Επιθυμούμε να βελτιώσουμε την ολική απόδοση ενός Web Server Αποφασίσαμε να αντικαταστήσουμε τη CPU με μια άλλη 20% ταχύτερη. Οι μετρήσεις έδειξαν ότι στη λειτουργία του Server η CPU μετέχει κατά 30%. To υπόλοιπο είναι Ι/Ο. Πόση θα είναι η ολική βελτίωση του server SE = Μερική βελτίωση 1.2 FE = ποσοστό βελτιούμενου μέρους = 0.3 Αυτό σημαίνει ότι η απόδοση του server θα αυξηθεί κατά 5%
17 Α. Βαφειάδης Amdahl’s Low (Παράδειγμα 2) Επιθυμούμε να βελτιώσουμε την ολική απόδοση ενός Web Server κατά 2 φορές. Αποφασίσαμε να αντικαταστήσουμε τη CPU. Οι μετρήσεις έδειξαν ότι στη λειτουργία του Server η CPU μετέχει κατά 30%. To υπόλοιπο είναι Ι/Ο. Πόσο πιο γρήγορη θα πρέπει να είναι η νέα CPU. SO = ολική βελτίωση = 2 FE = ποσοστό βελτιούμενου μέρους = 0.3 Αυτό σημαίνει ότι για αυτά τα δεδομένα δεν μπορεί να ισχύσει ο νόμος Άρα δεν μπορούμε να βελτιώσουμε το σύστημα Αν θελήσουμε να βελτιώσουμε το σύστημα Ι/Ο τότε
18 Α. Βαφειάδης Προτάσεις για λύση θέλουμε να επιταχύνουμε την λειτουργία ενός υπολογιστή επιταχύνοντας τον επεξεργαστή του. Συγκεκριμένα αλλάζουμε την χρονισμό της CPU και την κάνουμε 5 φορές πιο γρήγορη H CPU συμμετέχει στην όλη λειτουργία του υπολογιστή και για συγκεκριμένη ομάδα προγραμμάτων κατά 60%.
19 Α. Βαφειάδης Προτάσεις για λύση Ο υπολογισμός της τετραγωνικής ρίζας είναι ένας από τους πιο συχνούς όταν έχουμε να κάνουμε με γραφικά. Υποθέστε ότι σε ένα υπολογιστή τρέχει ένα πρόγραμμα γραφικών το οποίο θεωρούμε κρίσιμο και είναι αντιπροσωπευτικό των προγραμμάτων που θα τρέξει στο μέλλον ο υπολογιστής. Στο πρόγραμμα αυτό ο υπολογισμός της τετραγωνικής ρίζας καταλαμβάνει το 20% του συνολικού χρόνου εκτέλεσης. Θέλουμε να βελτιώσουμε τον χρόνο εκτέλεσης του προγράμματος. Βρισκόμαστε στο παρακάτω δίλημμα: Α) Να βελτιώσουμε μόνο το ολοκληρωμένο κύκλωμα της FPU που έχει να κάνει με τον υπολογισμό της τετραγωνικής ρίζας. Μπορούμε να το κάνουμε μέχρι και 10 φορές πιο γρήγορο. Β) Να βελτιώσουμε ολόκληρη την FPU. Μπορούμε να τη βελτιώσουμε ώστε να γίνει 1.6 πιο γρήγορη. Σημειώνουμε ότι οι πράξεις κινητής υποδιαστολής είναι υπεύθυνες για το 50% του συνολικού χρόνου εκτέλεσης του προγράμματος. Ποια από τις δύο μεθόδους να προτιμήσουμε, αν λάβουμε υπόψη μας ότι το κόστος έρχεται σε δεύτερη μοίρα.