(Branch Prediction Mechanisms)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CS425 Computer Systems Architecture

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εικονική Μνήμη (Virtual Μemory)

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

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

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

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

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

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

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

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

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

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

Δυναμική Θεώρηση και Συγχρονισμός των εξαρτήσεων των δεδομένων. Αλεξάνδρα Παπανδρεάδη (ΑΜ 362)

CS425 Computer Systems Architecture

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

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

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

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

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

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

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

Αρχιτεκτονικές Συνόλου Εντολών

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

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

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

Εντολές του MIPS (2)

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

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

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

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

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

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

Transcript:

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

Εντολές Διακλάδωσης Περίπου 20% των εντολών είναι εντολές διακλάδωσης Πολλά στάδια μεταξύ υπολογισμού του επόμενου PC και εκτέλεσης του branch (για σύγχρονους επεξεργαστές μπορεί και >10!) Εισαγωγή stalls και επομένως μείωση του ρυθμού ανάγνωσης και εκτέλεσης εντολών Next 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 pp CPI + Structural Stalls + Data Hazard Stalls + υπερβαθμωτή εκτέλεση προώθηση loop unrolling static scheduling, software pipelining Control Stalls πρόβλεψη διακλαδώσεων υποθετική εκτέλεση delayed branches, branch scheduling 3

Software Τεχνικές Μείωσης Control Stalls Μείωση των εντολών άλματος (loop unrolling) Υπολογισμός της συνθήκης εκτέλεσης διακλάδωσης όσο πιο νωρίς Hardware Αντικατάσταση των bubbles με χρήσιμη δουλειά Παράλληλη εκτέλεση και των 2 ροών προγράμματος μέχρι να αποσαφηνιστεί ποιο κομμάτι της διακλάδωσης θα εκτελεστεί Πρόβλεψη 4

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

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

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

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

Δυναμικές Τεχνικές Πρόβλεψης 1-bit predictor Η πρόβλεψη βασίζεται στο τι έγινε την προηγούμενη φορά που εκτελέστηκε αυτή η εντολή διακλάδωσης Χρήση πίνακα για την αποθήκευση της απόφασης Προσπέλαση του πίνακα χρησιμοποιώντας k bits του PC» Aliasingi 0x40010100 0x40010104 1-bit Branch History NT Table T addi r10, r0, 100 addi r1, r1, r0 T NT 0x40010108 L1: T NT 0x40010A04 addi r1, r1, 1 0x40010A08 bne r1, r10, L1 NT k bits T... 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): T 10

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

0x108: for(i=0; i < 100000; i++) {... 0x144: if( ( i % 100) == 0 ) calla( ); 0x150: if( (i & 1) == 1) callb( ); } Πρόβλεψη (108): Παράδειγμα 1-bit predictor 0 TTTTTTTT...TTTΤ N 100000 Απόφαση (108): TTTTTTTTT...TTTN T 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% 998% Πρόβλεψη (108): 0 TTTTTTTT...TTTΤ NTTTTTTTT...TTTΤ 100000 Απόφαση (108): TTTTTTTTT...TTTN TTTTTTTTT...TTTN 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 BNEZ JMP R2,#100 R1 R1,0x150 FUNA Πρόβλεψη (144): 0 Απόφαση (144): N 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 BNEZ JMP R2,#100 R1 R1,0x150 FUNA Πρόβλεψη (144): 0NTTTTTTT...TTTΤ 100 Απόφαση (144): NTTTTTTTT...TTTN 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 BNEZ JMP R2,#100 R1 R1,0x150 FUNA Πρόβλεψη (144): 0NTTTTTTT...TTTΤ N 100 Απόφαση (144): NTTTTTTTT...TTTN T 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): 0NTTTTTTT...TTTΤ NTTTTTTTT...TTTΤ 100 Απόφαση (144): NTTTTTTTT...TTTN TTTTTTTTT...TTTN 17

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

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

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

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

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

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

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

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

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

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

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

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

Correlating/Two-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 Table (PHT) : Ο πίνακας που αποθηκεύονται οι predictors 30

Global-History Two-Level Predictor (2,2) predictor 64 entries 4 low order bits PC 2 bits global history 31

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

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

BHT 8 εγγραφές 3-bit ιστορία PHT 128 εγγραφές 2-bit predictors Local-History Two-Level Predictor 34

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

Tournament 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 Final Prediction Meta Update Λάθος Λάθος Λάθος Σωστή Συνδυασμοί των προηγουμένων Σωστή Λάθος -1 συστημάτων Σωστή Σωστή Pred 0, Pred 1 --- +1 --- 36

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

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

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

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

Branch-Target Buffer 41

Χρήση ΒΤΒ 42

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

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

Return Address Stack (RAS) 45