Μέθοδοι Πρόβλεψης Διακλαδώζεων (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)

Αιγόξηζκνη Γνκή επηινγήο. Πνιιαπιή Δπηινγή Δκθωιεπκέλεο Δπηινγέο. Δηζαγωγή ζηηο Αξρέο ηεο Δπηζηήκεο ηωλ Η/Υ. introcsprinciples.wordpress.

Γοκή επαλάιευες Δληοιές Όζο & Μέτρης_όηοσ

Απαντήσεις θέματος 2. Παξαθάησ αθνινπζεί αλαιπηηθή επίιπζε ησλ εξσηεκάησλ.

iii. iv. γηα ηελ νπνία ηζρύνπλ: f (1) 2 θαη

Κάζε functional unit ρξεζηκνπνηείηαη κηα θνξά ζε θάζε θύθιν: αλάγθε γηα πνιιαπιό hardware = θόζηνο πινπνίεζεο!

ΑΠΑΝΤΗΣΔΙΣ ΓΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ II ΔΠΑΛ

ΣΕΙ ΙΟΝΙΩΝ ΝΗΩΝ ΣΜΗΜΑ: ΣΕΥΝΟΛΟΓΙΑ ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΣΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΥΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ Ρέππα Μαξγαξίηα

Ενδεικτικά Θέματα Στατιστικής ΙΙ

Constructors and Destructors in C++

Αζκήζεις ζτ.βιβλίοσ ζελίδας 13 14

Δξγαιεία Καηαζθεπέο 1 Σάμε Σ Δ.Κ.Φ.Δ. ΥΑΝΙΧΝ ΠΡΧΣΟΒΑΘΜΙΑ ΔΚΠΑΙΓΔΤΗ. ΔΝΟΣΗΣΑ 11 ε : ΦΧ ΔΡΓΑΛΔΙΑ ΚΑΣΑΚΔΤΔ. Καηαζθεπή 1: Φαθόο κε ζσιήλα.

Δπηιέγνληαο ην «Πξνεπηινγή» θάζε θνξά πνπ ζα ζπλδέεζηε ζηελ εθαξκνγή ζα βξίζθεζηε ζηε λέα ρξήζε.

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΔΣΑΙΡΔΙΑ ΠΑΓΚΤΠΡΙΟ ΓΙΑΓΩΝΙΜΟ Α ΛΤΚΔΙΟΤ. Ημεπομηνία: 10/12/11 Ώπα εξέτασηρ: 09:30-12:30 ΠΡΟΣΔΙΝΟΜΔΝΔ ΛΤΔΙ

Μονοψϊνιο. Αγνξά κε ιίγνπο αγνξαζηέο. Δύναμη μονοψωνίος Η ηθαλόηεηα πνπ έρεη ν αγνξαζηήο λα επεξεάζεη ηελ ηηκή ηνπ αγαζνύ.

ΛΙΜΝΗ ΤΣΑΝΤ. Σρήκα 1. Σρήκα 2

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΔΣΑΙΡΔΙΑ ΠΑΓΚΤΠΡΙΟ ΓΙΑΓΩΝΙ ΜΟ

ΘΔΚΑ ΡΖΠ ΑΛΑΓΛΩΟΗΠΖΠ

Απνηειέζκαηα Εξσηεκαηνινγίνπ 2o ηεηξάκελν

Παιχνίδι γλωζζικής καηανόηζης με ζχήμαηα!

Αντισταθμιστική ανάλυση

Η/Υ A ΤΑΞΕΩΣ ΑΕ Συστήματα Αρίθμησης. Υποπλοίαρχος Ν. Πετράκος ΠΝ

ΓΗΑΓΩΝΗΣΜΑ ΣΤΑ ΜΑΘΖΜΑΤΗΚΑ. Ύλη: Μιγαδικοί-Σσναρηήζεις-Παράγωγοι Θεη.-Τετν. Καη Εήηημα 1 ο :

ΑΠΛΟΠΟΙΗΗ ΛΟΓΙΚΩΝ ΤΝΑΡΣΗΕΩΝ ΜΕ ΠΙΝΑΚΕ KARNAUGH

Κευάλαιο 8 Μονοπωλιακή Συμπεριφορά- Πολλαπλή Τιμολόγηση

ΑΛΛΑΓΗ ΟΝΟΜΑΣΟ ΚΑΙ ΟΜΑΔΑ ΕΡΓΑΙΑ, ΚΟΙΝΟΥΡΗΣΟΙ ΦΑΚΕΛΟΙ ΚΑΙ ΕΚΣΤΠΩΣΕ ΣΑ WINDOWS XP

Κινητός και Διάχυτος Υπολογισμός (Mobile & Pervasive Computing)

ΔΕΟ 13. Ποσοτικές Μέθοδοι. θαη λα ππνινγίζεηε ην θόζηνο γηα παξαγόκελα πξντόληα. Να ζρεδηαζηεί γηα εύξνο πξντόλησλ έσο

ΘΔΜΑ 1 ο Μονάδες 5,10,10

Να ζρεδηάζεηο ηξόπνπο ζύλδεζεο κηαο κπαηαξίαο θαη ελόο ιακπηήξα ώζηε ν ιακπηήξαο λα θσηνβνιεί.

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΤΙΚΗ ΣΚΥΤΑΛΟΓΡΟΜΙΑ 2015 ΓΙΑ ΤΟ ΓΥΜΝΑΣΙΟ Τεηάπηη 28 Ιανουαπίου 2015 ΛΔΥΚΩΣΙΑ Τάξη: Α Γυμναζίου

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

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

H ΜΑΓΕΙΑ ΤΩΝ ΑΡΙΘΜΩΝ

Εςθςή ζςζηήμαηα επισειπήζεων και αξιολόγηζη

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

Βάσεις Δεδομέμωμ. Εξγαζηήξην V. Τκήκα Πιεξνθνξηθήο ΑΠΘ

Δξγαιεία Καηαζθεπέο 1 Σάμε Δ Δ.Κ.Φ.Δ. ΥΑΝΗΩΝ ΠΡΩΣΟΒΑΘΜΗΑ ΔΚΠΑΗΓΔΤΖ. ΔΝΟΣΖΣΑ 2 ε : ΤΛΗΚΑ ΩΜΑΣΑ ΔΡΓΑΛΔΗΑ ΚΑΣΑΚΔΤΔ. Καηαζθεπή 1: Ογθνκεηξηθό δνρείν

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ. Οξηδόληηα θαη θαηαθόξπθε κεηαηόπηζε παξαβνιήο

O επεξεπγαζηήρ: Η δίοδορ δεδομένων (datapath) θαη ε μονάδα ελέγσος (control)

Φςζική Πποζαναηολιζμού Γ Λςκείος. Αζκήζειρ Ταλανηώζειρ 1 ο Φςλλάδιο

Σύνθεζη ηαλανηώζεων. Έζησ έλα ζώκα πνπ εθηειεί ηαπηόρξνλα δύν αξκνληθέο ηαιαληώζεηο ηεο ίδηαο ζπρλόηεηαο πνπ πεξηγξάθνληαη από ηηο παξαθάησ εμηζώζεηο:

5 η Δργαζηηριακή Άζκηζη Κσκλώμαηα Γσαδικού Αθροιζηή/Αθαιρέηη

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

Σήκαηα Β Α Γ Γ Δ Λ Η Σ Ο Ι Κ Ο Ν Ο Μ Ο Υ Γ Ι Α Λ Δ Ξ Η - ( 2 ) ΕΙΣΑΓΨΓΗ ΣΤΙΣ ΤΗΛΕΠΙΚΟΙΝΨΝΙΕΣ

ΜΑΘΗΜΑΣΑ ΦΩΣΟΓΡΑΦΙΑ. Ειζαγωγή ζηη Φωηογραθία. Χριζηάκης Σαζεΐδης EFIAP

ΠΛΗ36. Άσκηση 1. Άσκηση 2. Οη δηεπζύλζεηο ησλ 4 σλ ππνδηθηύσλ είλαη νη αθόινπζεο. Υπνδίθηπν Α: /27 Υπνδίθηπν Β:

ΔΝΓΔΙΚΣΙΚΔ ΛΤΔΙ ΣΑ ΜΑΘΗΜΑΣΙΚΑ ΠΡΟΑΝΑΣΟΛΙΜΟΤ 2017

7. ΚΑΤΑΧΩΡΗΤΕΣ ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ. 3. Έλαο θαηαρσξεηήο SISO ησλ 4 bits έρεη: α) Μία είζνδν, β) Δύν εηζόδνπο, γ) Σέζζεξεηο εηζόδνπο.

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

Άζκηζη ζτέζης κόζηοσς-τρόνοσ (Cost Time trade off) Καηαζκεσαζηική ΑΔ

f '(x)g(x)h(x) g'(x)f (x)h(x) h'(x) f (x)g(x)

Διαηιμήζεις για Αιολικά Πάρκα. Κώδικες 28, 78 και 84

MySQL Εργαστήριο #5 Ενεργοποιητές (συνέχεια)

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΣΑΞΖ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ Γευηέρα 11 Ηουνίου 2018 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ. (Ενδεικηικές Απανηήζεις)

ΦΥΣΙΚΗ ΤΩΝ ΡΕΥΣΤΩΝ. G. Mitsou

B-Δέλδξα. Τα B-δέλδξα ρξεζηκνπνηνύληαη γηα ηε αλαπαξάζηαζε πνιύ κεγάισλ ιεμηθώλ πνπ είλαη απνζεθεπκέλα ζην δίζθν.

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

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

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

Ζαχαρίας Μ. Κοντοπόδης Εργαστήριο Λειτουργικών Συστημάτων ΙΙ

Η επιζκόπηζη ηης έμμιζθης ενηολής ζηην Αλλοδαπή. Καηεξίλα Γαιαλνπνύινπ, Intellectual Property Manager, Microsoft Ειιάο Α.Ε.

Κεθάλαιο 7. Πξνζθνξά ηνπ θιάδνπ Μ. ΨΥΛΛΑΚΗ

Έλαο πίνακας σσμβόλων ππνζηεξίδεη δύν βαζηθέο ιεηηνπξγίεο:

ΕΝΤΟΛΕΣ WINDOWS ΚΑΙ UNIX

ΑΝΤΗΛΙΑΚΑ. Η Μηκή ζθέθηεθε έλαλ ηξόπν, γηα λα ζπγθξίλεη κεξηθά δηαθνξεηηθά αληειηαθά πξντόληα. Απηή θαη ν Νηίλνο ζπλέιεμαλ ηα αθόινπζα πιηθά:

Δξγαζηεξηαθή άζθεζε 03. Σηεξενγξαθηθή πξνβνιή ζην δίθηπν Wulf

ΚΕΦ. 2.3 ΑΠΟΛΤΣΗ ΣΘΜΗ ΠΡΑΓΜΑΣΘΚΟΤ ΑΡΘΘΜΟΤ

ΣΡΑΠΕΖΑ ΘΕΜΑΣΩΝ Α ΛΤΚΕΙΟΤ

CS425 Computer Systems Architecture

Αζθήζεηο 5 νπ θεθαιαίνπ Crash course Step by step training. Dipl.Biol.cand.med. Stylianos Kalaitzis

Άσκηση 1 - Μοπυοποίηση Κειμένου

ΟΠΤΙΚΗ Α. ΑΝΑΚΛΑΣΖ - ΓΗΑΘΛΑΣΖ

ΠΔΡΗΓΡΑΦΖ ΛΔΗΣΟΤΡΓΗΚΟΣΖΣΑ ΥΔΓΗΟΤ ΑΡΗΘΜ. 1

ΚΔΦ. 2.4 ΡΗΕΔ ΠΡΑΓΜΑΣΗΚΩΝ ΑΡΗΘΜΩΝ

Λεκηική έκθραζη, κριηική, οικειόηηηα και ηύπος δεζμού ζηις ζηενές διαπροζωπικές ζτέζεις

ΜΑΘΗΜΑ / ΤΑΞΗ : ΗΛΕΚΤΡΟΛΟΓΙΑ/Γ ΛΥΚΕΙΟΥ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 08/09/2014

Κεθάιαην 20. Ελαχιστοποίηση του κόστους

ΜΕΛΕΣΗ E.O.K. ΜΕ ΑΙΘΗΣΗΡΑ ΘΕΗ

ΣΕΙ Δυτικήσ Μακεδονίασ, Παράρτημα Καςτοριάσ Τμήμα Πληροφορικήσ και Τεχνολογίασ Υπολογιςτών

ΔΠΙΣΡΟΠΗ ΓΙΑΓΩΝΙΜΩΝ 74 ος ΠΑΝΔΛΛΗΝΙΟ ΜΑΘΗΣΙΚΟ ΓΙΑΓΩΝΙΜΟ ΣΑ ΜΑΘΗΜΑΣΙΚΑ Ο ΘΑΛΗ 19 Οκηωβρίοσ Δνδεικηικές λύζεις

x-1 x (x-1) x 5x 2. Να απινπνηεζνύλ ηα θιάζκαηα, έηζη ώζηε λα κελ ππάξρνπλ ξηδηθά ζηνπο 22, 55, 15, 42, 93, 10 5, 12

ΡΤΘΜΙΕΙ ΔΙΚΣΤΟΤ ΣΑ WINDOWS

ΠΡΩΣΟΚΟΛΛΑ ΓΙΑΥΔΙΡΗΗ ΣΩΝ ΣΔΡΗΓΟΝΙΚΩΝ ΒΛΑΒΩΝ Δ ΔΝΗΛΙΚΔ

ΔΦΑΡΜΟΜΔΝΑ ΜΑΘΗΜΑΣΙΚΑ ΣΗ ΧΗΜΔΙΑ Ι ΘΔΜΑΣΑ Α επηέκβξηνο Να ππνινγηζηνύλ νη κεξηθέο παξάγσγνη πξώηεο ηάμεο ηεο ζπλάξηεζεο f(x,y) =

ΔΙΑΓΩΝΙΣΜΑ ΣΤΗ ΦΥΣΙΚΗ. Ύλη: Εσθύγραμμη Κίνηζη

EL Eνωμένη στην πολυμορυία EL A8-0046/319. Τροπολογία

Αιγόξηζκνη Δνκή επηινγήο. Απιή Επηινγή ύλζεηε Επηινγή. Εηζαγσγή ζηηο Αξρέο ηεο Επηζηήκεο ησλ Η/Τ. introcsprinciples.wordpress.

(Ενδεικηικές Απανηήζεις) ΘΔΜΑ Α. Α1. Βιέπε απόδεημε Σει. 262, ζρνιηθνύ βηβιίνπ. Α2. Βιέπε νξηζκό Σει. 141, ζρνιηθνύ βηβιίνπ

Α. Εηζαγσγή ηεο έλλνηαο ηεο ηξηγσλνκεηξηθήο εμίζσζεο κε αξρηθό παξάδεηγκα ηελ εκx = 2

Πολυεπίπεδα/Διασυμδεδεμέμα Δίκτυα

ΓΔΧΜΔΣΡΙΑ ΓΙΑ ΟΛΤΜΠΙΑΓΔ

ΣΥΣΤΗΜΑΤΑ ΑΛΓΕΒΡΑ Α ΛΥΚΕΙΟΥ. 1. Να ιπζνύλ ηα ζπζηήκαηα. 1 0,3x 0,1y x 3 3x 4y 2 4x 2y ( x 1) 6( y 1) (i) (ii)

6 η Εργαζηηριακή Άζκηζη Επαλήθεσζη Λειηοσργίας Βαζικών Φλιπ-Φλοπ

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

Γ ΣΑΞΖ ΔΝΗΑΗΟΤ ΛΤΚΔΗΟΤ ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΘΔΣΗΚΩΝ ΚΑΗ ΟΗΚΟΝΟΜΗΚΩΝ ΠΟΤΓΩΝ ΤΝΑΡΣΖΔΗ ΟΡΗΑ ΤΝΔΥΔΗΑ (έως Θ.Bolzano) ΘΔΜΑ Α

ΜΑΘΗΜΑΣΑ ΦΩΣΟΓΡΑΦΙΑ. Εισαγωγή στη Φωτογραυία. Χριζηάκης Σαζεΐδης - EFIAP

Transcript:

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

Δληνιέο Γηαθιάδσζεο Πεξίπνπ 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

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 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 θαη ηεο θαλνληθήο εθηέιεζεο κπνξεί λα είλαη πνιύ δηαθνξεηηθά. Δπνκέλσο ιάζνο πξνβιέςεηο 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): 100000 Παξάδεηγκα 1-bit predictor 0...Τ Απόθαζη (108):... 11

0x108: for(i=0; i < 100000; i++) {... 0x144: if( ( i % 100) == 0 ) calla( ); 0x150: if( (i & 1) == 1) callb( ); } Πρόβλεψη (108): 100000 Παξάδεηγκα 1-bit predictor 0...Τ Απόθαζη (108):... 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...Τ 100000...Τ Απόθαζη (108):...... 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-bits predictor SUPER! Φκκ...ΟΚ Φάιηα! 27

Γπλακηθέο Τερληθέο Πξόβιεςεο Φξνληθή Σπζρέηηζε (emporal Correlation) Όιεο νη πξνεγνύκελεο ηερληθέο πξνβιέπνπλ ην απνηέιεζκα κηαο εληνιήο δηαθιάδσζεο κε βάζε ηηο απνθάζεηο πνπ πάξζεθαλ ζε πξνεγνύκελεο εθηειέζεηο Τνπηθή Σπζρέηηζε (Spatial Correlation) Πξόβιεςε κηαο εληνιήο δηαθιάδσζεο κε βάζε ηε ζπκπεξηθνξά άιισλ εληνιώλ δηαθιάδσζεο πνπ πξνεγνύληαη ζηε ξνή ηνπ πξνγξάκκαηνο 28

Παξάδεηγκα 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)! 29

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 30

Global-History wo-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 wo-level Predictor Αληί γηα ηηο m ηειεπηαίεο εληνιέο δηαθιάδσζεο, παξαθνινπζνύκε ηηο m ηειεπηαίεο εθηειέζεηο ηεο ζπγθεθξηκέλεο εληνιήο O BHR αληηθαζίζηαηαη από ηνλ BH (Branch History able) 1 BHR αλά εληνιή δηαθιάδσζεο Ο global-history predictor απνηειεί νπζηαζηηθά ππνπεξίπησζε, όπνπ ν BH έρεη κόλν κηα εγγξαθή 33

BH 8 εγγξαθέο 3-bit ηζηνξία PH 128 εγγξαθέο 2-bit predictors Local-History wo-level Predictor 34

ournament Predictors Γελ ππάξρεη ηέιεηνο predictor Γηαθνξεηηθέο εληνιέο άικαηνο παξνπζηάδνπλ δηαθνξεηηθή ζπκπεξηθνξά ΙΓΔΑ : Να θαηαζθεπάζνπκε έλα predictor πνπ ζα καληεύεη πνηνο predictor κπνξεί λα καληέςεη αθξηβέζηεξα ην απνηέιεζκα ελόο άικαηνο! 35

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 --- 36

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 37

Σύγθξηζε Γπλακηθώλ Τερληθώλ Πξόβιεςεο 38

Πξόβιεςε Πξννξηζκνύ Όια ηα πξνεγνύκελα ζπζηήκαηα πξνβιέπνπλ κόλν ην πνην κνλνπάηη κηαο εληνιήο δηαθιάδσζεο ζα αθνινπζεζεί Φξεηάδεηαη όκσο θαη ν πξννξηζκόο-ζηόρνο (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 39

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

Branch-arget Buffer 41

Φξήζε ΒΤΒ 42

Return Address Stack (RAS) SPEC89 : 85% ησλ έκκεζσλ αικάησλ είλαη function returns Πξννξηζκόο Γύζθνινο λα ππνινγηζηεί. Γίλεηαη γλσζηόο κεηά ην ΔΦ. Γύζθνια κπνξεί λα πξνβιεθζεί κε ηνλ BB, κηαο θαη έλα 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