HY225 Οργάνωςη Υπολογιςτών Διδάςκοντεσ: Δ. Νικολόπουλοσ, Χ. Σωτηρίου. http://www.csd.uoc.gr/~hy225 1 Περιεχόμενα Pipelining Παξάιιειε εθηέιεζε εληνιώλ ζεεπηκέξνπο βήκαηα 2 επηκέξνπο βήκαηα εληνιήο απόδνζε ηνπ pipeline Δνκή datapath κε ζηάδηα pipeline θαηαρωξεηέο pipeline Παξάδεηγκα Εθηέιεζεο εληνιώλ lw, sw ζην pipeline ηνπ MIPS Δηάγξακκα εθηέιεζεο πνιιαπιώλ θύθιωλ Υινπνίεζε ειέγρνπ ζε pipelined datapath Κίλδπλνη (Hazards) Δνκηθνί, δεδνκέλωλ, ειέγρνπ Πξνώζεζε απνηειεζκάηωλ (Forwarding) Κίλδπλνη lw απαξαίηεηε αλακνλή Πξνώζεζε γηα εληνιέο R πλζήθεο Πξνώζεζεο Datapath κε πξνώζεζε Λνγηθή Καζπζηέξεζεο γηα lw Κίλδπλνη Ειέγρνπ θαζπζηέξεζε επόκελεο εληνιήο κείωζε θαζπζηέξεζεο Υινπνίεζε Εμαηξέζεωλ 1
Περιεχόμενα Pipelining Παξάιιειε εθηέιεζε εληνιώλ ζεεπηκέξνπο βήκαηα 3 επηκέξνπο βήκαηα εληνιήο απόδνζε ηνπ pipeline Δνκή datapath κε ζηάδηα pipeline θαηαρωξεηέο pipeline Παξάδεηγκα Εθηέιεζεο εληνιώλ lw, sw ζην pipeline ηνπ MIPS Δηάγξακκα εθηέιεζεο πνιιαπιώλ θύθιωλ Υινπνίεζε ειέγρνπ ζε pipelined datapath Κίλδπλνη (Hazards) Δνκηθνί, δεδνκέλωλ, ειέγρνπ Πξνώζεζε απνηειεζκάηωλ (Forwarding) Κίλδπλνη lw απαξαίηεηε αλακνλή Πξνώζεζε γηα εληνιέο R πλζήθεο Πξνώζεζεο Datapath κε πξνώζεζε Λνγηθή Καζπζηέξεζεο γηα lw Κίλδπλνη Ειέγρνπ θαζπζηέξεζε επόκελεο εληνιήο κείωζε θαζπζηέξεζεο Υινπνίεζε Εμαηξέζεωλ Pipelining Παράλληλη Επιμέρους Εκτέλεση Διαδικασίας Pipelining πνιιαπιά αλεμάξηεηα κέξε, βήκαηα ηεο εθηέιεζεο κηαο δηαδηθαζίαο επηηεινύληαη παξάιιεια ε ζπλνιηθή εθηέιεζε ζπληειείηαη κεηά ηελ νινθιήξωζε όιωλ ηωλ βεκάηωλ παξαδείγκαηα: εξγνζηαζηαθέο γξακκή ζπλαξκνιόγεζεο, ι.ρ. απηνθηλήηωλ, πιαθεηώλ αιπζίδα ππξνζβεζηώλ-θνπβάδωλ Βιμα 1 ο Βιμα 3 ο Βιμα 5 ο Βιμα 2 ο Βιμα 4 ο Καζπζηέξεζε (Latency) : 15 = 5 Κύθινο Ρνή (Throughput) : 1 βήκα αλά κνλάδα ρξόλνπ 4 2
Αρχιτεκτονική MIPS Pipelining Ππωσ είδαμε νωρίτερα, θ εκτζλεςθ των εντολών ςυντελείται ςε ςτάδια: Λειτουργία Σταδίου Φόρτωςθ Εντολισ Instruction Fetch Αποκωδικοποίθςθ Εντολισ, Ανάγνωςθ Καταχωρθτών Instruction Decode, Register Fetch Εκτζλεςθ ALU ι Υπολογιςμό Διεφκυνςθσ ALU Execute or Calculate Address Ανάγνωςθ/Εγγραφι ςτθν Μνιμθ Memory Read/Write Εγγραφι Αποτελζςματοσ ςε Καταχωρθτι - Result Writeback Ονομαςία IF ID EX MEM WB Το ςφνολο εντολών του MIPS είναι επιτθδευμζνα ςχεδιαςμζνο για Pipelining (RISC) 5 Απόδοςη Pipeline Ζςτω: Τφποσ Εντολήσ Δμνιμθσ = 10ns, ΔALU/Adder = 10ns, ΔRF = 5ns Φόρτωςη Εντολήσ IM Άρα Τclk = 40ns Ανάγνωςη Καταχωρητή Λειτουργία ALU Πρόςβαςη μνήμησ DM Εγγραφή Καταχωρητή Ρώσ κα ςυγκρίνουμε τθν απόδοςθ του επεξεργαςτι που εκτελεί 1 εντολι ανά κφκλο (40ns) με ενόσ pipelined επεξεργαςτι; Σφνολο R 10 5 10 5 30ns lw 10 5 10 10 5 40ns sw 10 5 10 10 35ns beq,bne 10 5 10 25ns j 10 10ns 6 3
Απόδοςη Pipeline Εκτζλεςθ 1 εντολισ ανά κφκλο: 0ns 40ns Χξόλνο, t 80ns IF ID ALU MEM WB εηξά Εληνιώλ 40ns IF ID ALU MEM WB 40ns IF ID Με pipelining: 0ns 10ns 20ns 30ns 40ns 50ns 60ns 70ns Χξόλνο, t IF ID ALU MEM WB 10ns εηξά 10ns Εληνιώλ IF ID ALU MEM WB IF ID ALU MEM WB 10ns 7 Αύξηςη Απόδοςησ με Pipeline Στθν ιδανικι περίπτωςθ, όπου όλα τα ςτάδια εξιςορροπθμζνα ωσ προσ τθν κακυςτζρθςθ: t ή pipelined όπου Β ο αρικμόσ των ςταδίων του pipeline Αν δεν είναι εξιςορροπθμζνα τα ςτάδια χάνουμε απόδοςθ από τθν ςτρογγυλοποίθςθ του κφκλου ςτο χειρότερο! Απόδοςθ αυξάνει λόγο τθσ πολλαπλάςιασ ροήσ ο χρόνοσ εκτζλεςθσ τθσ κάκε εντολισ δεν αλλάηει t ή pipelined 8 4
Περιεχόμενα Pipelining Παξάιιειε εθηέιεζε εληνιώλ ζεεπηκέξνπο βήκαηα 9 επηκέξνπο βήκαηα εληνιήο απόδνζε ηνπ pipeline Δνκή datapath κε ζηάδηα pipeline θαηαρωξεηέο pipeline Παξάδεηγκα Εθηέιεζεο εληνιώλ lw, sw ζην pipeline ηνπ MIPS Δηάγξακκα εθηέιεζεο πνιιαπιώλ θύθιωλ Υινπνίεζε ειέγρνπ ζε pipelined datapath Κίλδπλνη (Hazards) Δνκηθνί, δεδνκέλωλ, ειέγρνπ Πξνώζεζε απνηειεζκάηωλ (Forwarding) Κίλδπλνη lw απαξαίηεηε αλακνλή Πξνώζεζε γηα εληνιέο R πλζήθεο Πξνώζεζεο Datapath κε πξνώζεζε Λνγηθή Καζπζηέξεζεο γηα lw Κίλδπλνη Ειέγρνπ θαζπζηέξεζε επόκελεο εληνιήο κείωζε θαζπζηέξεζεο Υινπνίεζε Εμαηξέζεωλ Δομή Datapath MIPS με Στάδια Pipeline Από MEM ΔεμηάΑξηζηεξή ξνή εγθπκνλεί θηλδύλνπο (hazards) Από WB 10 5
Δομή Datapath με Καταχωρητέσ Pipeline Χξεηαδόκαζηε θαηαρωξεηέο αλάκεζα ζηα ζηάδηα Γηα ηελ απνζήθεπζε ηεο ηνπηθήο πιεξνθνξίαο από θύθιν ζε θύθιν από ηνλ λ ζηνλ (λ+1) 11 Περιεχόμενα Pipelining Παξάιιειε εθηέιεζε εληνιώλ ζεεπηκέξνπο βήκαηα 12 επηκέξνπο βήκαηα εληνιήο απόδνζε ηνπ pipeline Δνκή datapath κε ζηάδηα pipeline θαηαρωξεηέο pipeline Παξάδεηγκα Εθηέιεζεο εληνιώλ lw, sw ζην pipeline ηνπ MIPS Δηάγξακκα εθηέιεζεο πνιιαπιώλ θύθιωλ Υινπνίεζε ειέγρνπ ζε pipelined datapath Κίλδπλνη (Hazards) Δνκηθνί, δεδνκέλωλ, ειέγρνπ Πξνώζεζε απνηειεζκάηωλ (Forwarding) Κίλδπλνη lw απαξαίηεηε αλακνλή Πξνώζεζε γηα εληνιέο R πλζήθεο Πξνώζεζεο Datapath κε πξνώζεζε Λνγηθή Καζπζηέξεζεο γηα lw Κίλδπλνη Ειέγρνπ θαζπζηέξεζε επόκελεο εληνιήο κείωζε θαζπζηέξεζεο Υινπνίεζε Εμαηξέζεωλ 6
Εκτέλεςη εντολήσ lw, sw Στάδιο IF 13 Εκτέλεςη εντολήσ lw, sw Στάδιο ID 14 7
Εκτέλεςη εντολήσ lw, sw Στάδιο ΕΧ 15 Εκτέλεςη εντολήσ lw Στάδιο ΜΕΜ 16 8
Εκτέλεςη εντολήσ lw Στάδιο WB Λάζνο ηηκή Αξηζκνύ Καηαρωξεηή Απνηειέζκαηνο 17 Τροποποίηςη Datapath για εντολή lw 18 9
Εκτέλεςη εντολήσ sw Στάδιο ΕΧ 19 Εκτέλεςη εντολήσ sw Στάδιο MEM 20 10
Εκτέλεςη εντολήσ sw Στάδιο WB 21 Περιεχόμενα Pipelining Παξάιιειε εθηέιεζε εληνιώλ ζεεπηκέξνπο βήκαηα 22 επηκέξνπο βήκαηα εληνιήο απόδνζε ηνπ pipeline Δνκή datapath κε ζηάδηα pipeline θαηαρωξεηέο pipeline Παξάδεηγκα Εθηέιεζεο εληνιώλ lw, sw ζην pipeline ηνπ MIPS Δηάγξακκα εθηέιεζεο πνιιαπιώλ θύθιωλ Υινπνίεζε ειέγρνπ ζε pipelined datapath Κίλδπλνη (Hazards) Δνκηθνί, δεδνκέλωλ, ειέγρνπ Πξνώζεζε απνηειεζκάηωλ (Forwarding) Κίλδπλνη lw απαξαίηεηε αλακνλή Πξνώζεζε γηα εληνιέο R πλζήθεο Πξνώζεζεο Datapath κε πξνώζεζε Λνγηθή Καζπζηέξεζεο γηα lw Κίλδπλνη Ειέγρνπ θαζπζηέξεζε επόκελεο εληνιήο κείωζε θαζπζηέξεζεο Υινπνίεζε Εμαηξέζεωλ 11
Διάγραμμα Εκτέλεςησ Πολλαπλών Κύκλων Σειρά των εντολών Χρόνος σε Κύκλοσς 23 Διάγραμμα Εκτέλεςησ Πολλαπλών Κύκλων Συμβατικι, Συμβολικι Μορφι: Χρόνος σε Κύκλοσς Σειρά των εντολών 24 12
Διάγραμμα Εκτέλεςησ ενόσ Κύκλου Αντιςτοιχεί ςτθν κατάςταςθ του pipeline 25 Περιεχόμενα Pipelining Παξάιιειε εθηέιεζε εληνιώλ ζεεπηκέξνπο βήκαηα 26 επηκέξνπο βήκαηα εληνιήο απόδνζε ηνπ pipeline Δνκή datapath κε ζηάδηα pipeline θαηαρωξεηέο pipeline Παξάδεηγκα Εθηέιεζεο εληνιώλ lw, sw ζην pipeline ηνπ MIPS Δηάγξακκα εθηέιεζεο πνιιαπιώλ θύθιωλ Υινπνίεζε ειέγρνπ ζε pipelined datapath Κίλδπλνη (Hazards) Δνκηθνί, δεδνκέλωλ, ειέγρνπ Πξνώζεζε απνηειεζκάηωλ (Forwarding) Κίλδπλνη lw απαξαίηεηε αλακνλή Πξνώζεζε γηα εληνιέο R πλζήθεο Πξνώζεζεο Datapath κε πξνώζεζε Λνγηθή Καζπζηέξεζεο γηα lw Κίλδπλνη Ειέγρνπ θαζπζηέξεζε επόκελεο εληνιήο κείωζε θαζπζηέξεζεο Υινπνίεζε Εμαηξέζεωλ 13
Υλοποίηςη ελέγχου ςε Pipelined Datapath 27 Υλοποίηςη ελέγχου ςε Pipelined Datapath Σιματα ελζγχου παράγονται από τθν εντολι Υποςφνολο IR του IF/ID Ανάλογθ λειτουργία με τον επεξεργαςτι ενόσ κφκλου 28 14
Πλήρεσ Διάγραμμα με Έλεγχο μαζί 29 Περιεχόμενα Pipelining Παξάιιειε εθηέιεζε εληνιώλ ζεεπηκέξνπο βήκαηα 30 επηκέξνπο βήκαηα εληνιήο απόδνζε ηνπ pipeline Δνκή datapath κε ζηάδηα pipeline θαηαρωξεηέο pipeline Παξάδεηγκα Εθηέιεζεο εληνιώλ lw, sw ζην pipeline ηνπ MIPS Δηάγξακκα εθηέιεζεο πνιιαπιώλ θύθιωλ Υινπνίεζε ειέγρνπ ζε pipelined datapath Κίλδπλνη (Hazards) Δνκηθνί, δεδνκέλωλ, ειέγρνπ Πξνώζεζε απνηειεζκάηωλ (Forwarding) Κίλδπλνη lw απαξαίηεηε αλακνλή Πξνώζεζε γηα εληνιέο R πλζήθεο Πξνώζεζεο Datapath κε πξνώζεζε Λνγηθή Καζπζηέξεζεο γηα lw Κίλδπλνη Ειέγρνπ θαζπζηέξεζε επόκελεο εληνιήο κείωζε θαζπζηέξεζεο Υινπνίεζε Εμαηξέζεωλ 15
Κίνδυνοι (Hazards) Οι κίνδυνοι (hazards) αφοροφν περιπτώςεισ όπου εξαρτιςεισ ςτα δρώμενα των εντολών αποτρζπουν τθν εκτζλεςθ τουσ ςτον κφκλο τουσ (που προζβλεπε το pipeline) Κατθγορίεσ Δομικοί ζνασ πόροσ είναι δεςμευμζνοσ από άλλθ εντολι δεν ςυμβαίνουν ςτο MIPS pipeline αλλά ςε Supescalar Δεδομζνων απαιτείται αναμονι για να ολοκλθρώςει μια προθγοφμενθ εντολι τθν ανάγνωςθ/εγγραφι των δεδομζνων τθσ Ελζγχου Η εκτζλεςθ τθσ εντολισ εξαρτάται από προθγοφμενθ εντολι αλλαγισ ροισ (beq, bne) 31 Κίνδυνοι Δεδομένων Μια εντολι εξαρτάται από το αποτζλεςμα τθσ προθγοφμενθσ (RAW Read after Write κίνδυνοσ) add $s0, $t0, $t1 sub $t2, $s0, $t3 32 16
Κίνδυνοι Ελέγχου Αν το αποτζλεςμα του βρόχου αποφαςίηεται ςτο MEM Αδεηάδνπκε απηέο ηηο εληνιέο (ζήκαηα ειέγρνπ ζην 0) PC 33 Περιεχόμενα Pipelining Παξάιιειε εθηέιεζε εληνιώλ ζεεπηκέξνπο βήκαηα 34 επηκέξνπο βήκαηα εληνιήο απόδνζε ηνπ pipeline Δνκή datapath κε ζηάδηα pipeline θαηαρωξεηέο pipeline Παξάδεηγκα Εθηέιεζεο εληνιώλ lw, sw ζην pipeline ηνπ MIPS Δηάγξακκα εθηέιεζεο πνιιαπιώλ θύθιωλ Υινπνίεζε ειέγρνπ ζε pipelined datapath Κίλδπλνη (Hazards) Δνκηθνί, δεδνκέλωλ, ειέγρνπ Πξνώζεζε απνηειεζκάηωλ (Forwarding) Κίλδπλνη lw απαξαίηεηε αλακνλή Πξνώζεζε γηα εληνιέο R πλζήθεο Πξνώζεζεο Datapath κε πξνώζεζε Λνγηθή Καζπζηέξεζεο γηα lw Κίλδπλνη Ειέγρνπ θαζπζηέξεζε επόκελεο εληνιήο κείωζε θαζπζηέξεζεο Υινπνίεζε Εμαηξέζεωλ 17
Προώθηςη (Forwarding) ςτισ περιςςότερεσ περιπτώςεισ μποροφμε να προωκιςουμε το αποτζλεςμα άμεςα από ζνα ςτάδιο ςε ζνα άλλο χωρίσ τθν μεςολάβθςθ καταχωρθτι απαιτεί νζεσ ςυνδζςεισ ςτο datapath 35 Περιεχόμενα Pipelining Παξάιιειε εθηέιεζε εληνιώλ ζεεπηκέξνπο βήκαηα 36 επηκέξνπο βήκαηα εληνιήο απόδνζε ηνπ pipeline Δνκή datapath κε ζηάδηα pipeline θαηαρωξεηέο pipeline Παξάδεηγκα Εθηέιεζεο εληνιώλ lw, sw ζην pipeline ηνπ MIPS Δηάγξακκα εθηέιεζεο πνιιαπιώλ θύθιωλ Υινπνίεζε ειέγρνπ ζε pipelined datapath Κίλδπλνη (Hazards) Δνκηθνί, δεδνκέλωλ, ειέγρνπ Πξνώζεζε απνηειεζκάηωλ (Forwarding) Κίλδπλνη lw απαξαίηεηε αλακνλή Πξνώζεζε γηα εληνιέο R πλζήθεο Πξνώζεζεο Datapath κε πξνώζεζε Λνγηθή Καζπζηέξεζεο γηα lw Κίλδπλνη Ειέγρνπ θαζπζηέξεζε επόκελεο εληνιήο κείωζε θαζπζηέξεζεο Υινπνίεζε Εμαηξέζεωλ 18
Κίνδυνοι lw Απαραίτητη Αναμονή Στθν περίπτωςθ τθσ lw, το δεδομζνο είναι διακζςιμο ςτο MEM αντί του EX. Ζτςι, θ χριςθ του αποτελζςματοσ ανάγνωςθσ του lw από τθν αμζςωσ επόμενθ εντολι δεν λφνεται με προώθηςη Απαιτεί υποχρεωτικά αναμονή 1 κφκλου 37 Διαμόρφωςη Κώδικα (Scheduling) για Αποφυγή Καθυςτερήςεων Μποροφμε, ςτο επίπεδο του μεταφραςτι να αλλάξουμε τθν ςειρά των εντολών Να μθν γίνεται χριςθ του αποτελζςματοσ των lw ςτθν επόμενθ εντολι, αλλά παρακάτω Υλοποίθςθ κώδικα C για: A = B + E; C = B + F; Καζπζηέξεζε (stall) Καζπζηέξεζε (stall) lw lw $t1, 0($t0) $t2, 4($t0) add $t3, $t1, $t2 sw lw $t3, 12($t0) $t4, 8($t0) add $t5, $t1, $t4 sw $t5, 16($t0) 13 θύθινη lw lw lw $t1, 0($t0) $t2, 4($t0) $t4, 8($t0) add $t3, $t1, $t2 sw $t3, 12($t0) add $t5, $t1, $t4 sw $t5, 16($t0) 11 θύθινη 38 19
Περιεχόμενα Pipelining Παξάιιειε εθηέιεζε εληνιώλ ζεεπηκέξνπο βήκαηα 39 επηκέξνπο βήκαηα εληνιήο απόδνζε ηνπ pipeline Δνκή datapath κε ζηάδηα pipeline θαηαρωξεηέο pipeline Παξάδεηγκα Εθηέιεζεο εληνιώλ lw, sw ζην pipeline ηνπ MIPS Δηάγξακκα εθηέιεζεο πνιιαπιώλ θύθιωλ Υινπνίεζε ειέγρνπ ζε pipelined datapath Κίλδπλνη (Hazards) Δνκηθνί, δεδνκέλωλ, ειέγρνπ Πξνώζεζε απνηειεζκάηωλ (Forwarding) Κίλδπλνη lw απαξαίηεηε αλακνλή Πξνώζεζε γηα εληνιέο R πλζήθεο Πξνώζεζεο Datapath κε πξνώζεζε Λνγηθή Καζπζηέξεζεο γηα lw Κίλδπλνη Ειέγρνπ θαζπζηέξεζε επόκελεο εληνιήο κείωζε θαζπζηέξεζεο Υινπνίεζε Εμαηξέζεωλ Απαλοιφή Κινδύνων για εντολέσ ALU Θεωροφμε τθν παρακάτω αλλθλουχία εντολών: sub $2, $1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) Μποροφμε να αποφφγουμε τουσ κινδφνουσ μζςω προώκθςθσ δεδομζνων Αλλά πώσ αποφαςίηουμε τι και από ποφ και προσ ποφ κα προωκιςουμε; 40 20
Εξαρτήςεισ και Προώθηςη 41 Διάγνωςη των Εξαρτήςεων και Προώθηςη Χρθςιμοποιοφμε τουσ αρικμοφσ των καταχωρθτών που βρίςκονται ςτα ςτάδια του pipeline (και τουσ ςχετικοφσ καταχωρθτζσ του pipeline) π.χ. ID/EX.RegisterRs = Rs ςτον καταχωρθτι ID/EX Το ςτάδιο EX χρθςιμοποιεί τουσ Rs, Rt Εξαρτιςεισ/Ρροώκθςθ όταν: Πξνώζεζε από ηνλ EX/MEM 1a.ID/EX.RegisterRs = EX/MEM.Register.Rd 1b.ID/EX.RegisterRt = EX/MEM.Register.Rd Πξνώζεζε από ηνλ MEM/WB 2a.ID/EX.RegisterRs = MEM/WB. Register.Rd 2b.ID/EX.RegisterRt = MEM/WB. Register.Rd 42 21
Διάγνωςη των Εξαρτήςεων και Προώθηςη Τα παραπάνω ιςχφουν μόνο όταν θ προωκοφςα εντολι γράφει αποτζλεςμα δθλ. τα ςιματα EX/MEM.RegWrite, MEM/WB.RegWrite είναι 1. Και επιπλζον ο καταχωρθτισ που εγγράφεται δεν είναι ο $0 δθλ. EX/MEM.RegisterRd 0, MEM/WB.RegisterRd 0 43 Ενςωμάτωςη τησ Προώθηςησ ςτο datapath 44 22
Συνθήκεσ Προώθηςησ EX hazard if (EX/MEM.RegWrite and (EX/MEM.RegisterRd 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRs)) ForwardA = 10 if (EX/MEM.RegWrite and (EX/MEM.RegisterRd 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRt)) ForwardB = 10 MEM hazard if (MEM/WB.RegWrite and (MEM/WB.RegisterRd 0) and (MEM/WB.RegisterRd = ID/EX.RegisterRs)) ForwardA = 01 if (MEM/WB.RegWrite and (MEM/WB.RegisterRd 0) and (MEM/WB.RegisterRd = ID/EX.RegisterRt)) ForwardB = 01 45 Αν η ςυνθήκη ιςχύει και ςτισ 2 περιπτώςεισ; Ραραδείγματοσ χάριν: add $1,$1,$2 add $1,$1,$3 add $1,$1,$4 Θζλουμε να χρθςιμοποιιςουμε το τελευταίο αποτζλεςμα Ρροωκοφμε από το MEM μόνο όταν δεν ιςχφει η ςυνθήκη για προώθηςη από το EX 46 23
Τροποποίηςη ςτισ Συνθήκεσ Προώθηςησ του MEM MEM hazard if (MEM/WB.RegWrite and (MEM/WB.RegisterRd 0) and not (EX/MEM.RegWrite and (EX/MEM.RegisterRd 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRs)) and (MEM/WB.RegisterRd = ID/EX.RegisterRs)) ForwardA = 01 if (MEM/WB.RegWrite and (MEM/WB.RegisterRd 0) and not (EX/MEM.RegWrite and (EX/MEM.RegisterRd 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRt)) and (MEM/WB.RegisterRd = ID/EX.RegisterRt)) ForwardB = 01 47 Δομή Pipelined Επεξεργαςτή με Προώθηςη 48 24
Περιεχόμενα Pipelining Παξάιιειε εθηέιεζε εληνιώλ ζεεπηκέξνπο βήκαηα 49 επηκέξνπο βήκαηα εληνιήο απόδνζε ηνπ pipeline Δνκή datapath κε ζηάδηα pipeline θαηαρωξεηέο pipeline Παξάδεηγκα Εθηέιεζεο εληνιώλ lw, sw ζην pipeline ηνπ MIPS Δηάγξακκα εθηέιεζεο πνιιαπιώλ θύθιωλ Υινπνίεζε ειέγρνπ ζε pipelined datapath Κίλδπλνη (Hazards) Δνκηθνί, δεδνκέλωλ, ειέγρνπ Πξνώζεζε απνηειεζκάηωλ (Forwarding) Κίλδπλνη lw απαξαίηεηε αλακνλή Πξνώζεζε γηα εληνιέο R πλζήθεο Πξνώζεζεο Datapath κε πξνώζεζε Λνγηθή Καζπζηέξεζεο γηα lw Κίλδπλνη Ειέγρνπ θαζπζηέξεζε επόκελεο εληνιήο κείωζε θαζπζηέξεζεο Υινπνίεζε Εμαηξέζεωλ Καθυςτέρηςη Κίνδυνοσ lw, επόμενησ εντολήσ Καζπζηέξεζε ελόο θύθινπ 50 25
Συνθήκη Καθυςτέρηςησ lw Η εληνιή πνπ ρξεζηκνπνηεί ην απνηέιεζκα ηεο lw ζα είλαη ζην ζηάδην ID νη ζρεηηθνί αξηζκνί θαηαρωξεηώλ είλαη: IF/ID.RegisterRs, IF/IF.RegisterRt Η εμάξηεζε/θίλδπλνο ζπληειείηαη όηαλ: (ID/EX.MemRead == 1) και ((ID/EX.RegisterRt = IF/ID.RegisterRs) ι (ID/EX.RegisterRt = IF/ID.RegisterRt)) Αλ ε παξαπάλω ζπλζήθε ζπληειείηαη ηόηε θαζπζηεξνύκε ην pipeline γηα 1 θύθιν 51 Πωσ Καθυςτερούμε το Pipeline Θζτουμε όλα τα ςιματα ελζγχου (ι και δεδομζνων) του καταχωρθτι ID/EX ςτο μθδζν Τα EX, MEM, WB εκτελοφν εντολι «NOP» Διατθροφμε (α) PC, (β) δεδομζνα καταχωρθτι IF/ID για να ςυνεχίςει θ επόμενθ εντολι με κακυςτζρθςθ 1 κφκλου Η εντολι που κάνει χριςθ του αποτελζςματοσ του lw εκτελεί πάλι το ID Η επόμενθ εντολι ξαναφορτώνεται ςτο IF Η κακυςτζρθςθ 1 κφκλου επιτρζπει τώρα τθν προώκθςθ από το MEM ςτο EX 52 26
Καθυςτέρηςη 1 κύκλου λόγω lw ςτο pipeline Εηζαγωγή θαζπζηέξεζεο 1 θύθινπ 53 Καθυςτέρηςη 1 κύκλου λόγω lw ςτο pipeline Με κεγαιύηεξε αθξίβεηα 54 Chapter 4 The Processor ΗΥ225 54 - Υλικό - Διάλεξθ 3θ - Σχεδίαςθ 27
Δομή Επεξεργαςτή με Προώθηςη και Έλεγχο Κινδύνων lw 55 Περιεχόμενα Pipelining Παξάιιειε εθηέιεζε εληνιώλ ζεεπηκέξνπο βήκαηα 56 επηκέξνπο βήκαηα εληνιήο απόδνζε ηνπ pipeline Δνκή datapath κε ζηάδηα pipeline θαηαρωξεηέο pipeline Παξάδεηγκα Εθηέιεζεο εληνιώλ lw, sw ζην pipeline ηνπ MIPS Δηάγξακκα εθηέιεζεο πνιιαπιώλ θύθιωλ Υινπνίεζε ειέγρνπ ζε pipelined datapath Κίλδπλνη (Hazards) Δνκηθνί, δεδνκέλωλ, ειέγρνπ Πξνώζεζε απνηειεζκάηωλ (Forwarding) Κίλδπλνη lw απαξαίηεηε αλακνλή Πξνώζεζε γηα εληνιέο R πλζήθεο Πξνώζεζεο Datapath κε πξνώζεζε Λνγηθή Καζπζηέξεζεο γηα lw Κίλδπλνη Ειέγρνπ θαζπζηέξεζε επόκελεο εληνιήο κείωζε θαζπζηέξεζεο Υινπνίεζε Εμαηξέζεωλ 28
Κίνδυνοι Ελέγχου Οι εντολζσ beq, bne προςδιορίηουν τθν ροι των εντολών Η φόρτωςθ τθσ επόμενθσ εντολισ εξαρτάται από το αποτζλεςμα του κατά-ςυνκικθ βρόχου Το pipeline δεν μπορεί να φορτώςει απευθείασ την επόμενη εντολή Η εντολι βρόχου είναι ακόμα ςτο ςτάδιο ID, άρα δεν ζχει αποφαςιςτεί το αποτζλεςμα του βρόχου Στο pipeline του MIPS Ρρζπει να ςυγκρίνουμε καταχωρθτζσ και να υπολογίςουμε τθν τελικι διεφκυνςθ νωρίσ ςτο pipeline Προςθζτουμε πόρουσ για να γίνει ςτο ςτάδιο ID 57 Κίνδυνοι Ελέγχου Αν το αποτζλεςμα του βρόχου αποφαςίηεται ςτο MEM Αδεηάδνπκε απηέο ηηο εληνιέο (ζήκαηα ειέγρνπ ζην 0) PC 58 29
Καθυςτέρηςη λόγω beq, bne Ρρζπει να περιμζνουμε μζχρι το αποτζλεςμα του βρόχου να προςδιοριςτεί, μζχρι να φορτώςουμε τθν επόμενθ εντολι Αν μεταφζρουμε τον υπολογιςμό διεφκυνςθσ και τθσ ςυνκικθσ του βρόχου ςτο ID: 59 Μείωςη Καθυςτέρηςησ Pipeline λόγω Βρόχων Μεταφζρουμε ςτο ςτάδιο ID Ακροιςτι υπολογιςμοφ τελικισ διεφκυνςθσ Σφγκριςθ των καταχωρθτών παράδειγμα όπου ο βρόχοσ ακολουκείται: 36: sub $10, $4, $8 40: beq $1, $3, 7 44: and $12, $2, $5 48: or $13, $2, $6 52: add $14, $4, $2 56: slt $15, $6, $7... 72: lw $4, 50($7) 60 30
Παράδειγμα όπου η beq ακολουθείται 61 Παράδειγμα όπου η beq ακολουθείται 62 31
Καθυςτερήςεισ δεδομένων για beq, bne αλ νη θαηαρωξεηέο πξνο ζύγθξηζε πξνέξρνληαη από ηελ 2 ε ε 3 ε πξνεγνύκελε εληνιή ηύπνπ R, ι.ρ.: add $1, $2, $3 IF ID EX MEM WB add $4, $5, $6 IF ID EX MEM WB IF ID EX MEM WB beq $1, $4, target IF ID EX MEM WB Μπνξεί λα επηιπζεί κέζω πξνώζεζεο ζην ID 63 Καθυςτερήςεισ δεδομένων για beq, bne αλ νη θαηαρωξεηέο πξνο ζύγθξηζε πξνέξρνληαη από ηελ 1 ε πξoεγνύκελε ηύπνπ R, ή 2 ε πξνεγνύκελε ηύπνπ lw απαηηείηαη θαζπζηέξεζε 1 θύθινπ lw $1, addr IF ID EX MEM WB add $4, $5, $6 IF ID EX MEM WB beq stalled IF ID beq $1, $4, target ID EX MEM WB 64 32
Καθυςτερήςεισ δεδομένων για beq, bne αλ νη θαηαρωξεηέο πξνο ζύγθξηζε πξνέξρνληαη από ηελ 1 ε πξνεγνύκελε ηύπνπ lw απαηηείηαη θαζπζηέξεζε 2 θύθιωλ lw $1, addr IF ID EX MEM WB beq stalled IF ID beq stalled ID beq $1, $0, target ID EX MEM WB 65 Περιεχόμενα Pipelining Παξάιιειε εθηέιεζε εληνιώλ ζεεπηκέξνπο βήκαηα 66 επηκέξνπο βήκαηα εληνιήο απόδνζε ηνπ pipeline Δνκή datapath κε ζηάδηα pipeline θαηαρωξεηέο pipeline Παξάδεηγκα Εθηέιεζεο εληνιώλ lw, sw ζην pipeline ηνπ MIPS Δηάγξακκα εθηέιεζεο πνιιαπιώλ θύθιωλ Υινπνίεζε ειέγρνπ ζε pipelined datapath Κίλδπλνη (Hazards) Δνκηθνί, δεδνκέλωλ, ειέγρνπ Πξνώζεζε απνηειεζκάηωλ (Forwarding) Κίλδπλνη lw απαξαίηεηε αλακνλή Πξνώζεζε γηα εληνιέο R πλζήθεο Πξνώζεζεο Datapath κε πξνώζεζε Λνγηθή Καζπζηέξεζεο γηα lw Κίλδπλνη Ειέγρνπ θαζπζηέξεζε επόκελεο εληνιήο κείωζε θαζπζηέξεζεο Υινπνίεζε Εμαηξέζεωλ 33
Εξαιρέςεισ ςε Pipelined Επεξεργαςτή Οι εξαιρζςεισ, μια και απαιτοφν αλλαγι ροισ αποτελοφν κίνδυνο ελζγχου Ραράδειγμα: Overflow για εντολι add $1, $2, $1 Ολοκλθρώνουμε τισ προθγοφμενεσ εντολζσ Απαλείφουμε τθν εντολι ςτθν οποία ςυνζβθ θ εξαίρεςθ, και τισ επόμενεσ από το pipeline Απαλείφουμε = θζτουμε όλα τα ςήματα ελζγχου ςε 0 Θζτουμε καταχωρθτζσ EPC και Cause Ξεκινάμε με PC = διεφκυνςθ χειριςμοφ ςτο ςτάδιο IF 67 Pipeline που υποςτηρίζει Εξαιρέςεισ 68 34
Παράδειγμα Εξαιρέςεων Εξαίρεςθ ςτθν add: 40 sub $11, $2, $4 44 and $12, $2, $5 48 or $13, $2, $6 4C add $1, $2, $1 50 slt $15, $6, $7 54 lw $16, 50($7) ουτίνα Χειριςμοφ (Handler): 80000180 sw $25, 1000($0) 80000184 sw $26, 1004($0) 69 Παράδειγμα Εξαιρέςεων 70 35
Παράδειγμα Εξαιρέςεων 71 36