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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Pipelined Datapath, Hazards and Forwarding

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

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

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

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

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

Κεντρική Μονάδα Επεξεργασίας. Επανάληψη: Απόδοση ΚΜΕ. ΚΜΕ ενός κύκλου (single-cycle) Παραλληλισμός σε επίπεδο εντολών. Υπολογιστικό σύστημα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Απόδοση ΚΜΕ. (Μέτρηση και τεχνικές βελτίωσης απόδοσης)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

i Throughput: Ο ρυθμός ολοκλήρωσης έργου σε συγκεκριμένο χρόνο

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

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

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

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

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

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

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

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

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

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

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

(Branch Prediction Mechanisms)

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

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

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

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

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

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

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

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

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

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

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

CS425 Computer Systems Architecture

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

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

Κεφάλαιο 7 Ιεραρχία Μνήμης (Memory Hierarchy)

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

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

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

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

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

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

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

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

Εντολές Διακλάδωσης. #bubbles ~= pipeline depth X loop length. Next fetch started. Fetch. I-cache. Fetch Buffer. Decode. Issue Buffer.

Transcript:

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

Διασωλήνωση (Pipelining) Διασωληνώση: επικαλυπτόμενη εκτέλεση πολλαπλών εντολών σε ένα κύκλο του ρολογιού, όπως σε μια γραμμή συναρμολόγησης Μέθοδος χωρίς διασωλήνωση για πλύσιμο ρούχων. Το κάθε φορτίο απαιτεί 2 ώρες, άρα για 4 φορτία ο συνολικός χρόνος εκτέλεσης είναι 4 x 2 = 8 ώρες Διασωλήνωση 4 ων σταδίων Στάδιο διασωλήνωσης = 1 βήμα της εργασίας Μέθοδος με διασωλήνωση. Το κάθε φορτίο εξακολουθεί να απαιτεί 2 ώρες, αλλά ο συνολικός χρόνος εκτέλεσης μειώνεται σε: Συνολικός χρόνος = χρόνος για 1 φορτίο + (Αρ. φορτίων 1) xχρόνο σταδίου = 2 + 3x0.5 = 3.5 ώρες 2

Διασωλήνωση (συν.) Μια εργασία (εντολή) χωρίζεται σε βήματα, τα οποία ονομάζονται στάδια της διασωλήνωσης Το κάθε στάδιο απαιτεί τον ίδιο χρόνο εκτέλεσης Τα διάφορα στάδια μπορούν να διασωλήνωθούν εάν τα στάδια που εκτελούνται ταυτόχρονα δεν χρειάζονται τις ίδιες λειτουργικές μονάδες του μικροεπεξεργαστή Η χρήση διασωλήνωσης βελτιώνει την ικανότητα διεκπεραίωσης (throughput), όχι τον χρόνο εκτέλεσης για μια εργασία Όταν εκτελείται ένας μεγάλος αριθμός εργασιών, δημιουργείται επιτάχυνση (speedup) λόγω της διασωλήνωσης (η επιτάχυνση δεν μπορεί να είναι μεγαλύτερη από τα στάδια της διασωλήνωσης) Για το προηγούμενο παράδειγμα, speedup = (4x2) / (2+3x0.5) = 2.29 Θεωρήστε ένα φορτίο με 100 εργασίες, speedup = (100x2) / (2+99x0.5) = 3.88 3

Διασωλήνωση για τον MIPS Ισχύουν οι ίδιοι γενικοί κανόνες. Υπάρχουν 5 βασικά βήματα: 1. Προσκόμιση Εντολής από Μνήμη (Instruction Fetch) 2. Ανάγνωση Καταχωρητών και Αποκωδικοποίηση Εντολής () 3. Εκτέλεση Αριθμητικής Εντολής ή Υπολογισμός Διεύθυνσης (ALU) 4. Προσπέλαση Μνήμης για Δεδομένα (Data access) 5. Ενημέρωση Καταχωρητή Γραφής () Επομένως, η διασωλήνωση έχει 5 στάδια Δεδομένου ενός μεγάλου φορτίου εργασίας (workload) ο επεξεργαστής με διασωλήνωση θα είναι περίπου 5 φορές γρηγορότερος από αυτόν χωρίς διασωλήνωση 4

Παράδειγμα Διασωλήνωσης μικροεπεξεργαστή ΜΙPS ενός κύκλου Θυμηθείτε τον επεξεργαστή ενός κύκλου και τις 8 εντολές που εκτελεί: lw,sw,add,sub,and,or,slt,beq Θεωρήστε τις πιο κάτω καθυστερήσεις ανά μονάδα PC 4 Add Write Instruction [25:21] Read Read register 1 address Read Instruction [20:16] data 1 Read 100ps ALUSrc register 2 Zero Instruction 0 [31:0] ALU M Read ALU Write 0 data 2 result Instruction ux Instruction [15:11] register M memory ux 1 Write 1 data isters Dst 200ps Instruction [15:0] 16 Sign 32 extend Shift left 2 ALU control Add ALU result 200ps PCSrc 0 M ux 1 MemWrite Address Write data Data memory MemRead Read data 200ps Memto 1 M ux 0 Συγκρίνετε τον μέσο χρόνο εκτέλεσης ανά εντολή για ένα επεξεργαστή με και χωρίς διασωλήνωση Instruction [5:0] ALUOp 5

PCSrc 0 Add M ux 4 Add ALU result 1 Write Shift left 2 PC Read address Instruction [31:0] Instruction memory Instruction [25:21] Instruction [20:16] 0 M ux Instruction [15:11] 1 Dst Read register 1 Read register 2 Write register Write data Read data 1 Read data 2 isters ALUSrc 0 M ux 1 ALU Zero ALU result MemWrite Address Write data Read data Data memory Memto 1 M ux 0 Instruction [15:0] 16 Sign 32 extend ALU control MemRead Instruction [5:0] ALUOp 6

Παράδειγμα Διασωλήνωσης μικροεπεξεργαστή ΜΙPS ενός κύκλου (συν.) Η περίοδος του ρολογιού για την υλοποίηση ενός κύκλου ορίζεται από την πιο χρονοβόρα εντολή (800 ps) Κατηγορία Εντολής Instruction Fetch ister read ALU operation Data access ister write Συνολικός Χρόνος Load word (lw) 200ps 100ps 200ps 200ps 100ps 800ps Store word (sw) 200ps 100ps 200ps 200ps -- 700ps R-format (add, sub, or, and, slt) 200ps 100ps 200ps -- 100ps 600ps Branch (beq) 200ps 100ps 200ps -- -- 500ps Ποιοςείναιοχρόνοςεκτέλεσηςγιατοκάθεστάδιοτης διασωλήνωσης; Ο χρόνος εκτέλεσης για 1 εντολή στον επεξεργαστή με διασωλήνωση; Θεωρήστε ένα φορτίο με 3 εντολές lw 7

Παράδειγμα Διασωλήνωσης μικροεπεξεργαστή ΜΙPS ενός κύκλου (συν.) Program execution Time order (in instructions) lw $1, 100($0) lw $2, 200($0) Instruction fetch 200 400 600 800 1000 1200 1400 1600 1800 ALU 800 ps Data access Instruction fetch ALU Data access Συνολικός χρόνος εκτέλεσης = 800ps x3=2400ps lw $3, 300($0) 800 ps Instruction fetch 800 ps Program execution Time order (in instructions) lw $1, 100($0) lw $2, 200($0) Instruction fetch 200 ps 200 400 600 800 1000 1200 1400 Instruction fetch ALU Data access ALU Data access Συνολικός χρόνος εκτέλεσης = 1000ps + (200 x 2ps) = 1400ps lw $3, 300($0) 200 ps Instruction fetch ALU Data access 200 ps 200 ps 200 ps 200 ps 200 ps 8

Παράδειγμα διασωλήνωσης μικροεπεξεργαστή ΜΙPS ενός κύκλου (συν.) Χρόνος μεταξύ εντολών pipelined = Χρόνος μεταξύ εντολών nonpipelined # σταδίων διασωλήνωσης Χρόνος μεταξύ εντολών pipelined = 800/5 = 160, άρα δίνει πενταπλή επιτάχυνση Στην πράξη, η διασωλήνωση επιφέρει επιβάρυνση Ο χρόνος ανά εντολή στον επεξεργαστή με διασωλήνωση είναι (i) πάντα μεγαλύτερος από τον μικρότερο δυνατό χρόνο για ένα κύκλο και (ii) η επιτάχυνση είναι πάντα λιγότερη από τον αριθμό των σταδίων της διασωλήνωσης Γιααυτότοπαράδειγμα, speedup = 2400/1400 = 1.7 < 5 Για ένα φορτίο με 1,000,003 εντολές, speedup = 800,002,400/200,001,400 ~ 4 < 5 9

Κίνδυνοι Διασωλήνωσης Υπάρχουν 3 κατηγορίες κινδύνων: Δομικοί (Structural): μια εντολή δεν μπορεί να εκτελεστεί στον προγραμματιζόμενο κύκλο διότι ο επεξεργαστής δεν υποστηρίζει το συνδυασμό των εντολών που πρέπει να εκτελεστούν στον ίδιο κύκλο (Τι θα συμβεί αν ο MIPS ενός κύκλου έχει μόνο 1 μονάδα μνήμης αντί για 2;). Εύκολη η λύση για τον MIPS Δεδομένων (Data): μια εντολή δεν μπορεί να εκτελεστεί στον προγραμματιζόμενο κύκλο διότι τα απαιτούμενα δεδομένα δεν είναι ακόμη διαθέσιμα Ελέγχου (Control): μια εντολή δεν μπορεί να εκτελεστεί στον προγραμματιζόμενο κύκλο διότι η εντολή που προσκομίστηκε και μπήκε στο σωλήνα δεν είναι αυτή που θα έπρεπε να είχε προσκομιστεί (δηλ., η ροή των εντολών δεν είναι αυτή που αναμένεται) 10

Κίνδυνοι Δεδομένων (Data Hazards) Απορρέουν από την εξάρτηση μιας εντολής στα αποτελέσματα προηγούμενων εντολών, οι οποίες είναι ακόμη μέσα στο σωλήνα Θεωρήστε το πιο κάτω παράδειγμα: add $s0, $t0, $t1 sub $t2, $s0, $t3 Διακρίνετε κάποιο κίνδυνο δεδομένων, δεδομένου ότι η εντολή sub αρχίζει ένα κύκλο μετά την εντολή add; Αναπαράσταση διασωλήνωσης 5 σταδίων: Memory ister ALU Memory ister (Ανάγνωση) (Ανάγνωση) (Τίποτα) (Γραφή) 11

Κίνδυνοι Δεδομένων (συν.) Κίνδυνος Δεδομένων! Stall σωλήνα (ή bubble): χρησιμοποιείται για αποφυγή του κινδύνου Θεωρεί ότι κατά τη διάρκεια ενός κύκλου μπορεί να γράψει και να διαβάσει από το ΑΚ 12

Κίνδυνοι Δεδομένων (συν.) Υπάρχει εναλλακτικός τρόπος επίλυσης του προηγούμενου κινδύνου, ονομάζεται forwarding ή bypassing. Forwarding (Bypassing): αντί να περιμένουμε για τα απαραίτητα δεδομένα να φτάσουν από τους κανονικούς καταχωρητές (προσβάσιμους από τον προγραμματιστή, μέσω της καθυστέρησης του stall), τα ανακτούμε από εσωτερικούς buffers (καταχωρητές) Επιτρεπτόμόνοαντοστάδιοπροορισμούσυμβαίνεισεμεταγενέστερο χρόνο από το στάδιο προέλευσης. Απαιτεί τροποποιήσεις στο σχεδιασμό Forwarding path 13

Κίνδυνοι Δεδομένων (συν.) Για μερικές περιπτώσεις, απαιτείται stall και forward: 14

Κίνδυνοι Ελέγχου (Control Hazards) Απορρέουν από εντολές branch, αφού δεν είναι δυνατόν να γνωρίζει ο μικροεπεξεργαστής πια θα είναι η επόμενη εντολή μέχρι τον υπολογισμό της συνθήκης της διακλάδωσης 2 τρόποι επίλυσης: Stall μέχρι τον υπολογισμό της συνθήκης της διακλάδωσης Πρόβλεψη (predict) της επόμενης εντολής και εκτέλεσης της Stall (θεωρεί ότι μπορούν να ελεγχτούν οι καταχωρητές στο 2 ο στάδιο, μαζί με τον υπολογισμό της διεύθυνσης διακλάδωσης και την ενημέρωσης του PC) 15

Κίνδυνοι Ελέγχου (συν.) Πρόβλεψη: συνθήκη διακλάδωσης δεν ισχύει Πρόβλεψη: συνθήκη διακλάδωσης ισχύει Υπάρχουν πολλοί και πολύπλοκοι τρόποι πρόβλεψης διακλάδωσης. Σύγχρονες τεχνικές μπορούν να προβλέψουν σωστά γύρω στο 90% 16

Διασωλήνωση Διευκολύνεται όταν: Όλες οι εντολές έχουν το ίδιο μήκος Υπάρχουν λίγες διατάξεις εντολών Οι τελεστές μνήμης εμφανίζονται μόνο στις εντολές load και store Είναι πιο δύσκολη όταν υπάρχουν: Δομικοί κίνδυνοι: όταν υπάρχει μόνο μια μονάδα μνήμης Κίνδυνοι Ελέγχου: εντολές διακλαδώσεως Κίνδυνοι Δεδομένων: μια εντολή εξαρτάται από προηγούμενες εντολές Θα υλοποιήσουμε ένα απλό τρόπο διασωλήνωσης και θα εξετάσουμε τα πιο πάνω θέματα Θα αναφερθούμε επίσης σε σύγχρονους μικροεπεξεργαστές και τις δυσκολίες που παρουσιάζουν: Χειρισμό εξαιρέσεων (exceptions) Βελτίωση απόδοσης με εκτέλεση out-of-order, κτλ. 17

Βασική Ιδέα Υλοποίησης Διασωλήνωσης IF: Instruction fetch ID: Instruction decode/ register file read EX: Execute/ address calculation MEM: Memory access WB: Write back 4 Ad Shift left 2 ADD Add result PC Address Instruction Instruction memory Read register 1 Read register 2 Write register Write data isters Read data1 Read data2 Zero ALU ALU result Address Read data Data Memory Write data 16 Sign 32 extend 18

Πόσες εντολές μπορούν να εκτελούνται ταυτόχρονα; Γεμάτος σωλήνας Δεν μπορούν να εκτελεστούν περισσότερες από 5 εντολές ταυτόχρονα (κατά τη διάρκεια 1 κύκλου) με διασωλήνωση 5 σταδίων 19

Βασική Ιδέα Υλοποίησης Διασωλήνωσης (συν.) IF: Instruction fetch ID: Instruction decode/ register file read EX: Execute/ address calculation MEM: Memory access WB: Write back PC 4 Address Ad Instruction Instruction memory Read register 1 Read register 2 Write register Write data isters Read data1 Read data2 Shift left 2 Μπορεί να οδηγήσει σε κίνδυνο ελέγχου ADD Add result Zero ALU ALU result Address Read data Data Memory Write data Ροή εντολών από αριστερά σε δεξιά, εκτός από: 1. Στάδιο γραφής 2. Ενημέρωση PC 16 Sign 32 extend Αφού θέλουμε διασωλήνωση 5-σταδίων διάσπαση διαδρόμου δεδομένων σε 5 στάδια/μέρη Τι πρέπει να προσθέσουμε για να διασπάσουμε τον διάδρομο δεδομένων σε στάδια; Μπορεί να οδηγήσει σε κίνδυνο δεδομένων 20

Διαχωρισμός του Διαδρόμου Δεδομένων σε Στάδια Εισαγωγή καινούριων καταχωρητών (δεν είναι προσβάσιμοι από τον προγραμματιστή) για να κρατούν τα δεδομένα, έτσι ώστε κομμάτια του διαδρόμου δεδομένων μπορούν να μοιραστούν κατά τη διάρκεια της εκτέλεσης των εντολών IF/ID ID/EX EX/MEM MEM/WB Καινούριοι καταχωρητές 21

Παράδειγμα εντολής Load (lw) 1. Προσκόμιση Εντολής: Ανάγνωση εντολής από μνήμη με τη διεύθυνση του PC και αποθήκευσή της στον καταχωρητή IF/ID. Αύξηση του PC κατά 4 και αποθήκευση στον PC και στον IF/ID (για beq) 2. Αποκωδικοποίηση Εντολής και ανάγνωση αρχείου καταχωρητών (ΑΚ): Ανάγνωση του ΑΚ με τα κατάλληλα πεδία εντολής από τον IF/ID για Read register 1/2 και αποθήκευση του στον ID/EX. Sing-extent και αποθήκευση του offset στον ID/EX, μαζί με το PC+4 22

Παράδειγμα εντολής Load (lw) (συν.) 3. Υπολογισμός διεύθυνσης: Η ALU παίρνει τις απαραίτητες τιμές από τον ID/EX (Read register 1 και 32-bit sign-extended offset) και αποθηκεύει το αποτέλεσμα στον EX/MEM 4. Προσπέλαση Μνήμης: Ανάγνωση από την μνήμη με την διεύθυνση που είναι το αποτέλεσμα που υπολογίστηκε από την ALU στο προηγούμενο στάδιο, και αποθήκευση των δεδομένων στον MEM/WB 23

Παράδειγμα εντολής Load (lw) (συν.) 5. Γραφή στο ΑΚ: Τα δεδομένα από την μνήμη που αποθηκεύτηκαν στον MEM/WB στο προηγούμενο στάδιο γράφονται στο ΑΚ 24

1η ΒασικήΙδέα Κάθε φορά που προχωρεί από ένα στάδιο του σωλήνα στο επόμενο, αποθηκεύεται στον αντίστοιχο εσωτερικό καταχωρητή οποιαδήποτε πληροφορία μπορεί να χρειαστεί από οποιοδήποτε μεταγενέστερο στάδιο 25

Παράδειγμα εντολής Store (sw) Στάδια 1, 2 ίδια με lw 1. Προσκόμιση Εντολής: Ανάγνωση εντολής από μνήμη με τη διεύθυνση του PC και αποθήκευσή της στον καταχωρητή IF/ID. Αύξηση του PC κατά 4 και αποθήκευση στον PC και στον IF/ID (για beq) 2. Αποκωδικοποίηση Εντολής και ανάγνωση αρχείου καταχωρητών (ΑΚ): Ανάγνωση του ΑΚ με τα κατάλληλα πεδία εντολής από τον IF/ID για Read register 1/2 και αποθήκευση του στον ID/EX. Sing-extent και αποθήκευση του offset στον ID/EX, μαζί με το PC+4 26

Παράδειγμα εντολής Store (sw) (συν.) 3. Υπολογισμός διεύθυνσης: Η ALU παίρνει τις απαραίτητες τιμές από τον ID/EX (Read register 1 και 32-bit signextended offset) και αποθηκεύει το αποτέλεσμα στον EX/MEM. ΗτιμήτουRead register 2 μεταφέρεται από τον ID/EX στον EX/MEM 4. Προσπέλαση Μνήμης: Πρόσβαση στη μνήμη με την διεύθυνση που είναι το αποτέλεσμα που υπολογίστηκε από την ALU στο προηγούμενο στάδιο και αποθήκευση δεδομένων Πουθαβρούμεταδεδομέναπου θα αποθηκευτούν στη μνήμη; 27

Παράδειγμα εντολής Store (sw) (συν.) 5. Γραφή στο ΑΚ: Καμία απαραίτητη ενέργεια (παρόλα αυτά η εκτέλεση του είναι απαραίτητη!) 28

2η ΒασικήΙδέα Κάθε λογικό στοιχείο (λειτουργική μονάδα) στον διάδρομο δεδομένων (Μνήμες Εντολών και Δεδομένων, ALU, θήρες ανάγνωσης ΑΚ και θήρες γραφής ΑΚ) μπορούν να χρησιμοποιηθούν μόνο σε ένα στάδιο της διασωλήνωσης. Διαφορετικά, μπορεί να δημιουργηθούν δομικοί κίνδυνοι. 29

Πρόβλημα Μπορείτε να διακρίνεται κάποιο πρόβλημα, ακόμα και στην απουσία εξαρτώμενων δεδομένων; Ποιες εντολές μπορούν να δημιουργήσουν το πρόβλημα; IF/ID ID/EX EX/MEM MEM/WB 30

Διόρθωση Διαδρόμου Δεδομένων Για την εντολή lw, πρέπει ο αριθμός του καταχωρητή γραφής να μεταφέρεται μέσω των καινούριων καταχωρητών στο τελευταίο στάδιο της εντολής (5 ο ) 31

Γραφική Αναπαράσταση Διασωλήνωσης Υπάρχουν 2 βασικές γραφικές αναπαραστάσεις: Διάγραμμα Πολλαπλών κύκλων: δίνει τα στάδια της διασωλήνωσης που εκτελούνται για πολλαπλούς κύκλους του ρολογιού (για ένα σύνολο εντολών) Διάγραμμα Ενός κύκλου: δίνει τις λεπτομέρειες στον διάδρομο δεδομένων κατά την διάρκεια ενός κύκλου το ρολογιού Τα διαγράμματα πολλαπλών κύκλων μπορούν να βοηθήσουν για διευκρίνιση των πιο κάτω: Πόσοι κύκλοι απαιτούνται για να εκτελεστεί ένα σύνολο εντολών Τι κάνει η ALU κατά τη διάρκεια κάποιου κύκλου Πως θα σχεδιαστεί ο διάδρομος δεδομένων 32

Διάγραμμα Πολλαπλών Κύκλων Θεωρήστε: lw $10, 20($1) sub $11, $2, $3 add $12, $3, $4 lw $12, 24($1) add $14, $5, $6 Παρατηρήστε την προσθήκη των εσωτερικών καταχωρητών μεταξύ των διαφόρων σταδίων 33

Η παραδοσιακή αναπαράσταση Το προηγούμενο διάγραμμα περιείχε περισσότερη πληροφορία 34

Διάγραμμα Ενός Κύκλου Δείχνει την κατάσταση ολόκληρου του διαδρόμου δεδομένων κατά τη διάρκεια ενός κύκλου του ρολογιού, για όλες τις εντολές που εκτελούνται στο δεδομένο κύκλο Βασικά, αυτό είναι μια κάθετη φέτα του διαγράμματος πολλαπλών κύκλων, με περισσότερη λεπτομέρεια 35

Μονάδα Ελέγχου με Διασωλήνωση Πρώτα εξετάζουμε την απλή, «ιδανική», κατάσταση Ξεχωρίζουμε τα σήματα ελέγχου στο διάδρομο δεδομένων (πολλά είναι παρόμοια με αυτά της υλοποίησης χωρίς διασωλήνωση) PC, IF/ID, ID/EX, EX/MEM, MEM/WB πρέπει να μπορούν να ενημερωθούν σε κάθε κύκλο (στάδιο διασωλήνωσης), έτσι δεν χρειάζονται σήματα ελέγχου για γραφή 36

Μονάδα Ελέγχου με Διασωλήνωση (συν.) Υπάρχουν 5 στάδια. Τι πρέπει να ελεγχτεί σε κάθε στάδιο; Προσκόμιση Εντολής και Αύξηση PC (PCSrc) Αποκωδικοποίηση Εντολής / Ανάγνωση Καταχωρητών Εκτέλεση (ALUOp, ALUSrc, Zero, Dst) Στάδιο Μνήμης (Branch, MemRead, MemWrite) Γραφή στο ΑΚ (Memto, Write) Πως θα χειριζόμαστε το θέμα του ελέγχου σε ένα εργοστάσιο κατασκευής αυτοκινήτων; Με ένα πολυδάπανο κέντρο ελέγχου που θα λέει στον καθένα τι πρέπει να κάνει και πότε; Ή ένα αυτοματοποιημένο σύστημα που έχει στη βάση του ένα διάγραμμα πεπερασμένων καταστάσεων; 37

Μονάδα Ελέγχου με Διασωλήνωση (συν.) Σήματα Ελέγχου για Εκτέλεση/Υπολογισμό Διέυθυνσης (Στάδιο 3) ALU ALU ALU Σήματα Ελέγχου για Προσπέλαση Μνήμης (Στάδιο 4) Mem Mem Σήματα Ελέγχου για Ενημερωση ΑΚ (Στάδιο 5) Κατηγορία Εντολής Dst Op1 Op0 Src Branch Read Write write R-format 1 1 0 0 0 0 0 1 0 lw 0 0 0 1 0 1 0 1 1 sw X 0 0 1 0 0 1 0 X beq X 0 1 0 1 0 0 0 X Τα σήματα ελέγχου μεταφέρονται από στάδιο σε στάδιο, όπως τα υπόλοιπα απαραίτητα δεδομένα WB Mem to Instruction Control M WB EX M WB IF/ID ID/EX EX/MEM MEM/WB 38

Διάδρομος Δεδομένων με Μονάδα Ελέγχου 39

Εξάρτηση (Dependency) Κίνδυνοι Δεδομένων Μπορεί να δημιουργηθεί πρόβλημα όταν μια εντολή ξεκινήσει να εκτελείται πριν την εκπλήρωση κάποιας άλλης Οι εξαρτήσεις που «προχωρούν πίσω στο χρόνο» είναι βασικά κίνδυνοι δεδομένων Οι 4 τελευταίες εντολές εξαρτώνται από το αποτέλεσμα του καταχωρητή $2 από την 1 η εντολή Time (in clock cycles) Value of CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9 register $2: 10 10 10 10 10/ 20 20 20 20 20 Program execution order (in instructions) sub $2, $1, $3 IM DM Θεωρήστε ότι ο $2 είχε την τιμή 10 πριν την εντολή sub και -20 μετά την sub and $12, $2, $5 or $13, $6, $2 IM IM DM DM Data hazard Data hazard Ηεξάρτησημεταξύτων sub και add μπορεί να αφαιρεθεί αν το ΑΚ σχεδιαστεί ώστε να επιτρέπει ανάγνωση και γραφή σε 1 κύκλο add $14, $2, $2 sw $15, 100($2) IM IM DM DM Data hazard 40

Λύση βάση Λογισμικού (Software Solution) Ο μεταγλωττιστής αποτρέπει τη δημιουργία κινδύνων Που εισάγουμε nops (μια εντολή που δεν κάνει καμία πράξη που να αλλάζει την κατάσταση του επεξεργαστή); sub $2, $1, $3 and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) 41

Λύση βάση Λογισμικού (Software Solution) Ο μεταγλωττιστής αποτρέπει τη δημιουργία κινδύνων Που εισάγουμε nops (μια εντολή που δεν κάνει καμία πράξη που να αλλάζει την κατάσταση του επεξεργαστή); sub $2, $1, $3 nops nops and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) Πρόβλημα: Αυξάνει τον χρόνο εκτέλεσης κατά 2 κύκλους! 42

Προώθηση (Forwarding) Χρήση προσωρινών αποτελεσμάτων, χωρίς να περιμένει να γραφτούν στοαρχείοκαταχωρητών(ακ): Προώθηση στην ALU (ALU forwarding) Προώθηση στο ΑΚ για χειρισμό read/write στον ίδιο καταχωρητή (ister File forwarding) Time (in clock cycles) CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9 Value of register $2: 10 10 10 10 10/ 20 20 20 20 20 Value of EX/MEM: X X X 20 X X X X X Value of MEM/W B: X X X X 20 X X X X Program execution order (in instructions) sub $2, $1, $3 IM DM and $12, $2, $5 IM DM Προώθηση στην ALU από EX/MEM or $13, $6, $2 IM DM Προώθηση στην ALU από MEM/WB add $14,$2, $2 IM DM Προώθηση στο ΑΚ sw $15, 100($2) IM DM Τιθαγινόταναναντίγια$2 είχαμε $13; 43

Υλοποίηση Προώθησης Pipeline_ister.Instruction_ister υποδηλώνει την τιμή ενός καταχωρητή που ορίζεται σε μια εντολή (rs, rt, ή rd) και που είναι αποθηκεμένη σε ένα από τους καινούριους καταχωρητές (IF/ID, ID/EX, EX/MEM, MEM/WB). Π.χ., EX/MEM.isterRd (= rd στον EX/MEM) ID/EX.isterRs (= rs στον ID/EX) ID/EX.isterRt (= rt στον ID/EX) Για την υλοποίηση προώθησης στην ALU: 1. ID/EX.isterRs = EX/MEM.isterRd υποδηλώνει ένα κίνδυνο δεδομένων στο στάδιο EX, όπου ο 1 ος τελεστής της ALU βρίσκεται στον EX/MEM.isterRd, και όχι στον ID/EX.isterRs 2. ID/EX.isterRt = MEM/WB.isterRd υποδηλώνει ένα κίνδυνο δεδομένων στο στάδιο MEM, όπου ο 2 ος τελεστής βρίσκεται στον MEM/WB.isterRd, και όχι στον ID/EX.isterRs 3. 44

Υλοποίηση Προώθησης (συν.) Είναι πάντα απαραίτητη η προώθηση; Χρειάζεται μόνο όταν το σήμα Write είναι ενεργοποιημένο. Γιατί; Επίσης, για τον MIPS, όταν ένας από τους τελεστές είναι ο καταχωρητής $0 η αντίστοιχη τιμή που χρησιμοποιείται είναι πάντα το μηδέν (δεν είναι ανάγκη να προωθηθεί ο $0) Οι είσοδοι της ALU πρέπει να έρθουν από πολυπλέκτες οι οποίοι επιλέγουνναπροωθήσουνότανείναιαπαραίτητο Συνθήκη Ανίχνευσης Κινδύνων στο στάδιο EX και σήματα ελέγχου που πρέπει να ενεργοποιηθούν: Ανίχνευση Κινδύνων EX και Προώθηση if (EX/MEM.Write) and (EX/MEM.isterRd 0) and (EX/MEM.isterRd = ID/EX.isterRs)) ForwardA = 10 if (EX/MEM.Write) and (EX/MEM.isterRd 0) and (EX/MEM.isterRd = ID/EX.isterRt)) ForwardB = 10 45

Υλοποίηση Προώθησης (συν.) Συνθήκη Ανίχνευσης Κινδύνων στο στάδιο ΜΕΜ και σήματα ελέγχου που πρέπει να ενεργοποιηθούν: Ανίχνευση Κινδύνων MEM και Προώθηση if (MEM/WB.Write) and (MEM/WB.isterRd 0) and (MEM/WB.isterRd = ID/EX.isterRs)) ForwardA = 01 if (MEM/WB.Write) and (MEM/WB.isterRd 0) and (MEM/WB.isterRd = ID/EX.isterRt)) ForwardB = 01 46

Υλοποίηση Προώθησης (συν.) Θεωρήστε μόνο τις εντολές add, sub, or, and για προώθηση Σήμα Επιλογής MUX ForwardA=00 ForwardA=10 ForwardA=01 ForwardB=00 ForwardB=10 ForwardB=01 Τι λείπει; Πηγή ID/EX EX/MEM MEM/WB ID/EX EX/MEM MEM/WB Μονάδα Προώθησης 47

Υλοποίηση Προώθησης (συν.) Τι θα συμβεί αν έχουμε την πιο κάτω ακολουθία εντολών; add $s1, $s1, $s2 add $s1, $s1, $s3 add $s1, $s1, $s4 # $s1=$s1+$s2+$s3+$s4 Θα δουλέψει αυτό; Αυτό; 48

Υλοποίηση Προώθησης (συν.) Η συνθήκη ανίχνευσης κινδύνων στο στάδιο MEM πρέπει να περιλαμβάνει και την πιο κάτω προϋπόθεση: Ανίχνευση Κινδύνων MEM και Προώθηση if (MEM/WB.Write) and (MEM/WB.isterRd 0) and (EX/MEM.isterRd ID/EX.isterRs) and (MEM/WB.isterRd = ID/EX.isterRs)) ForwardA = 01 if (MEM/WB.Write) and (MEM/WB.isterRd 0) and (EX/MEM.isterRd ID/EX.isterRt) and (MEM/WB.isterRd = ID/EX.isterRt)) ForwardB = 01 49

Υλοποίηση Προώθησης (συν.) ID/EX WB EX/MEM Control M WB MEM/WB IF/ID EX M WB M ux PC Instruction memory Instruction isters M ux ALU Data memory M ux IF/ID.isterRs IF/ID.isterRt IF/ID.isterRt IF/ID.isterRd Rs Rt Rt Rd M ux EX/MEM.isterRd Forwarding unit MEM/WB.isterRd 50

Η προώθηση δεν είναι πάντα δυνατή Ηεντολήlw μπορεί ακόμη να προκαλέσει κίνδυνο: Μια εντολή προσπαθεί να διαβάσει ένα καταχωρητή. Στο προηγούμενο στάδιο υπάρχει μια εντολή lw που γράφει στον ίδιο καταχωρητή. Εξαρτήσεις/κίνδυνοι Λύση με Προώθηση Εξακολουθεί να παρουσιάζει κίνδυνο Επομένως, χρειάζεται μια μονάδα ανίχνευσης κινδύνων που να καθυστερεί (με stall ) την εντολή lw 51

Υλοποίηση για Stall Απαιτεί μια μονάδα ανίχνευσης κινδύνων (hazard detection unit) (επιπρόσθετα της μονάδας προώθησης) που λειτουργεί κατά τη διάρκεια του σταδίου ID (2 ο στάδιο) και εισάγει stall όπου χρειάζεται Ανίχνευση Κινδύνων και Stalling if (ID/EX.MemRead and ( (ID/EX.isterRt = IF/ID.isterRs) or (ID/EX.isterRt = IF/ID.isterRt) ) ) stall the pipeline Για πιο εντολή θα ισχύει η πιο πάνω συνθήκη; 52

Παράδειγμα με Stall Μπορούμε να εισάγουμε καθυστέρηση (stall) με το να «κρατήσουμε» μια εντολή στο ίδιο στάδιο Time (in clock cycles) CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9 CC 10 Program execution order (in instructions) Κρατάμε όλες τις πληροφορίες πριν το stall Από-ενεργοποίηση όλων των σημάτων ελέγχου lw $2, 20($1) and becomes nop and add $4, $2, $5 IM IM IM DM DM bubble DM Δημιουργείται κανένα πρόβλημα με τον PC ήτονif/id λόγω του stall? or $8, $2, $6 IM DM add $9, $4, $2 IM DM Πόσοι κύκλοι χρειάζονται για την κάθε εντολή; 53

Υλοποίηση για Stall (συν.) Stall: αφήνει μια εντολή που δεν γράφει πουθενά να προχωρήσει 54

Κίνδυνοι Διακλαδώσεως ή Ελέγχου (Branch or Control Hazards) Μέχρι να υπολογιστεί η συνθήκη της διακλάδωσης, κάποιες εντολές έχουν ήδη αρχίσει να εκτελούνται! Η συνθήκη της διακλάδωσης δεν υπολογίζεται μέχρι το στάδιο MEM οι επόμενες 3 εντολές φορτώνονται ανεξάρτητα της συνθήκης! Time (in clock cycles) CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9 Program execution order (in instructions) 40 beq $1, $3, 28 IM DM 44 and $12, $2, $5 IM DM 48 or $13, $6, $2 IM DM 52 add $14, $2, $2 IM DM 156 72 lw $4, 50($7) IM DM Προβλέπουμε ότι η συνθήκη της διακλάδωσης δεν ισχύει ( branch not taken ) Πρέπει να προσθέσουμε υλικό για να ξεφορτωθούν (flush) οι 3 εντολές, αν η πρόβλεψη είναι λανθασμένη 55

Κίνδυνοι Διακλαδώσεως (συν.) Μπορούμε να μειώσουμε τον αριθμό των εντολών που πρέπει να ξεφορτωθούν λόγω λανθασμένης πρόβλεψης Η εκτέλεση λειτουργιών για branch (υπολογισμός διεύθυνσης και συνθήκης διακλάδωσης) μετακινείται σε προηγούμενα στάδια (πριν το στάδιο MEM) Μπορούμε να μετακινήσουμε τον υπολογισμό της συνθήκης διακλάδωσης στο στάδιο ID; Ο υπολογισμός της συνθήκης διακλάδωσης κατά τη διάρκεια του σταδίου ID μπορεί να δημιουργήσει κινδύνους: Απαιτείται προώθηση σε καινούρια λογική που θα υπολογίζει τη συνθήκη (μέχρι στιγμής, η προώθηση γινόταν στον ALU) Πιθανόν να συνεχίσει να χρειάζεται stall (πχ. ALU εντολή αμέσως πριν την εντολή διακλάδωσης) 56

Γρηγορότερη απόφαση διακλαδώσεως 57

Απόρριψη Εντολών (Flushing) IF.Flush Hazard detection unit ID/EX WB EX/MEM Control 0 M u x M WB EX/MEM IF/ID + EX M WB + M u x PC 4 Instruction memory Shift left 2 isters = M u x M u x ALU Data memory M u x Αν IF.Flush ενεργό τότε IF/ID=0 (= sll $0,$0,0) Επομένως, η εντολή μετά τη διακλάδωση απορρίπτεται λόγω λανθασμένης πρόβλεψης Sign extend M u x Fowarding unit 58

Πρόβλεψη Διακλάδωσης (Branch Prediction) Αν η συνθήκη διακλάδωσης ισχύει (δηλ. έχουμε λανθασμένη πρόβλεψη), έχουμε ποινή ενός κύκλου Για τον απλό σχεδιασμό που έχουμε δει, αυτή η ποινή θεωρείται λογική Για πιο βαθιές διασωληνώσεις (με μεγαλύτερο αρ. σταδίων), η ποινή αυξάνεται και αυτή η μέθοδος στατικής πρόβλεψης μπορεί να επιφέρει δραστική επιβάρυνση στην απόδοση Λύση: Δυναμική Πρόβλεψη Διακλάδωσης (Dynamic Branch Prediction) Εξετάζει την διεύθυνση της εντολής για να δει αν η συνθήκη διακλάδωσης ίσχυε ή όχι, την προηγούμενη φορά που εκτελέστηκε ηεντολή. Αν ναι, τότε προβλέπει ότι η συνθήκη θα έχει το ίδιο αποτέλεσμα όπως την προηγούμενη(ες) φορά(ες). 59

Δυναμική Πρόβλεψη Διακλάδωσης Απομονωτής Πρόβλεψης Διακλάδωσης (Branch prediction buffer ή branch history table): μνήμη (απλά μερικά bits) που υποδεικνύουν αν η συνθήκη διακλάδωσης ίσχυε πρόσφατα. Ισχύει Πρόβλεψη: Συνθήκη Ισχύει Δεν Ισχύει Δεν Ισχύει Πρόβλεψη: Ισχύει Συνθήκη Δεν Ισχύει Μέθοδος Πρόβλεψης με 1 bit Θεωρήστε μια εντολή διακλάδωσης σε βρόγχο. Όταν αρχίζει ο βρόγχος, η συνθήκη διακλάδωσης ισχύει 9 φορές (συνεχόμενες), μετά δεν ισχύει (βγαίνει από το βρόγχο) για μια φορά. Ο βρόγχο επαναλαμβάνεται Ποιο είναι το ποσοστό (%) όπου ισχύει η συνθήκη διακλάδωσης; Ποιο είναι το ποσοστό (%) ορθής πρόβλεψης της διακλάδωσης; 60

Δυναμική Πρόβλεψη Διακλάδωσης (συν.) Η μέθοδος πρόβλεψης διακλάδωσης με 2 bits έχει μεγαλύτερη ακρίβεια: μια πρόβλεψη πρέπει να είναι λανθασμένη δύο συνεχόμενες φορές προτού να αλλάξει Ισχύει Δεν Ισχύει Πρόβλεψη: Συνθήκη Ισχύει Ισχύει Πρόβλεψη: Συνθήκη Ισχύει Ισχύει Πρόβλεψη: Συνθήκη Δεν Ισχύει Θεωρήστε μια εντολή διακλάδωσης σε βρόγχο. Όταν αρχίζει ο βρόγχος, η συνθήκη διακλάδωσης ισχύει 9 φορές (συνεχόμενες), μετά δεν ισχύει (βγαίνει από το βρόγχο) για μια φορά. Ο βρόγχο επαναλαμβάνεται Ποιο είναι το ποσοστό (%) όπου ισχύει η συνθήκη διακλάδωσης; Ποιο είναι το ποσοστό (%) ορθής πρόβλεψης της διακλάδωσης; Δεν Ισχύει Ισχύει Δεν Ισχύει Πρόβλεψη: Συνθήκη Δεν Ισχύει Δεν Ισχύει Μέθοδος Πρόβλεψης Διακλάδωσης με 2 bits 61

Πρόβλεψη Διακλάδωσης (συν.) Υπάρχουν πολύπλοκες τεχνικές: Branch target buffer Correlating predictors Tournament predictors Branch delay Οι τεχνικές πρόβλεψης διακλάδωσης είναι πολύ σημαντικές, ειδικά αφού επιτρέπουν σε άλλες, πιο προχωρημένες, μεθόδους διασωλήνωσης να αυξήσουν την απόδοσή τους! Οι σύγχρονοι επεξεργαστές προβλέπουν ορθά γύρω στο 95% των περιπτώσεων! 62

Εξαιρέσεις (Exceptions) Θυμηθείτε ότι οι εξαιρέσεις δεν είναι τίποτα άλλο από ένα άλλο είδος κινδύνων ελέγχου (control hazards) Θεωρείστε ότι η πιο κάτω εντολή προκαλεί εξαίρεση για αριθμητική υπερχείλιση: add $s1, $s2, $s1 Η ροή του προγράμματος ΠΡΕΠΕΙ να μεταφερθεί στην ρουτίνα εξαιρέσεων αμέσως μετά την εντολή add Απόρριψη (flush) εντολών που έχουν ξεκινήσει να εκτελούνται μετά την add Προσκόμιση εντολών από την ρουτίνα εξαιρέσεων Στη περίπτωση των κινδύνων διακλάδωσης, η απόρριψη συμβαίνει μόνο στο στάδιο IF (IF.Flush asserted), επομένως μόνο 1 εντολή χρειάζεται να απορριφθεί. Για αριθμητική υπερχείλιση, 3 εντολές πρέπει να απορριφθούν, από τα στάδια IF, ID, και EX 63

Απόρριψη εντολών λόγω εξαίρεσης εντολή i: add εντολή i+1: εντολή i+2: Η add προκαλεί αριθμητική υπερχείλιση η οποία ανιχνεύεται κατά τη διάρκεια του σταδίου EX. Οι εντολές i i+2 πρέπει να απορριφθούν και οι εντολές της ρουτίνας εξαιρέσεων πρέπει να εκτελεστούν εντολή i: εντολή i+1 εντολή i+2 add Flush, όχι Stall 1 η εντολή από ρουτίνα εξαιρέσεων 64

Θυμηθείτε τις απαραίτητες αλλαγές για χειρισμό εξαιρέσεων Για το χειρισμό των εξαιρέσεων χρειαζόμαστε 2 καινούριους καταχωρητές: EPC: κρατά τη διεύθυνση της επηρεαζόμενης εντολής Cause: το λιγότερο σημαντικό bit κωδικοποιεί τις 2 δυνατές εξαιρέσεις (0=ανύπαρκτη εντολή, 1=αριθμητική υπερχείλιση) Επίσης, 3 καινούρια σήματα ελέγχου EPCWrite: για να γραφτεί η διεύθυνση της τρέχουσας εντολής στον EPC CauseWrite: γράφει τον τύπο της εξαίρεσης (0 ή 1) στον Cause IntCause: επιλέγει τον τύπο της εξαίρεσης που πρέπει να γραφτεί στον Cause (σήμα επιλογής ενός καινούριου 2-επί-1 πολυπλέκτη) Δράση που ακολουθείται στην ανίχνευση εξαιρέσεως: 1. Θέτει την τιμή του καταχωρητή Cause (0 ή1) 2. Φύλαξη του αρχικού PC στον EPC 3. Γραφή της διεύθυνσης της εξαίρεσης (8000 0180 hex in MIPS, 8000 0080 hex για τον SPIM) στον PC 65

Μετατροπή Διαδρόμου Δεδομένων για Εξαιρέσεις IF.Flush ID.Flush EX.Flush Hazard detection unit 80000180 M u x PC 4 + Instruction memory IF/ID Control Shift left 2 + 0 isters M u x = ID/EX WB M EX Cause EPC M u x M u x 0 M ux EX/MEM M WB u x 0 0 M ALU Data memory MEM/WB WB M u x Sign extend Ποια είναι η τιμή του EPC; 0 M u x Forwarding unit 66

Παράδειγμα Θεωρήστε την πιο κάτω ακολουθία εντολών: 40 hex sub $11, $2, $4 44 hex and $12, $2, $5 48 hex or $13, $2, $6 4C hex add $1, $2, $1 # υπερχείλιση 50 hex slt $15, $6, $7 54 hex lw $16, 50($7) Εντολές που καλούνται λόγω της υπερχείλισης: 40000040 hex sw $25, 1000($s0) 40000044 hex sw $26, 1004($s0) Δείξετε τι συμβαίνει χρησιμοποιώντας διαγράμματα ενός κύκλου 67

Παράδειγμα (συν.) 50 8000180 Η υπερχείλιση ενεργοποιεί όλα τα σήματα Flush, προς στο τέλος του κύκλου ΕΧ ανιχνεύει την υπερχείλιση, γράφει στον EPC (PC+4) και στον PC (8000180) 68

Παράδειγμα (συν.) 40000040 1 η εντολή ρουτίνας εξαίρεση lw flushed slt flushed add flushed or τελειώνει 69

Βελτίωση Απόδοσης Αποφυγή των stalls! Π.χ., αλλάξετε τη σειρά των πιο κάτω εντολών, έτσι ώστε να μειωθεί ο αριθμός των stall, χωρίς να αλλάξει το αποτέλεσμα του προγράμματος: lw $t0, 0($t1) lw $t2, 4($t1) sw $t2, 0($t1) sw $t0, 4($t1) Δυναμικός Χρονοπρογραμματισμός Διασωλήνωσης (Dynamic Pipeline Scheduling) Το υλικό ορίζει την εντολή που θα ξεκινήσει στον επόμενο κύκλο Εκτελεί εντολές εκτός σειράς (out of order execution), π.χ., δεν περιμένει να επιλυθεί και προχωρά με άλλες εντολές Κερδοσκοπεί στις διακλαδώσεις και κρατά το σωλήνα γεμάτο (πιθανόν να χρειαστεί να ακυρώσει εντολές αν η πρόβλεψη είναι λανθασμένη) Αξιοποίηση παράλληλης εκτέλεσης εντολών (Instruction-Level Parallelism - ILP) 70

Προχωρημένες έννοιες διασωλήνωσης Αύξηση των σταδίων (depth) Περισσότερες από 1 εντολές αρχίζουν να εκτελούνται σε κάθε κύκλο (multiple issue) Ξετύλιγμα Βρόγχων (Loop unrolling) για περισσότερο ILP (καλύτερος χρονοπρογραμματισμός) Επεξεργαστές Superscalar DEC Alpha 21264: διασωλήνωσης 9 σταδίων, 6 σωλήνες (pipes) Όλοι οι σύγχρονοι επεξεργαστές είναι superscalar και έχουν πολλαπλούς σωλήνες (issue multiple instructions) VLIW (Very Long Instruction Word): στατικό multiple issue (βασίζεται περισσότερο στην τεχνολογία του μεταγλωττιστή) Αυτό το μάθημα σας παρέχει το βασικό υπόβαθρο, γιαναμπορείτε να μάθετε περισσότερα! 71

Σύγκριση Απόδοσης Η διασωλήνωση δεν βελτιώνει το χρόνο εκτέλεσης, αλλά την ικανότητα διεκπεραίωσης (throughput) Deeply pipelined Multiple issue with deep pipeline (Section 6.10) Multicycle (Section 5.5) Pipelined Multiple-issue pipelined (Section 6.9) Single-cycle (Section 5.4) Slower Instructions per clock (IPC = 1/CPI) Faster 72