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

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

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

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

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

(Branch Prediction Mechanisms)

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

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

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

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

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

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

CS425 Computer Systems Architecture

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Φροντιστήριο: MIPS assembly

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

Εισαγωγή στην πληροφορική -4

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

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

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

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

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

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

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

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

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

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση

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

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

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

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής

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

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

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

Pipelined Datapath, Hazards and Forwarding

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

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

Εργαστήριο 3 ΟΡΓΑΝΩΣΗ ΤΗΣ ΚΜΕ. Εισαγωγή

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

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

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς

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

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

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

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

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

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

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

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

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

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

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

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

Οργάνωση Η/Υ. Γιώργος ηµητρίου. Μάθηµα 9 ο. Πανεπιστήµιο Θεσσαλίας - Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ικτύων

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

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

CS425 Computer Systems Architecture

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2015

Transcript:

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2 5ο μάθημα: πρόβλεψη διακλάδωσης, διαφοροποιημένη διοχέτευση, χρονοπρογραμματισμός Αρης Ευθυμίου Πηγές διαφανειών: συνοδευτικές διαφάνειες αγγλικης εκδοσης του βιβλιου

Εξαρτήσεις ελέγχου! Σχετίζονται με διακλαδώσεις: γενικά δεν μπορούμε να αλλάξουμε τη θέση μιας εντολής σε σχέση με μια εντολή διακλάδωσης γενικά, απαγορεύονται μετακινήσεις εντολών από το then κομμάτι, πρίν το if και το ανάποδο! Η ιδιότητα διατήρησης των εξαρτήσεων ελέγχου δεν είναι θεμελιώδης αν το πρόγραμμα παραμείνει σωστό, μπορούμε να αλλάξουμε τη σειρά! Οι θεμελιώδεις ιδιότητες που πρέπει να ισχύουν είναι: Συμπεριφορά διακοπών (excepton behaviour) Ροή δεδομένων (data- flow) 2

ExcepTon behaviour! Οι αλλαγές που κάνουμε δεν πρέπει να μπορούν να αλλάξουν το τρόπο με τον οποίο γίνονται διακοπές στο πρόγραμμα! Aν ο R2 είναι 0, θα έχουμε memory excepton στη LW! Αν η LW μεταφερθεί πρίν τη διακλάδωση (BEQZ), μπορεί να έχουμε διακοπή που δεν θα είχαμε αν η LW έμενε στη θέση της! Δεν υπάρχει εξάρτηση δεδομένων που να απαγορεύει τη μεταφορά της LW! Για να επιτραπεί η μετακίνηση θα έπρεπε να μπορούμε να αγνοούμε τη διακοπή αν η διακλάδωση ακολουθηθεί 3

Ροή δεδομένων! Η ροή δεδομένων είναι η ροή μεταξύ εντολών παραγωγών και καταναλωτών δεδομένων! Οι διακλαδώσεις κάνουν τη ροή δυναμική Η διακλάδωση επιλέγει ποιά τιμή του R1 θα χρησιμοποιηθεί! H εξάρτηση δεδομένων μεταξύ της OR και των DADDU, DSUBU μπορεί να διατηρηθεί αλλά αυτό δεν αρκεί - δεν μπορεί η SUBU να μετακινηθεί πριν τη διακλάδωση 4

Ροή δεδομένων 2! Εστω ότι ο R4 χρησιμοποιείται προσωρινά η τιμή δεν χρειάζεται πουθενά παρακάτω, λέγεται dead από το skip και κάτω η ιδιότητα λέγεται liveness! Τότε η DSUBU να μετακινηθεί πριν την BEQ Αν η διακλαδωση ακολουθηθεί, η DSUBU ήταν άχρηστη, αλλά δεν αλλοιώθηκε το αποτέλεσμα! Η μέθοδος λέγεται sozware speculaton: ο compiler προβλέπει ότι η διακλάδωση δεν θα ακολουθηθεί 5

Πρόβλεψη διακλαδώσεων! Αγγλικός όρος: branch predicton! Στατική πρόβλεψη: από τον μεταγλωτιστή βοηθάει σε ξετύλιγμα βρόγχων, branch delay slots,! Δυναμική πρόβλεψη: από τον επεξεργαστή! Οσο βαθαίνει η διοχέτευση (ή ο αριθμός παράλληλα εκτελούμενων εντολών, τόσο σημαντικότερη είναι η ακρίβεια στη πρόβλεψη 3 διακλαδώσεις στη διοχέτευση με ακρίβεια πρόβλεψης 90%, πιθανότητα σωστής πρόβλεψης και για τις 3 = 0.9 3 = 73% 6

Στατική πρόβλεψη! Predict not taken μεγάλο κέρδος χρόνου όταν είναι σωστή η πρόβλεψη ελάχιστο κόστος σε υλικό σχετικά μικρή ακρίβεια πρόβλεψης, οι περισσότερες διακλαδώσεις ακολουθούνται! Predict taken μικρότερο κέρδος χρόνου: πρέπει πρώτα να αποκωδικοποιηθεί η εντολή! Profile- based Συγκέντρωση πληροφορίας από προηγούμενες εκτελέσεις Συνήθως οι διακλαδώσεις πάνε προς μία κατεύθυνση πάντα (bimodal distributon) 7

Ορια στατικής πρόβλεψης 25% 22% 20% 18% Misprediction rate 15% 10% 5% 12% 11% 12% 5% 6% 9% 10% 15% 0% compress eqntott espresso gcc Integer li doduc ear h ydro2d mdljdp Floating-point su2cor Benchmark 8

Είδη διακλάδωσης! Διακλάδωση υπό συνθήκη (branch)! Υποχρεωτική (χωρίς συνθήκη) διακλάδωση (άλμα jump)! Αμεση (direct) διεύθυνση στόχου είτε σταθερά ή PC+σταθερά! Εμμεση (indirect) διεύθυνση στόχου είναι η τιμή καταχωρητή (ή και μνήμης, π.χ. στοίβα)! Κλήση ή επιστροφή υπορουτίνας 9

Προβλέψεις! Πρόβλεψη στόχου Διεύθυνση «προορισμού» εντολής διακλάδωσης αν ακολουθηθεί Εύκολα προβλέψιμος! Πρόβλεψη κατεύθυνσης Ακολουθείται ή όχι η διακλάδωση! Εκτέλεση διακλάδωσης = επιβεβαίωση της πρόβλεψης! Λάθος πρόβλεψη: ακύρωση εντολών προσκόμιση από τη σωστή διεύθυνση! Ενημέρωση μηχανισμού πρόβλεψης 10

Πρόβλεψη στόχου διακλάδωσης! Αν προβλέψουμε το στόχο διακλάδωσης: 1. ταυτόχρονα με τη προσκόμιση (της εντολής διακλάδωσης) 2. σωστά, όπως επίσης και την κατεύθυνση τότε η ποινή διακλάδωσης εξαλείφεται! Η πρόβλεψη στόχου γίνεται με ένα πίνακα που λέγεται Branch Target Buffer (BTB)! Οταν προσκομίζουμε μια εντολή, διαβάζουμε και το BTB για να προβλέψουμε τη διεύθυνση της επόμενης εντολής 11

Branch target buffer PC of instruction to fetch Look up Predicted PC Number of entries in branchtarget buffer = : instruction is not predicted to be branch; proceed normally Yes: then instruction is branch and predicted PC should be used as the next PC Branch predicted taken or untaken! Αν στο BTB βάζουμε μόνο taken διακλαδώσεις δεν χρειάζεται το bit κατεύθυνσης 12

Πρόβλεψη κατεύθυνσης! Βασίζεται στην προηγούμενη «συμπεριφορά» της εντολής διακλάδωσης! Συνήθως η κατεύθυνση υπολογίζεται μετά από τον στόχο π.χ. στόχος στο στάδιο ID, κατεύθυνση στο στάδιο EXE! Δυναμική πρόβλεψη: μπορεί να αλλάξει κατά τη διάρκεια εκτέλεσης προγράμματος 13

Branch History Table! Μια μικρή μνήμη με διευθύνσεις από κάποια bits του PC αν χρησιμοποιούσε όλα τα bits του PC δεν θα ήταν μικρή!! Κάθε καταχώρηση έχει 1 bit που κρατάει τη κατεύθυνση της διακλάδωσης την προηγούμενη φορά που εκτελέστηκε! Αν διαφορετικές διακλαδώσεις αντιστοιχούν στην ίδια θέση του BHT? (aliasing) η προβλεψη είναι μια υπόδειξη. Αν είναι λάθος, δεν παίρνουμε το κέρδος σε χρόνο. Δεν προκαλεί λάθος αποτελέσματα.! Γιατί όχι ένα πεδίο tag όπως σε cache? τεράστια αύξηση χωρητικότητας BHT 14

Λειτουργία BTB - BHT Send PC to memory and branch-target buffer IF Entry found in branch-target buffer? Yes ID Is instruction a taken branch? Yes Send out predicted PC rmal instruction execution Taken branch? Yes EX Enter branch instruction address and next PC into branchtarget buffer Mispredicted branch, kill fetched instruction; restart fetch at other target; delete entry from target buffer Branch correctly predicted; continue execution with no stalls 15

1 bit δεν αρκεί! Σκεφτείτε τη διακλάδωση στο τέλος ενός βρόγχου! Είναι πάντα taken εκτός από τη τελευταία επανάλληψη! Αν ο βρόγχος βρίσκεται μέσα σε έναν άλλο...! στο τέλος του εσωτερικού βρόγχου το bit του BHT θα γίνει 0 (not- taken)! την επόμενη φορά που θα εκτελεστεί ο εσωτερικός βρόγχος, η πρόβλεψη θα αποτύχει! Αν έχουμε 2- bit μπορούμε να αλλάζουμε τη πρόβλεψη όταν κάνουμε 2 φορές λάθος 16

2- bit state machine! Υπάρχουν αρκετές παραλλαγές (με διαφορετικές μεταβάσεις) παρόμοιες επιδόσεις! Δεν υπάρχει μεγάλο όφελος από περισσότερα bits 17

Πρόβλεψη με μοτίβα Παράδειγμα: for i = 0 to N for j = 0 to 3! Η (τελική) διακλάδωση του βρόγχου j: 11101110111011101110! Μοτίβα: 111 - > 0, 110 - > 1 101 - > 1, 011 - > 1! 100% ακρίβεια πρόβλεψης, εκμάθηση μετά από 4 φορές! Χρειάζεται η διεύθυνση και τα αποτελέσματα των n τελευταίων εκτελέσεων της διακλάδωσης local history 18

Two- Level Local History Predictor! 2 επίπεδα τοπικής «ιστορίας»! Τι αποτελέσματα (μοτίβο) είχε αυτή η διακλάδωση στο παρελθόν! Το μοτίβο διαλέγει θέση (διεύθυνση) στο PHT PC BHR BHR BHR BHR PHT Prediction 19

CorrelaTng branch predictors! Οι predictors που εξετάσαμε χρησιμοποιούν την πληροφορία από τις προηγούμενες εκτελέσεις της διακλάδωσης για να προβλέψουν το μέλλον (local informaton)! Συχνά η ακρίβεια πρόβλεψης βελτιώνεται εξετάζοντας τη συμπεριφορά άλλων διακλαδώσεων 20

CorrelaTng branch predictors! Πώς παίρνει υπόψη τις κατευθύνσεις των m προηγούμενων διακλαδώσεων (m- bit global history)? Σχηματίζει διεύθυνση για το BHT χρησιμοποιώντας m bits από τις προηγούμενες κατευθύνσεις (π.χ. 0- untaken, 1- taken) και κάποια bits από το PC.! Η πληροφορία για τις m προηγούμενες διακλαδώσεις κρατιέται στον Global History Register (GHR) ένας απλός καταχωρητής ολίσθησης (shiz- register) μήκους m bits το αποτέλεσμα κάθε διακλάδωσης καταγράφεται και το παλιότερο αποτέλεσμα χάνεται 21

2- level predictors Γνωστός correlatng predictor: gshare predictor 2- level global predictor PHT Global BHR Prediction 22

Tournament predictors! Πολλαπλοί predictors, επιλογή του πιο πετυχημένου για κάθε διακλάδωση! Συνήθως δύο predictor ένας βασίζεται σε τοπική πληροφορία (για τη συγκεκριμένη διακλάδωση μόνο) ένας σε global πληροφορία (m προηγούμενες διακλαδώσεις)! Ο επιλογέας (selector) διαλέγει ποιού predictor το αποτέλεσμα θα δοθεί ως τελικό συνήθως είναι ένας 2- bit counter (όπως αυτοί στο BHT) που παρακολουθεί ποιός predictor ήταν ο καλύτερος 23

Επιστροφές υπορουτινών! Οι σύγχρονες γλώσσες προγραμματισμού χρησιμοποιούν πολύ συχνά κλήσεις υπορουτινών! Η κατεύθυνση της εντολής επιστροφής θα μαθευτεί από το BTB/BHT αλλά ο στόχος γενικά είναι διαφορετικός κάθε φορά! Αλλά οι κλήσεις υπορουτινών δουλεύουν ως μια στοίβα! Return Address Predictor: μια στοίβα διευθύνσεων επιστροφής σε κάθε κλήση υπορουτίνας η διεύθυνση επιστροφής μπαίνει στη στοίβα σε κάθε επιστροφή, χρησιμοποιείται αντί της τιμής του ΒΤΒ 24

Διαφοροποιημένη διοχέτευση Integer unit EX FP/integer multiply M1 M2 M3 M4 M5 M6 M7 IF ID MEM WB FP adder A1 A2 A3 A4 FP/integer divider DIV 25

Κίνδυνοι δεδομένων! RAW μια εντολή πρέπει να διαβάσει ένα καταχωρητή αφού αυτός έχει γραφτεί από την εντολή που παράγει το αποτέλεσμα. Συνηθισμένη μεταφορά αποτελεσμάτων μεταξύ εντολών! WAW τα αποτελέσματα της τελευταίας εντολής πρέπει να γραφτούν στο καταχωρητή! WAR μια εντολή πρέπει να γράψει σε ένα καταχωρητή αφού και η τελευταία εντολή που χρειάζεται τα προηγούμενα δεδομένα τον έχει διαβάσει δεν μπορεί να συμβεί στην υλοποίηση που εξετάζουμε 26

Κίνδυνοι και προώθηση! Δομικοί κίνδυνοι ο διαιρέτης δεν είναι διοχετευμένος εγγραφές περισσότερων από 1 καταχωρητών μπορεί να χρειαστούν! Κίνδυνοι δεδομένων Συχνότερα παγώματα για αποτελέσματα, λόγω μεγαλύτερης καθυστέρησης μονάδων πιθανό WAW αφού οι εντολές δε φτάνουν στο στάδιο WB με τη σειρά προγράμματος! Προβλήματα υλοποίησης διακοπών εντολές ολοκληρώνονται εκτός σειράς προγράμματος 27

Παραδείγματα! χ 28

Δομικος κίνδυνος θ. εγγραφής! Παρακολούθηση εγγραφών καταχωρητής ολίσθησης παρακολουθεί πότε θα γίνουν εγγραφές στο αρχείο καταχωρητών Αν η εντολή στο στάδιο ID θα γράψει στο αρχείο καταχωρητών στον ίδιο κύκλο με μια παλιότερη εντολή, καθυστερεί η εκκίνησή της (πάγωμα- stall) για ένα κύκλο Πλεονέκτημα: μόνο στο στάδιο ID γίνονται παγώματα! Πάγωμα στο στάδιο WB (ή ΜΕΜ) πρίν την εγγραφή έλεγχος και καθυστέρηση εντολών συχνά δίνεται προτεραιότητα στην εντολή με τη μεγαλύτερη καθυστέρηση 29

Κίνδυνοι WAW! Σπάνιο: πρέπει ένας καταχωρητής να γραφτεί 2 φορές χωρίς στο μεταξύ να διαβάζεται λάθος/μη βέλτιστος κώδικας; Μπορεί να συμβεί σε delay slots διακλάδωσης,...! Αντιμετώπιση καθυστέρηση της 2 ης εντολής ώστε η παλιότερη να έχει γράψει το αποτέλεσμά της ακύρωση της παλιότερης εντολής ώστε το καινούριο αποτέλεσμα να μείνει στον καταχωρητή 30

Υλοποίηση ελέγχου! Δομικοί κίνδυνοι: καθυστέρησε εκκίνηση μέχρι η μονάδα εκτέλεσης να είναι ελεύθερη και η θύρα εγγραφής να είναι διαθέσιμη! Ελεγχος για κίνδυνο RAW: καθυστέρησε εκκίνηση ώστε κανένας καταχωρητής πηγής να μήν περιμένει ακόμη αποτελέσματα στο κύκλο που η εντολή τα χρειάζεται! Ελεγχος για κίνδυνο WAW: (απλοποιημένος) καθυστέρησε εκκίνηση αν κάποια εντολή σε στάδιο εκτέλεσης (Α1-4, D*, M1-7) έχει τον ίδιο καταχωρητή προορισμού! Παρόμοια για προώθηση αποτελεσμάτων... 31

Maintaining precise exceptons! Πρόβλημα: η SUB προκαλεί διακοπή αφού έχει ολοκληρωθεί η ADD αλλά όχι η DIV imprecise excepton: δεν έχουν ολοκληρωθεί όλες οι εντολές πριν από αυτή που προκάλεσε τη διακοπή.! Πρόβλημα: η DIV προκαλεί διακοπή αφού έχει ολοκληρωθεί η ADD 32

Αντιμετώπιση! Αγνόηση του προβλήματος 2 καταστάσεις λειτουργίας: γρήγορη που αγνοεί τις διακοπές, αργή που οι εντολές εκτελουνται με τη σειρά του προγράμματος! Αποθήκευση «προσωρινών» αποτελεσμάτων μέχρι να σιγουρευτούμε ότι δεν υπάρχουν διακοπές! Επίτρεψη imprecise exceptons και «διόρθωση» με sozware προσομοίωση των εντολών που δεν ολοκληρώθηκαν ανάμεσα στη παλιά εντολή που προκαλεί διακοπή και την τελευταία που έχει ολοκληρωθεί! Καθυστέρηση εκκίνησης μέχρι οι προηγούμενες να είναι σίγουρο ότι δεν θα προκαλέσουν διακοπή 33

34

Χρονοπρογραμματισμός! Για βέλτιστη εκμετάλευση της διοχέτευσης χρειάζεται καλός χρονοπρογραμματισμός (scheduling): τοποθέτηση εντολών με σειρά που να ελαχιστοποιεί τις καθυστερήσεις (παγώματα) λόγω κινδύνων! Μπορεί να γίνει στατικά από τον προγραμματιστή ή τον μεταγλωτιστή! Η δυναμικά από τον επεξεργαστή (dynamic scheduling) 35

Dynamic Scheduling! Σε απλές διοχετεύσεις όταν μια εντολή παγώσει στην αρχή της εκτέλεσής της, οι επόμενες εντολές επίσης παγώνουν! Ο δυναμικός χρονοπρογραμματισμός, επιτρέπει σε μετέπειτα εντολές να εκκινηθούν αν είναι ανεξάρτητες! Αποτέλεσμα: εκτέλεση και ολοκλήρωση εκτός σειράς: out- of- order (OOO) executon, completon! Το στάδιο ID χωρίζεται σε δύο Εκκίνηση (Issue) αποκωδικοποίηση, έλεγχος δομικών κινδύνων Ανάγνωση τελεστέων (read operands) περιμένε μέχρι να μην υπάρχουν κίνδυνοι δεδομένων, και μετά διάβασε τελεστέους 36

Scoreboard! Μέθοδος που επιτρέπει εκκινηση εκτός σειράς κρατά όλες τις απαραίτητες πληροφορίες για να γνωρίζουμε τις εξαρτήσεις μεταξύ εντολών ώστε να μη συμβούν λάθη! Κάθε εντολή «περνά» μέσα από το scoreboard στο στάδιο εκκίνησης και καταγράφονται οι εξαρτήσεις της! Το scoreboard αποφασίζει πότε μια εντολή μπορεί να διαβάσει τους τελεστέους της και να αρχίσει να εκτελείται! Επίσης αποφασίζει πότε θα γράψει το αποτέλεσμα στο καταχωρητή προορισμού 37

Εκκίνηση! Αν υπάρχει διαθέσιμη μονάδα εκτέλεσης (functonal unit) και καμία ήδη εκκινημένη εντολή δεν γράφει αποτέλεσμα στον ίδιο καταχωρητή, γίνεται εκκίνηση της εντολής! Αλλιώς παγώνει το στάδιο εκκίνησης και τα προηγούμενα! Εκκίνηση εντολής: αποστολή στη κατάλληλη μονάδα εκτέλεσης! Μερικοί ονομάζουν αυτό το στάδιο (και τη πράξη) dispatch (αποστολή) 38

Ανάγνωση τελεστέων! Το scoreboard παρακολουθεί πότε οι τελεστέοι μιας εκκινημένης εντολής είναι διαθέσιμοι αν καμιά εντολή που εκκινήθηκε νωρίτερα πρόκειται να τον γράψει! Οταν όλοι οι τελεστέοι μιας εντολής είναι διαθέσιμοι, το scoreboard ενημερώνει τη μονάδα εκτέλεσης να προχωρήσει στην ανάγνωση των τελεστέων και να αρχίσει την εκτέλεση της εντολής 39

Εκτέλεση, εγγραφή αποτελεσμάτων! Η εκτέλεση διαρκεί έναν αριθμό από κύκλους! Οταν τελειώσει ενημερώνει το scoreboard! To scoreboard δίνει οδηγία για εγγραφή αποτελεσμάτων! Παγώνει την εγγραφή αν υπάρχει κίνδυνος WAR κάποια εντολή χρειάζεται ακόμα τη παλιά τιμή του καταχωρητή μπορούν να συμβούν γιατί η ανάγνωση τελεσταίων δεν γίνεται πλέον με τη σειρά προγράμματος 40

Προώθηση αποτελεσμάτων! Εντολή περιμένει μέχρι να είναι έτοιμοι και οι δύο τελεστές της! Δεν εκμεταλεύεται τη προώθηση αποτελεσμάτων χάσιμο επίδοσης?! Τα αποτελέσματα γράφονται αμέσως μετά τον υπολογισμό τους αν δεν υπάρχουν κίνδυνοι WAR!... αντί να περιμένουν τη στατικά καθορισμένη χρονική στιγμή που έχουν σε μια συμβατική διοχέτευση (στάδιο WB)! Μικρότερη καθυστέρηση (latency), παρόμοια με αυτή που πετυχαίνουμε με προώθηση 1 επιπλέον κύκλος γιατί ανάγνωση τελεστέων και εγγραφή δεν επικαλύπτονται 41

Παράδειγμα scoreboard Registers Data buses FP mult FP mult 10 cycle latency FP divide 40 cycle latency FP add 2 cycle latency Integer unit Control/ status Scoreboard Control/ status 42

Cycle: 1 Instruction status Instruction Issue Read operands Execution complete Write result L.D F6, 34(R2) L.D F2, 45(R3) MUL.D F0, F2, F4 SUB.D F8, F6, F2 DIV.D F10, F0, F6 ADD.D F6, F8, F2 Functional unit status Unit name Busy Op Fi Fj Fk Qj Qk Rj Rk Integer yes Load F2 R3 Mult1 yes Mult F0 F2 F4 Integer yes Mult2 Add yes Sub F8 F6 F2 Integer yes Divide yes Div F10 F0 F6 Mult1 yes Register result status FU F0 F2 F4 F6 F8 F10... Mult1 Integer Add Divide 43

Cycle: 2 Instruction status Instruction Issue Read operands Execution complete Write result L.D F6, 34(R2) L.D F2, 45(R3) MUL.D F0, F2, F4 SUB.D F8, F6, F2 DIV.D F10, F0, F6 ADD.D F6, F8, F2 Functional unit status Unit name Busy Op Fi Fj Fk Qj Qk Rj Rk Integer Mult1 yes Mult F0 F2 F4 Integer yes Mult2 Add yes Sub F8 F6 F2 Integer yes Divide yes Div F10 F0 F6 Mult1 yes Register result status FU F0 F2 F4 F6 F8 F10... Mult1 Add Divide 44

Cycle: 3 Instruction status Instruction Issue Read operands Execution complete Write result L.D F6, 34(R2) L.D F2, 45(R3) MUL.D F0, F2, F4 SUB.D F8, F6, F2 DIV.D F10, F0, F6 ADD.D F6, F8, F2 Functional unit status Unit name Busy Op Fi Fj Fk Qj Qk Rj Rk Integer Mult1 yes Mult F0 F2 F4 Mult2 Add yes Sub F8 F6 F2 Divide yes Div F10 F0 F6 Mult1 yes Register result status FU F0 F2 F4 F6 F8 F10... Mult1 Add Divide 45

Cycle: 5 Instruction status Instruction Issue Read operands Execution complete Write result L.D F6, 34(R2) L.D F2, 45(R3) MUL.D F0, F2, F4 SUB.D F8, F6, F2 DIV.D F10, F0, F6 ADD.D F6, F8, F2 Functional unit status Unit name Busy Op Fi Fj Fk Qj Qk Rj Rk Integer Mult1 yes Mult F0 F2 F4 Mult2 Add yes Sub F8 F6 F2 Divide yes Div F10 F0 F6 Mult1 yes Register result status FU F0 F2 F4 F6 F8 F10... Mult1 Add Divide 46

Cycle: 6 Instruction status Instruction Issue Read operands Execution complete Write result L.D F6, 34(R2) L.D F2, 45(R3) MUL.D F0, F2, F4 SUB.D F8, F6, F2 DIV.D F10, F0, F6 ADD.D F6, F8, F2 Functional unit status Unit name Busy Op Fi Fj Fk Qj Qk Rj Rk Integer Mult1 yes Mult F0 F2 F4 Mult2 Add yes Add F6 F8 F2 Yes Divide yes Div F10 F0 F6 Mult1 yes Register result status FU F0 F2 F4 F6 F8 F10... Mult1 Add Divide 47

Cycle: 7 Instruction status Instruction Issue Read operands Execution complete Write result L.D F6, 34(R2) L.D F2, 45(R3) MUL.D F0, F2, F4 SUB.D F8, F6, F2 DIV.D F10, F0, F6 ADD.D F6, F8, F2 Functional unit status Unit name Busy Op Fi Fj Fk Qj Qk Rj Rk Integer Mult1 yes Mult F0 F2 F4 Mult2 Add yes Add F6 F8 F2 Divide yes Div F10 F0 F6 Mult1 yes Register result status FU F0 F2 F4 F6 F8 F10... Mult1 Add Divide 48

Cycle: 9 Instruction status Instruction Issue Read operands Execution complete Write result L.D L.D MUL.D SUB.D DIV.D ADD.D F6, 34(R2) F2, 45(R3) F0, F2, F4 F8, F6, F2 F10, F0, F6 F6, F8, F2 Functional unit status Can t write result WAR hazard Unit name Busy Op Fi Fj Fk Qj Qk Rj Rk Integer Mult1 yes Mult F0 F2 F4 Mult2 Add yes Add F6 F8 F2 Divide yes Div F10 F0 F6 Mult1 yes Register result status FU F0 F2 F4 F6 F8 F10... Mult1 Add Divide 49

Cycle: 13 Instruction status Instruction Issue Read operands Execution complete Write result L.D F6, 34(R2) started at cycle 3 L.D MUL.D SUB.D F2, 45(R3) F0, F2, F4 F8, F6, F2 DIV.D F10, F0, F6 ADD.D F6, F8, F2 Functional unit status Unit name Busy Op Fi Fj Fk Qj Qk Rj Rk Integer Mult1 yes Mult F0 F2 F4 Mult2 Add yes Add F6 F8 F2 Divide yes Div F10 F0 F6 Mult1 yes Register result status FU F0 F2 F4 F6 F8 F10... Mult1 Add Divide 50

Cycle: 14 Instruction status Instruction Issue Read operands Execution complete Write result L.D L.D MUL.D SUB.D DIV.D ADD.D F6, 34(R2) F2, 45(R3) F0, F2, F4 F8, F6, F2 F10, F0, F6 F6, F8, F2 Functional unit status Unit name Busy Op Fi Fj Fk Qj Qk Rj Rk Integer Mult1 Mult2 Add yes Add F6 F8 F2 Divide yes Div F10 F0 F6 Yes yes Register result status FU F0 F2 F4 F6 F8 F10... Add Divide 51

Cycle: 15 Instruction status Instruction Issue Read operands Execution complete Write result L.D L.D MUL.D SUB.D DIV.D ADD.D F6, 34(R2) F2, 45(R3) F0, F2, F4 F8, F6, F2 F10, F0, F6 F6, F8, F2 Functional unit status Unit name Busy Op Fi Fj Fk Qj Qk Rj Rk Integer Mult1 Mult2 Add Divide yes Div F10 F0 F6 Register result status FU F0 F2 F4 F6 F8 F10... Divide 52

Cycle: 55 Instruction status Instruction Issue Read operands Execution complete Write result L.D L.D MUL.D SUB.D DIV.D ADD.D F6, 34(R2) F2, 45(R3) F0, F2, F4 F8, F6, F2 F10, F0, F6 F6, F8, F2 Functional unit status Unit name Busy Op Fi Fj Fk Qj Qk Rj Rk Integer Mult1 Mult2 Add Divide yes Div F10 F0 F6 Register result status FU F0 F2 F4 F6 F8 F10... Divide 53

Cycle: 56 Instruction status Instruction Issue Read operands Execution complete Write result L.D L.D MUL.D SUB.D DIV.D ADD.D F6, 34(R2) F2, 45(R3) F0, F2, F4 F8, F6, F2 F10, F0, F6 F6, F8, F2 Functional unit status Unit name Busy Op Fi Fj Fk Qj Qk Rj Rk Integer Mult1 Mult2 Add Divide Register result status FU F0 F2 F4 F6 F8 F10... 54

Scoreboard rules 55