ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

Σχετικά έγγραφα
ΠΛΕ- 027 Μικροεπεξεργαστές 6ο μάθημα: Αρχιτεκτονική πυρήνα: υλοποίηση με διοχέτευση

Υ- 01 Αρχιτεκτονική Υπολογιστών Υπόβαθρο: Διοχέτευση

Διάλεξη 12 Καθυστερήσεις (Stalls)

Διάλεξη 12 Καθυστερήσεις (Stalls) Εκκενώσεις Εντολών (Flushing)

O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control)

ΠΛΕ- 027 Μικροεπεξεργαστές 7ο μάθημα: Αρχιτεκτονική πυρήνα: Πρόβλεψη διακλάδωσης, Εξαιρέσεις

και η µονάδα ελέγχου (control) O επεξεργαστής: Η δίοδος δεδοµένων (datapath) Εντολές διακλάδωσης (branch beq, bne) I Type Σχεδίαση datapath

Διάλεξη 11 Προώθηση (Forwarding)

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 13. Διακλαδώσεις. Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΔΕΥΤΕΡΗ ΠΡΟΟΔΟΣ ΣΤΗΝ ΟΡΓΑΝΩΣΗ ΣΤΟΥΣ Η/Y (ΗΥ232)

Αρχιτεκτονική Υπολογιστών

O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control)

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Κάθε functional unit χρησιμοποιείται μια φορά σε κάθε κύκλο: ανάγκη για πολλαπλό hardware = κόστος υλοποίησης!

Αρχιτεκτονική Υπολογιστών

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I

Επανάληψη Σύστημα Διασωλήνωσης (Pipelining) Κεφάλαιο 4 - Σύστημα ιασωλήνωσης

Chapter 6 Αύξηση της απόδοσης με διοχέτευση (pipeline)

Multi Cycle Datapath. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης

Single Cycle Datapath. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης

Αρχιτεκτονική Υπολογιστών

ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός Κεφ. 4: O επεξεργαστής Σύστημα Διασωλήνωσης (Pipelining)

Αρχιτεκτονική Υπολογιστών

Τέτοιες λειτουργίες γίνονται διαμέσου του

Κεφάλαιο 4: Pipelining 75

Υ- 01 Αρχιτεκτονική Υπολογιστών Back- end: χρονοπρογραμματισμός, εντολές προσπέλασης μνήμης

30 min κάθε «φάση» Pipeline: Ένα παράδειγµα από.τη καθηµερινή ζωή. 1. Πλυντήριο. 2. Στεγνωτήριο. 3. ίπλωµα. 4. αποθήκευση. προσέγγιση για 4.

Εισαγωγή. Σύνοψη βασικών εννοιών, 5-stage pipeline, επεκτάσεις για λειτουργίες πολλαπλών κύκλων

Διοχέτευση (Pipeline)

2 η Ενδιάμεση Εξέταση Λύσεις/Απαντήσεις

Κεντρική Μονάδα Επεξεργασίας

Αρχιτεκτονική Υπολογιστών

Σχεδίαση μονάδας ελέγχου επεξεργαστή

Αρχιτεκτονική Υπολογιστών

Οργάνωση Η/Υ. Γιώργος Δημητρίου. Μάθημα 8 ο Μερική Επικάλυψη. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

ΠΛΕ- 027 Μικροεπεξεργαστές 5ο μάθημα: Αρχιτεκτονική πυρήνα: υλοποίηση ενός κύκλου

Κεφάλαιο 4. Ο επεξεργαστής

Κεφάλαιο 4. Ο επεξεργαστής. Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση

Θέµατα Φεβρουαρίου

2η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Ακ. έτος , 5ο Εξάμηνο Σχολή ΗΜ&ΜΥ

1. Οργάνωση της CPU 2. Εκτέλεση εντολών 3. Παραλληλία στο επίπεδο των εντολών 4. Γραμμές διοχέτευσης 5. Παραλληλία στο επίπεδο των επεξεργαστών

Επεξεργαστής Υλοποίηση ενός κύκλου μηχανής

ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός. Κεφ. 4: Ο επεξεργαστής 1. Διάδρομος δεδομένων και μονάδα ελέγχου 2.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΔΕΥΤΕΡΗ ΠΡΟΟΔΟΣ ΣΤΗΝ ΟΡΓΑΝΩΣΗ ΣΤΟΥΣ Η/Y (ΗΥ232)

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Εργαστήριο 10: Επίδοση Επεξεργαστών, CPI. Μανόλης Γ.Η. Κατεβαίνης

i Όλες οι σύγχρονες ΚΜΕ είναι πολυπλοκότερες!

Μικροαρχιτεκτονική του LC3

Pipeline: Ένα παράδειγμα από.τη καθημερινή ζωή. 30 min κάθε «φάση»

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

Κάθε functional unit χρησιµοποιείται µια φορά σε κάθε κύκλο: ανάγκη για πολλαπλό hardware = κόστος υλοποίησης!

Application Operating System. Datapath & Control/Memory. Digital Design Circuit Design. Layout

Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy. Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου

Υλοποίηση Mικροεπεξεργαστή MIPS -16

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Κεφάλαιο 6 Βελτίωση Απόδοσης με Διασωλήνωση (Enhancing Performance with Pipelining)

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

ΕΘΝΙKΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Ονοματεπώνυμο: ΑΜ:

Συστήματα σε Ολοκληρωμένα Κυκλώματα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ

Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου. Ενδέκατη (11 η ) δίωρη διάλεξη.

Υ- 01 Αρχιτεκτονική Υπολογιστών Υπερβαθμωτοι επεξεργαστές

ΗΥ425 Αρχιτεκτονική Υπολογιστών. Προχωρημένες Τεχνικές Pipelining. Ιάκωβος Μαυροειδής

ΠΛΕ- 027 Μικροεπεξεργαστές 8ο μάθημα: Παραλληλία επιπέδου εντολής

Pipeline: Ένα παράδειγµα από.τη καθηµερινή ζωή. 30 min κάθε «φάση»

Επεξεργαστής Υλοποίηση ενός κύκλου μηχανής

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Φροντιστήριο: MIPS assembly

Δείγμα Τελικής Εξέτασης στο ΗΜΥ213. Διδάσκοντας: Γιώργος Ζάγγουλος

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Α. Δίνονται οι. (i) στη. πρέπει να. πιο. (ii) $a0. $s0 θα πρέπει να. αποθήκευση. αυξάνει τον. f: sub sll add sub jr. h: addi sw sw.

Οργάνωση Υπολογιστών (Ι)

Άσκηση IF ID EX MEM WB α. 300ps 400ps 350ps 500ps 100ps β. 200ps 150ps 120ps 190ps 140ps

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

CS425 Computer Systems Architecture

Pipelined Datapath, Hazards and Forwarding

Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Τμήματα ΚΜΕ (CPU) Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (Ι)

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική υπολογιστών

Υπερβαθμωτή (superscalar) Οργάνωση Υπολογιστών

Απλός επεξεργαστής (Επανάληψη)

Εργαστήριο 3 ΟΡΓΑΝΩΣΗ ΤΗΣ ΚΜΕ. Εισαγωγή

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών - Μηχανικών Υπολογιστών. Αρχιτεκτονική Υπολογιστών Νεκτάριος Κοζύρης. Multicycle datapath

Παραλληλισμός σε επίπεδο εντολών

Παραλληλισµός Εντολών (Pipelining)

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών ARM και x86

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

(Branch Prediction Mechanisms)

Τελική Εξέταση, Απαντήσεις/Λύσεις

Οργάνωση Υπολογιστών

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή

Περιορισμοί των βαθμωτών αρχιτεκτονικών

Πανεπιστήµιο Θεσσαλίας

Αρχιτεκτονική Υπολογιστών

Transcript:

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2 4ο μάθημα: Διοχέτευση (Pipelining), μέρος 2 ο κίνδυνοι ελέγχου, υλοποίηση, διακοπές, εργασίες πολλών κύκλων Αρης Ευθυμίου Πηγές διαφανειών: συνοδευτικές διαφάνειες αγγλικης εκδοσης του βιβλιου

Το σημερινό μάθημα! Κίνδυνοι ελέγχου (διακλαδώσεις)! Υλοποίηση διοχετευμένου επεξεργαστή, interlock, προώθησης! Διακοπές και διοχέτευση! Επεξεργαστές με πολλαπλούς κύκλους εκτέλεσης! Διακοπές στους παραπάνω επεξεργαστές! Δυναμικός χρονοπρογραμματισμός τεχνική scoreboard 2

Κίνδυνοι Ελέγχου! Εντολές διακλάδωσης αν η διακλάδωση αλλάξει τον PC, taken αλλιώς not taken (untaken) η νέα διεύθυνση λέγεται στόχος της διακλάδωσης (branch target)! η απόφαση μπορεί να παρθεί στο τέλος του κύκλου ID μετά τη σύγκριση (τιμών καταχωρητών) και τον υπολογισμό του branch target! Αν η διακλάδωση είναι taken, η νέα εντολή μπορεί να προσκομισθεί στον επόμενο κύκλο 3

Χειρισμός διακλάδωσης Διευθύνσεις εντολών Α Β απόφαση διακλάδωσης branch target Εντολή μετά τη διακλάδωση διεύθυνση Α+4 Η «σωστή» εντολή στο branch target διεύθυνση B, είτε Α+4 ή στόχος διακλ. 4

Ποινή διακλάδωσης! Η καθυστέρηση που προκαλεί μια διακλάδωση ονομάζεται ποινή διακλάδωσης branch penalty! Ακόμα και ο ένας κύκλος, στο προηγ. παράδειγμα προκαλεί απώλεια επίδοσης 10%- 30% ανάλογα με τη συχνότητα εντολών διακλάδωσης και τη κατεύθυνση που ακολουθούν! Στο παράδειγμα η απόφαση της κατεύθυνσης και ο προορισμός υπολογίζονται ταυτόχρονα στο κύκλο ID όπου και μαθαίνουμε ότι η εντολή είναι διακλάδωση! Σε άλλες αρχιτεκτονικές ή υλοποιήσεις μπορεί να υπολογίζονται σε διαφορετικούς κύκλους! Μπορούμε να παγώσουμε τη διοχέτευση όταν έρχεται μια διακλάδωση, μέχρι να υπολογίσουμε τη κατεύθυνση ή με ελάχιστη παραπάνω πολυπλοκότητα, να υποθέσουμε ότι δεν θα ακολουθηθεί 5

Predict- not- taken άδειασμα διοχέτευσης. Οι λάθος εντολές ακυρώνονται! flush pipe 6

Predict- taken! Υποθέτουμε ότι η διακλάδωση θα ακολουθηθεί! Οταν υπολογιστεί ο προορισμός, αρχίζουμε προσκόμιση εντολών από εκείνη τη διεύθυνση! Στον διοχετευμένο MIPS η απόφαση διακλάδωσης υπολογίζεται ταυτόχρονα με το προορισμό δεν υπάρχει κέρδος από αυτή τη μέθοδο! Σε άλλες υλοποιήσεις/αρχιτεκτονικές μπορεί να υπάρξει όφελος Υπάρχουν αρχιτεκτονικές με 2 παραλλαγές της εντολής διακλάδωσης: μία που ακολουθεί τον προορισμό μέχρι να υπάρξει απόφαση και μία που συνεχίζει τις εντολές μετά τη διακλάδωση. ο compiler αποφασίζει τί είναι πιο πιθανό να συμβεί και χρησιμοποιεί τη κατάλληλη παραλλαγή 7

Delayed branch! Η εντολή που ακολουθεί τη διακλάδωση εκτελείται πάντα ανεξάρτητα με τη κατεύθυνση που θα ακολουθήσει η διακλάδωση η θέση λέγεται branch delay slot Μπορεί (σπάνια) να είναι περισσότερες από μία θέσεις/εντολές 8

Εντολές για delay slot DADD R1, R2, R3 if R2 = 0 then Delay slot DSUB R4, R5, R6 DADD R1, R2, R3 if R1 = 0 then Delay slot DADD R1, R2, R3 if R1 = 0 then Delay slot OR R7, R8, R9 DSUB R4, R5, R6 becomes becomes becomes if R2 = 0 then DADD R1, R2, R3 DSUB R4, R5, R6 DADD R1, R2, R3 if R1 = 0 then DSUB R4, R5, R6 DADD R1, R2, R3 if R1 = 0 then OR R7, R8, R9 DSUB R4, R5, R6 (a) From before (b) From target (c) From fall-through 9

Επίδοση και διακλαδώσεις Speedup = = PipeDepth 1+ PipeStallCycles PipeDepth 1+ BranchFrequency BranchPenalty! Τα BranchFrequency, BranchPenalty έχουν συνιστώσες από διακλαδώσεις και jumps (διακλαδώσεις χωρίς συνθήκη)! και υποπεριπτώσεις αν έχει ακολουθηθεί ή όχι η διακλάδωση 10

Παράδειγμα 11

Υλοποίηση 1. Απλή υλοποίηση μη- διοχετευμένου MIPS 5 κύκλων 2. Διοχέτευση 3. Βελτιώσεις (προώθηση,...) 12

Ενέργειες ανά κύκλο I 1. Instrucon Fetch (IF) IR = Mem[PC] NPC = PC+4 2. Instrucon Decode/Register read (ID) A = Regs[rs] B = Regs[rt] Imm = sgn- ext immediate field of IR 3. Execuon/Effecve address (EX) mem or reg- imm ALU: ALUOut = A+Imm reg- reg ALU: ALUOut = A func B branch: ALUOut = NPC + (Imm << 2); Cond = (A==0) 13

Ενέργειες ανά κύκλο II 4. Memory Access (MEM) PC = NPC; Branch: if (cond) PC = ALUOut mem load: LMD = Mem[ALUOut] mem store: Mem[ALUOut] = B 5. Write- back (WB) reg- reg ALU: Regs[rd] = ALUOut reg- imm ALU: Regs[rt] = ALUOut mem load: Regs[rt] = LMD 14

Υλοποίηση (απλή) Instruction fetch Instruction decode/ register fetch Execute/ address calculation Memory access Writeback M u x 4 Add NPC Zero? Branch taken Cond PC Instruction memory IR Registers 16 32 Signextend A B lmm M u x M u x ALU ALU output Data memory LMD M u x 15

Διοχετευμένος MIPS IF/ID ID/EX EX/MEM MEM/WB 4 ADD M u x IR 6..10 Zero? Branch taken PC Instruction memory IR IR 11..15 MEM/WB.IR Registers M u x M u x ALU Data memory M u x 16 Signextend 32 16

17

Υλοποίηση interlock,! Για την υλοποίηση προώθησης, interlock, κ.α. χρειαζόμαστε διαφορετικά κυκλώματα έλεγχου! Οταν μια εντολή επιτρέπεται να περάσει από το στάδιο ID στο EX λέμε ότι έγινε εκκίνηση (issue) Στο MIPS όλοι οι έλεγχοι για κινδύνους δεδομένων γίνονται στο ID και αν υπάρχει κίνδυνος η εντολή παγώνει στο στάδιο ID Οι έλεγχοι για προώθηση μπορούν να γίνουν στο στάδιο ID! Προχωρημένα στάδια δίνουν πληροφορίες σε προηγούμενα στάδια για ανίχνευση εξαρτήσεων ειδικά σήματα στους καταχωρητές για stall! Οι εντολές σε προχωρημένα στάδια δεν εξαρτώνται από εντολές σε προηγούμενα στάδια γενικά ισχύει σε ένα πρόγραμμα, αλλά μπορεί να υπάρχουν σε επεξεργαστές με δομικούς κινδύνους 18

Υλοποίηση λογικής ελέγχου! Συγκρίνουμε τους καταχωρητές πηγής (rs, rt) στο στάδιο ID με τους καταχωρητές προορισμού (rd) των επόμενων σταδίων εκτός από το WB, γιατί οι τιμές μεταφέρονται αυτόματα μέσω του αρχείου καταχωρητών Συγκρίνουμε «διευθύνσεις»/αριθμούς καταχωρητών! Αν κάποιοι καταχωρητές προρισμού είναι ίδιοι με οποιονδήποτε καταχωρητή πηγής, καθυστερούμε την εντολή στο στάδιο ID και την επόμενη στο IF και εισάγουμε «φούσκες»: εντολές που δεν κάνουν τίποτα στο επόμενο στάδιο EX! Οταν η εντολή που παράγει το αποτέλεσμα φτάσει στο στάδιο WB, οι συγκρίσεις μας θα βγάλουν λογικό 0 και θα συνεχίσουμε την εκτέλεση 19

Πάγωμα - υλοποίηση load enable 4 ADD M u x IF/ID IR 6..10 stall ID/EX EX/MEM MEM/WB valid Zero? Branch taken PC Instruction memory IR IR 11..15 MEM/WB.IR Registers M u x M u x ALU Data memory M u x 16 Signextend 32 20

Λογική ελέγχου 2! Δεν γράφουν όλες οι εντολές αποτελέσματα σε καταχωρητή π.χ. sw, διακλαδώσεις (εκτός από jal) οι ex/mem_destreg περιέχουν σκουπίδια!! Ο καταχωρητής $zero (R0) αγνοεί εγγραφές! add $zero, $s1, $s2 # nop!! add $t0, $zero, $zero # clear t0!! Η εντολή στο στάδιο ID, δεν έχει πάντα 2 καταχωρητές πηγής πχ lw, sw, addi,! Πρέπει να πιάνουμε αυτές τις περιπτώσεις η λογική ελέγχου πρέπει να κοιτάει και την εντολή σε κάθε στάδιο ή, καλύτερα, χρειάζεται ένα επιπλέον bit που δηλώνει ότι μια εντολή πράγματι γράφει αποτέλεσμα 21

Υλοποίηση προώθησης 22

Λογική ελέγχου προώθησης! Παρόμοια με τη λογική ελέγχου καθυστέρησης! Οι έξοδοι οδηγούν τους πολυπλέκτες προώθησης πριν την ALU στο παράδειγμά μας! Συγκρίσεις καταχωρητών πηγής και προορισμού προσοχή σε λεπτομέρειες: $zero,! Διπλός κίνδυνος. Παράδειγμα: add $1,$1,$2 add $1,$1,$3 add $1,$1,$4! Πρέπει να πάρουμε την πιο πρόσφατη τιμή 23

Ακύρωση εντολής μετά από άλμα Για να ακυρώσουμε μια εντολή που προσκομίζεται σ αυτόν το κύκλο, στο στάδιο IF, τοποθετούμε ένα πολυπλέκτη πριν τον καταχωρητή εντολής squash nop 1 M U X 0 24

Γρήγορες διακλαδώσεις ADD ID/EX IF/ID EX/MEM MEM/WB 4 ADD M u x Zero? IR 6..10 PC IR 11..15 Instruction memory IR MEM/WB.IR Registers M u x ALU Data memory M u x 16 32 Signextend 25

Excepons! Συνώνυμα: Interrupt, fault, excepon! Παραδείγματα Αίτηση διακοπής από περιφερειακό Κλήση λειτουργικού συστήματος Breakpoints, κ.α. βοηθήματα για debugging Υπερχείλιση αριθμών ή λάθη κινητής υποδιαστολής Προβλήματα προσπέλασης μνήμης: page fault, misaligned access Προβλήματα υλικού, διακοπή ρεύματος,... 26

Κατηγορίες! Σύγχρονες- ασύγχρονες! User- requested coerced (κλήσεις συστήματος)! User maskable, μπορεί να αγνοηθεί ή όχι! Within or between instrucons μπορεί να ολοκληρωθεί η εκτέλεση ή όχι! Resume terminang 27

Stopping, restarng execuon! Worst case excepon within instrucon restartable! Example: page fault occurs in MEM stage must be restartable and the fault is fixed by OS intervenon! Handling overview: Safely shut down pipe Save state Restart: Set PC with the address of the instrucon at which to restart 28

Stopping, restarng execuon 2! Πρόσθεσε «εντολή» trap στη διοχέτευση στο επόμενο κύκλο/στάδιο IF άλμα σε κώδικα του Λ.Σ.! Μέχρι να εκτελεστεί η trap, απαγόρευσε εγγραφές για την εντολή που προκάλεσε τη διακοπή και όλες τις επόμενες αλλά οι προηγούμενες πρέπει να ολοκληρωθούν! Η ρουτίνα εξυπηρέτησης διακοπών του Λ.Σ. αποθηκεύει το PC (και άλλους καταχωρητές αν χρειάζεται)! Επιστροφή με ειδική εντολή επαναφέρει το «σωστό» PC και σε κατάσταση χρήστη 29

Precise excepons! Αν η διοχέτευση μπορεί να σταματήσει έτσι ώστε οι εντολές πρίν από αυτή που προκάλεσε τη διακοπή να έχουν ολοκληρωθεί και οι επόμενες να μπορούν να ξαναεκτελεστούν από την αρχή, η διοχέτευση έχει precise excepons! Απαραίτητο σε πολλά συστήματα γιατί διευκολύνει εικονική μνήμη με demand paging και υλοποίηση προτύπου IEEE για αριθμητική κινητής υποδιαστολής 30

Διακοπές στο MIPS 31

Δυσκολίες...! Αν η LD προκαλέσει (data) page fault και η DADD αριθμητική διακοπή, θα συμβούν ταυτόχρονα η διακοπή της παλιότερης εντολής πρέπει να εξυπηρετηθεί πρώτα! Αν η DADD προκαλέσει instrucon page fault, αυτή η διακοπή θα συμβεί πρίν τη διακοπή της LD οι διακοπές μπορεί να συμβούν εκτός σειράς εκτέλεσης μέχρι πότε πρέπει να περιμένουμε για να χειριστούμε τις διακοπές με τη σωστή σειρά; 32

Χειρισμός στον MIPS! Κάθε διακοπή «σημειώνεται» στην εντολή που συμβαίνει και την ακολουθεί στη διοχέτευση! Οταν η εντολή φτάσει το στάδιο WB, ελέγχεται το «σημάδι» αν έχει γίνει διακοπή εισάγεται εντολή trap στο στάδιο IF! Οι εγγραφές αυτής και των επόμενων εντολών απαγορεύονται π.χ. αν η εντολή ήταν Store θα είχε ήδη γράψει στη μνήμη! 33

Προβληματικές εντολές! Οι εντολές του MIPS έχουν χαρακτηριστικά που διεκολύνουν την υλοποίηση precise excepons ένα αποτέλεσμα ανά εντολή το αποτέλεσμα γράφεται αφού είναι γνωστό αν υπάρχουν διακοπές (τέλος σταδίου MEM)! Συχνά υπάρχουν εντολές που προκαλούν προβλήματα auto- increment addressing: δύο αποτελέσματα condion codes (implicitly set) 34

Εργασίες πολλαπλών κύκλων! Συχνά οι επεξεργαστές έχουν περίπλοκες εντολές πολλαπλασιασμός, διαίρεση, πράξεις με αριθμούς κινητής υποδιαστολής! Δεν μπορούν να γίνουν σε 1-2 κύκλους θα έριχναν το ρυθμό ρολογιού! Δεν μπορούμε να «τραβήξουμε» όλες τις εντολές ώστε να παίρνουν τον μέγιστο αριθμό κύκλων Υπερβολικά πολλά στάδια για έλεγχο προώθησης ή και πάγωμα διοχέτευσης. 35

Mulcycle operaons EX Integer unit loads, stores, integer ALU, branches EX FP/integer multiply IF ID MEM WB EX Ξεχωριστά αρχεία καταχωρητών για ακέραιους και κινητής υποδιαστολής FP adder EX FP/integer divider Εκκίνηση αν η μονάδα υπολογισμού είναι ελεύθερη, ακόμα και αν η προηγούμενη εντολή δεν έχει τελειώσει! Πολλαπλές μονάδες υπολογισμού (funconal units)! Χρειάζονται πολλαπλούς κύκλους στο στάδιο εκτέλεσης! Δεν είναι (πάντα ή πλήρως) διοχετευμένες 36

Μονάδες εκτέλεσης! Καθυστέρηση/Latency: αριθμός κύκλων που απαιτούνται μεταξύ της εντολής που παράγει ένα αποτέλεσμα και αυτής που το χρησιμοποιεί Integer ALU latency = 0! Η επόμενη εντολή μπορεί να χρησιμοποιήσει το αποτέλεσμα της προηγούμενης (με προώθηση) Γενικά είναι: βάθος διοχέτευσης (την μονάδας) - 1 Υποθέτουμε ότι η εντολή «καταναλωτής» χρειάζεται το αποτέλεσμα στο στάδιο EX. Αν το χρειάζεται στο MEM (εντολή store), η καθυστέρηση είναι 1 κύκλο μικρότερη Αν το χρειάζεται στο ID (σύγκριση για διακλάδωση) η καθυστέρηση είναι 1 κύκλος μεγαλύτερη 37

Μονάδες εκτέλεσης! Iniaon/repeat interval (μεσοδιάστημα έναρξης): αριθμός κύκλων για εκκίνηση (issue) εντολών του ίδιου τύπου (εννοείται ανεξάρτητη εντολή) Integer unit: iniaon interval = 1 - σε κάθε κύκλο μπορούμε να ξεκινήσουμε μια νέα εντολή pipelined 38

Υλοποίηση Integer unit EX M1 FP/integer multiply M2 M3 M4 M5 M6 M7 IF ID MEM WB FP adder A1 A2 A3 A4 FP/integer divider DIV 39