Chapter 6 Αύξηση της απόδοσης με διοχέτευση (pipeline) Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση: Καθ. Εφαρμογών Νικόλαος Πετράκης, Τμήματος Ηλεκτρονικών Μηχανικών του Τ.Ε.Ι. Κρήτης. Τελευταία τροποποίηση: 2014-2015 χειμερινό εξάμηνο.
Διοχέτευση κατ αναλογία Πλύσιμο ρούχων με διοχέτευση (pipelining laundry): εκτέλεση με επικαλύψεις (overlapping execution) Η παραλληλία βελτιώνει την απόδοση (Parallelism improves performance) Στα 4 φορτία (loads): Επίσπευση (Speedup) = 16/7 = 8/3.5 = 2.3 Ασταμάτητα (Non-stop): Επίσπευση = 4n/(n + 3) 4 ίση με τον αριθμό των σταδίων της διοχέτευσης (number of stages) 4.5 An Overview of Pipelining Chapter 4 The Processor 2
Η διοχέτευση του MIPS Πέντε στάδια (stages), ένα βήμα σε κάθε στάδιο (one step per stage) 1. IF: Instruction fetch from memory (προσκόμιση της εντολής από την μνήμη εντολών) 2. ID: Instruction decode & register read (αποκωδικοποίηση της εντολής και ανάγνωση των καταχωρητών) 3. EX: Execute operation or calculate address (εκτέλεση της πράξης ή υπολογισμός μιας διεύθυνσης) 4. MEM: Access memory operand (προσπέλαση ενός τελεστέου στην μνήμη δεδομένων) 5. WB: Write result back to register (Εγγραφή αποτελέσματος σε κάποιο καταχωρητή) Chapter 4 The Processor 3
Απόδοση διοχέτευσης Υποθέστε ότι ο χρόνος των σταδίων είναι: 100ps για ανάγνωση/εγγραφή καταχωρητή 200ps για τα άλλα στάδια Σύγκριση διαδρομής δεδομένων με διοχέτευση με την διαδρομή δεδομένων ενός κύκλου Instr Instr fetch Register read ALU op Memory access Register write Total time lw 200ps 100 ps 200ps 200ps 100 ps 800ps sw 200ps 100 ps 200ps 200ps 700ps R-format 200ps 100 ps 200ps 100 ps 600ps beq 200ps 100 ps 200ps 500ps Ν.Β.: Αυτός ο υπολογισμός υποθέτει ότι οι πολυπλέκτες, η μονάδα ελέγχου, οι προσπελάσεις του PC, και η μονάδα επέκτασης προσήμου δεν έχουν καθυστέρηση. Chapter 4 The Processor 4
Απόδοση διοχέτευσης Ενός κύκλου (Single-cycle) (T c = 800ps) Με διοχέτευση (Pipelined) (T c = 200ps) Chapter 4 The Processor 5
Επίσπευση ή επιτάχυνση λόγω διοχέτευσης (Pipeline Speedup) Αν είναι ισορροπημένα όλα τα στάδια δηλαδή, διαρκούν όλα τον ίδιο χρόνο τότε: χρόνος μεταξύ εντολών με διοχέτευση = = χρόνος μεταξύ εντολών χωρίς διοχέτευση Αριθμός σταδίων Αν δεν είναι ισορροπημένα η επιτάχυνση είναι μικρότερη Έχουμε επίσπευση λόγω αυξημένης διεκπεραιωτικής ικανότητας (throughput) Η χρονική διάρκεια (latency) της κάθε εντολής δεν μειώνεται Chapter 4 The Processor 6
Διοχέτευση και σχεδίαση συνόλου εντολών Το σύνολο των εντολών του MIPS είναι σχεδιασμένο για διοχέτευση Όλες οι εντολές είναι των 32 μπιτ (4 bytes) Ευκολότερη προσκόμιση και αποκωδικοποίηση σε ένα κύκλο, σε σύγκριση με τον x86 που έχει εντολές από 1 έως 17 bytes Λίγες και κανονικές μορφές εντολών Μπορεί να αποκωδικοποιήσει και να διαβάσει καταχωρητές σε ένα βήμα Διευθυνσιοδότηση τελεστέων μνήμης μόνο σε load/store Μπορεί να υπολογίσει την διεύθυνση στο τρίτο στάδιο και να προσπελάσει τη μνήμη στο τέταρτο στάδιο Ευθυγράμμιση των τελεστέων μνήμης Η προσπέλαση μνήμης διαρκεί μόνο έναν κύκλο Chapter 4 The Processor 7
Κίνδυνοι (Hazards) Καταστάσεις που αποτρέπουν την εκκίνηση της επόμενης εντολής στον επόμενο κύκλο. Κίνδυνος δομής (Structure hazards) Ένας αναγκαίος πόρος είναι απασχολημένος Κίνδυνος δεδομένων (Data hazard) Πρέπει να περιμένει την προηγούμενη εντολή να ολοκληρώσει την ανάγνωση/εγγραφή Κίνδυνος ελέγχου (Control hazard) Η απόφαση σε μια ενέργεια ελέγχου εξαρτάται από προηγούμενη εντολή Chapter 4 The Processor 8
Κίνδυνοι δομής Διένεξη (conflict) στην χρήση ενός πόρου Στην διοχέτευση του MIPS με μια μοναδική μνήμη Οι εντολές load/store απαιτούν προσπέλαση μνήμης Η προσκόμιση εντολής πρέπει να καθυστερήσει - καθηλωθεί (stall) σε εκείνο τον κύκλο Θα προκαλούσε «φυσαλίδα» της διοχέτευσης (pipeline bubble ) Έτσι, οι διαδρομές δεδομένων με διοχέτευση απαιτούν ξεχωριστές μνήμες εντολών / δεδομένων Ή ξεχωριστές κρυφές μνήμες εντολών / δεδομένων (instruction/data caches) Chapter 4 The Processor 9
Κίνδυνοι δεδομένων Μια εντολή εξαρτάται από την ολοκλήρωση μιας προσπέλασης δεδομένων μιας προηγούμενης εντολής add $s0, $t0, $t1 sub $t2, $s0, $t3 Chapter 4 The Processor 10
Προώθηση Forwarding (aka Bypassing) Γνωστό και ως Παράκαμψη (Bypassing) Χρήση του αποτελέσματος όταν δημιουργηθεί Μην περιμένεις να αποθηκευτεί σε καταχωρητή Απαιτεί επιπλέον συνδέσεις στην διαδρομή των δεδομένων Chapter 4 The Processor 11
Κίνδυνος δεδομένων Φόρτωσης Χρήσης (Load-Use Data Hazard) Δεν μπορούμε πάντοτε να αποφεύγουμε τις καθυστερήσεις με την προώθηση Αν η τιμή δεν έχει υπολογιστεί όταν χρειάζεται Δεν μπορούμε να κάνουμε προώθηση προς τα πίσω στον χρόνο! Chapter 4 The Processor 12
Χρονοπρογραμματισμός κώδικα για αποφυγή καθυστερήσεων (Code Scheduling to Avoid Stalls) Αναδιάταξη κώδικα για αποφυγή χρήσης του αποτελέσματος της load στην επόμενη εντολή Κώδικας σε C για: A = B + E; C = B + F; stall stall lw $t1, 0($t0) lw $t2, 4($t0) add $t3, $t1, $t2 sw $t3, 12($t0) lw $t4, 8($t0) add $t5, $t1, $t4 sw $t5, 16($t0) 13 cycles lw $t1, 0($t0) lw $t2, 4($t0) lw $t4, 8($t0) add $t3, $t1, $t2 sw $t3, 12($t0) add $t5, $t1, $t4 sw $t5, 16($t0) 11 cycles Chapter 4 The Processor 13
Κίνδυνοι ελέγχου (Control Hazards) Η διακλάδωση καθορίζει την ροή του ελέγχου (flow of control) Η προσκόμιση της επόμενης εντολής εξαρτάται από το αποτέλεσμα της διακλάδωσης Η διοχέτευση δεν μπορεί να προσκομίζει πάντα την σωστή εντολή Ακόμα δουλεύει στο στάδιο ID της διακλάδωσης Στη διοχέτευση του MIPS Πρέπει να συγκρίνει καταχωρητές και να υπολογίσει την διεύθυνση προορισμού νωρίς στην διοχέτευση Προσθήκη υλικού για να το κάνει στο στάδιο ID Chapter 4 The Processor 14
Καθυστέρηση σε διακλάδωση Περίμενε μέχρι να καθοριστεί το αποτέλεσμα της διακλάδωσης πριν προσκομίσεις την επόμενη εντολή Chapter 4 The Processor 15
Πρόβλεψη διακλάδωσης (Branch Prediction) Οι μεγαλύτερες διοχετεύσεις (longer pipelines) δεν μπορούν να καθορίσουν εγκαίρως το αποτέλεσμα της διακλάδωσης Η ποινή καθυστέρησης (stall penalty) γίνεται υπερβολικά μεγάλη (μη αποδεκτή - unacceptable) Πρόβλεψη του αποτελέσματος της διακλάδωσης Καθυστέρηση μόνο αν η πρόβλεψη είναι λανθασμένη Στην διοχέτευση του MIPS Μπορεί να γίνει πρόβλεψη μη λήψης της διακλάδωσης (Can predict branches not taken) Προσκόμιση της εντολής μετά την διακλάδωση, χωρίς καθόλου καθυστέρηση Chapter 4 The Processor 16
MIPS με πρόβλεψη μη λήψης (Predict Not Taken) Prediction correct Prediction incorrect Chapter 4 The Processor 17
Πιο ρεαλιστική πρόβλεψη διακλάδωσης Στατική πρόβλεψη διακλάδωσης Βασισμένη στην τυπική συμπεριφορά των διακλαδώσεων Παράδειγμα: διακλαδώσεις σε βρόχους και εντολές if Πρόβλεψη διακλαδώσεων προς τα πίσω (backward branches) ως λαμβανόμενες Πρόβλεψη διακλαδώσεων προς τα εμπρός (forward branches) ως μη λαμβανόμενες Δυναμική πρόβλεψη διακλάδωσης Το υλικό μετράει την πραγματική συμπεριφορά διακλαδώσεων π.χ. μετράει την πρόσφατη ιστορία κάθε διακλάδωσης Υποθέτει ότι η μελλοντική συμπεριφορά θα συνεχίσει την τάση Σε περίπτωση λάθους, καθυστερεί (stall) ενόσω επαναπροσκομίζει και ενημερώνει το ιστορικό Chapter 4 The Processor 18
Περίληψη διοχέτευσης The BIG Picture Η διοχέτευση βελτιώνει την απόδοση με την αύξηση της διεκπεραιωτικής ικανότητας (throughput) σε εντολές Εκτελεί πολλές εντολές παράλληλα Κάθε εντολή έχει τον ίδιο λανθάνοντα χρόνο (διάρκειαlatency) Υπόκειται σε κινδύνους Δομής, δεδομένων, ελέγχου Η σχεδίαση του συνόλου των εντολών επιδρά στην πολυπλοκότητα της υλοποίησης της διοχέτευσης Chapter 4 The Processor 19
Διαδρομή δεδομένων MIPS με διοχέτευση 4.6 Pipelined Datapath and Control MEM Right-to-left flow leads to hazards WB Chapter 4 The Processor 20
Καταχωρητές διοχέτευσης Χρειάζονται καταχωρητές ανάμεσα στα στάδια Για να κρατήσουν πληροφορίες που παράχθηκαν στον προηγούμενο κύκλο Chapter 4 The Processor 21
Πλάνες Η διοχέτευση είναι εύκολη (!) Η βασική ιδέα είναι εύκολη Ο διάβολος κρύβεται στις λεπτομέρειες π.χ., ανίχνευση κινδύνων δεδομένων Η διοχέτευση είναι ανεξάρτητη από την τεχνολογία Τότε γιατί δεν κάναμε πάντα διοχέτευση; Τα περισσότερα τρανζίστορ κάνουν εφικτές τις πιο προηγμένες τεχνικές Chapter 4 The Processor 22
Παγίδες Η φτωχή σχεδίαση της αρχιτεκτονικής συνόλου εντολών μπορεί να κάνει δυσκολότερη τη διοχέτευση π.χ., πολύπλοκα σύνολα εντολών (VAX, IA-32) Σημαντική επιβάρυνση για να δουλέψει η διοχέτευση Προσέγγιση του IA-32 με μικρολειτουργίες (micro-ops) π.χ., πολύπλοκοι τρόποι διευθυνσιοδότησης Παρενέργειες ενημέρωσης καταχωρητών, εμμεσότητα μνήμης π.χ., καθυστερημένες διακλαδώσεις Οι προηγμένες διοχετεύσεις έχουν μεγάλες υποδοχές καθυστέρησης Chapter 4 The Processor 23
Στο επόμενο μάθημα θα συζητήσουμε τις απορίες σας, εφ όλης της ύλης, και θα λύσουμε ασκήσεις στον πίνακα. Υ.Γ.1: Σας υπενθυμίζω ότι κατά την εξέταση της θεωρίας οφείλετε να παραδώσετε το τετράδιο ασκήσεων. Υ.Γ.2: Για σύντομες απορίες στείλτε e-mail στην διεύθυνση npet@chania.teicrete.gr ή διαφορετικά ελάτε στο γραφείο 5. Καλή μελέτη