1 Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τέταρτο Οι κίνδυνοι της pipeline Μέρος: Δεύτερο Καθηγητής: Α. Βαφειάδης 2007
2 Οι κίνδυνοι της pipeline (pipeline hazards) οι δομικοί κίνδυνοι (structural Hazards) προκύπτουν στις περιπτώσεις όπου το υλικό (hardware) δεν αρκεί για να καλύψει τις ανάγκες όλων των δυνατών συνδυασμών εντολών που μπορούν να προκύψουν στην pipeline. οι κίνδυνοι των δεδομένων (data Hazards) προκύπτουν όταν η εκτέλεση μιας εντολής εξαρτάται από το αποτέλεσμα μιας προηγούμενης εντολής οι κίνδυνοι ελέγχου (Control Hazards) προκύπτουν από τις εντολές άλματος οι οποίες αλλάζουν τη ροή του προγράμματος.
3 Δομικός κίνδυνος Κύκλοι μηχανής LoadIFIDEXMEMWB Εντολή 1IFIDEXMEMWB Εντολή 2IFIDEXMEMWB Εντολή 3IFIDEXMEMWB Εντολή 4IFIDEXMEM Στον κύκλο 4 η εντολή Load και η εντολή 3 απαιτούν διαδικασία μνήμης (L1 Cache) Μια λύση είναι ο διαχωρισμός της L1 cache μνήμης σε δύο, την L1 instruction cache και την L1 data cache
4 Η pipeline του DLX L1 data Cache L1 Instr. Cache A,B, Imm: Temporary registers MUX : Multiplexer LMD (load memory data) register
5 Δομικοί κίνδυνοι Κύκλοι μηχανής LoadIFIDEXMEMWB Εντολή 1IFIDEXMEMWB Εντολή 2IFIDEXMEMWB Εντολή 3νεκρ ό IFIDEXMEMWB Εντολή 4IFIDEXMEM Η λύση χωρίς την δημιουργία μας δεύτερης cache είναι η προσθήκη ενός νεκρού κύκλου, ώστε να καθυστερήσει η έναρξη της εντολής 3 Τον κίνδυνο τον προκαλούν οι εντολές Load/store οι οποίες συμμετέχουν με 40% [KAE_ιδανικό] =1 κύκλος [ΚΑΕ_πραγματικό] = % χ 1 =1.4 κύκλοι
6 Κίνδυνοι δεδομένων(Data Hazards) Κύκλοι μηχανής ADD R1,R2,R3IFIDEXMEMWB SUB R4,R5,R1IFIDEXMEMWB AND R6,R1,R7IFIDEXMEM OR R8,R1,R9IFIDEX XOR R10,R1,R11IFID Κίνδυνος χρήσης του R1 πριν από την τοποθέτηση της σωστής τιμής από την εντολή Add. Οι κίνδυνοι αφορούν τις εντολές SUB,AND και OR. Γιατί δεν υπάρχει κίνδυνος για την εντολή XOR ? Παράδειγμα 1
7 Κίνδυνοι δεδομένων και η λύση προώθησης (Forwarding) A-B Σωστό Β Λάθος Β
8 H λύση προώθησης (Fοrwarding)
9 Κίνδυνοι δεδομένων και η λύση προώθησης (Forwarding) Κύκλοι μηχανής ADD R1,R2,R3IFIDEXMEMWB SUB R4,R5,R1IFIDEXMEMWB AND R6,R1,R7IFIDEXMEM OR R8,R1,R9IFIDEX XOR R10,R1,R11IFID
10 Ολική προώθηση 1 2 3
11 Ακόμα ένα παράδειγμα κινδύνου δεδομένων Κύκλοι μηχανής ADD R1,R2,R3IFIDEXMEMWB LW R4,8(R1)IFIDEXMEMWB SW 12(R1),R4IFIDEXMEM
12 Κίνδυνοι δεδομένων – Λύση η προώθηση Κύκλοι μηχανής ADD R1,R2,R3IFIDEXMEMWB LW R4,8(R1)IFIDEXMEMWB SW 12(R1),R4IFIDEXMEM
13 Ταξινόμηση των κινδύνων δεδομένων Ανάγνωση μετά από εγγραφή (Read-After-Write, RAW). Η εντολή j διαβάζει την τιμή από κάποια πηγή (καταχωρητή ή μνήμη) την οποία εγγράφει η εντολή i. Εγγραφή μετά από εγγραφή (Write-After-Write, WAW). Η εντολή j γράφει μια τιμή πάνω στον ίδιο καταχωρητή ή μνήμη όπου γράφει και η εντολή i. Εγγραφή μετά από ανάγνωση (Write-After-Read, WAR). Η εντολή j γράφει μια τιμή πάνω στον ίδιο καταχωρητή ή θέση μνήμης την οποία διαβάζει η εντολή i. Υπόθεση: η εντολή i εκτελείται πριν από την j.
14 Λύσεις Ανάγνωση μετά από εγγραφή (Read-After-Write, RAW) Λύση η προώθηση
15 Λύσεις Εγγραφή μετά από εγγραφή (Write-After-Write, WAW) Υπάρχει κίνδυνος μόνο όταν η εγγραφή που κάνει η εντολή i τελειώνει μετά από την εγγραφή που κάνει η εντολή j διότι τότε ο καταχωρητής ή η μνήμη μένουν ενημερωμένοι με την λανθασμένη τιμή. Δεν υπάρχει κίνδυνος όταν οι έγγραφες διαρκούν ένα κύκλο(DLX) Σε pipeline όπου οι έγγραφες διαρκούν πολλούς κύκλους η λύση είναι η εισαγωγή νεκρών κύκλων
16 WAW σε pipeline με εγγραφή σε ένα κύκλο Κύκλοι μηχανής LW R1,8(R4)IFIDEXMEMWB ADD R1,R2,R3IFIDEXMEM WB Κύκλοι μηχανής LW R1,8(R4)IFIDEXMEM1MEM2WB ADD R1,R2,R3IFIDEX WB WAW σε pipeline με εγγραφή σε πολλούς κύκλους Νεκρός κύκλος H εντολή ADD δεν έχει κύκλο MEM
17 Λύσεις Εγγραφή μετά από ανάγνωση (Write-After-Read, WAR) Υπάρχει κίνδυνος μόνο όταν η εγγραφή που κάνει η εντολή i τελειώνει μετά από την εγγραφή που κάνει η εντολή j διότι τότε ο καταχωρητής ή η μνήμη μένουν ενημερωμένοι με την λανθασμένη τιμή. Δεν υπάρχει κίνδυνος στη DLX μηχανή γιατί η ανάγνωση τιμών γίνεται στη φάση ID και η εγγραφή στη φάση WB Σε pipeline όπου οι έγγραφες διαρκούν πολλούς κύκλους λύση είναι η εισαγωγή νεκρών κύκλων
18 WAR στη pipeline του DLX Κύκλοι μηχανής SW R4,8(R1)IFIDEXMEM WB ADD R1,R2,R3IFIDEX WB WAR σe pipeline με εγγραφή μνήμης σε 3 κύκλους με το δεύτερο κύκλο αφιερωμένο στον υπολογισμό της διεύθυνσης Κύκλοι μηχανής SW R4,8(R1) IFIDEXMEM1MEM2ΜΕΜ3WB ADD R1,R2,R3 IFIDEX WB Εισαγωγή δύο νεκρών κύκλων
19 Κίνδυνοι που απαιτούν εισαγωγή νεκρών κύκλων (Το πρόβλημα load before arithmetic) Κύκλοι μηχανής LW R1,8(R2)IFIDEXMEMWB SUB R4,R1,R5IFIDEXMEMWB
20 LW R1, 8(R2) SUB R4,R5,R1 IF IR Mem[PC] NPC PC + 4 IF ID A Reg[R2] IR Mem[PC] B Reg[R3] NPC PC + 4 Imm IR(16..31) EXID ALUOutput A + Imm A Reg[R5] B Reg[R1] Imm IR(16..31) MEMEX LMD MEM[ALUOutput] Εδώ χρειάζεται η τιμή του R1 Εδώ παράγεται η τιμή του R1 ALUOutput A + B WBMEM Reg[R1] LMD null WB Reg[R4] ALUOutput Ο κίνδυνος LW – SUB δεν λύνεται με προώθηση A-B
21 Ο κίνδυνος LW–SUB λύνεται με εισαγωγή νεκρού κύκλου και προώθηση στη συνέχεια Κύκλοι μηχανής LW R1,8(R2)IFIDEXMEMWB SUB R4,R1,R5IFIDνεκρόEXMEMWB
22 Λύση με επαναδιάταξη (σε επίπεδο μεταφραστή) Αρχική μετάφραση LW Rb,b LW Rc,c ADD Ra,Rb,Rc SW a,Ra LW Re,e LW Rf,f SUB Rd,Re,Rf SW d,Rd a = b + c; d = e - f; Λύση με επαναδιάταξη LW Rb,b LW Rc,c LW Re,e ADD Ra,Rb,Rc LW Rf,f SW a,Ra SUB Rd,Re,Rf SW d,Rd
23 Κίνδυνοι έλεγχου – το πρόβλημα Κύκλοι μηχανής Εντολή branchIFIDEXMEMWB Επόμενη εντολήIFνεκρό IFIDEXMEMWB Επόμενη εντολή+1IFIDEXMEM Επόμενη εντολή+2IFIDEX Απόκτηση της εντολή μετά το αληθές branch Απώλεια κύκλων στην περίπτωση αληθούς εντολής αλλαγής ροής
24 Το κόστος μιας εντολής αλλαγής ροής Το κόστος Αν τα άλματα, για παράδειγμα, αποτελούν το 20% όλων των εντολών τότε ο χρόνος εκτέλεσης γίνεται 1 κύκλος για το 80% των εντολών και 4 κύκλοι για το 20% των εντολών, δηλαδή ο Μέσος Χρόνος Εκτέλεσης (ΜΧΕ) μιας εντολής γίνεται ΜΧΕ = 0.8 4 = 1.6 κύκλοι ανά εντολή Η λύση Να βρούμε αν το άλμα θα γίνει ή όχι νωρίτερα από τη φάση MEM Να υπολογίζουμε τη διεύθυνση του στόχου του άλματος νωρίτερα από τη φάση MEM.
25 Τροποποίηση στο Hardware (By Gurpur M. Prabhu)Gurpur M. Prabhu
26 Τροποποίηση hardware – Σύγκριση αρχικής και τροποποιημένης μορφής Αρχική Τελική
27 Εντολή αλλαγής ροής στη τροποποιημένη pipeline Κύκλοι μηχανής Εντολή branchIFIDEXMEMWB Επόμενη εντολήIF IDEXMEMWB Επόμενη εντολή+1IFIDEXMEMWB Επόμενη εντολή+2IFIDEXMEMWB Λάθος εντολή Σωστή εντολή
28 Τεχνικές Βελτίωσης πέρα από την τροποποίηση του Hardware Εισαγωγή πάντα ενός κύκλου καθυστέρησης Πρόβλεψη ότι το άλμα δεν θα γίνει (predict not taken) Πρόβλεψη ότι το άλμα θα γίνει (predict taken) Καθυστερημένο άλμα (delayed branch)
29 Εισαγωγή πάντοτε νεκρού κύκλου Κύκλοι μηχανής Εντολή branchIFIDEXMEMWB Επόμενη εντολήΝεκρός κύκλος IFIDEXMEMWB Επόμενη εντολή+1IFIDEXMEMWB Επόμενη εντολή+2IFIDEXMEMWB Κατά τη διάρκεια της φάσης 2 μαθαίνουμε πια θα είναι η σωστή εντολή που θα ακολουθήσει της εντολής αλλαγής ροής
30 Πρόβλεψη ότι το άλμα δεν θα γίνει (predict not taken) Κύκλοι μηχανής Εντολή i (άλμα) το άλμα δεν εκτελείται IFIDEXMEMWB Εντολή i+1IFIDEXMEMWB Εντολή i+2IFIDEXMEMWB Εντολή i+3IFIDEXMEMWB
31 Πρόβλεψη ότι το άλμα θα γίνει (predict taken) Κύκλοι μηχανής Εντολή i (άλμα) το άλμα εκτελείται IFIDEXMEMWB Εντολή i+1IF Εντολή jIFIDEXMEMWB Εντολή j+1IFIDEXMEMWB
32 Καθυστερημένο άλμα (delayed branch) Κύκλοι μηχανής Εντολή i (άλμα) το άλμα εκτελείται IFIDEXMEMWB Εντολή i+1IFIDEXMEMWB Εντολή jIFIDEXMEMWB Εντολή j+1IFIDEXMEMWB
33 Επίδοση μεθόδων διαχείρισης αλμάτων ΜέθοδοςΚόστος για άλματα υπό συνθήκη (μέσος αριθμός κύκλων) Κόστος για άλματα χωρίς συνθήκη (μέσος αριθμός κύκλων) Μέσο κόστος για όλα τα είδη αλμάτων Μέσος αριθμός κύκλων ανά εντολή (ΚΑΕ) Καθυστέρηση πάντα Πρόβλεψη ότι το άλμα δε θα γίνει Καθυστερημένο άλμα