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

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

(Branch Prediction Mechanisms)

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

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

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

Υ- 01 Αρχιτεκτονική Υπολογιστών Πρόβλεψη διακλάδωσης

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

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

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

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

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

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

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

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

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

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

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

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

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

CS425 Computer Systems Architecture

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

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

Instruction-Level Parallelism and its Dynamic Exploitation. Μάθηµα 3ο Computer Architecture-A Quantitative Approach

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

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

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

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

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

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

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

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

Υ- 01 Αρχιτεκτονική Υπολογιστών Front- end: Προσκόμιση, αποκωδικοποίηση, μετονομασία καταχωρητών

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Instruction-Level Parallelism and its Dynamic Exploitation. Κεφάλαια 4o Computer Architecture-A Quantitative Approach 3 rd Edition

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

Υποθετική Εκτέλεση Εντολών

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

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

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

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

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

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

Ασκήσεις στα Προηγμένα Θέματα Αρχιτεκτονικής Υπολογιστών

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

Εισαγωγή στην Επιστήμη των Υπολογιστών

Δομημένος Προγραμματισμός

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

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

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

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

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

Προηγμένοι Επεξεργαστές

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

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

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

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

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

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ασκήσεις 5: Εντολές Συγκρίσεων και Μεταφοράς Ελέγχου. Μανόλης Γ.Η.

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

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

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

CS425 Computer Systems Architecture

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

3 η ΕΝΟΤΗΤΑ Συναρτήσεις στο MATLAB

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

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

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

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

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

MIPS functions and procedures

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

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

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

add $t0,$zero, $zero I_LOOP: beq $t0,$s3, END add $t1, $zero,$zero J_LOOP: sub $t2, $s3, $t0 add $t2, $t2, $s1 int i, j, tmp; int *arr, n;

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Εργαστήριο 9: Εισαγωγή στην Ομοχειρία (Pipelining - Διοχέτευση) Μανόλης Γ.Η.

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

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

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

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

; Γιατί είναι ταχύτερη η λήψη και αποκωδικοποίηση των εντολών σταθερού μήκους;

Διαδικασίες Ι. ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 4

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Αρχιτεκτονική-ΙI. Ενότητα 5 : Αρχιτεκτονική ΙΑ-32

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

Δομημένος Προγραμματισμός

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

Transcript:

Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια χρήσης άλλου τύπου, αυτή πρέπει να αναφέρεται ρητώς.

Εντολές Διακλάδωσης Περίπου 20% των εντολών είναι εντολές διακλάδωσης Πολλά στάδια μεταξύ υπολογισμού του επόμενου PC και εκτέλεσης του branch (για σύγχρονους επεξεργαστές μπορεί και >10!) Εισαγωγή stalls και επομένως μείωση του ρυθμού ανάγνωσης και εκτέλεσης εντολών ext fetch started PC I-cache Fetch Buffer Issue Buffer Func. Units Fetch Decode Execute #bubbles ~= pipeline depth X loop length Branch executed Result Buffer Commit Arch. State 2

Τεχνικές βελτίωσης του CPI register renaming δυναμική εκτέλεση Pipeline CPI = Ideal pipeline CPI + Structural Stalls + Data Hazard Stalls + υπερβαθμωτή εκτέλεση προώθηση loop unrolling static scheduling, software pipelining Control Stalls πρόβλεψη διακλαδώσεων υποθετική εκτέλεση delayed branches, branch scheduling 3

Τεχνικές Αντιμετώπισης Control Dependencies Stall the pipeline Κάνε κάτι χρήσιμο (branch delay slots) Διαγραφή control-flow instructions (predicated execution) Κάνε κάτι άλλο (fine-grained multithreading) Κάνε τα όλα (multipath execution) Πρόβλεψη 4

Εντολές Άλματος Χρειαζόμαστε 2 πληροφορίες Αν θα εκτελεστεί το άλμα ή όχι (taken or not taken) Αν εκτελεστεί ποιος είναι ο προορισμός (target PC) Είδος Άλματος Direct Jumps Function Calls Conditional Branches Indirect Jumps Function returns Απόφαση Always aken??? Always aken Προορισμός Υπολογίζεται εύκολα Υπολογίζεται εύκολα Υπολογίζεται δύσκολα 5

Πρόβλεψη Απόφασης Απαιτείται για εντολές διακλάδωσης υπό συνθήκη Η πλειοψηφία των εντολών διακλάδωσης είναι υπό συνθήκη 2 είδη τεχνικών πρόβλεψης Στατικές Δυναμικές Απαιτείται extra hardware Αποθήκευση χρήσιμων πληροφοριών για βελτίωση της ακρίβειας των προβλέψεων (branch history tables, branch target buffers, etc) Μηχανισμός ανάνηψης σε περίπτωση λανθασμένης πρόβλεψης 6

Branch not taken () Εύκολη υλοποίηση Στατικές Τεχνικές Πρόβλεψης Σε ένα loop σωστή πρόβλεψη μόνο στην τελευταία εκτέλεση Misprediction rate ~60%-70% Branch taken () Πιο πολύπλοκο hardware Σε ένα loop λάθος πρόβλεψη μόνο στην τελευταία εκτέλεση Average misprediction rate 34% (SPEC benchmarks) BF Άλματα προς τα πίσω (αρνητικό offset ως προς το PC) προβλέπεται ότι θα εκτελεστούν (Backwards taken) Άλματα προς τα εμπρός (θετικό offset ως προς το PC) προβλέπεται ότι δε θα εκτελεστούν (Forwards not taken) π.χ. χρησιμοποιείται στον Intel Pentium 4 σε περίπτωση που αποτύχει ο μηχανισμός δυναμικής πρόβλεψης 7

Profiling Εκτέλεση προγράμματος και καταγραφή στατιστικών Στατικές Τεχνικές Πρόβλεψης Ο compiler τα χρησιμοποιεί για να βοηθήσει το hardware να κάνει σωστή πρόβλεψη (π.χ. αν μια εντολή διακλάδωσης εκτελείται πάνω από τις μισές φορές κατά τη διάρκεια του profiling τότε η πρόβλεψη είναι ) Εύκολη υλοποίηση Τα δεδομένα του profiling και της κανονικής εκτέλεσης μπορεί να είναι πολύ διαφορετικά. Επομένως λάθος προβλέψεις Program-based Programmer-based (C likely/unlikely) 8

Δυναμικές Τεχνικές Πρόβλεψης 1-bit predictor Η πρόβλεψη βασίζεται στο τι έγινε την προηγούμενη φορά που εκτελέστηκε αυτή η εντολή διακλάδωσης Χρήση πίνακα για την αποθήκευση της απόφασης Προσπέλαση του πίνακα χρησιμοποιώντας k bits του PC» Aliasing 0x40010100 0x40010104 0x40010108 0x40010A04 0x40010A08 k bits 1-bit Branch History able addi r10, r0, 100 addi r1, r1, r0 L1: addi r1, r1, 1 bne r1, r10, L1... 2 k 9

Παράδειγμα 1-bit predictor 0x108: for(i=0; i < 100000; i++) {... 0x144: if( ( i % 100) == 0 ) calla( ); 0x150: if( (i & 1) == 1) callb( ); } Πρόβλεψη (108): 0 Απόφαση (108): 10

0x108: for(i=0; i < 100000; i++) {... 0x144: if( ( i % 100) == 0 ) calla( ); 0x150: if( (i & 1) == 1) callb( ); } Πρόβλεψη (108): Απόφαση (108): 100000 Παράδειγμα 1-bit predictor 0...Τ... 11

0x108: for(i=0; i < 100000; i++) {... 0x144: if( ( i % 100) == 0 ) calla( ); 0x150: if( (i & 1) == 1) callb( ); } Πρόβλεψη (108): Απόφαση (108): 100000 Παράδειγμα 1-bit predictor 0...Τ... 12

Παράδειγμα 1-bit predictor 0x108: for(i=0; i < 100000; i++) {... 0x144: if( ( i % 100) == 0 ) calla( ); 0x150: if( (i & 1) == 1) callb( ); } Misprediction = 2/100000 Prediction Rate = 99.998% Πρόβλεψη (108): 0...Τ Απόφαση (108): 100000...Τ...... 13

Παράδειγμα 1-bit predictor 0x108: for(i=0; i < 100000; i++) {... 0x144: if( ( i % 100) == 0 ) calla( ); 0x150: if( (i & 1) == 1) callb( ); } DIV MFHI BEZ JMP R2,#100 R1 R1,0x150 FUA Πρόβλεψη (144): 0 Απόφαση (144): 14

Παράδειγμα 1-bit predictor 0x108: for(i=0; i < 100000; i++) {... 0x144: if( ( i % 100) == 0 ) calla( ); 0x150: if( (i & 1) == 1) callb( ); } DIV MFHI BEZ JMP R2,#100 R1 R1,0x150 FUA Πρόβλεψη (144): 0...Τ 100 Απόφαση (144):... 15

Παράδειγμα 1-bit predictor 0x108: for(i=0; i < 100000; i++) {... 0x144: if( ( i % 100) == 0 ) calla( ); 0x150: if( (i & 1) == 1) callb( ); } DIV MFHI BEZ JMP R2,#100 R1 R1,0x150 FUA Πρόβλεψη (144): 0...Τ 100 Απόφαση (144):... 16

Παράδειγμα 1-bit predictor 0x108: for(i=0; i < 100000; i++) {... 0x144: if( ( i % 100) == 0 ) calla( ); 0x150: if( (i & 1) == 1) callb( ); } Misprediction = 2/100 Prediction Rate = 98% Πρόβλεψη (144): 0...Τ 100 Απόφαση (144):...Τ...... 17

Παράδειγμα 1-bit predictor 0x108: for(i=0; i < 100000; i++) {... 0x144: if( ( i % 100) == 0 ) calla( ); 0x150: if( (i & 1) == 1) callb( ); } AD SUB BEZ JMP R1,R2,#1 R1,#1 R1,EDLOOP FUB Πρόβλεψη (150): 0 Απόφαση (150): 18

Παράδειγμα 1-bit predictor 0x108: for(i=0; i < 100000; i++) {... 0x144: if( ( i % 100) == 0 ) calla( ); 0x150: if( (i & 1) == 1) callb( ); } AD SUB BEZ JMP R1,R2,#1 R1,#1 R1,EDLOOP FUB Πρόβλεψη (150): 0 Απόφαση (150): 19

Παράδειγμα 1-bit predictor 0x108: for(i=0; i < 100000; i++) {... 0x144: if( ( i % 100) == 0 ) calla( ); 0x150: if( (i & 1) == 1) callb( ); } AD SUB BEZ JMP R1,R2,#1 R1,#1 R1,EDLOOP FUB Πρόβλεψη (150): 0 Απόφαση (150): 20

21 Παράδειγμα 1-bit predictor 0x108: for(i=0; i < 100000; i++) {... 0x144: if( ( i % 100) == 0 ) calla( ); 0x150: if( (i & 1) == 1) callb( ); } Απόφαση (150): Πρόβλεψη (150): 0 Misprediction = 1/1 Prediction Rate = 0%

2-bit predictor Δυναμικές Τεχνικές Πρόβλεψης 22

Παράδειγμα 2-bit predictor 0x108: for(i=0; i < 100000; i++) {... 0x144: if( ( i % 100) == 0 ) calla( ); 0x150: if( (i & 1) == 1) } Πρόβλεψη (108): 1 Απόφαση (108): callb( ); 0,1:Predict ot aken 2,3:Predict aken 23

0x108: for(i=0; i < 100000; i++) { Παράδειγμα 2-bit predictor... 0x144: if( ( i % 100) == 0 ) calla( ); 0x150: if( (i & 1) == 1) } Πρόβλεψη (108): 1 Απόφαση (108): callb( ); 23333333...3333 100000... 0,1:Predict ot aken 2,3:Predict aken 24

0x108: for(i=0; i < 100000; i++) { Παράδειγμα 2-bit predictor... 0x144: if( ( i % 100) == 0 ) calla( ); 0x150: if( (i & 1) == 1) } Πρόβλεψη (108): 1 Απόφαση (108): callb( ); 23333333...3333 100000... 0,1:Predict ot aken 2,3:Predict aken 2 25

0x108: for(i=0; i < 100000; i++) { Παράδειγμα 2-bit predictor... 0x144: if( ( i % 100) == 0 ) calla( ); 0x150: if( (i & 1) == 1) } Πρόβλεψη (108): 1 Απόφαση (108): callb( ); 23333333...3333 100000... Misprediction ~= 1 per branches 0x108 Prediction Rate = 99.999% 0x144 Prediction Rate = 99% 0x150 Prediction Rate = 50% 0,1:Predict ot aken 2,3:Predict aken 2 33333333...3333... 26

Δυναμικές Τεχνικές Πρόβλεψης Άλλος 2-bit predictor 2 20 δυνατά FSMs 5248 ενδιαφέροντα [air, 1992] 27

Ακρίβεια Πρόβλεψης για 2-bits predictor SUPER! Χμμ...ΟΚ Χάλια! 28

Δυναμικές Τεχνικές Πρόβλεψης Χρονική Συσχέτιση (emporal Correlation) Όλες οι προηγούμενες τεχνικές προβλέπουν το αποτέλεσμα μιας εντολής διακλάδωσης με βάση τις αποφάσεις που πάρθηκαν σε προηγούμενες εκτελέσεις Τοπική Συσχέτιση (Spatial Correlation) Πρόβλεψη μιας εντολής διακλάδωσης με βάση τη συμπεριφορά άλλων εντολών διακλάδωσης που προηγούνται στη ροή του προγράμματος 29

Παράδειγμα if (aa==2) aa = 0; if (bb == 2) bb = 0; if (aa!= bb) {... } 1 () b1 0 () DADDIU R3,R1,#-2 BEZ R3,L1 ;branch b1 (aa!=2) DADD R1,R0,R0 ;aa=0 L1:DADDIU R3,R2,#-2 BEZ R3,L2 ;branch b2 (bb!=2) DADD R2,R0,R0 ;bb=0 b2 1 0 1 b2 0 L2:DSUBU R3,R1,R2 ;R3=aa-bb BEQZ R3,L3 ;branch b3 (aa==bb) b3 b3 b3 b3 Path:1-1 1-0 0-1 0-0 aa bb aa bb aa bb aa bb Αν b1 και b2 (ot aken) τότε b3 (aken)! 30

Correlating/wo-level Predictors Γενική περίπτωση : (m,n) predictor m τελευταίες εντολές διακλάδωσης επιλογή ενός από 2 m predictors Κάθε predictor είναι n-bits Ο 2-bit predictor είναι ένας (0,2) predictor αφού δεν χρησιμοποιεί την ιστορία των άλλων εντολών διακλάδωσης Απλή υλοποίηση Branch History Register (BHR) : m-bit shift register για να καταγράφει τη συμπεριφορά των τελευταίων m εντολών διακλάδωσης Pattern History able (PH) : Ο πίνακας που αποθηκεύονται οι predictors 31

Global-History wo-level Predictor (2,2) predictor 64 entries 4 low order bits PC 2 bits global history 32

Σύγκριση (0,2) predictor με 4096 εγγραφές (8K bits) vs (2,2) predictor με 1024 εγγραφές (8Κ bits) 33

Local-History wo-level Predictor Αντί για τις m τελευταίες εντολές διακλάδωσης, παρακολουθούμε τις m τελευταίες εκτελέσεις της συγκεκριμένης εντολής O BHR αντικαθίσταται από τον BH (Branch History able) 1 BHR ανά εντολή διακλάδωσης Ο global-history predictor αποτελεί ουσιαστικά υποπερίπτωση, όπου ο BH έχει μόνο μια εγγραφή 34

BH 8 εγγραφές 3-bit ιστορία PH 128 εγγραφές 2-bit predictors Local-History wo-level Predictor 35

ournament Predictors Δεν υπάρχει τέλειος predictor Διαφορετικές εντολές άλματος παρουσιάζουν διαφορετική συμπεριφορά ΙΔΕΑ?????? Να κατασκευάσουμε ένα predictor που θα μαντεύει ποιος predictor μπορεί να μαντέψει ακριβέστερα το αποτέλεσμα ενός άλματος! 36

ournament Hybrid Predictor meta-predictor 2-bit μετρητές Branch PC Meta- Predictor Pred 0 Pred 1 0,1 χρησιμοποιείται ο P 0 2,3 χρησιμοποιείται ο P 1 Η τιμή του meta-predictor ενημερώνεται μόνο όταν οι δυο predictors κάνουν διαφορετική πρόβλεψη Pred 0, Pred 1 Συνδυασμοί των προηγουμένων συστημάτων Pred 0 Λάθος Λάθος Σωστή Σωστή Pred 1 Λάθος Σωστή Λάθος Σωστή Final Prediction Meta Update --- +1-1 --- 37

Meta-predictor Παράδειγμα: Alpha 21264 4K εγγραφές κάθε εγγραφή είναι ένας 2-bit predictor προσπέλαση με βάση το PC της εντολής διακλάδωσης Pred 0 : Local-history two-level predictor BH: 1K 10-bit εγγραφές PH: 1K 3-bit predictors Pred 1 : Global-history two-level predictor PH: 4K 2-bit predictors Σύνολο : 29Κ bits SPECfp95 : misprediction = 1 / 1000 instructions SPECint95: misprediction = 11.5/1000 instructions 38

Σύγκριση Δυναμικών Τεχνικών Πρόβλεψης 39

Πρόβλεψη Προορισμού Όλα τα προηγούμενα συστήματα προβλέπουν μόνο το ποιο μονοπάτι μιας εντολής διακλάδωσης θα ακολουθηθεί Χρειάζεται όμως και ο προορισμός-στόχος (target) ot taken: Προορισμός = PC + instruct_word_size aken : Προορισμός =???» Άμεσος : PC + offset» Έμμεσος : register_value + offset (π.χ. Object-oriented programs, subroutines returns, dynamically linked libraries) Για να διατηρήσουμε υψηλό throughput πρέπει στο τέλος κάθε κύκλου να γνωρίζουμε το επόμενο PC Για κάποια άλματα με έμμεσο προορισμό, γίνεται γνωστός μετά το EX Ακόμα και για τα υπόλοιπα πρέπει να περιμένουμε μέχρι το τέλος του ID 40

Branch-arget Buffer (BB) Μια μικρή cache (direct-mapped / associative) Αποθηκεύει τον προορισμό (target) της εντολής άλματος Προσπέλαση κατά τη διάρκεια του IF, ώστε την ώρα που φέρνουμε μια εντολή ταυτόχρονα προβλέπουμε από που θα χρειαστεί να φέρουμε την επόμενη Περιέχει Instruction Address Predicted PC Αποθηκεύουμε μόνο άλματα που έχουν εκτελεστεί (taken branches και jumps) 41

Branch-arget Buffer 42

Χρήση ΒΤΒ 43

Return Address Stack (RAS) SPEC89 : 85% των έμμεσων αλμάτων είναι function returns Προορισμός Δύσκολος να υπολογιστεί. Γίνεται γνωστός μετά το ΕΧ. Δύσκολα μπορεί να προβλεφθεί με τον BB, μιας και ένα function μπορεί να κληθεί από πολλά διαφορετικά σημεία. 44

Return Address Stack (RAS) Ο προορισμός ενός return είναι ΠΑΝΤΑ η επόμενη διεύθυνση της τελευταίας εντολής call Χρήση ενός stack (FILO) Εκτέλεση call push address into RAS Εκτέλεση return pop address into RAS 45

Return Address Stack (RAS) 46

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα» του ΕΜΠ έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.