CS425 Computer Systems Architecture

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CS-425 Mid-term exam

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

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

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

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

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

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

Pipelined Datapath, Hazards and Forwarding

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

Instruction Execution Times

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

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

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

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

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

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

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

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

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

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

Οι τέσσερις αρχές για τον σχεδιασμό του συνόλου εντολών μιας μηχανής είναι:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(Branch Prediction Mechanisms)

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

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

ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός. Ενότητα 6 - Σύστημα Διασωλήνωσης. Π. Ευριπίδου (2007)

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

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

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

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

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

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

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

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

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

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

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

Εγκατάσταση λογισμικού και αναβάθμιση συσκευής Device software installation and software upgrade

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

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

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

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

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

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

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

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

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

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

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

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

Συστήματα Διαχείρισης Βάσεων Δεδομένων

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

Modbus basic setup notes for IO-Link AL1xxx Master Block

Dynamic types, Lambda calculus machines Section and Practice Problems Apr 21 22, 2016

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

ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός. Εργαστήριο Αρ. 2

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

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

derivation of the Laplacian from rectangular to spherical coordinates

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

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

Transcript:

CS425 Computer Systems Architecture Fall 2017 Dynamic Instruction Scheduling: Scoreboard CS425 - Vassilis Papaefstathiou 1

DLX Processor Instruction Fetch Instr. Decode Reg. Fetch Execute Addr. Calc Memory Access Write Back MUX Next PC PC 4 Adder Instr. Memory IF/ID Imm Adder Opcode RS1 RS2 Branch? Reg File ID/EX Return PC (Addr + 8) MUX MUX ALU EX/MEM Data Memory MEM/WB MUX Imm Sign Extend RD RD RD WB Data CS425 - Vassilis Papaefstathiou 2

Pipelines with variable instruction latencies FP instructions need to have multiple execution cycles. DLX pipeline does not work efficiently. CS425 - Vassilis Papaefstathiou 3

In-order Execution Time DIV.D F0, F2, F4 IF ID DIV0 DIV1 DIV2 MEM WB Instruction Order RAW ADD.D F10, F0, F8 SUB.D F12, F5, F6 bypass IF ID stall stall EX MEM WB IF stall stall ID EX MEM WB ADD.D F11, F5, F6 IF ID EX MEM WB If DIV takes 10 clock cycles (DIV0,DIV1,, DIV9) we need 9 stall cycles CS425 - Vassilis Papaefstathiou 4

In-order vs Out-of-order (OoO O3) Execution of a stage in order The instructions enter the stage in program order Execution of a stage out of order No constraint regarding the order the instructions enter the stage Example 1: in order fetch in order decode out of order execution out of order write back (commit) Example 2: in order fetch in order decode out of order execution in order write back (commit) CS425 - Vassilis Papaefstathiou 5

Out-of-order Execution Time Instruction Order DIV.D F0, F2, F4 RAW ADD.D F10, F0, F8 SUB.D F12, F5, F6 IF ID DIV0 DIV1 DIV2 MEM WB bypass IF ID stall stall EX MEM WB IF ID EX MEM WB ALU exception? more resources, multiported RF structural hazard ADD.D F11, F5, F6 IF ID stall EX MEM WB Instructions execute when source operands (registers) values are available and not structural hazards exist Even if DIV takes 10 clock cycles the pipeline stalls only for 1 clock cycle CS425 - Vassilis Papaefstathiou 6

Instruction Level Parallelism Instruction Level Parallelism (ILP) Potential overlap among instructions Parallel or out-of-order execution Requires extensions on the simple pipeline Loop Level Parallelism Exploit ILP between instructions from different basic blocks (e.g iterations of a loop) for (i=1; i<=100; i++) x[i] = x[i] + y[i]; Must maintain: Data flow: the real flow of values between instructions that write (produce) values and the instructions that read (consume) these values (RAW, WAW, WAR) Exception behavior: changes in execution order should not change the order of exceptions (and should not generate new exceptions) CS425 - Vassilis Papaefstathiou 7

Data Flow and Exception Behavior Program Order: The result of instruction execution should be the same as the sequential execution of the instructions 1. Preserve control dependencies 2. Preserve data flow: preserve data dependencies 3. Exception behavior: changing the order of instruction execution should not create new exceptions DADDU R2, R3, R4 BEQZ R2, L1 LW R1, 0(R2) execute before branch? L1: CS425 - Vassilis Papaefstathiou 8

Techniques to reduce stalls CPI = Ideal CPI + Structural stalls per instruction + RAW stalls per instruction + WAR stalls per instruction + WAW stalls per instruction 1 st example (in-order) had 2 RAW stalls 2 nd example (out-of-order) has only 1 structural stall We will study two types of techniques: Dynamic instruction scheduling Scoreboard (reduce RAW stalls) Register Renaming (reduce WAR & WAW stalls) Tomasulo Reorder buffer Branch Prediction (reduce control stalls) Static instruction scheduling (SW/compiler) Loop Unrolling SW pipelining Trace Scheduling CS425 - Vassilis Papaefstathiou 9

Μπορούμε να χρησιμοποιήσουμε το Hardware για να έχουμε CPI κοντά στο 1; Γιατί στο Hardware κατά την εκτέλεση του προγράμματος; Δουλεύει όταν δεν ξέρουμε τις πραγματικές εξαρτήσεις κατά το compile (π.χ. memory references). Η δουλειά του compiler είναι πιο απλή. Διαφορετικά πρέπει να γνωρίζει το συγκεκριμένο hardware. Control dependences Ο assembly κώδικας μιας μηχανής τρέχει καλά και σε άλλη. Ιδέα κλειδί : Επέτρεψε εντολές μετά το stall να εκτελούνται (κάνε stall μόνο την εντολή που είναι data dependent) DIV.D F0,F2,F4 ADD.D F10,F0,F8 SUB.D F12,F8,F14 Out-of-order execution => out-of-order completion (unless special HW is used) CS425 - Vassilis Papaefstathiou 10

Εξαρτήσεις Μεταξύ Εντολών (Depedences) Ποιές είναι οι πηγές των stalls/bubbles; εντολές που χρησιμοποιούν ίδιους registers Παράλληλες εντολές μπορούν να εκτελεστούν διαδοχικά χωρίς να δημιουργούν stalls (αγνοώντας structural hazards) o DIV.D F0, F2, F4 o ADD.D F10, F1, F3 Εξαρτήσεις μεταξύ εντολών μπορούν να οδηγήσουν σε stalls o DIV.D F0, F2, F4 RAW must enter the execution stage in order o ADD.D F10, F0, F3 Οι εξαρτήσεις μεταξύ εντολών περιορίζουν την σειρά εκτέλεσης των εντολών (in order execution) π.χ. η ADDD πρέπει να εκτελεστεί μετά την DIVD στο 2ο παράδειγμα. Ενώ παράλληλες εντολές μπορούν να εκτελεστούν ανάποδα (out-of-order execution) π.χ. η ADDD μπορεί να εκτελεστεί πριν την DIVD στο 1ο παράδειγμα. CS425 - Vassilis Papaefstathiou 11

Εξαρτήσεις Μεταξύ Εντολών (True) Data Dependences : Δύο εντολές είναι data dependent όταν υπάρχει μία αλυσίδα από RAW hazards μεταξύ τους. Loop: L.D F0, 0(R1) ADD.D S.D F4, F0, F2 F4, 0(R1) S.D L.D F0, 100(R4) F1, 20(R6)??? DADDI R1, R1, -8 BNE R1, R2, Loop Τι εκτελεί το παραπάνω πρόγραμμα; CS425 - Vassilis Papaefstathiou 12

Εξαρτήσεις Μεταξύ Εντολών Name Dependences : Δύο εντολές είναι name dependent όταν υπάρχει ένα WAR (antidependence) ή WAW (output dependence) hazard μεταξύ τους. L.D F0, 0(R1) ADD.D F4, F0, F2 L.D F0, 0(R2)??? S.D F1, 20(R6) Ποιο είναι το anti-dependence; Control Dependences : Eντολές εξαρτόμενες από branch εντολή. if p1 { S1; } CS425 - Vassilis Papaefstathiou 13

Προβλήματα με Hazards Πώς εμποδίζουμε WAR και WAW hazards; Τι κάνουμε για τις μεταβλητές καθυστερήσεις των μονάδων εκτέλεσης; Forwarding των RAW hazards δυσκολότερη. Clock Cycle Number Instruction 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 LD F6,34(R2) IF ID EX MEM WB LD F2,45(R3) IF ID EX MEM WB MULTD F0,F2,F4 IF ID stall M1 M2 M3 M4 M5 M6 M7 M8 M9 M10 MEM WB SUBD F8,F6,F2 IF ID A1 A2 MEM WB DIVD F10,F0,F6 IF ID stall stall stall stall stall stall stall stall stall D1 D2 ADDD F6,F8,F2 IF ID A1 A2 MEM WB RAW WAR CS425 - Vassilis Papaefstathiou 14

Scoreboard: Out-of-Order Execution Χωρισμός του ID stage στα δύο: 1. Έκδοση/Issue: Αποκωδικοποίηση εντολής, έλεγχος για structural hazards. In order instruction issue. 2. Ανάγνωση/read operands: Αναμονή μέχρι να μην υπάρχουν data hazards, μετά διάβασε source registers. Out-of-order execution. Οι πρώτες μηχανές Scoreboards εμφανίστηκαν με το CDC6600 το 1963 Εντολές εκτελούνται όποτε δεν είναι εξαρτώμενες από προηγούμενες εντολές (που δεν έχουν εκτελεστεί) και δεν υπάρχουν hazards. CDC6600: In order issue, out-of-order execution, out-of-order commit (or completion) 16 functional units: 4 floating-point units, 5 units for memory references, and 7 units for integer operations Δεν υπάρχει forwarding! CS425 - Vassilis Papaefstathiou 15

Αρχιτεκτονική Scoreboard (CDC 6600) Registers FP Mult FP Mult FP Divide FP Add Integer Functional Units Instruction to scoreboard ð data dependences ð hazard detection and resolution centralized Scoreboard: decides when the instruction can execute and when it can write its result SCOREBOARD Memory CS425 - Vassilis Papaefstathiou 16

Scoreboard Implications Out-of-order completion => WAR, WAW hazards? Λύσεις για WAR: Stall το write-back στάδιο μέχρι οι registers να έχουν διαβαστεί Διάβασε registers μόνο κατά το Read Operands στάδιο Λύσεις για WAW: Ανίχνευσε hazard και κάνε stall (no issue) την καινούρια εντολή μέχρι η παλιά εντολή να ολοκληρωθεί/εκτελεστεί. Δεν υπάρχει register renaming! Πολλές εντολές στο execution στάδιο => multiple execution units or pipelined execution units Το Scoreboard κρατάει πληροφορίες για τις εξαρτήσεις μεταξύ των εντολών που έχουν γίνει issue. Scoreboard αντικαθιστά το ID στάδιο με 2 στάδια: Issue και Read Operands CS425 - Vassilis Papaefstathiou 17

Four Stages of Scoreboard Control Issue: decode εντολή & record data dependences & έλεγξε για structural hazards (ID1) Instructions issued in program order (for hazard checking) Don t issue if structural hazard Don t issue if instruction is output dependent on any previously issued but uncompleted instruction (no WAW hazards) Read operands: περίμενε μέχρι να μην υπάρχουν data hazards, μετά διάβασε μεταβλητές (ID2) All real dependencies (RAW hazards) resolved in this stage, since we wait for instructions to write back data. No forwarding of data in this model! CS425 - Vassilis Papaefstathiou 18

Four Stages of Scoreboard Control Execution: εκτέλεση στην αριθμητική μονάδα (EX) The functional unit begins execution upon receiving operands. When the result is ready, it notifies the scoreboard that it has completed execution. Write result: Τέλος Εκτέλεσης (WB) Stall μέχρι να μην υπάρχουν WAR hazards με προηγούμενες εντολές: Παράδειγμα: DIV.D F0,F2,F4 ADD.D F10,F0,F8 SUB.D F8,F8,F14 CDC 6600 scoreboard would stall SUBD until ADDD reads operands Instructions write their results into the register file as soon as they complete execution (assuming no WAR hazard) CS425 - Vassilis Papaefstathiou 19

Data structure: 3 μέρη του Scoreboard Σε ποιο από τα 4 στάδια είναι η εντολή Functional unit status: Δείχνει την κατάσταση του functional unit (FU). 9 πεδία για κάθε functional unit Busy: Indicates whether the unit is busy or not Op: Operation to perform in the unit (e.g., + or ) Fi: Destination register Fj,Fk: Source-register numbers Qj,Qk: Functional units producing source registers Fj, Fk Rj,Rk: Flags indicating when Fj, Fk are ready and not yet read Δείχνει ποιο functional unit θα γράψει κάθε register, αν υπάρχει κάποιο. Blank when no pending instructions will write that register CS425 - Vassilis Papaefstathiou 20

Scoreboard Example L.D F6 34+ R2 L.D F2 45+ R3 MULT.D F0 F2 F4 SUB.D F8 F6 F2 DIV.D F10 F0 F6 ADD.D F6 F8 F2 Integer Mult1 Mult2 Add Divide No No No No No FU CS425 - Vassilis Papaefstathiou 21

Detailed Scoreboard Pipeline Control Instruction status Issue Read operands Execution complete Write result Wait until Busy (FU)=No and result(d)=0 (struct hazard, WAW) Rj and Rk (RAW) Functional unit done "f((fj(f)¹fi(fu) or Rj(f)=No) & (Fk(f)¹Fi(FU) or Rk( f )=No)) (WAR) Bookkeeping Busy(FU) yes; Op(FU) op; Fi(FU) `D ; Fj(FU) `S1 ; Fk(FU) `S2 ; Qj Result( S1 ); Qk Result(`S2 ); Rj not Qj; Rk not Qk; Result( D ) FU; Clear flags: Rj No; Rk No "f(if Qj(f)=FU then Rj(f) Yes); "f(if Qk(f)=FU then Rj(f) Yes); Result(Fi(FU)) 0; Busy(FU) No CS425 - Vassilis Papaefstathiou 22

Scoreboard Example: Cycle 1 LD F6 34+ R2 1 LD F2 45+ R3 MULTD F0 F2 F4 SUBD F8 F6 F2 DIVD F10 F0 F6 ADDD F6 F8 F2 Integer Yes Load F6 R2 Yes Mult1 No Mult2 No Add No Divide No 1 FU Integer CS425 - Vassilis Papaefstathiou 23

Scoreboard Example: Cycle 2 LD F6 34+ R2 1 2 LD F2 45+ R3 MULTD F0 F2 F4 SUBD F8 F6 F2 DIVD F10 F0 F6 ADDD F6 F8 F2 Issue second LD? No. Structural Hazard! Integer Yes Load F6 R2 No Mult1 No Mult2 No Add No Divide No 2 FU Integer CS425 - Vassilis Papaefstathiou 24

Scoreboard Example: Cycle 3 LD F6 34+ R2 1 2 3 LD F2 45+ R3 MULTD F0 F2 F4 SUBD F8 F6 F2 DIVD F10 F0 F6 ADDD F6 F8 F2 Issue MULTD? No. In order issue! Integer Yes Load F6 R2 No Mult1 No Mult2 No Add No Divide No 3 FU Integer CS425 - Vassilis Papaefstathiou 25

Scoreboard Example: Cycle 4 LD F6 34+ R2 1 2 3 4 LD F2 45+ R3 MULTD F0 F2 F4 SUBD F8 F6 F2 DIVD F10 F0 F6 ADDD F6 F8 F2 Integer Mult1 Mult2 Add Divide No No No No No 4 FU CS425 - Vassilis Papaefstathiou 26

Scoreboard Example: Cycle 5 LD F6 34+ R2 1 2 3 4 LD F2 45+ R3 5 MULTD F0 F2 F4 SUBD F8 F6 F2 DIVD F10 F0 F6 ADDD F6 F8 F2 Integer Yes Load F2 R3 Yes Mult1 No Mult2 No Add No Divide No 5 FU Integer CS425 - Vassilis Papaefstathiou 27

Scoreboard Example: Cycle 6 LD F6 34+ R2 1 2 3 4 LD F2 45+ R3 5 6 MULTD F0 F2 F4 6 SUBD F8 F6 F2 DIVD F10 F0 F6 ADDD F6 F8 F2 Integer Yes Load F2 R3 No Mult1 Yes Mult F0 F2 F4 Integer No Yes Mult2 No Add No Divide No 6 FU Mult1 Integer CS425 - Vassilis Papaefstathiou 28

Scoreboard Example: Cycle 7 LD F6 34+ R2 1 2 3 4 LD F2 45+ R3 5 6 7 MULTD F0 F2 F4 6 SUBD F8 F6 F2 7 DIVD F10 F0 F6 ADDD F6 F8 F2 Read MULTD operands? No. RAW Hazard! Integer Yes Load F2 R3 No Mult1 Yes Mult F0 F2 F4 Integer No Yes Mult2 No Add Yes Sub F8 F6 F2 Integer Yes No Divide No 7 FU Mult1 Integer Add CS425 - Vassilis Papaefstathiou 29

Scoreboard Example: Cycle 8a LD F6 34+ R2 1 2 3 4 LD F2 45+ R3 5 6 7 MULTD F0 F2 F4 6 SUBD F8 F6 F2 7 DIVD F10 F0 F6 8 ADDD F6 F8 F2 Integer Yes Load F2 R3 No Mult1 Yes Mult F0 F2 F4 Integer No Yes Mult2 No Add Yes Sub F8 F6 F2 Integer Yes No Divide Yes Div F10 F0 F6 Mult1 No Yes 8 FU Mult1 Integer Add Divide CS425 - Vassilis Papaefstathiou 30

Scoreboard Example: Cycle 8b LD F6 34+ R2 1 2 3 4 LD F2 45+ R3 5 6 7 8 MULTD F0 F2 F4 6 SUBD F8 F6 F2 7 DIVD F10 F0 F6 8 ADDD F6 F8 F2 Integer No Mult1 Yes Mult F0 F2 F4 Yes Yes Mult2 No Add Yes Sub F8 F6 F2 Yes Yes Divide Yes Div F10 F0 F6 Mult1 No Yes 8 FU Mult1 Add Divide CS425 - Vassilis Papaefstathiou 31

Scoreboard Example: Cycle 9 LD F6 34+ R2 1 2 3 4 LD F2 45+ R3 5 6 7 8 MULTD F0 F2 F4 6 9 SUBD F8 F6 F2 7 9 DIVD F10 F0 F6 8 ADDD F6 F8 F2 Read MULTD & SUBD operands? Yes Issue ADDD? No. Structural hazard! Execution Latency Integer No 10 Mult1 Yes Mult F0 F2 F4 No No Mult2 No 2 Add Yes Sub F8 F6 F2 No No Divide Yes Div F10 F0 F6 Mult1 No Yes 9 FU Mult1 Add Divide CS425 - Vassilis Papaefstathiou 32

Scoreboard Example: Cycle 10 LD F6 34+ R2 1 2 3 4 LD F2 45+ R3 5 6 7 8 MULTD F0 F2 F4 6 9 SUBD F8 F6 F2 7 9 DIVD F10 F0 F6 8 ADDD F6 F8 F2 Integer No 9 Mult1 Yes Mult F0 F2 F4 No No Mult2 No 1 Add Yes Sub F8 F6 F2 No No Divide Yes Div F10 F0 F6 Mult1 No Yes 10 FU Mult1 Add Divide CS425 - Vassilis Papaefstathiou 33

Scoreboard Example: Cycle 11 LD F6 34+ R2 1 2 3 4 LD F2 45+ R3 5 6 7 8 MULTD F0 F2 F4 6 9 SUBD F8 F6 F2 7 9 11 DIVD F10 F0 F6 8 ADDD F6 F8 F2 Integer No 8 Mult1 Yes Mult F0 F2 F4 No No Mult2 No 0 Add Yes Sub F8 F6 F2 No No Divide Yes Div F10 F0 F6 Mult1 No Yes 11 FU Mult1 Add Divide CS425 - Vassilis Papaefstathiou 34

Scoreboard Example: Cycle 12 LD F6 34+ R2 1 2 3 4 LD F2 45+ R3 5 6 7 8 MULTD F0 F2 F4 6 9 SUBD F8 F6 F2 7 9 11 12 DIVD F10 F0 F6 8 ADDD F6 F8 F2 Read DIVD Operands? No. RAW Hazard! Integer No 7 Mult1 Yes Mult F0 F2 F4 No No Mult2 No Add No Divide Yes Div F10 F0 F6 Mult1 No Yes 12 FU Mult1 Divide CS425 - Vassilis Papaefstathiou 35

Scoreboard Example: Cycle 13 LD F6 34+ R2 1 2 3 4 LD F2 45+ R3 5 6 7 8 MULTD F0 F2 F4 6 9 SUBD F8 F6 F2 7 9 11 12 DIVD F10 F0 F6 8 ADDD F6 F8 F2 13 Integer No 6 Mult1 Yes Mult F0 F2 F4 No No Mult2 No Add Yes Add F6 F8 F2 Yes Yes Divide Yes Div F10 F0 F6 Mult1 No Yes 13 FU Mult1 Add Divide CS425 - Vassilis Papaefstathiou 36

Scoreboard Example: Cycle 14 LD F6 34+ R2 1 2 3 4 LD F2 45+ R3 5 6 7 8 MULTD F0 F2 F4 6 9 SUBD F8 F6 F2 7 9 11 12 DIVD F10 F0 F6 8 ADDD F6 F8 F2 13 14 Integer No 5 Mult1 Yes Mult F0 F2 F4 No No Mult2 No 2 Add Yes Add F6 F8 F2 No No Divide Yes Div F10 F0 F6 Mult1 No Yes 14 FU Mult1 Add Divide CS425 - Vassilis Papaefstathiou 37

Scoreboard Example: Cycle 15 LD F6 34+ R2 1 2 3 4 LD F2 45+ R3 5 6 7 8 MULTD F0 F2 F4 6 9 SUBD F8 F6 F2 7 9 11 12 DIVD F10 F0 F6 8 ADDD F6 F8 F2 13 14 Integer No 4 Mult1 Yes Mult F0 F2 F4 No No Mult2 No 1 Add Yes Add F6 F8 F2 No No Divide Yes Div F10 F0 F6 Mult1 No Yes 15 FU Mult1 Add Divide CS425 - Vassilis Papaefstathiou 38

Scoreboard Example: Cycle 16 LD F6 34+ R2 1 2 3 4 LD F2 45+ R3 5 6 7 8 MULTD F0 F2 F4 6 9 SUBD F8 F6 F2 7 9 11 12 DIVD F10 F0 F6 8 ADDD F6 F8 F2 13 14 16 Integer No 3 Mult1 Yes Mult F0 F2 F4 No No Mult2 No 0 Add Yes Add F6 F8 F2 No No Divide Yes Div F10 F0 F6 Mult1 No Yes 16 FU Mult1 Add Divide CS425 - Vassilis Papaefstathiou 39

Scoreboard Example: Cycle 17 LD F6 34+ R2 1 2 3 4 LD F2 45+ R3 5 6 7 8 MULTD F0 F2 F4 6 9 SUBD F8 F6 F2 7 9 11 12 DIVD F10 F0 F6 8 ADDD F6 F8 F2 13 14 16 Write ADDD result? No. WAR hazard! Integer No 2 Mult1 Yes Mult F0 F2 F4 No No Mult2 No Add Yes Add F6 F8 F2 No No Divide Yes Div F10 F0 F6 Mult1 No Yes 17 FU Mult1 Add Divide CS425 - Vassilis Papaefstathiou 40

Scoreboard Example: Cycle 18 LD F6 34+ R2 1 2 3 4 LD F2 45+ R3 5 6 7 8 MULTD F0 F2 F4 6 9 SUBD F8 F6 F2 7 9 11 12 DIVD F10 F0 F6 8 ADDD F6 F8 F2 13 14 16 Integer No 1 Mult1 Yes Mult F0 F2 F4 No No Mult2 No Add Yes Add F6 F8 F2 No No Divide Yes Div F10 F0 F6 Mult1 No Yes 18 FU Mult1 Add Divide CS425 - Vassilis Papaefstathiou 41

Scoreboard Example: Cycle 19 LD F6 34+ R2 1 2 3 4 LD F2 45+ R3 5 6 7 8 MULTD F0 F2 F4 6 9 19 SUBD F8 F6 F2 7 9 11 12 DIVD F10 F0 F6 8 ADDD F6 F8 F2 13 14 16 Integer No 0 Mult1 Yes Mult F0 F2 F4 No No Mult2 No Add Yes Add F6 F8 F2 No No Divide Yes Div F10 F0 F6 Mult1 No Yes 19 FU Mult1 Add Divide CS425 - Vassilis Papaefstathiou 42

Scoreboard Example: Cycle 20 LD F6 34+ R2 1 2 3 4 LD F2 45+ R3 5 6 7 8 MULTD F0 F2 F4 6 9 19 20 SUBD F8 F6 F2 7 9 11 12 DIVD F10 F0 F6 8 ADDD F6 F8 F2 13 14 16 Integer No Mult1 No Mult2 No Add Yes Add F6 F8 F2 No No Divide Yes Div F10 F0 F6 Yes Yes 20 FU Add Divide CS425 - Vassilis Papaefstathiou 43

Scoreboard Example: Cycle 21 LD F6 34+ R2 1 2 3 4 LD F2 45+ R3 5 6 7 8 MULTD F0 F2 F4 6 9 19 20 SUBD F8 F6 F2 7 9 11 12 DIVD F10 F0 F6 8 21 ADDD F6 F8 F2 13 14 16 No WAR hazard anymore. Integer No Mult1 No Mult2 No Add Yes Add F6 F8 F2 No No Divide Yes Div F10 F0 F6 No No 21 FU Add Divide CS425 - Vassilis Papaefstathiou 44

Scoreboard Example: Cycle 22 LD F6 34+ R2 1 2 3 4 LD F2 45+ R3 5 6 7 8 MULTD F0 F2 F4 6 9 19 20 SUBD F8 F6 F2 7 9 11 12 DIVD F10 F0 F6 8 21 ADDD F6 F8 F2 13 14 16 22 Integer No Mult1 No Mult2 No Add No 39 Divide Yes Div F10 F0 F6 No No 22 FU Divide CS425 - Vassilis Papaefstathiou 45

After a few clock cycles CS425 - Vassilis Papaefstathiou 46

Scoreboard Example: Cycle 61 LD F6 34+ R2 1 2 3 4 LD F2 45+ R3 5 6 7 8 MULTD F0 F2 F4 6 9 19 20 SUBD F8 F6 F2 7 9 11 12 DIVD F10 F0 F6 8 21 61 ADDD F6 F8 F2 13 14 16 22 Integer No Mult1 No Mult2 No Add No 0 Divide Yes Div F10 F0 F6 No No 61 FU Divide CS425 - Vassilis Papaefstathiou 47

Scoreboard Example: Cycle 62 LD F6 34+ R2 1 2 3 4 LD F2 45+ R3 5 6 7 8 MULTD F0 F2 F4 6 9 19 20 SUBD F8 F6 F2 7 9 11 12 DIVD F10 F0 F6 8 21 61 62 ADDD F6 F8 F2 13 14 16 22 Integer Mult1 Mult2 Add Divide No No No No No 62 FU CS425 - Vassilis Papaefstathiou 48

Scoreboard Example: Cycle 62 LD F6 34+ R2 1 2 3 4 LD F2 45+ R3 5 6 7 8 MULTD F0 F2 F4 6 9 19 20 SUBD F8 F6 F2 7 9 11 12 DIVD F10 F0 F6 8 21 61 62 ADDD F6 F8 F2 13 14 16 22 In-order issue? Out-of-order execute? Out-of-order commit? Integer Mult1 Mult2 Add Divide No No No No No 62 FU CS425 - Vassilis Papaefstathiou 49

CDC 6600 Scoreboard Speedup 1.7 for FORTRAN programs; 2.5 by hand (outdated measurements) Limitations of 6600 scoreboard: No forwarding hardware Limited to instructions in basic block (small window) Small number of functional units (structural hazards), especially integer/load store units o Do not issue on structural hazards Wait for WAR hazards Prevent WAW hazards CS425 - Vassilis Papaefstathiou 50