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



Σχετικά έγγραφα
Δυναμική Δρομολόγηση Εντολών (Dynamic Scheduling)

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

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

(Branch Prediction Mechanisms)

CS425 Computer Systems Architecture

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΔΙΑΛΕΞΗ 17: Δυναμικός Παραλληλισμός Εντολών -- Superscalar Επεξεργαστές --

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

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

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

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

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

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

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

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

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

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

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

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

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

CS425 Computer Systems Architecture

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

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

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

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

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

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

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

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

ΔΙΑΛΕΞΗ 17: Δυναμικός Παραλληλισμός Εντολών -- Superscalar Επεξεργαστές --

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

ΔΙΑΛΕΞΗ 18: Στατικός Παραλληλισμός Εντολών VLIW Επεξεργαστές

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

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

CS-425 Mid-term exam

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

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

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

ΔΙΑΛΕΞΗ 17: Δυναμικός Παραλληλισμός Εντολών -- Superscalar Επεξεργαστές --

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

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

Pipelined Datapath, Hazards and Forwarding

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

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

1.1 ΑΣΚΗΣΗ ΛΥΣΗ 2.1 ΑΣΚΗΣΗ ΛΥΣΗ 3.1 ΑΣΚΗΣΗ

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

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

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

ΔΙΑΛΕΞΗ 16: ΠΑΡΑΛΛΗΛΙΣΜΟΣ ΣΤΗΝ ΕΚΤΕΛΕΣΗ ΕΝΤΟΛΩΝ

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

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

Προχωρηµένα Θέµατα Αρχιτεκτονικής

ΔΙΑΛΕΞΗ 16: ΠΑΡΑΛΛΗΛΙΣΜΟΣ ΣΤΗΝ ΕΚΤΕΛΕΣΗ ΕΝΤΟΛΩΝ

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

Πολυνηματικές Αρχιτεκτονικές

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

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

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

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

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

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

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

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

Παράλληλα Συστήματα. Γιώργος Δημητρίου. Ενότητα 2 η : Στοιχεία Αρχιτεκτονικής Υπολογιστών. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

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

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

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

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

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

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

Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems)

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

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

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

Transcript:

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

Instruction-Level Parallelism (ILP) Επικάλυψη εντολών στοχεύοντας στην παράλληλη εκτέλεσή τους Στη συνέχεια θα αναφερθούµε σε Τεχνικές αύξησης του παραλληλισµού Dependencies-Hazards Dynamic-H/W approaches Static-Software techniques

Dependences Τα dependences είναι ιδιότητα ενός προγράµµατος. Το αν ένα dependence είναι αιτία ενός hazard και αν το hazard προκαλεί stall είναι θέµα της pipeline οργάνωσης Data dependence (RAW hazards) Μία εντολή χρειάζεται το αποτέλεσµα άλλης εντολής add r3,r2,r1 sub r4,r3,r5 sw 0(r1),r2 lw r5,10(r3) Name dependence (WAR, WAW hazards) ύο εντολές χρησιµοποιούν το ίδιο όνοµα αλλά δεν ανταλλάσσουν δεδοµένα add r3,r2,r1 sub r2,r4,r5 add r4,r1,r2 mult r4,r6,r7 Control dependence (control hazards) Μία εντολή ελέγχου καθορίζει αν µία εντολή εκτελείται beqz r3,location sub r2,r4,r5 add r4,r1,r2 bnez r9,loop

Dynamic Scheduling To H/W αναδιοργανώνει την εκτέλεση των εντολών µε στόχο τη µείωση των stalls διατηρώντας τη ροή των δεδοµένων και την συµπεριφορά των exceptions Πλεονεκτήµατα Μπορούµε να αντιµετωπίσουµε καταστάσεις όπου τα dependences δεν είναι γνωστά σε compile time. Απλοποιείται ο compiler Κώδικας που έχει µεταγλωττιστεί σε συγκεκριµένο pipeline µπορεί να τρέξει σε διαφορετικό pipeline

Instruction Execution Χωρίζουµετην αποκωδικοποίηση εντολών σε 2 στάδια Issue: Αποκωδικοποίηση, Έλεγχος structural hazards Read operands: Έλεγχος για data hazards, διάβασµα τελεστών Στάδιο αποκωδικοποίησης έχει ουρά εντολών Οι εντολές πριν εκτελεστούν πρέπει να εξασφαλιστεί ότι δεν υπάρχουν hazards In-order issue, out-of-order execution και completion

Tomasulo Approach Για ΙΒΜ 360/91 Πριν caches Πολύ λίγοι registers Control & buffers κατανεµηµένα µε Function Units (FU) FU buffers ονοµάζονται reservation stations ; Έχουν pending operands Registers σε εντολές αντικαθίστανται µε τιµές ή pointers στα reservation stations (RS): register renaming Αποφυγή WAR, WAW hazards Περισσότερα reservation stations από registers, έτσι optimizations που δεν µπορούν οι compilers Αποτελέσµατα σε FU από RS, όχι µέσω registers, πάνω σε Common Data Bus που στέλνει αποτελέσµατα προς FUs Load & Stores θεωρούνται ως FUs µε RSs επίσης Integer εντολές µπορούν να πάνε µετά τα branches, επιτρέποντας FP ops πέραν του basic block στην FP queue

Tomasulo Organization MIPS FP unit που χρησιµοποιεί τον Tomasulo αλγόριθµο

Reservation Station Components Op Operation to perform in the unit (e.g., + or -) Vj, Vk Value of Source operands Store buffers has V field, result to be stored Qj, Qk Reservation stations producing source registers (value to be written) Note: No ready flags as in Scoreboard; Qj,Qk=0 ready Store buffers only have Qi for RS producing result Busy Indicates reservation station or FU is busy Register result status είχνει ποιο functional unit γράφει κάθε register, αν υπάρχει ένα. Κενό όταν καµία εκκρεµούσα εντολή δε γράφει αυτόν τον register.

Τα 3 στάδια του αλγορίθµου Tomasulo 1. Issue get instruction from FP Op Queue Εάν το reservation station ελεύθερο (όχι structural hazard), control ξεκινά εντολή & στέλνει τα operands (renames registers) 2. Execution operate on operands (EX) Όταν όλα τα operands είναι έτοιµα εκτέλεση της εντολής, αν δεν είναι έτοιµα αναµονή στο Common Data Bus για δεδοµένα 3. Write result finish execution (WB) Αποστολή αποτελέσµατος στο Common Data Bus προς όλα τα units που περιµένουν. Το reservation station σηµειώνεται ως διαθέσιµο

Αποφυγή Register ως bottleneck Επισκόπηση: Tomasulo Αποφυγή WAR, WAW hazards του Scoreboard Επιτρέπει loop unrolling σε HW εν περιορίζεται σε basic blocks (εφόσον υπάρχει branch prediction) Lasting Contributions Dynamic scheduling Register renaming Load/Store disambiguation 360/91 descendants : PowerPC 604, 620; MIPS R10000; HP-PA 8000; Intel Pentium Pro

Dynamic Branch Prediction Performance = ƒ(accuracy, cost of misprediction) Branch History : Lower bits of PC address index table of 1-bit values είχνει εάν το branch εκτελέστηκε την τελευταία φορά εν υπάρχει address check Πρόβληµα : σε ένα loop, ένα 2-bit BHT θα προκαλέσει δύο µη σωστές προβλέψεις (avg : 9 επαναλήψεις πριν την έξοδο): Στο τέλος του loop, όταν βγαίνει αντί να συνεχίσει την επανάληψη όπως προηγουµένως Στην πρώτη φορά στο loop, στην επόµενη εκτέλεση, όταν προβλέπει έξοδο αντί επανάληψη.

Dynamic Branch Prediction Λύση : σχήµα 2-bit όπου αλλάζει η πρόβλεψη µόνο µετά από δύο αποτυχηµένες προβλέψεις

Ακρίβεια του BHT Μη σωστή πρόβλεψη εξαιτίας : Λανθασµένης υπόθεσης για το branch αυτό Λήψη branch history άλλου branch από το table Για 4096 entry table η µη σωστή πρόβλεψη κυµαίνεται από 1% (nasa7, tomcatv) ως 18% (eqntott), µε το spice στο 9% και το gcc στο 12% 4096 τόσο καλό όσο περίπου ένα άπειρο σε µέγεθος table (in Alpha 211164)

Συσχετισµός των Branches Υπόθεση : Τα πρόσφατα branches συσχετίζονται, δηλαδή η συµπεριφορά των πρόσφατα εκτελεσθέντων branches επηρεάζει την πρόβλεψη του τρέχοντος branch Ιδέα : καταγραφή των m πιο πρόσφατα εκτελεσθέντων branches ως taken ή not taken και χρήση του pattern αυτού για την επιλογή του κατάλληλου branch history table Γενικά : (m,n) predictor σηµαίνει καταγραφή των τελευταίων m branches για επιλογή ανάµεσα σε 2 m history tables µε n-bit counter το καθένα 2-bit BHT είναι λοιπόν ένας (0,2) predictor

Συσχετισµός των Branches (2,2) predictor Η συµπεριφορά των πρόσφατων branches επιλέγει µεταξύ τεσσάρων προβλέψεων για το επόµενο branch, ενηµερώνοντας απλά αυτήν την πρόβλεψη

Ακρίβεια των διαφόρων σχηµάτων

Η ιεύθυνση χρειάζεται την ίδια στιγµή µε την Πρόβλεψη Branch Target Buffer (BTB): Address of branch index to get prediction AND branch address (if taken) - Σηµ: πρέπει να ελεγχθεί το ταίριασµα του branch τώρα, εφ όσον δεν µπορεί να χρησιµοποιηθεί λάθος branch address Return instruction addresses προβλέπονται στο stack

Βήµατα αντιµετώπισης εντολής µε branch target buffer

Dynamic Branch Prediction Σύνοψη Branch History Table: 2 bits για loop accuracy Συσχετισµός: Πρόσφατα εκτελεσθέντα branches συσχετίζονται µε το επόµενο branch Branch Target Buffer: περιλαµβάνει branch address & prediction Predicated Execution µπορεί να µειώσει τον αριθµό των branches και τον αριθµό των µη επιτυχώς προβλεφθέντων branches

Περισσότερο ILP µε multiple issue Στόχος CPI µικρότερο της µονάδας Superscalar: Περισσότερες της µίας εντολής ανά κύκλο ρολογιού Static: Ο compiler αποφασίζει µε ποιες εντολές θα εκτελεστούν Dynamic: Το hardware προσπαθεί να εκτελέσει πολλαπλές εντολές Very Long Instruction Word (VLIW) Long instructions που περιέχουν πολλές λειτουργίες Ο compiler προγραµµατίζει τις λειτουργίες σε αυτές τις εντολές Dynamic Superscalar (συχνά απλά superscalar) Ίδια ακολουθιακά προγράµµατα Το hardware προσπαθεί να εκτελέσει πολλαπλές εντολές ανά κύκλο

Ιεραρχία Superscalar Superscalar Static Issue Dynamic Issue VLIW- O compiler παίρνει τις αποφάσεις In-order Αν µία εντολή γίνεται stall πριν διεκπεραιωθεί, πρέπει και όλες οι εντολές που έπονται να γίνουν επίσης stall Out-of-order Προσπαθεί να παρακάµψει τις stalled εντολές

Προσεγγίσεις multiple-issue επεξεργαστών

Getting CPI < 1: Issuing Multiple Instructions/Cycle Superscalar DLX: 2 instructions, 1 FP & 1 anything else - Fetch 64-bits/clock cycle; Int on left, FP on right - Can only issue 2 nd instruction if 1 st instruction issues - More ports for FP registers to do FP load & FP op in a pair 1 cycle load delay expands to 3 instructions in SS - instruction in right half can t use it, nor instructions in next slot

Υποστήριξη HW για περισσότερο ILP Speculation: εκτέλεση εντολής χωρίς συνέπειες (συµπεριλαµβάνοντας exceptions) εάν το branch τελικά δεν εκτελεστεί ( HW undo ): boosting Συνδυασµός branch prediction και dynamic scheduling για εκτέλεση πριν το branch resolving ιαχωρισµός speculative bypassing αποτελεσµάτων από real bypassing αποτελεσµάτων - Όταν η εντολή δεν είναι πια speculative, αποθήκευση boosted αποτελεσµάτων (instruction commit) ή ακύρωση boosted αποτελεσµάτων - Εκτέλεση out-of-order αλλά commit in-order προς αποφυγή αµετάκλητης ενέργειας (update state or exception) µέχρι το instruction commit

Υποστήριξη HW για περισσότερο ILP Χρειάζεται HW buffer για αποτελέσµατα uncommitted εντολών: reorder buffer - 3 fields: instr, destination, value - Reorder buffer can be operand source => more registers like RS - Χρήση reorder buffer number αντί reservation station όταν η εκτέλεση ολοκληρώνεται - Προµήθεια operands ανάµεσα σε execution complete & commit - Once operand commits, result is put into register - Instructions commit - Σαν αποτέλεσµα, είναι εύκολο να ανακαλέσουµε speculated εντολές σε mispredicted branches ή σε exceptions

4 στάδια του Speculative Tomasulo αλγορίθµου 1. Issue-get instruction from FP Op Queue Εάν reservation station and reorder buffer slot ελεύθερα, issue instr & send operands & reorder buffer no. για destination (το στάδιο αυτό µερικές φορές καλείται dispatch ) 2. Execution-operate on operands (EX) Εκτέλεση όταν όλα τα operands είναι έτοιµα, αν όχι, αναµονή στο CDB για αποτέλεσµα όταν όλα σε reservation station, εκτέλεση έλεγχος RAW (µερικές φορές καλείται issue ) 3. Write result-finish execution (WB) Εγγραφή στο Common Data Bus προς όλα τα FUs που αναµένουν & reorder buffer reservation station ελεύθερο 4. Commit-update register with reorder result Όταν η εντολή στην κορυφή του reorder buffer & αποτέλεσµα παρόντα, ενηµέρωση register µε αποτέλεσµα (ή στη µνήµη) και αποµάκρυνση εντολής από reorder buffer. Mispredicted branch αδειάζει reorder buffer (µερικές φορές καλείται graduation )

Περιορισµοί των Multi-issue Machines Inherent limitations of ILP 1 branch in 5: Πώς να κρατήσει κανείς απασχοληµένο ένα 5-way VLIW; Latencies των units: Πολλές λειτουργίες πρέπει να οργανωθούν Ανάγκη για Pipeline Depth x No. Functional Units of independent functions. Difficulties in building HW Easy: More Instruction Bandwidth Easy: ιπλασιασµός των FUs για παράλληλη επεξεργασία Hard:Αύξηση των ports του Register File (bandwidth) VLIW example needs 7 read and 3 write for Int. Reg. & 5 read and 3 write for FP reg Harder:Αύξηση των Ports στη µνήµη (bandwidth)

Περιορισµοί στο ILP Conflicting studies Benchmarks (vectorized Fortran FP vs. integer C programs) Hardware sophistication Compiler sophistication Πόσο ILP είναι διαθέσιµο χρησιµοποιώντας υπάρχοντες µηχανισµούς µε τα αυξανόµενα hardware budgets; Χρειαζόµαστε να εφεύρουµε νέους HW/SW µηχανισµούς για να συνεχιστεί η αύξηση της απόδοσης των processors;

Περιορισµοί στο ILP Initial HW Model: MIPS compilers Αρχικές υποθέσεις για ιδανική/τέλεια µηχανή: 1. Register renaming-απεριόριστοι virtual registers και όλα τα WAW & WAR hazards αποφεύγονται 2. Branch prediction-τέλειο: χωρίς λάθος προβλέψεις 3. Jump prediction- όλα τα jumps προβλέπονται τέλεια µηχανή µε τέλειο speculation & απεριόριστο buffer εντολών διαθέσιµο 4. Memory-address alias analysis-διευθύνσεις είναι γνωστές και ένα store µπορεί να µετακινηθεί πριν ένα load εφόσον οι διευθύνσεις δεν είναι ίδιες 1 cycle latency για όλες τις εντολές, απεριόριστος αριθµός εντολών issued per clock cycle

Ανώτατο όριο ILP: Ιδανική Μηχανή

Πιο ρεαλιστικό HW: Επίδραση Branch

Αρχιτεκτονική P6 Dynamically Scheduled επεξεργαστής που µεταφράζει κάθε ΙΑ-32 εντολή σε µια σειρά µικρολειτουργιών που εκτελούνται από το pipeline Μέχρι 3 εντολές ΙΑ-32 φορτώνονται, αποκωδικοποιούνται και µεταφράζονται σε µικρολειτουργίες σε κάθε κύκλο ρολογιού Οι µικρολειτουργίες εκτελούνται από ένα out-of-order speculative pipeline που χρησιµοποιεί register renaming και reorder buffer To pipeline αποτελείται από 14 στάδια 8 στάδια για in-order instruction fetch, decode και dispatch 3 στάδια για out-of-order εκτέλεση σε κάποιο από τα 5 functional units 3 στάδια για instruction commit

Performance of the P6 pipeline Πόσο συχνά 0, 1, 2, 3 µικρολειτουργίες commit at a time

P6 Pipeline Performance Το πραγµατικό CPI (γραµµή) είναι µικρότερο από το άθροισµα του αριθµού των κύκλων µικρολειτουργιών + όλα τα stalls