ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Αρχιτεκτονική Υπολογιστών Οργάνωση επεξεργαστή Διδάσκων: Επίκουρος Καθηγητής Αριστείδης Ευθυμίου
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.
ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Υλοποίηση διοχέτευσης Αρης Ευθυμίου
Το σημερινό μάθημα! Υλοποίηση διοχετευμένου επεξεργαστή καταχωρητές διοχέτευσης! Ελεγχος διοχετευμένου επεξεργαστή! Κίνδυνοι δεδομένων υλοποίηση προώθησης υλοποίηση stall! Κίνδυνοι ελέγχου ακύρωση εντολών πίσω από διακλάδωση μείωση ποινής διακλάδωσης 2
Υλοποίηση ενός κύκλου 3
Ροή εντολών! Γενικά: από αριστερά προς δεξιά με την σειρά τους: κανείς δεν προσπερνάει! χρειάζονται καταχωρητές διοχέτευσης για να εξασφαλιστεί! pipeline registers! Εξαιρέσεις (μπλέ χρώμα στο σχήμα), δεξιά προς αριστερά: 1. Στάδιο WB: δεδομένα γράφονται στο αρχείο καταχωρητών! που βρίσκεται κάπου στο κέντρο του σχήματος 2. Επιλογή επόμενης τιμής PC! Οι εξαιρέσεις επηρεάζουν μόνο επόμενες εντολές 1. 2. μπορεί να προκαλέσει κινδύνους δεδομένων μπορεί να προκαλέσει κινδύνους ελέγχου 4
MIPS με καταχωρητές διοχέτευσης 5
Υπονοούμενοι καταχωρητές διοχέτευσης! Γιατί δεν υπάρχει καταχωρητής διοχέτευσης στο τέλος του σταδίου WB; όλες οι εντολές γράφουν κάτι σε κάποια «μνήμη»! lw, R- type στο αρχείο καταχωρητών! sw στη μνήμη! (beq, και όλες στον PC) οι τιμές περνούν σε επόμενη εντολή όταν αυτή διαβάσει τον καταχωρητή/μνήμη! Ο PC μπορεί να θεωρηθεί καταχωρητής διοχέτευσης διαφορά με τους υπόλοιπους: ο PC είναι μέρος της «ορατής αρχιτεκτονικής κατάστασης», πρέπει να αποθηκευτεί αν σταματήσει η εκτέλεση του προγράμματος οι τιμές των καταχωρητών διοχέτευσης δεν αποθηκεύονται 6
Περιήγηση lw, στάδιο IF 7
Περιήγηση lw, στάδιο ID 8
Περιήγηση lw, στάδιο EX 9
Περιήγηση lw, στάδιο MEM 10
Περιήγηση lw, στάδιο WB Ποιά εντολή καθορίζει τον καταχωρητή αποτελέσματος; 11
Διορθωμένο datapath 12
Παρατηρήσεις! Ο,τι πληροφορία χρειάζεται ένα στάδιο πρέπει να φτάσει εκεί μέσω καταχωρητών διοχέτευσης! Ο καταχωρητής διοχέτευσης ενός σταδίου περιέχει ένα μέρος της εντολής που χρειάζεται στο ίδιο ή σε επόμενα στάδια! Εντολές περνούν από στάδια ακόμα και αν δεν έχουν κάτι να κάνουν σε αυτά π.χ. εντολές τύπου R από το στάδιο MEM! Οι επόμενες εντολές ήδη «πηγαίνουν με τη μέγιστη ταχύτητα» δεν μπορεί να υπάρξει κέρδος κάνοντας κάτι για τα αδρανή στάδια 13
Διαγράμματα διοχέτευσης! Διάγραμμα πολλαπλών κύκλων δείχνει την εκτέλεση πολλών εντολών σε πολλούς κύκλους 14
Διαγράμματα διοχέτευσης! Διάγραμμα ενός κύκλου δείχνει σε ποιο στάδιο βρίσκεται κάθε εντολή σε έναν κύκλο 15
Διοχετευμένος ελεγχος 16
Σήματα ελέγχου! Οι τιμές των σημάτων ελέγχου καθορίζονται στο στάδιο αποκωδικοποίησης αλλά πρέπει να «ενεργοποιηθούν» στον κατάλληλο κύκλο! Επεκτείνουμε τους καταχωρητές διοχέτευσης ώστε να περιέχουν και σήματα ελέγχου. 17
Πλήρης διοχετευμένος MIPS 18
Κίνδυνοι δεδομένων 19
Προώθηση αποτελεσμάτων 20
Μονοπάτια προώθησης! Εξετάζουμε μόνο προώθηση προς τις εισόδους της ALU υπάρχουν και άλλες περιπτώσεις! Αποτελέσματα/δεδομένα έρχονται από EX/MEM ή ΜΕΜ/WB σε επόμενα στάδια δεν χρειάζεται προώθηση! Ελεγχοι προώθησης: 1a. EX/MEM.RegisterRd = ID/EX.RegisterRs 1b. EX/MEM.RegisterRd = ID/EX.RegisterRt 2a. MEM/WB.RegisterRd = ID/EX.RegisterRs 2b. MEM/WB.RegisterRd = ID/EX.RegisterRt 21
Υλοποίηση προώθησης! Απλουστευμένο datapath λείπει η επιλογή σταθεράς ως 2ης είσόδου της ALU 22
Λεπτομέρειες προώθησης! Δεν γράφουν όλες οι εντολές αποτελέσματα μπορεί π.χ. EX/MEM.RegisterRd == ID/EX.RegisterRs αλλά η εντολή στο στάδιο MEM δεν γράφει αποτέλεσμα (beq, sw, ) Συνθήκη: EX/MEM.RegWrite && ισότητα! Προσοχή στην προώθηση τιμής του καταχωρητή $zero add $zero, $t1, $t2 # no- op add $s0, $zero, $zero # $s0 = 0 δεν πρέπει να προωθηθεί τιμή για το $zero!! Διπλός κίνδυνος. Παράδειγμα: add $1,$1,$2 add $1,$1,$3 add $1,$1,$4 Πρέπει κάθε εντολή να πάρει την πιο πρόσφατη τιμή 23
Stall Αναβολή εκτέλεσης I$ Reg I$ sub $t3,$t0,$t2 EX MEM WB D$ Reg Reg ALU ID/RF ALU lw $t0,0($t1) IF D$ Reg! Η εντολή αμέσως μετά μία load δεν μπορεί να χρησιμοποιήσει την τιμή που φέρνει η load! Πρέπει να ανιχνευθεί το πρόβλημα και να αναβληθεί η εκτέλεση της 2ης εντολής για 1 κύκλο ανίχνευση στο κύκλο 3 στάδιο ID/RF της 2ης εντολής πρέπει να αναβληθούν και οι επόμενες εντολές! προς τα αριστερά στα διαγράμματα. 24
Υλοποίηση αναβολής! Οι εντολές που αναβάλονται, μένουν στο ίδιο στάδιο διοχέτευσης για έναν ακόμη κύκλο δεν φορτώνουμε τον καταχωρητή διοχέτευσης του σταδίου, όπου γίνεται η ανίχνευση και όλους τους υπόλοιπους προς τα αριστερά, και τον PC! Τί θα κάνουμε για τα επόμενα στάδια; στο παράδειγμα το στάδιο EX στον κύκλο 4 θα βάλουμε bubble κενό! Θέτουμε σε όλα τα σήματα ελέγχου του επόμενου καταχωρητή διοχέτευσης, τιμές που δεν προκαλούν καμία εγγραφή (nop no opera on) ID/EX.regWrite = 0, ID/EX.memWrite = 0, 25
Υλοποίηση stall, κύκλωμα 26
Κίνδυνοι ελέγχου! Διακλάδωση με στατική προβλεψη ότι δεν ακολουθείται παράδειγμα: συνθήκη ισχύει, ακολούθησε την διακλάδωση A+4: Ix1 I2 Reg bub ble bub ble bub ble I$ bub ble I$ bub ble bub ble Ακύρωση εντολής bub ble bub ble Ακύρωση εντολής Reg D$ Reg I$ Reg ALU Target: I1 I$ D$ ALU Α+8: Ix2 Reg ALU A: j I$ D$ Reg 27
Ακύρωση εντολών! Παρόμοια με την προσθήκη bubble nop μετά από αναβολή/stall! Τα σήματα ελέγχου γίνονται 0! Αλλά σε όλα τα στάδια από την επόμενη της εντολής διακλάδωσης! Στην ουσία αδειάζουμε (μέρος) της διοχέτευσης αγγλικός όρος: flush! Ταυτόχρονα δίνουμε τη «σωστή» διεύθυνση στον PC 28
Μείωση ποινής διακλάδωσης! Ο αριθμός των χαμένων κύκλων μετά από μια ακολουθούμενη διακλάδωση ονομάζεται: ποινή διακλάδωσης, (branch penalty)! Αν μειώσουμε την ποινή, βελτιώνουμε την επίδοση! Καλύτερη περίπτωση απόφαση διακλάδωσης στο τέλος του 2ου κύκλου! Απαιτήσεις υπολογισμός διεύθυνσης στόχου υπολογισμός συνθήκης 29
Μείωση ποινής διακλάδωσης! Yπολογισμός διεύθυνσης στόχου Τώρα στο στάδιο EX όλα τα δεδομένα διαθέσιμα στο στάδιο ID : PC+4, σταθερά (μέρος της εντολής)! Υπολογισμός συνθήκης δυσκολότερο...! Παρατήρηση: οι περισσότερες διακλαδώσεις έχουν απλές συνθήκες ισότητας! Απλές συνθήκες μπορούν να υπολογισθούν με λίγες πύλες, άρα στο στάδιο ID για ισότητα: XOR ανά bit και μετά μια (μεγάλη) NOR! Αλλα προβλήματα: νέος προορισμός δεδομένων πιθανοί κίνδυνοι δεδομένων προώθηση, stalls κλπ. 30
Διακλάδωση στο στάδιο ID 1 31
Διακλάδωση στο στάδιο ID 2 32
Επόμενο μάθημα Διακοπές (excep ons/interrupts) 33
Τέλος Ενότητας
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Ιωαννίνων» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.
Σημειώματα
Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 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/.