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

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

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

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

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

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

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

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

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

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

Διάλεξη 14 Εισαγωγή στην Ιεραρχία Μνήμης

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

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

(Branch Prediction Mechanisms)

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

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

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

Σχεδίαση μονάδας ελέγχου επεξεργαστή

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

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

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

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

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

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

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

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

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

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

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

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

Άσκηση IF ID EX MEM WB α. 300ps 400ps 350ps 500ps 100ps β. 200ps 150ps 120ps 190ps 140ps

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

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

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

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

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

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

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

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

Pipelined Datapath, Hazards and Forwarding

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Οργάνωση Η/Υ. Γιώργος Δημητρίου. Μάθημα 4 ο ΜΕΔ πολλαπλών κύκλων

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

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

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

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

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;

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

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

AΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ (5 ο εξάμηνο) ΕΠΑΝΑΛΗΠΤΙΚΗ ΕΞΕΤΑΣΗ (ΦΘΙΝΟΠΩΡΟ 2007) ΔΙΑΡΚΕΙΑ ΕΞΕΤΑΣΗΣ: 2 ΩΡΕΣ 30 ΛΕΠΤΑ

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

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

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

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

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

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

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

Παραδείγματα Assembly (Μέρος

Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering. Εργαστήριο 1. Χειμερινό Εξάμηνο

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

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

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

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

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

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

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

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

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

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 3 Εντολές του MIPS (2)

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

Χρονισμός και Απόδοση Υπολογιστικών Συστημάτων

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

Transcript:

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

Η μέχρι τώρα μικρο-αρχιτεκτονική (Eντολές Διακλάδωσης) Η μικρο-αρχιτεκτονική μας παίρνει απόφαση για την κατεύθυνση και τον προορισμό της εντολής beq στο στάδιο MEM στον κύκλο 4. 1 P C 4 0 PCSrc Add IF/ID Control RegWrite ID/EX WB M EX << 2 Add EX/MEM WB M Branch Zero PCSrc MEM/WB WB Read Instruction address [31-0] Instruction memory Sign extend Read register 1 Read register 2 Write register Write data Instr [20-16] Instr [15-11] Read data 1 Read data 2 Registers Zero ALU 0 Result 1 ALUOp ALUSrc RegDst 0 1 Address Write data MemWrite Data memory MemRead Read data MemToReg 1 0 Οργάνωση και Σχεδίαση Η/Υ (HY232) 2

Κίνδυνοι Ελέγχου (Control Hazards) Η μικρο-αρχιτεκτονική μας παίρνει απόφαση για την κατεύθυνση της εντολής beq στο στάδιο MEM στον κύκλο 4. Αλλά πρέπει να ξέρουμε αυτήν απόφαση πιο νωρίς για να φέρουμε την σωστή επόμενη εντολή. Αλλιώς, αντί να φέρουμε την lw εάν η εντολή beq κάνει άλμα (TAKEN), θα φέρουμε την and Οργάνωση και Σχεδίαση Η/Υ (HY232) 3

Καθυστέρηση (Stalling) Μία λύση είναι να καθυστερήσουμε το pipeline κατά 3 κύκλους μέχρι να πάρουμε την απόφαση για το αποτέλεσμα της εντολής διακλάδωσης Κύκλος μηχανής 1 2 3 4 5 6 7 8 beq $1, $3, 28 IM Reg DM Reg??? IM Reg DM Reg Στην συγκεκριμένη περίπτωση, θα πρέπει να δημιουργήσουμε 3 εντολές nop ώστε στην συνέχεια να φέρουμε την σωστή εντολή από την μνήμη. Τρείς κύκλοι κάθε φορά που έχουμε εντολή διακλάδωσης είναι πολλοί. Μπορούμε να τους μειώσουμε; Είναι σημαντικό; Οργάνωση και Σχεδίαση Η/Υ (HY232) 4

Ανάλυση Απόδοσης Όχι άλμα Καμία επιβάρυνση Άλμα 3 κύκλοι επιβάρυνσης Έστω ότι 20% εντολές διακλάδωσης 50% των εντολών διακλάδωσης κάνουν άλμα Νέο CPI = [ 1 + (0.20*0.50) * 3 ] = = [ 1 + 0.1 * 3 ] = 1.3 (30% επιβάρυνση) Πιθανότητα λανθασμένου μονοπατιού Επιβάρυνση (penalty) λανθασμένου μονοπατιού Πως μπορούμε να μειώσουμε τους δύο αυτούς όρους; 5

1 η Μέθοδος μείωσης της επιβάρυνσης: Μείωση των κύκλων καθυστέρησης Η εκτέλεση μιας εντολής διακλάδωσης (beq rs, rt, Label) απαιτεί δύο πράγματα: Τον υπολογισμό της διεύθυνσης προορισμού: PC <= Label Την απόφαση για το εάν η εντολή διακλάδωσης είναι TAKEΝ ή NOT TAKEN Και οι δύο αυτοί υπολογισμοί πρέπει να γίνουν νωρίτερα (δηλ. να μεταφερθούν πιο πριν στο pipeline) για να μπορέσουμε να μειώσουμε την ποινή της καθυστέρησης. Θα μεταφέρουμε και τους δύο αυτούς υπολογισμούς στο στάδιο ID. O υπολογισμός της διεύθυνσης προορισμού μπορεί εύκολα να μεταφερθεί από το στάδιο EX στο στάδιο ID με το να μεταφέρουμε την μικρή ALU και το left shift by 2. Η απόφαση για την διακλάδωση μπορεί να γίνει με επιπλέον hardware που απλά θα ελέγχει εάν οι 2 καταχωρητές rs και rt που μόλις διαβάστηκαν από το register file είναι ίσοι. Αυτό γίνεται απλά με 32 πύλες XOR. Μπορεί όμως να αυξήσει την περίοδο του ρολογιού. Οργάνωση και Σχεδίαση Η/Υ (HY232) 6

P C Nέο pipeline για μικρότερο penalty στις εντολές 4 1 0 PCSrc Add IF/ID << 2 Control RegWrite Zero Add διακλάδωσης ID/EX WB M EX Τι θα γίνει εάν έχουμε τις εντολές sub $2, $1, $3 beq $4, $2, L Πιο πολύπλοκη πρoώθηση και ένας κύκλος stall! EX/MEM WB M MEM/WB WB Read Instruction address [31-0] Instruction memory Sign extend Read register 1 Read register 2 Write register Write data Instr [20-16] Instr [15-11] Read data 1 Read data 2 Registers = ALU 0 Result 1 ALUOp ALUSrc RegDst 0 1 Address Write data MemWrite Data memory MemRead Read data MemToReg 1 0 Οργάνωση και Σχεδίαση Η/Υ (HY232) 7

2 η Μέθοδος μείωσης της επιβάρυνσης: Καθυστερημένες Εντολές Διακλάδωσης Ιδέα: αφού έτσι και αλλιώς είμαστε υποχρεωμένοι να φέρουμε Ν extra εντολές στην CPU, ας προσπαθήσουμε να είναι χρήσιμες. Στην αρχική αρχιτεκτονική N=3, ενώ στην βελτιωμένη Ν=1. Οι Ν επόμενες εντολές μετά την διακλάδωση εκτελούνται κανονικά. Χωρίς pipeline flush Delayed branch : η διακλάδωση ουσιαστικά καθυστερεί Ν εντολές. Η τιμή του Ν εξαρτάται από την αρχιτεκτονική Οργάνωση και Σχεδίαση Η/Υ (HY232) 8

Delayed Branch O compiler θα πρέπει να βρει N χρήσιμες εντολές και να τις τοποθετήσει μετά την διακλάδωση. Εδώ Ν = 1. Όχι πάντα δυνατόν. Ίσως χρειαστούν extra εντολές από τον compiler. H μέθοδος χρησιμοποιείται μόνο για μικρά pipelines. a. From before b. From target c. From fall through add $s1, $s2, $s3 if $s2 = 0 then Delay slot Becomes if $s2 = 0 then add $s1, $s2, $s3 Εύκολο 9 sub $t4, $t5, $t6 add $s1, $s2, $s3 if $s1 = 0 then Delay slot Becomes add $s1, $s2, $s3 if $s1 = 0 then sub $t4, $t5, $t6 Ίσως χρειάζονται αλλαγές στον κώδικα Οργάνωση και Σχεδίαση Η/Υ (HY232) add $s1, $s2, $s3 if $s1 = 0 then Delay slot sub $t4, $t5, $t6 Becomes add $s1, $s2, $s3 if $s1 = 0 then sub $t4, $t5, $t6 Ίσως χρειάζονται αλλαγές στον κώδικα

3 η Μέθοδος μείωσης της επιβάρυνσης: Πρόβλεψη διακλάδωσης Αφού μειώσαμε τους κύκλους καθυστέρησης από 3 σε 1 και σε 0 ας δούμε πως μπορούμε να μειώσουμε ακόμα περαιτέρω τους κινδύνους ελέγχου Μπορούμε να μαντέψουμε την απόφαση της διακλάδωσης με διάφορους τρόπους Η πιο απλή προσέγγιση είναι να θεωρήσουμε ότι η διακλάδωση είναι πάντα NOT TAKEN. Απλά αύξησε τον PC<=PC+4 και φέρε την επόμενη εντολή ως σαν να μην είχαμε διακλάδωση Εάν αποδειχθούμε σωστοί, τότε το pipeline προχωράει full speed χωρίς καμία απολύτως καθυστέρηση. Κύκλος μηχανής 1 2 3 4 5 6 7 beq $2, $3, Label IM Reg DM Reg επόμενη εντολή 1 IM Reg DM Reg επόμενη εντολή 2 IM Reg DM Reg Οργάνωση και Σχεδίαση Η/Υ (HY232) 10

Πρόβλεψη διακλάδωσης Εάν η υπόθεσή μας είναι λάθος και η διακλάδωση είναι TAKEN, τότε θα έχουμε φέρει λάθος εντολή. 1. Θα πρέπει να κάνουμε flush την εντολή αυτή και να βάλουμε στην θέση της μια εντολή nop. Το flush γίνεται στον καταχωρητή IF/ID 2. Θα πρέπει επίσης να αλλάξουμε τον PC ώστε να αρχίσουμε αμέσως μετά να διαβάζουμε εντολές από την διεύθυνση μνήμης Label. Σε αυτήν την περίπτωση θα έχουμε έναν κύκλο καθυστέρηση (για N=1) Κύκλος μηχανής 1 2 3 4 5 6 7 8 beq $2, $3, Label IM Reg DM Reg next instruction 1 IM flush Label:... IM Reg DM Reg Οργάνωση και Σχεδίαση Η/Υ (HY232) 11

Παράδειγμα Λανθασμένης Πρόβλεψης 36: sub $10, $4, $8 40: beq $1, $3, 7 44: and $12, $2, $5... 72: lw $4, 50($7) Οργάνωση και Σχεδίαση Η/Υ (HY232) 12

Παράδειγμα Λανθασμένης Πρόβλεψης Οργάνωση και Σχεδίαση Η/Υ (HY232) 13

Στατική Πρόβλεψη Διακλάδωσης Στατική πρόβλεψη διακλάδωσης σημαίνει ότι η πρόβλεψη γίνεται από τον προγραμματιστή ή τον compiler πριν την εκτέλεση του προγράμματος. Στατικοί τρόποι πρόβλεψης: 1. Όλες οι διακλαδώσεις προβλέπονται ως NOT TAKEN 2. Backward taken, forward not taken (BTFN): όλες οι διακλαδώσεις προς τα πίσω προβλέπονται ως TAKEN όλες οι διακλαδώσεις προς τα μπροστά προβλέπονται ως NOT TAKEN 3. Profile-driven Ο compiler χρησιμοποιεί αποτελέσματα από προηγούμενες εκτελέσεις του κώδικα για να καταλάβει την συμπεριφορά μιας διακλάδωσης 4. O ίδιος ο προγραμματιστής δίνει ενδείξεις για την κατεύθυνση μιας εντολής διακλάδωσης: if (likely(x)) {... } if (unlikely(error)) { } Οργάνωση και Σχεδίαση Η/Υ (HY232) 14

Δυναμική Πρόβλεψη Διακλάδωσης Στους σύγχρονους επεξεργαστές με μεγάλο αριθμό σταδίων διοχέτευσης (~20), ο αριθμός των κύκλων μηχανής που πληρώνουμε για λάθος πρόβλεψης διακλάδωσης είναι πολύ μεγαλύτερος. Σημαντικός παράγοντας για την χαμηλή απόδοση του συστήματος. Η δυναμική πρόβλεψη της κατεύθυνσης μιας διακλάδωσης προσπαθεί να μάθει από την συμπεριφορά προηγούμενων εκτελέσεων. Οργάνωση και Σχεδίαση Η/Υ (HY232) 15

Δυναμική Πρόβλεψη Διακλάδωσης Κανόνας 1: Το αποτέλεσμα μιας εντολής διακλάδωσης Β (Taken / Not Taken) εξαρτάται από προηγούμενες εκτελέσεις της εντολής αυτής Υπάρχει συσχέτιση σε διαδοχικές εκτελέσεις της Β Οργάνωση και Σχεδίαση Η/Υ (HY232) 16

Δυναμική Πρόβλεψη Διακλάδωσης Ο πιο απλός αλγόριθμος δυναμικής πρόβλεψης: προέβλεψε ότι η διακλάδωση θα συμπεριφερθεί όπως ακριβώς και στην αμέσως προηγούμενη εκτέλεση της. outer: inner: beq,, inner beq,, outer Απλή αλλά ασταθής λύση. Πρόβλεψη 1-bit Στο παραπάνω κώδικα η εντολή beq του inner loop θα προβλεφθεί λάθος 2 φορές για κάθε εκτέλεση του εξωτερικού loop. Οργάνωση και Σχεδίαση Η/Υ (HY232) 17

Πρόβλεψη 1-bit taken not taken predict not taken predict taken taken not taken Οργάνωση και Σχεδίαση Η/Υ (HY232) 18

Πρόβλεψη 2-bit Χρησιμοποιώντας μια μηχανή πεπερασμένων καταστάσεων μπορούμε να αποφύγουμε να αλλάζουμε απόφαση την πρώτη φορά που έχουμε λανθασμένη πρόβλεψη. Κάνουμε την πρόβλεψη πιο σταθερή Οργάνωση και Σχεδίαση Η/Υ (HY232) 19

Υπολογισμός Διεύθυνσης Διακλάδωσης Εκτός από την πρόβλεψη για το εάν η διακλάδωση θα είναι TAKEN ή NOT TAKEN, πρέπει να υπολογίσουμε και την διεύθυνση προορισμού. Branch target buffer, BTB (προσωρινή μνήμη προορισμού διακλάδωσης) Μνήμη cache (μνήμες caches στο επόμενο κεφ.) που αποθηκεύει μόνο εντολές διακλάδωσης, πληροφορίες σχετικά με την προηγούμενη συμπεριφορά της εντολής διακλάδωσης και την διεύθυνση προορισμού. Κάθε φορά που είναι να φέρουμε μια καινούργια εντολή από την μνήμη, ελέγχουμε ταυτόχρονα και τον branch target buffer Εάν βρούμε την εντολή διακλάδωσης εκεί, και η διακλάδωση είναι TAKEN, τότε μπορούμε να φέρουμε την νέα εντολή από την διεύθυνση προορισμού που μας δείχνει η διακλάδωση Οργάνωση και Σχεδίαση Η/Υ (HY232) 20

Branch Target Buffer (BTB) Παράλληλη προσπέλαση της Μνήμης Εντολών και του ΒΤΒ στο στάδιο IF. Εάν βρούμε την διεύθυνση του PC μέσα στο BTB, τότε χρησιμοποιούμε την Target Addr για να διαβάσουμε από την Μνήμη Εντολών (και όχι τον PC) 1 P C 4 0 PCSrc Add IF/ID Control RegWrite ID/EX WB M EX << 2 Add EX/MEM WB M Branch Zero PCSrc MEM/WB WB Read Instruction address [31-0] Tag 0x1010A Instruction memory V 1 0 Target Addr. 0x1010A000 Sign extend Read register 1 Read register 2 Write register Write data Instr [20-16] Instr [15-11] Read data 1 Read data 2 Registers 0 1 ALUSrc RegDst 0 1 ALU Result ALUOp Zero Address Write data MemWrite Data memory MemRead Read data MemToReg 1 0 0x10200 1 0x10110B00 Branch Target Buffer Οργάνωση και Σχεδίαση Η/Υ (HY232) 21

Δυναμική Πρόβλεψη Διακλάδωσης Κανόνας 1: Το αποτέλεσμα μιας εντολής διακλάδωσης (Taken / Not Taken) εξαρτάται από το αποτέλεσμα προηγούμενων εκτελέσεων της εντολής αυτής Υπάρχει συσχέτιση σε διαδοχικές εκτελέσεις της Β Κανόνας 2: Το αποτέλεσμα μιας εντολής διακλάδωσης Β (Taken / Not Taken) εξαρτάται και από το αποτέλεσμα και άλλων εντολών διακλάδωσης. Συνήθως στην γειτονιά της Β Οργάνωση και Σχεδίαση Η/Υ (HY232) 22

Δυναμική Πρόβλεψη Διακλάδωσης Πρόσφατες εκτελέσεις μιας διακλάδωσης συσχετίζονται με μιά επόμενη εντολή διακλάδωσης Εαν η πρώτη συνθήκη είναι False, η δεύτερη θα είναι σίγουρα False Εαν η πρώτη συνθήκη είναι True, η δεύτερη θα είναι σίγουρα False Οργάνωση και Σχεδίαση Η/Υ (HY232) 23

Δυναμική Πρόβλεψη Διακλάδωσης if (aa==2) aa=0; if (bb==2) bb=0; if (aa!=bb) {. } ;; B1 ;; B2 ;; B3 if (B1 == True) && (B2 == True) then B3 = False NT NT T Οργάνωση και Σχεδίαση Η/Υ (HY232) 24

Δυναμική Πρόβλεψη Διακλάδωσης Η ιδέα είναι να κάνουμε πρόβλεψη βασιζόμενοι στην εκτέλεση των αμέσως προηγούμενων εντολών διακλάδωσης. Global Branch History Table (GBHT)\ Ακόμα καλύτερα: Συνδιασμός του GBHT με την πρόβλεψη των 2 bits για τις προηγούμενες εκτελέσεις του ίδιου branch Οργάνωση και Σχεδίαση Η/Υ (HY232) 25

Αποτίμηση της Πρόβλεψης Διακλάδωσης Οι εντολές διακλάδωσης είναι ο κυριότερος ένοχος μειωμένης απόδοσης του συστήματος (μετά τις εντολές προσπέλασης μνήμης). Σε επεξεργαστές υψηλής απόδοσης (high performance processors), η λανθασμένη πρόβλεψη του branch επιφέρει πολλούς κύκλους ποινής. Πολλές εντολές θα πρέπει να γίνουν flush σε μια τέτοια περίπτωση. Όλοι οι μοντέρνοι επεξεργαστές χρησιμοποιούν δυναμική πρόβλεψη διακλαδώσεων. Ακριβείς προβλέψεις (>95%) της κατεύθυνσης διακλάδωσης είναι πάρα πολύ σημαντικές για καλή απόδοση ενός επεξεργαστικού συστήματος υψηλής απόδοσης. Για αυτό και όλες αυτές οι CPUs χρησιμοποιούν πολύπλοκα συστήματα πρόβλεψης διακλάδωσης που μαθαίνουν την συμπεριφορά της εντολής κατά την διάρκεια εκτέλεσης του προγράμματος. Πολύ σημαντικό ερευνητικό θέμα τα τελευταία 20 χρόνια. Οργάνωση και Σχεδίαση Η/Υ (HY232) 26

Πρόβλεψη διακλάδωσης if ((*ptr1==0) && ((*ptr2=*ptr3)==1) && (*ptr4>2)) val5++; else val6++; lw $t0, ptr1($0) B1: bnez $t0, L_val6 lw $t1, ptr3($0) sw $t1, ptr2($0) C1 B1 C2 B2 C3 B3 C4 Οργάνωση και Σχεδίαση Η/Υ (HY232) B2: bne $t1, $t8, L_val6 lw $t1, ptr4($0) B3: ble $t1, $t9, L_val6 lw $s0, val5($0) addi $s0, $s0, 1 sw $s0, val5($0) j Exit L_val6: lw $s0, val6($0) addi $s0, $s0, 1 sw $s0, val6($0) Exit: 27

Πρόβλεψη διακλάδωσης Ο Pentium 4 (2003) έχει 20 στάδια διοχέτευσης Οι διακλαδώσεις εκτελούνται στο στάδιο 15 Πολλαπλές εντολές branch (B1, B2, B3) ταυτόχρονα μέσα στην αρχιτεκτονική Ο ΒΤΒ πρέπει να δώσει σωστές προβλέψεις για όλες Αλλιώς, εκκένωση της CPU και μείωση της απόδοσης Speculative execution Οργάνωση και Σχεδίαση Η/Υ (HY232) 28

5 η Μέθοδος μείωσης της επιβάρυνσης: ταυτόχρονη εκτέλεση πολλαπλών μονοπατιών Εάν δεν μπορούμε εύκολα να αποφασίσουμε την κατεύθυνση μιας διακλάδωσης, εκτελούμε και τις 2 κατευθύνσεις. Χρήση σε επεξεργαστές υψηλής απόδοσης Χρειαζόμαστε περισσότερο hardware Μπορεί εύκολα να φύγει εκτός ελέγχου Δύσκολη πρόβλεψη C A D E F B Διπλό μονοπάτι Μονοπάτι 1 Μονοπάτι 2 C B D D E E F F Οργάνωση και Σχεδίαση Η/Υ (HY232) 29

6 η Μέθοδος μείωσης της επιβάρυνσης: Εκτέλεση Υπό Συνθήκη: Predication Αφού μας ενοχλούν οι εντολές διακλάδωσης, ας τις ξεφορτωθούμε! Μετατροπή των κινδύνων ελέγχου (control hazards) σε κινδύνους δεδομένων (data hazards) Predication Πολλές σύγχρονες αρχιτεκτονικές το ακολουθούν ARM, μερικώς και η x86 Οργάνωση και Σχεδίαση Η/Υ (HY232) 30

Παράδειγμα Predication if (a!=c) { b = 0; } else { b = 1; } C D A B (branches) T C A D N B beq a, c, TARGET move b, 1 j END TARGET: move b, $0 A B C D (predicates) Οργάνωση και Σχεδίαση Η/Υ (HY232) 31 A B C D p1 = (a!=c) move b, 0, (p1) move b, 1, (!p1) Extra όρισμα εισόδου για κάθε εντολή. Η εντολή εκτελείται μόνο εάν το όρισμα είναι TRUE Εάν είναι FALSE, η εντολή γίνεται NOP

ARM processor is fully predicated Στον ARM, εάν βάλεις το κατάλληλο postfix, κάθε εντολή εκτελείται υπό συνθήκη (predicated) add r0, r1, r2 ; Regular ADD: r0 = r1 + r2 addeq r0, r1, r2 ; r0 = r1 + r2 only if conditional flag ZERO is set Conditional move (CMOV), η πιό γνωστή predicated εντολή του x86. if (A==0) {S=T} p1 = (R1 == 0) CMOV R2, R3, <p1> Οργάνωση και Σχεδίαση Η/Υ (HY232) 32

Predication Πλεονεκτήματα Δεν έχουμε λανθασμένες προβλέψεις των διακλαδώσεων γιατί δεν έχουμε διακλαδώσεις! Δεν υπάρχουν pipeline flushes O compiler μπορεί να εφαρμόσει όλες τις βελτιστοποιήσεις του κώδικα που εμπόδιζαν οι εντολές διακλάδωσης Μειονεκτήματα Κάνουμε περιττή δουλειά: φέρνουμε από την μνήμη και εκτελούμε(μέχρι ενός σημείου) και τα δύο μονοπάτια μιας διακλάδωσης Πολλές εντολές διακλάδωσης είναι εύκολο να προβλεφθούν και δεν υποφέρουν από λάθος προβλέψεις Χρειαζόμαστε υποστήριξη από τo Instruction Set Architecture. Extra πολυπλοκότητα Οργάνωση και Σχεδίαση Η/Υ (HY232) 33