ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Αρχιτεκτονική Υπολογιστών Οργάνωση επεξεργαστή Διδάσκων: Επίκουρος Καθηγητής Αριστείδης Ευθυμίου
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.
ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Επίδοση επεξεργαστή, διοχέτευση Αρης Ευθυμίου
Το σημερινό μάθημα! Επίδοση επεξεργαστή (1.4 σύγγραμμα) latency, throughput χρόνος εκτέλεσης κύκλοι ανα εντολή CPI! Αξιολόγηση υλοποίησης επεξεργαστή 1ος κύκλου! Διοχέτευση! Κίνδυνοι διοχέτευσης δομικοί δεδομένων ελέγχου 2
Επίδοση (performance) υπολογιστή! Χρόνος απόκρισης ή λανθάνον χρόνος (response dme, latency) Ο χρόνος που χρειάζεται για να γίνει μια «δουλειά»! Ρυθμός εκτέλεσης (Throughput, Bandwidth) Δουλειές ανά μονάδα χρόνου! e.g., tasks/transacdons/ per hour! Αλλα μέτρα επίδοσης Κατανάλωση ενέργειας Αξιοπιστία 3
Η ferrari και το αστικό! Ferrari: 2 επιβάτες, 100km/h (στην πόλη)! Αστικό: 70 επιβάτες, 10km/h (με τις στάσεις)! Σπίτι/στάση- Πανεπιστήμιο 10km! Με ποιό μέσο ένας επιβάτης θα πάει πιο γρήγορα στο Πανεπιστήμιο?! Ποιό μέσο μεταφέρει περισσότερους επιβάτες ανα ώρα?! Επικεντρώνουμε στο χρόνο απόκρισης 4
Παράδειγμα throughput v latency Ποιό από τα παρακάτω βελτιώνει το ρυθμό εκτέλεσης και ποιό το χρόνο απόκρισης; 1. Αντικατάσταση (μονο)επεξεργαστή με έναν ταχύτερο 2. Προσθήκη επιπλέον (ίδιων) επεξεργαστών για ξεχωριστές δουλειές δεν έχουμε παράλληλα προγράμματα! Περ. 1 : βελτιώνει και τα δύο! Περ. 2: βελτιώνει μόνο το ρυθμό εκτέλεσης! Αλλά, αν το σύστημα έχει πολλές δουλειές να κάνει, το 2 μειώνει το χρόνο αναμονής μέχρι η δουλειά να ξεκινήσει, άρα και το χρόνο απόκρισης 5
Μέτρηση χρόνου εκτέλεσης! Πραγματικός χρόνος που πέρασε (Elapsed dme) Πλήρης χρόνος απόκρισης, περιλαμβάνει! επεξεργασία, είσοδο- έξοδο, χρόνο Λ.Σ., άλλες διεργασίες,... Καθορίζει την επίδοση του συστήματος από την σκοπιά του τελικού χρήστη Αλλάζει ανάλογα με τις συνθήκες! Χρόνος CPU Χρόνος επεξεργασίας μιας δουλειάς! Αγνοεί χρόνο εισόδου- εξόδου, άλλες διεργασίες Αποτελείται από το χρόνο CPU χρήστη και συστήματος (user, system CPU dme) Unix: πρόθεμα dme, πριν την εντολή εκτέλεσης 6
Παράγοντες επίδοσης! Αλγόριθμος Καθορίζει αριθμό πράξεων! Γλώσσα, μεταφραστής, αρχιτεκτονική Καθορίζουν αριθμό εντολών μηχανής ανά πράξη (γλώσσας)! Επεξεργαστής και σύστημα μνήμης Καθορίζουν ταχύτητα εκτέλεσης εντολών! Σύστημα εισόδου- εξόδου (και Λ.Σ.) Καθορίζει ταχύτητα I/O 7
CPU Time! Η επίδοση βελτιώνεται: μειώνοντας τον αριθμό κύκλων ρολογιού αυξάνοντας το ρυθμό (συχνότητα) ρολογιού! Δυστυχώς συχνά ο σχεδιαστής πρέπει να «ζυγίσει» το ρυθμό ρολογιού με τον αριθμό κύκλων λίγοι κύκλοι = πολύπλοκες πράξεις = πολλή δουλειά σε κάθε κύκλο = αργός ρυθμός ρολογιού 8
Αριθμός εντολών, CPI Clock Cycles = Instruction Count Cycles per Instruction CPU Time = Instruction Count CPI Clock Cycle Time Instruction Count CPI = Clock Rate! Αριθμός (δυναμικών) εντολών προγράμματος Καθορίζονται από το πρόγραμμα, ISA, μεταφραστή! Μέσος όρος κύκλων ανά εντολή (CPI) Καθορίζεται από το υλικό Αν το CPI είναι διαφορετικό για κάθε εντολή! Το μέσο CPI επηρεάζεται από το «μίγμα εντολών» του προγράμματος 9
Επίδοση επεξεργαστή 1 κύκλου! Καλό CPI = 1! Πολύ αργός ρυθμός ρολογιού μεγάλη περίοδος ρολογιού! Πώς μπορεί να βελτιωθεί: καλύτερη σχεδίαση κυκλωμάτων καλύτερη «τεχνολογία»! Το πρόβλημα: πολύ δουλειά σε ένα κύκλο 10
Σχεδίαση 1 κύκλου 1/2! Κανένας επεξεργαστής δεν ακολουθεί πλέον την υλοποίηση με ένα κύκλο ρολογιού! Ο κύκλος θα πρέπει να είναι αρκετα μεγάλος ώστε να εξυπηρετείται η χειρότερη περίπτωση Σε ό,τι είδαμε η load σχετικά μικρή διαφορά από τις υπόλοιπες εντολές, αλλά όχι αμελητέα Instr Instr fetch ister read op Memory access ister write Total time lw 200ps 100 ps 200ps 200ps 100 ps 800ps sw 200ps 100 ps 200ps 200ps R-format 200ps 100 ps 200ps beq 200ps 100 ps 200ps 700ps 100 ps 600ps 500ps 11
Σχεδίαση 1 κύκλου 2/2! Πράξεις κινητής υποδιαστολής οι πιο αργές εντολές (διαιρέσεις, τετραγωνικές ρίζες) χρειάζονται πολύ περισσότερο χρόνο από τις απλές εντολές που εξετάσαμε! Παρόμοια για επεξεργαστές με πιο πολύπλοκο σετ εντολών! Δεν μπορει κανείς να εκμεταλευτεί ότι οι χρονοβόρες πράξεις είναι σπάνιες ώστε να μειώσει το χρόνο εκτέλεσης των συχνών αλλά απλών εντολών. 12
Σχεδίαση πολλαπλών κύκλων! Κάθε στάδιο αντιστοιχεί σε ένα κύκλο fetch, decode reg- read,, mem, reg- write beq 3 κύκλοι Εντολές R, sw 4 κύκλοι lw 5 κύκλοι! Μπορούμε να ξαναχρησιμοποιούμε μονάδες όπως η σε πολλά στάδια: π.χ. για υπολογισμό PC+4, στόχου διακλάδωσης (στο στάδιο decode, reg- read) και για την «κανονική» πράξη (στάδιο )! Δεν θα επεκταθούμε περισσότερο γιατί υπάρχει δυνατότητα και CPI=1 και κάθε στάδιο = 1 κύκλος τεχνική διοχέτευσης, ομοχειρίας (pipelining) 13
Το παράδειγμα πλυντηρίου (!)! Πολλά ρούχα για πλύσιμο A B C D και στέγνωμα, δίπλωμα, τοποθέτηση! Πλυντήριο: 30 λεπτά! Στεγωτήριο: 30 λεπτά! Δίπλωμα: 30 λεπτά! Τοποθέτηση σε ντουλαπια: 30 λεπτά 14
Σειριακό πλύσιμο 6 PM 7 8 9 10 11 12 1 2 AM 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 T Time a A s k B C O r D d e r 8 ωρες για 4 «δουλειές» 15
Διοχετευμένο πλύσιμο 6 PM 7 8 9 10 30 30 30 30 30 30 30 T a A s k B C O D r d 3.5 ώρες για 4 e «δουλειές» r 11 12 1 2 AM Time 16
Συμπεράσματα 1/2 6 PM 7 8 9 10 12 1 2 AM Time 30 30 30 30 30 30 30 T a A s k B C O D r d 3.5 ώρες για 4 e «δουλειές» r 11 Ο χρόνος (latency) μιας δουλειάς δεν βελτιώνεται π.χ. η Α χρειάζεται 2 ώρες Ο ρυθμός διεκπαιρέωσης (throughput) δουλειών του «έργου» βελτιώνεται Πολλά στάδια εκτελούνται ταυτόχρονα Οι δουλειές επικαλύπτονται 17
Συμπεράσματα 2/2! Κάθε στάδιο πρέπει να έχει τους δικούς του πόρους! Θεωρητική επιτάχυνση = αριθμός διοχετευμένων σταδίων πόσες φορές ταχύτερα εκτελείται το συνολικό έργο! Πραγματική επιτάχυνση μικρότερη: χρόνος γεμίσματος (fill) / αδειάσματος (drain) διοχέτευσης 2.3x αντί για 4x όσες περισσότερες δουλειές έχει το έργο, τόσο καλύτερα! Αν κάποια στάδια είναι ταχύτερα, ο συνολικός χρόνος δεν επηρεάζεται ο βραδύτερος επιβάλει το ρυθμό του! πρέπει τα στάδια να είναι ισορροπημένα (balanced) 18
Στάδια διοχέτευσης, MIPS! Κάθε στάδιο εκτέλεσης του MIPS αποτελεί στάδιο διοχέτευσης IF Instrucdon Fetch ID Instrucdon decode, register read EXE Execute (address calculadon) MEM Memory access WB (register) write back! Οι εντολές του MIPS είναι σχεδιασμένες για διοχετευμένη εκτέλεση! Γενικά, τα στάδια δεν μοιράζονται μονάδες/κυκλώματα παρόμοια με εκτέλεση ενός κύκλου 19
Αναπαρ. διοχετευμένης εκτέλεσης Χρόνος IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX Σειρά εντολών MEM WB! Ολα τα είδη εντολών περνούν από όλα τα στάδια ανενεργά αν δεν χρειάζονται: π.χ. στάδιο MEM για εντολές τύπου R! Ολα τα στάδια είναι ενεργά ταυτόχρονα 20
Γραφική αναπαράσταση File: εγγραφή στο πρώτο μισό, ανάγνωση στο 2ο Time (clock cycles) I n s Load t r Add O r Sub d e Or r Store 21 21
Κίνδυνοι διοχέτευσης! Αγγλικός όρος: pipeline hazards! Σε κάποιες περιπτώσεις η επόμενη εντολή δεν μπορεί να εκτελεστεί στον επόμενο κύκλο! Τρία είδη κινδύνων:! Δομικοί (structural) κάποιος (μοιραζόμενος) πόρος δεν είναι διαθέσιμος! Δεδομένων (data hazard) κάποια δεδομένα δεν είναι έτοιμα! Ελέγχου (control hazard) η ροή εκτέλεσης αλλάζει (διακλαδώσεις, άλματα) 22
Δομικοί κίνδυνοι! Δύο στάδια χρειάζονται ταυτόχρονα τον ίδιο πόρο! Για παράδειγμα MIPS με 1 μνήμη και για εντολές και για δεδομένα μία lw/sw χρειάζεται τη μνήμη στο 4ο στάδιο ταυτόχρονα προσκομίζουμε μία εντολή (1ο στάδιο)! Δομικοί κίνδυνοι μπορούν πάντα να εξαλειφθούν «πληρώνοντας» περισσότερο υλικό Το κόστος όμως μπορεί να είναι τεράστιο σε σχέση με το όφελος 23
Παράδειγμα: 1 μνήμη Time (clock cycles) M M M M M M M M O Instr 2 r d Instr 3 e r Instr 4 M Ταυτόχρονη προσπέλαση μνήμης I n s Load t r Instr 1 M 24
Αρχείο καταχωρητών, Δομ.Κινδ? Time (clock cycles) O Instr 2 r d Instr 3 e r Instr 4 I n s Load t r Instr 1 Μπορούμε να διαβάσουμε και να γράψουμε; 25
Αρχείο καταχωρητών, Δομ.Κινδ?! Η μνήμη είναι σημαντικά μεγαλύτερη από το αρχείο καταχωρητών δεν υλοποιείται με τον ίδιο τρόπο! Το αρχείο καταχωρητών έχει μικρότερη καθυστέρηση 100ps στον πίνακα = ½ του χρόνου προσπέλασης μνήμης! Χωριστές θύρες εγγραφής (1), ανάγνωσης (2)! Εγγραφή στο 1ο μισό του κύκλου! Ανάγνωση στο 2ο μισό του κύκλου ταυτόχρονη εγγραφή ανάγνωση, επιστρέφει τα νέα δεδομένα κίνδυνος δεδομένων. περισσότερα σε λίγο! 26
Κίνδυνοι δεδομένων! Οι εντολές «περνούν» τιμές από τη μία σε άλλη! Αν ο παραγωγός και ο καταναλωτής είναι συνεχόμενες εντολές (ή πολύ κοντά),... δεν προλαβαίνει ο παραγωγός να γράψει την τιμή στο αρχείο καταχωρητών (στάδιο 5) πριν ο καταναλωτής το διαβάσει (στάδιο 2)! Παράδειγμα: add $t0, $t1, $t2 sub $t4, $t0, $t3 and $t5, $t0, $t6 or $t7, $t0, $t8 xor $t9, $t0, $t10 27
Κίνδυνος δεδομένων Time (clock cycles) IF or $t7,$t0,$t8 and $t5,$t0,$t6 WB sub $t4,$t0,$t3 EX MEM add $t0,$t1,$t2 ID xor $t9,$t0,$t10! Χρειάζονται μεταφορές τιμών ανάποδα στο χρόνο! 28
Αντιμετώπιση κινδ. δεδομένων Προώθηση (forwarding/bypassing) αποτελεσμάτων από την μονάδα παραγωγής στην μονάδα κατανάλωσης and $t5,$t0,$t6 or $t7,$t0,$t8 sub $t4,$t0,$t3 WB add $t0,$t1,$t2 EX MEM ID/RF IF xor $t9,$t0,$t10 29
Κίνδυνος φόρτωσης - χρήσης! Δεν είναι πάντα δυνατή η προώθηση αποτελεσμάτων! Συνηθισμένο πρόβλημα εντολή lw που ακολουθείται από εντολή που διαβάζει τον καταχωρητή που φορτώνεται load- use sub $t3,$t0,$t2 EX MEM WB ID/RF lw $t0,0($t1) IF! Πρέπει να καθυστερήσει/αναβληθεί (stall) η εντολή καταναλωτής και μετά να προωθηθεί το αποτέλεσμα 30
Αναβολή εκτέλεσης! Υλοποιημένη σε υλικό ονομάζεται: hardware interlock sub $t3,$t0,$t2 bub ble bub ble bub ble or $t7,$t0,$t6 and $t5,$t0,$t4 ID/RF lw $t0, 0($t1) EX MEM WB IF Στην πράξη γίνεται «οριζόντια» Δημιουργούνται κενά, ονομάζονται bubbles 31
Αναβολή η αναβαλλόμενη εντολή ακυρώνεται (γίνεται no- op) sub $t3,$t0,$t2 sub $t3,$t0,$t2 and $t5,$t0,$t4 bub ble bub ble bub ble or $t7,$t0,$t6 and $t5,$t0,$t4 lw $t0, 0($t1) 32
Αναβολή, διαφορετική όψη Χρόνος (κύκλοι) 1 επανάληψη, «πάγωμα» 2 3 4 5 6 7 8 9 Στάδια IF lw sub and and or ID EX MEM WB lw sub sub and or lw sub and or lw sub and or sub and or lw 33
Θέση καθυστέρησης φόρτωσης! Μετά από μια εντολή φόρτωσης υπάρχει μία ειδική θέση για εντολή: load delay slot! Εντολές που χρειάζονται την τιμή φόρτωσης, πρέπει να αποφεύγονται στη θέση αυτή γιατί θα καθυστερήσουν για ένα κύκλο! Η θέση μπορεί να εκμεταλευθεί αποδοτικά αν ο μεταφραστής τοποθετήσει μια χρήσιμη, ανεξάρτητη εντολή code scheduling 34
Code scheduling! Αλλαγή σειράς εντολών ώστε να εκτελούνται γρηγορότερα αποφεύγονται stalls Stall! Stall! # Method lw $t1, lw $t2, add $t3, sw $t3, lw $t4, add $t5, sw $t5, 1: 0($t0) 4($t0) $t1, $t2 12($t0) 8($t0) $t1, $t4 16($t0) 13 cycles # Method lw $t1, lw $t2, lw $t4, add $t3, sw $t3, add $t5, sw $t5, 2: 0($t0) 4($t0) 8($t0) $t1, $t2 12($t0) $t1, $t4 16($t0) 11 cycles 35
Κίνδυνοι ελέγχου! Προκαλούνται από διακλαδώσεις και άλματα! Δεν γνωρίζουμε καν ότι η εντολή είναι διακλάδωση ή άλμα πριν το 2ο στάδιο (αποκωδικοποίηση) άρα ήδη προσκομίζεται η επόμενη εντολή! Για διακλάδωση υπό συνθήκη, η συνθήκη υπολογίζεται/ ελέγχεται στο 3ο στάδιο αν ακολουθηθεί η διακλάδωση, μέχρι 2 επόμενες εντολές «χάνονται»! Γιατί είναι πρόβλημα άδειασμα/γέμισμα της διοχέτευσης χαμένη επίδοση 36
j: Διάγραμμα διοχέτευσης Time (clock cycles) I2 I3 bub ble bub ble bub ble bub ble Ακύρωση εντολής Target: I1 A+4: Ix A: j 37
Διακλαδώσεις! Η συνθήκη υπολογίζεται στο 3ο στάδιο! Για να μην εκτελεστούν λάθος εντολές, στους 2 επόμενους κύκλους δεν εκτελούνται εντολές A+4: Ix I2 bub ble bub ble bub ble bub ble bub ble bub ble Ακύρωση εντολής bub ble bub ble Α+4 ή Target: I1? A: j 38
Πρόβλεψη διακλάδωσης! Μπορούμε να κερδίσουμε μερικούς κύκλους προβλέποντας την κατεύθυνση της διακλάδωσης συνεχίζουμε την προσκόμιση, αποκωδικοποίηση εντολών όταν η συνθήκη υπολογιστεί (3ο στάδιο): αν η συνθήκη αληθεύει, ακυρώνουμε τις εντολές και προσκομίζουμε από τη διεύθυνση στόχο! 2 χαμένοι κύκλοι αν η συνθήκη δεν αληθεύει, κανένας χαμένος κύκλος! συνεχίζει η εκτέλεση των εντολών! Πρόβλεψη μή ακολούθησης (predict not taken) 39
Παράδειγμα! Οι διακλαδώσεις είναι 20% εντολών ενός προγράμματος! Δύο υλοποιήσεις κάθε διακλάδωση περιμένει 2 κύκλους ώστε να γνωρίζει από ποια διεύθυνση θα συνεχιστεί η εκτέλεση πρόβλεψη not taken και ποσοστό not taken = 40% των διακλαδώσεων! Υπολογισμός CPI 1 + 0.20*2 = 1.4 1 + 0.2 * (1-0.4) * 2 = 1.24 40
Lab06 MIPS σε quartus! Ο απλός MIPS που εξετάσαμε έχει υλοποιηθεί στο Quartus! Στο Lab06, θα τρέξετε προγράμματα με προσομοίωση παρόμοιο με το MIPS Χ- ray, αλλά με waveforms! Θα προσθέσετε μερικές εντολές και βέβαια, θα επιβεβαιώσετε ότι δουλεύουν σωστά!! Μπορούμε να τον βάλουμε να δουλέψει πραγματικά στις πλακέτες του εργαστηρίου (DE2); Δυστυχώς όχι. Οι μνήμες που χρησιμοποιούμε δεν μπορούν να υλοποιηθούν! 41
Επόμενο μάθημα Σχεδίαση διοχετευμένου επεξεργαστή 42
Τέλος Ενότητας
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Ιωαννίνων» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.
Σημειώματα
Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 1.0. Έχουν προηγηθεί οι κάτωθι εκδόσεις: Έκδοση 1.0 διαθέσιμη εδώ. http://ecourse.uoi.gr/course/view.php?id=1307.
Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Ιωαννίνων, Διδάσκων: Επίκουρος Καθηγητής Αριστείδης Ευθυμίου. «Αρχιτεκτονική Υπολογιστών. Οργάνωση επεξεργαστή». Έκδοση: 1.0. Ιωάννινα 2014. Διαθέσιμο από τη δικτυακή διεύθυνση: http://ecourse.uoi.gr/course/view.php?id=1307.
Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά Δημιουργού - Παρόμοια Διανομή, Διεθνής Έκδοση 4.0 [1] ή μεταγενέστερη. [1] https://creativecommons.org/licenses/by-sa/4.0/.