ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός. Ενότητα 6 - Σύστημα Διασωλήνωσης. Π. Ευριπίδου (2007)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CS425 Computer Systems Architecture

Οι τέσσερις αρχές για τον σχεδιασμό του συνόλου εντολών μιας μηχανής είναι:

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

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

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

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

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

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

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

Instruction Execution Times

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

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

(Branch Prediction Mechanisms)

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

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

Pipelined Datapath, Hazards and Forwarding

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

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

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

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

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

Δυναμική Δρομολόγηση Εντολών (Dynamic Scheduling)

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

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

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

Μέθοδοι Πρόβλεψης Διακλαδώσεων (Branch Prediction Mechanisms)

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

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

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

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

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

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

1.1 ΑΣΚΗΣΗ ΛΥΣΗ 2.1 ΑΣΚΗΣΗ ΛΥΣΗ 3.1 ΑΣΚΗΣΗ

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

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

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

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

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

HOMEWORK 4 = G. In order to plot the stress versus the stretch we define a normalized stretch:

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

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

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

Συστήματα Διαχείρισης Βάσεων Δεδομένων

ΗΥ425 Αρχιτεκτονική Υπολογιστών. Static Scheduling. Βασίλης Παπαευσταθίου Ιάκωβος Μαυροειδής

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

The challenges of non-stable predicates

CS-425 Mid-term exam

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

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

Concrete Mathematics Exercises from 30 September 2016

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

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

ΗΥ425 Αρχιτεκτονική Υπολογιστών. Static Scheduling. Ιάκωβος Μαυροειδής

Assalamu `alaikum wr. wb.

Phys460.nb Solution for the t-dependent Schrodinger s equation How did we find the solution? (not required)

Homework 3 Solutions

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

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

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

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

2 Composition. Invertible Mappings

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

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

Αρχιτεκτονικη υπολογιστων

ΔΙΑΛΕΞΗ 16: ΠΑΡΑΛΛΗΛΙΣΜΟΣ ΣΤΗΝ ΕΚΤΕΛΕΣΗ ΕΝΤΟΛΩΝ

Διασωλήνωση - Pipelining

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

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

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

Transcript:

ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός Ενότητα 6 Σύστημα Διασωλήνωσης Π. Ευριπίδου (2007) 1 Ταυτοχρονισμός ή Συνδρομή Λειτουργία (Concurrency) Παράλληλη Επεξεργασία (Parallelism) Replicated machine resources Επεξεργάζονται διαφορετικά μέρη του προγράμματος [Operate on different parts of the program] Διασωλήνωση (Pipelining): Σύστημα διαδοχικής διοχέτευσης και επεξεργασίας 50 10 15 15 Μια μηχανική λειτουργία διαιρείται σε ένα αριθμό τμημάτων.[machine function is split into a number of stages] Το κάθε τμήμα υλοποιείται με το δικό του υλικό [Separate hardware allocated for each stage] 10 2

Η Διασωλήνωση είναι μια τεχνική υλοποίησης στην οποία πολλές εντολές επικαλύπτονται κατά την εκτέλεση Σήμερα η Διασωλήνωση είναι το κλειδί για να γίνονται οι επεξεργαστές γρήγοροι. Όποιος έχει βάλει πλυντήριο, έχει ασυναίσθητα χρησιμοποιήσει Διασωλήνωση. 3 Σε μια Διασωληνωμένη μηχανή το ρολόι (χρονιστής) πρέπει να δουλεύει με την ταχύτητα του πιο αργού τμήματος (In a pipeline machine the clock must run at the speed of the slowest component) 15 15 S 4 S 3 15 15 S 2 T 1 S 1 1 2 3 4 5 6 4

Επιτάχυνση Διασωλήνωσης (Pipeline Speedup) Sk = Χρόνος χωρίς Διασωλήνωση Χρόνος με Διασωλήνωση K n-1 S 4 T 1 T 2 T 3 S k T1 n * t * k n * k = = = Tk [(n - 1) + k] * t (n - 1) + k S 3 S 2 T 1 T 1 T 2 T 2 T 3 T 3 T 4 T 4 n = αριθμός εντολών t = χρόνος κύκλου μηχανής k = αριθμός τμημάτων διασωλήνωσης S 1 T 1 T 2 T 3 T 4 1 2 3 4 5 6 5 Παράδειγμα: Υπολογίστε την επιτάχυνση από την χρήση ενός διασωληνωμένου αθροιστή με 4 τμήματα στην πρόσθεση δυο διανυσμάτων (Using a 4-stage pipeline adder find the corresponding speedup for adding two vectors of size): 1) 1 2) 10 3) 100 4) 1000 6

S 4 S 4 S 4 S 4 1* 4 = =1 4 10* 4 = 308 4+ 9 =. 100* 4 = = 388. 4+ 99 1000* 4 = = 399. 4+ 999 lim Sk( n) k n 7 Παράδειγμα 2: Υπολογίστε το χρόνο που χρειάζεται για την πρόσθεση 8 αριθμών με τη χρήση ενός διασωληνωμένου αθροιστή με 4 τμήματα (Given a 4 stage pipeline adder calculate the time (T4) to add 8 numbers) 8

S 1,2 S 3,4 S 5,6 S 7,8 S 1,4 S 1,2 S 3,4 S 5,6 S 7,8 S 1,4 S 1,2 S 1,2 S 3,4 S 3,4 S 5,6 S 5,6 S 7,8 S 7,8 S 1,4 S 1,4 S 5,8 S 5,8 1 2 3 4 5 6 7 8 S 5,8 S 1,8 S 5,8 S 1,8 S 1,8 S 1,8 10 11 12 13 14 15 16 17 9 Διασωλήνωσης Εντολών (Instruction Pipeline) Σε κάθε κύκλο μηχανής τερματίζεται η επεξεργασία μιας εντολής [One Instruction is completed each machine cycle] Επιτάχυνση της τάξης του 7 σε σύγκριση με μη-διασωληνωμένη μηχανή. [Perfomance Improvement of a factor of 7 over a purely sequential implementation] Υποθέστε ότι η μνήμη χρειάζεται 4 κύκλους μηχανής και όχι 1. [Suppose that the memory takes 4 machine cycles instead of 1.] Ο μέσος χρόνος εκτέλεσης μιας εντολής εξαρτάται από το πιο αργό τμήμα, τη μνήμη δηλαδή [The average rate of instruction completion depends on the slowest component i.e. the memory operations]. Με αυτό το ρυθμό παράγεται ένα αποτέλεσμα σε κάθε κύκλο. [At this rate one result is produced every 4 cycles.] Ημη-διασωληνωμένη μηχανή χρειάζεται [Sequential Implementation takes] 3 x 4 + 4 x 1 = 16 κύκλους. Επιτάχυνση της τάξης του 4 [Speedup of 4] Ερώτηση: Πως μπορούμε να βελτιώσουμε αυτή την διασωλήνωση [How can we improve this pipeline?] Instr. Fetch Instr. Decode Address Gen Oper. Fetch Execute Oper. Store Update PC 10

Προσθέτουμε 3 τμήματα καθυστέρησης μετά από κάθε τμήμα μνήμης [Add 3 delays stages after each memory stage]! Η νέα διασωλήνωση έχει 16 τμήματα. [New pipeline is 16 stages long] Ένα αποτέλεσμα παράγεται σε κάθε κύκλο. [One result per cycles is possible now] Επιτάχυνση της τάξης του 16 [Speedup of 16]! Ερώτηση: Είναι αυτό εφικτό [Is this for real? What's the catch]? Η καινούργια διασωλήνωση χρειάζεται ταυτόχρονα 12 προσπελάσεις μνήμης [The new pipeline requires that 12 memory accesses be active simultaneously.] Σε αυτή την περίπτωση η διασωλήνωση έχει μεταβιβάσει το πρόβλημα σε ένα άλλο σύστημα. [In this case a pipelined structure shifts the bottleneck to a different system.] Ο σχεδιαστής του Η/Υ πρέπει να χρησιμοποιήσει παρόμοιες μεθόδουςγιαναβελτιώσειτηναπόδοσητηςμνήμης[the architect must apply similar techniques to improve the memory performance.] Instr. Fetch DELAY DELAY DELAY Instr. Decode Address Gen Oper. Fetch DELAY DELAY DELAY Execute Oper. Store DELAY DELAY DELAY 11 Update PC Σύστημα διαδοχικής διοχέτευσης και επεξεργασίας του MIPS Για την ομαλή λειτουργία του συστήματος διασωλήνωσης πρέπει: να προσδιορίσουμε τις διάφορες λειτουργίες σε κάθε κύκλο μηχανής και να βεβαιωθούμε ότι εντολές που εκτελούνται ταυτόχρονα Δεν χρειάζονται περισσότερους πόρους από αυτούς που διαθέτει η μηχανή. (Making the Pipeline work Determine what happens in each cycle of the machine and make the sure that overlapping instructions doesn't over commit resources) MIPS 12 IF ID EX MEM WB Instruction Fetch I-Decode Execute Memory Access Write Back

IF: Προσκόμιση εντολής ( Instruction Fetch) ID: Αποκωδικοποίηση εντολής και ανάγνωση καταχωρητών (Instruction decode and register file read) EX: Εκτέλεση ή υπολογισμός διεύθυνσης (Execution or address calculation) MEM: Προσπέλαση και ανάγνωση μνήμης δεδομένων (Data memory access) WB: Γράψιμο στους καταχωρητές (Write Back) 13 14

Σχεδιάσμος για Διασωλήνωση Όλες οι MIPS εντολές έχουν το ίδιο μήκος. πιο εύκολη η προσκόμιση εντολών στο πρώτο τμήμα της Διασωλήνωσης πιο εύκολη αποκωδικοποιήσει στο δεύτερο στάδιο. Ο MIPS έχει λίγους τύπους εντολών με τα πεδία των καταχωρητών πηγής να είναι στην ίδια θέση. Οι Προσβάσεις στην μνήμης εμφανίζονται μόνο σε loads ή stores στον MIPS. Χρησιμοποιούμε το τμήμα εκτέλεσης (ΕΧΕ) για να υπολογίσουμε την διεύθυνση μνήμης καιμετάναέχουμε πρόσβαση στην μνήμη στο επόμενο στάδιο. Σταθερός Χρόνος εκτέλεσης των Εντολών Οι τελεστές πρέπει να είναι ευθυγραμμισμένη (aligned) στη μνήμη. τα απαιτούμενα δεδομένα μπορούν να μεταφερθούν μεταξύ του επεξεργαστή και της μνήμης σε ένα κύκλο της διασωλήνωσης. 15 Κίνδυνοι Διασωλήνωσης (Pipeline Hazards ) Το σύστημα διασωλήνωσης του ΜIPS εργάζεται χωρίς διακοπές (στάση διασωλήνωσης ή φυσαλίδες διασωλήνωσης) εάν η κάθε εντολή που εκτελείται στη διασωλήνωση είναι ανεξάρτητη από κάθε άλλη εντολή που εκτελείται στη διασωλήνωση (The MIPS pipeline would work without any "interruption«(pipeline stalls or bubbles) if every instruction were independent of every other instruction in the pipeline) Στην πράξη υπάρχουν αλληλεξαρτήσεις μεταξύ των εντολών που εκτελούνται στην διασωλήνωσης (In reality instructions in the pipeline are dependent on each other) Κίνδυνοι Διασωλήνωσης: Εμποδίζουν την επόμενη ακολουθία εντολών από του να εκτελεστεί κατά τη διάρκεια του προκαθορισμένου κύκλου μηχανής (Pipeline Hazards: Prevents the next instruction stream, from executing during its designated clock cycle.) Δομικοί Κίνδυνοι (Structural Hazards) Κίνδυνοι Δεδομένων (Data Hazards) Κίνδυνοι Ροής (Control Hazards) 16

Επιτάχυνσης Διακλάδωσης (Pipeline Speedup) Pipeline_speed-up= Average_Instruction_time-without_Pipelining Average_Instruction_time- with_pipelining = CPI_without_Pipelining Clock_cycle_time_without_Pipelining CPI_with_Pipelining Clock_cycle_time_WITH_Pipelining = Clock_cycle_time_without_Pipelining CPI_without_Pipelining Clock_cycle_time_WITH_Pipelining CPI_WITH_Pipelining Ideal_ CPI= CPI_without_Pipelining Pipeline_Depth Speedu p= Clock_cycle_time_without_Pipelining Ideal_CPI Pipe_Depth Clock_cycle_time_WITH_Pipelining CPI_WITH_Pipelining CPI_with_Pipeline= Ideal_CPI+Pipeline_Stalls_per_Instruction 17 Δομικοί Κίνδυνοι (Structural Hazards) Ορισμένοι συνδυασμοί εντολών δεν μπορούν να ικανοποιηθούν διότι χρειάζονται περισσότερους πόρους από αυτούς που διαθέτει η μηχανή (Some combination of instructions cannot be accommodated due to resource conflicts.) Ορισμένες λειτουργικές μονάδες δεν είναι διασωληνωμένες (Some functional units are not pipelined) Ορισμένες μονάδες δεν αναπαράγονται αρκετά για να ικανοποιήσουν όλους τους πιθανούς συνδυασμούς από εντολές. (Some resources are not duplicated enough to allow all combination of instructions.) Αρχείο καταχωρητών που επιτρέπει μόνο μια πρόσβαση (Only one registerfile port) Μια διασωλήνωμενη μνήμη (Single memory pipeline.) 18

Παράδειγμα: Έστω μια μηχανή (παρόμοια με το MIPS) με σύστημα μνήμης που επιτρέπει μόνο μια πρόσβαση σε κάθε κύκλο. Oι εντολές πρόσβασης στη μνήμη είναι το 30% τουολικούαριθμούτωνεντολών Το ιδανικό CPI είναι 1.2 Πόσο πιο γρήγορη είναι η ιδανική μηχανή σε σύγκριση με την πραγματική μηχανή; I n s t r. O r d e r Load Instr 1 Instr 2 Instr 3 Instr 4 Mem Mem Mem Mem Mem Mem Mem Mem Mem Mem Structural Hazard 19 Κίνδυνοι-Δεδομένων (Data Hazards) Κίνδυνοι-Δεδομένων δημιουργούνται όταν η διασωλήνωση διαφοροποιεί τη σειρά πρόσβασης σε τελεστές σε σύγκριση με τη σειρά πρόσβασης χωρίς διασωλήνωση Time (clock add r1,r2,r3 I ID/R E ME W A I Re D Re L sub r4,r1,r3 and r6,r1,r7 Im Re A D Re L I Re A D Re L or r8,r1,r9 xor r10,r1,r11 Im Re A D Re L Im Re A D Re L 20

I n s t r. O r d e r Μεταβίβαση (Forwarding) για αποφυγή Κινδύνου Δεδομένων add r1,r2,r3 sub r4,r1,r3 and r6,r1,r7 or r8,r1,r9 Time (clock cycles) Ifetch Ifetch DMem Ifetch Ifetch DMem DMem DMem xor r10,r1,r11 Ifetch DMem 21 Αλλαγές στο υλικό για Forwarding NextPC isters ID/EX mux mux EX/MEM Data Memory MEM/WR Immediate mux 22

Τι σημαίνει forwarding; Μεταχείριση πεδίων των pipeline registers σαν πιθανά inputs στις εντολές Πχ: στοστάδιοεχεc εκτελούμε το πιο κάτω: if (Src1[D/E]!= NULL) if (Dest[Ε/Μ]==Src1[D/Ε]) Src1= DestValue[Ε/Μ] else if (Dest[M/W]==Src1[D/Ε]) Src1= DestValue[M/W] else Src1= SrcValue1[D/E] 23 Κίνδυνοι Δεδομένων και με Forwarding Time (clock cycles) I n s t r. lw r1,0(r2) sub r4,r1,r6 Ifetch Ifetch DMem DMem O r d e r and r6,r1,r7 or r8,r1,r9 Ifetch Ifetch DMem DMem 24

Λύσεις του κινδύνου της εντολής φόρτωσης Time (clock cycles) I n s t r. O r d e r lw r1, 0(r2) sub r4,r1,r6 and r6,r1,r7 Ifetch Ifetch Ifetch DMem Bubble Bubble DMem DMem or r8,r1,r9 Bubble Ifetch DMem 25 Διαβίβαση Δεδομένων (Data Forwarding) Το αποτέλεσμα της ΑΛΜ επανατροφοδοτείται στην είσοδο της ΑΛΜ (The result is always fed back to the input latches) Το σύστημα διασωλήνωσης του MIPS πρέπει να διαβιβάζει δεδομένα στις δύο επόμενες εντολές. (The MIPS pipeline must pass results to the next two instructions (if they need the result that is)) Κίνδυνοι Δεδομένων δημιουργούνται και όταν δυο εντολές διαβάζουν ή γράφουν την ίδια τοποθεσία στη μνήμη. (Data hazards are also created when two instructions read or write the same memory location) Στον MIPS το πρόβλημα αυτό δεν παρουσιάζεται διότι οι προσπελάσεις στη μνήμη γίνονται πάντοτε στη σωστή σειρά. (Μόνο το τμήμα MEM διαβάζει ή γράφει στη μνήμη) [The MIPS does not have this problem because it keeps memory access in order (Only MEM stage reads or writes to memory)] 26

27 Μηχανισμός Εξασφάλισης της Διασωλήνωσης [Pipeline Interlocks] Επισημαίνει κινδύνους και Σταματά την τροφοδότηση στη διασωλήνωση της εντολής που θα χρησιμοποιήσει ένα δεδομένο μέχρι αυτό να παραχθεί από την παραγωγό εντολή [Detect hazards and stall the pipeline beginning with the instruction that wants to use the data until the sourcing instruction produces it.] Η καθυστέρηση ονομάζεται στάση ή φυσαλίδα. [The delay cycle is called stall or bubble] 28

Παράδειγμα: Το 20% των εντολών είναι φόρτωσης [20% of all instructions are loads] Στο 50% των περιπτώσεων η επόμενη εντολή χρησιμοποιεί το αποτέλεσμα της εντολής φόρτωσης [50% of the time the next instruction depends on the load]. Ο κίνδυνος αυτός δημιουργεί μια στάση στη διασωλήνωση [This hazard creates a single cycle delay] Ερώτηση: Πόσο πιο γρήγορη είναι η διασωλήνωση χωρίς τον κίνδυνο αυτό σε σύγκριση με την πραγματική μηχανή [How much faster is the ideal pipeline (CPI=1) compared to the real one.] Το CPI της εντολής που ακολουθεί την εντολή φόρτωσης και χρησιμοποιεί το αποτέλεσμα της φόρτωσης είναι 1.5 [CPI of the instruction following the load is 1.5] CPI= 0.8 x 1 + 0.2 *1.5 = 1.1 Performance ratio = 1.1 / 1 i.e. 10% faster 29 Χρονοπρογραμματισμός Εντολών [Instruction Scheduling] Οι Μεταγλωττιστές επιδιώκουν να αποφεύγουν την παραγωγή κώδικα στον οποίο μια εντολή φόρτωσης ακολουθείται από μια ή περισσότερες εντολές που θα χρησιμοποιήσουν το αποτέλεσμα της φόρτωσης [Compilers try to generate code that does not have a load followed by an instruction(s) that does use the result of that load] Παράδειγμα: Γράψετε κώδικα που αποφεύγει στάσεις στη διασωλήνωση του MIPS [Generate code that avoids pipeline stalls for the following code:] a= b+ c d= e- f Unoptimized Code lw Rb, b lw Rc, c load interlock add Ra, Rb, Rc sw a, Ra lw Re, e lw Rf, f load interlock sub Rd, Re, Rf sw d, Rd Optimized Code lw Rb, b lw Rc, c lw Re, e Delay slot add Ra, Rb, Rc lw Rf, f sw a, Ra Delay slot sub Rd, Re, Rf sw d, Rd 30

Κίνδυνοι Διακλαδώσεων (Κίνδυνοι Ροής Ελέγχου) [Control Hazards] Οι Κίνδυνοι Διακλαδώσεων δημιουργούνται όταν έχουμε μια διακλάδωση (η οποία μπορεί και να βασίζεται σε αποτέλεσμα άλλης εντολής) στην διασωλήνωση που ακολουθείτε από άλλες εντολές. Παράδειγμα: Υπολογίστε την επιτάχυνση του διασωληνωμένου MIPS εάν το 30% των εντολών είναι διακλαδώσεις [Example: Calculate the speedup of the pipelined MIPS if 30% of the instructions are branches.] Οι διακλαδώσεις στο MIPS χρειάζονται 3 τμήματα (IF, ID,EXE) 3 Στάσης Ideal CPI = 1. CPIreal= 0.7 + 0.3 x 4 = 1.9 Μόνο 50% της ιδανικής επιτάχυνσης είναι εφικτή. [Only about half the ideal speedup is possible] 31 Η μείωση του κόστους της επιτάχυνσης είναι εξαιρετικά σημαντική για μηχανέςυψηλήςαπόδοσης[reduction of branch penalty is crucial.] Οι στάσεις που οφείλονται σε κινδύνους διακλαδώσεων μπορούν να ελαττωθούν εάν [Branch stalls can be reduced by]: 1. Προσδιορίσουμε πιο νωρίς στην διασωλήνωση εάν η διακλάδωση θα γίνει [Determine if branch is taken earlier] 2. Υπολογίσουμε το νέο PC πιο νωρίς [Compute taken PC earlier] και τα δυο πρέπει να γίνουν (both must be done). 32

Η μείωση επιτυγχάνεται με: Την προσθήκη ειδικού κυκλώματος για να ελέγχει τη συνθήκη διακλάδωσης (test-for-zero) στο τμήμα ID [Allocate special logic to perform the test-for-zero at the ID stage] Την προσθήκη ειδικού αθροιστή στο τμήμα ID για τον υπολογισμό της Διεύθυνσης του Προορισμού της Διακλάδωσης (BTA). [Allocate an adder in the ID stage to compute the Branch Taken Address (BTA)] Το κόστος της διακλάδωσης στον MIPS είναι τώρα ένας κύκλος [Branch Penalty is now one cycle.] 33 Μείωση του κόστους των διακλαδώσεων σε διασωληνωμένες μηχανές [Reducing Pipeline Branch Penalty] Στατικές Προβλέψεις [Static Predictions (fixed for each branch during the entire execution] Καμιά εντολή δεν εισέρχεται στη διασωλήνωση μέχρις ότου να γνωρίζουμε το αποτέλεσμα της διακλάδωσης [Freeze pipeline until branch destination is known]. Πρόβλεψη ότι η διακλάδωση θα είναι επιτυχής [Predict branch taken.] Πρόβλεψη ότι η διακλάδωσης δενθαείναιεπιτυχής[predict branch as not taken.] Διακλαδώσεις με καθυστέρηση [Delayed branch.] 34

Διακλαδώσεις με καθυστέρηση Διακλαδώσεις με καθυστέρηση n κύκλων [Delayed branch with branch delay of n] Η Διακλάδωση με καθυστέρηση δεν λαμβάνει χώρα μέχρις ότου ένας αριθμός εντολών (n) που ακολουθούν τη διακλάδωση εκτελεστούν [Delayed Branch: The branch does not take effect until a number of sequential successors finish executing.] Ο MIPS έχει μια στάση για κάθε διακλάδωση. Δηλαδή η Διακλάδωση [Delayed branch] Branch Instruction Sequential Successor 1 Sequential Successor 2 Sequential Successor n branch target if taken με καθυστέρηση δεν λαμβάνει χώρα μέχρι να εκτελεστεί η εντολή που ακολουθεί την διακλάδωση. [The DLX has branch delay of 1, i.e. the delayed branch does not take effect until the next instruction finish executing.] Σχισμή Καθυστέρησης Διακλάδωσης: Η σχισμή που ακολουθεί τη σχισμή της Διακλάδωσης με καθυστέρηση [Branch Delay Slots: The sequential successor of a delayed branch] 35 Διασωληνομένος Διάδρομος Δεδομένων Ημνήμη-εντολών (instruction memory) χρησιμοποιείται μόνο σε ένα από τα πέντε στάδια εκτέλεσης μιας εντολής, επιτρέποντας την χρήση από άλλες εντολές κατά τα άλλα τέσσερα στάδια. Γιαναδιατηρήσουμετηνεντολήγιαταάλλατέσσερατηςστάδια, η τιμήπου διαβάζεται από τη μνήμη εντολών (instruction memory) πρέπει να εγγράφεται σε κάποιο καταχωρητή. Παρόμοια επιχειρήματα ισχύουν και για κάθε ένα από τα υπόλοιπα στάδια της διασωλήνωσης, 36

Όλες οι εντολές προχωρούν σε κάθε κύκλο ρολογιού από ένα καταχωρητή διασωλήνωσης στον επόμενο. Οι καταχωρητές ονομάζονται από τα δύο στάδια που διαχωρίζονται από τον συγκεκριμένο καταχωρητή. Για παράδειγμα ο καταχωρητής μεταξύ των σταδίων IF και ID ονομάζεται IF/ID. Προσέξτε ότι δεν υπάρχει καταχωρητής στο τέλος του σταδίου WB. Όλες οι εντολές πρέπει να αλλάξουν (update) κάποια κατάσταση (state) στη μηχανή -το αρχείο καταχωρητών, τηνμνήμηήτονpcέτσι δεν χρειάζεται ακόμα ένας καταχωρητής διασωλήνωσης στο στάδιο όπου η κατάσταση αλλάζεται. Για παράδειγμα, μια εντολή load θα τοποθετήσει το αποτέλεσμα της σε ένα από τους 32 καταχωρητές, και οποιαδήποτε μεταγενέστερη εντολή χρειάζεται αυτό το δεδομένο απλά θα διαβάσει τον κατάλληλο καταχωρητή. 37 Οι εντολές και τα δεδομένα κινούνται γενικά από αριστερά προς τα δεξιά μέσω των πέντε σταδίων καθώς ολοκληρώνεται η εκτέλεση της εντολής. Υπάρχουν όμως δύο εξαιρέσεις στην ροή των εντολών: Το στάδιο Write Back, που τοποθετεί το αποτέλεσμα πίσω στο αρχείο καταχωρητών Η επιλογή της επόμενης τιμής του PC, επιλέγοντας μεταξύ του αυξανόμενου PC και της διεύθυνσης από την εντολή branch στο στάδιο MEM Τα δεδομένα που ρέουν από ταδεξιάπροςτααριστεράδεν επηρεάζουν την παρούσα εντολή, μόνο οι επόμενες εντολές στο διάδρομο δεδομένων επηρεάζονται από αυτές τις αντίστροφες κινήσεις δεδομένων. Προσέξτε ότι η πρώτη δεξιά-προς-αριστερά κίνηση οδηγεί σε κινδύνους δεδομένων και η δεύτερη σε κινδύνους ελέγχου. 38

39 40

41 42

43 44

45