ΗΜΥ 312 -- ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΑΛΕΞΗ 16: ΠΑΡΑΛΛΗΛΙΣΜΟΣ ΣΤΗΝ ΕΚΤΕΛΕΣΗ ΕΝΤΟΛΩΝ Διδάσκων: Χάρης Θεοχαρίδης Αναπληρωτής Καθηγητής, ΗΜΜΥ (ttheocharides@ucy.ac.cy) [Προσαρμογή από Computer Architecture: A Quantitave Approach και Computer Organization and Design, Patterson & Hennessy, 2005 και Superscalar Microprocessor Design, Johnson, 1992 ]
Παραλληλισμός ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.2
Απόδοση του RISC qperformance Metrics Μονάδες Μέτρησης Απόδοσης Response Time (Χρόνος Ανταπόκρισης και εκτέλεσης) (Execution time, Latency) The time elapse between the start and the completion of an event Χρόνος που περνά μεταξύ της έναρξης και του τέλους ενός γεγονότος. Throughput (Παραγωγή) (Bandwidth) The amount of work done in a given time Η ποσότητα εργασίας σε μια δεδομένη μονάδα χρόνου. Performance (Απόδοση) Number of events occurring per unit of time Αριθμός γεγονότων που διεξάγονται ανά μονάδα χρόνου. Σημ. Ο Χρόνος Εκτέλεσης είναι στην ουσία ο παρονομαστής στην απόδοση χαμηλότερος χρόνος εκτέλεσης εξυπακούει ψηλότερη απόδοση. Σημ. Ο Χρόνος εκτέλεσης, ο χρόνος ανταπόκρισης καθώς και η απόδοση είναι στενά συνδεδεμένα μεταξύ τους! ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.3
Απόδοση του RISC qperformance Metrics Μονάδες Μέτρησης Απόδοσης CPU time Ο χρόνος κατά τον οποίο το CPU κάνει υπολογισμούς. Αποτελείται από: - User CPU time (χρόνος χρήστη) Ο χρόνος CPU που ξοδεύεται στο πρόγραμμα, - System CPU time (χρόνος συστήματος) Ο χρόνος του CPU που ξοδεύεται στο λειτουργικό σύστημα εκτελώντας απαιτήσεις των προγραμμάτων. Οι σημερινοί επεξεργαστές ελέγχονται από ένα ρολόι με σταθερή περίοδο (constant cycle time (t)). Η συχνότητα ενός επεξεργαστή δίνεται από την περίοδο (frequency - clock rate (f) = 1/t). Το μέγεθος ενός προγράμματος δίνεται από τον αριθμό εντολών instruction count (I c ) ο αριθμός των εντολών μηχανής που θα εκτελεστούν (machine instructions to be executed.) ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.4
Απόδοση του RISC qperformance Measures Μέτρηση Απόδοσης Ας προσδιορίσουμε τότε το μέσο αριθμό κύκλων ανά εντολή (average number of clock cycle per instruction (CPI)) σαν: ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.5
Απόδοση του RISC qperformance Metrics Μέτρηση Απόδοσης Για ένα δεδομένο σετ εντολών, υπολογίζουμε το CPI σε σχέση με όλων των ειδών εντολών, αν γνωρίζουμε την συχνότητα εμφάνισης των εντολών στο πρόγραμμα. Το CPI εξαρτάται από την οργάνωση/αρχιτεκτονική καθώς και το σετ εντολών της συγκεκριμένης μηχανής. Το Clock rate εξαρτάται από την τεχνολογία καθώς και την οργάνωση/αρχιτεκτονική της μηχανής. Το Instruction count εξαρτάται από το σετ εντολών της μηχανής, καθώς και την τεχνολογία και λειτουργία του μεταγλωττιστή (compiler technology). ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.6
Απόδοση του RISC qperformance Metrics - Μέτρηση Απόδοσης CPU = Time CPU = Time CPU Clock cycles CPU Clock cycles Clock Rate * Clock Cycle time ØThe CPU time is estimated as ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.7
Απόδοση του RISC qερώτηση: Με βάση τον ορισμό (που είδαμε) του CPU time, πώς μπορεί να βελτιωθεί η απόδοση; Είναι δυνατόν να μπορέσουμε να βελτιώσουμε την απόδοση του RISC; Πώς μπορούμε να βελτιώσουμε την απόδοση; -Μείωση του instruction count, -Μείωση του CPI, -Αύξηση του clock rate. Πώς αυξάνουμε το clock rate? - Τεχνολογικές Βελτιώσεις - Αρχιτεκτονικές Βελτιώσεις Πώς μειώνουμε το CPI? - Αύξηση του αριθμού εντολών μέσα σε ένα κύκλο! ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.8
Πέρα από την απόδοση του RISC qπέρα από το RISC Ο ορισμός scalar processor χρησιμοποιείται για να περιγράψει ένα επεξεργαστή που φέρνει και εκτελεί μια εντολή κάθε φορά. Με βάση την RISC φιλοσοφία, ένας βελτιωμένος scalar processor, στην καλύτερη περίπτωση μπορεί να εκτελέσει μια εντολή ανά κύκλο (one instruction per clock cycle). Η απόδοση του scalar processor με βάση την προηγούμενη συζήτηση μας, μπορεί να βελτιωθεί μέσω instruction pipelining και μετατροπή του ALU σε πολύ-εργαλείο (δηλαδή να μπορέσει το ALU να διεξάγει πολλαπλές λειτουργίες (multifunctional capability of ALU). ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.9
Ας θυμηθούμε: MIPS Pipeline ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.10
Ας θυμηθούμε: Παραδοσιακό MIPS Pipeline ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.11
Ας θυμηθούμε: Pipeline Hazards qstructural hazards Σχεδίαση της διασωλήνωσης ώστε να αφαιρεθούν τα structural hazards qdata hazards Εγγραφή πριν την ανάγνωση (read before write) Προχωρούμε τα δεδομένα μέσα στην διασωλήνωση (data forwarding) Για τις περιπτώσεις που το forwarding δεν δουλεύει (π.χ., loaduse) χρησιμοποιούμε υλικό που να μπορεί να σταματήσει τη διασωλήνωση (stall) qcontrol (Branch) hazards beq, bne,j,jr,jal Stall Μειώνει την απόδοση αισθητά Σχεδίαση του μηχανισμού παύσης της διασωλήνωσης στην αρχή ώστε να μειωθεί το κόστος καθώς και το hardware που χρειάζεται για stall. Καθυστέρηση της απόφασης (requires compiler support) δεν κάνει όμως για βαθιές διασωληνώσεις που απαιτούν καθυστέρηση μεγαλύτερη του ενός slot Πρόβλεψη περισσότερο hardware, μπορεί να μειώσει την επίδραση των control hazard stalls ακόμα περισσότερο αν το branch prediction (BHT) και αν η branchedto εντολή είναι cached (BTB) ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.12
Βελτιώνοντας περισσότερο την απόδοση qδυο επιλογές για αύξηση του Instruction-Level Parallelism (ILP): Αύξηση του βάθους της διασωλήνωσης για αύξηση της ωρολογιακής συχνότητας superpipelining Μεταφορά (fetch) και εκτέλεση (execute) πολλαπλών εντολών κάθε φορά (expand every pipeline stage to accommodate multiple instructions) multiple-issue πολλαπλή έκδοση qεκτέλεση πολλών εντολών ανά στάδιο διασωλήνωσης δίνει CPI λιγότερο του 1 Εδώ χρησιμοποιείται το IPC: Instructions Per Clock cycle - Π.χ., ένας 4-πλός μικροεπεξεργαστής πολλαπλής έκδοσης (fourway multiple-issue processor) με συχνότητα 6 GHz, μπορεί να εκτελέσει στην καλύτερη περίπτωση 24 δις εντολών/δευτερόλεπτο με ελάχιστο CPI = 0.25 ή μέγιστο IPC = 4 - Αν το datapath έχει πέντε στάδια διασωλήνωσης (five stage pipeline), πόσες εντολές είναι ενεργές μέσα στην διασωλήνωση ανά κάθε στιγμή; ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.13
Παραλληλισμός Εντολών Instruction Level Parallelism ILP qμπορεί να επιτευχθεί με δυο φιλοσοφίες: q Dynamic approach - Δυναμική Μέθοδος το υλικό κυρίως εντοπίζει και καθορίζει τον παραλληλισμό q Static approach - Στατική Μέθοδος εναπόκειται στο λογισμικό/μεταγλωττιστή να εντοπίσει και να χρησιμοποιήσει παραλληλισμό q Περιορισμοί: qtrue data dependency qprocedural dependency qresource conflicts qoutput dependency qantidependency ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.14
Effect of Dependencies Επίδραση Εξαρτήσεων Assume 2-way multiple-issue processor Assume a simple 4-stage pipeline ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.15
Η μετά-risc εποχή: Ορολογία Τα μηχανήματα με ψηλότερες συχνότητες και βαθύτερα pipelines ονομάζονται super pipelined. Τα μηχανήματα που μπορούν δυναμικά να εκδόσουν περισσότερες από μια εντολές ανά κύκλο ονομάζονται super scalar. Οι μηχανές που εκτελούν πολλές πράξεις (συνήθως 5-7 εντολές) ως μια μεγάλη εντολή ονομάζονται Very-long-Instruction-Word (VLIW) (στατική μέθοδος). ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.16
Κατηγορίες επεξεργαστών πολλαπλής-έκδοσης qstatic multiple-issue processors (VLIW) Η απόφαση/εις για το ποιες εντολές θα εκτελεστούν παράλληλα γίνεται στατικά από τον μεταγλωττιστή Π.χ., Intel Itanium και Itanium 2 για IA-64 ISA EPIC (Explicit Parallel Instruction Computer) qdynamic multiple-issue processors (Superscalar) Η απόφαση/εις για το ποιες εντολές θα εκτελεστούν παράλληλα γίνεται δυναμικά από το υλικό Π.χ., IBM Power 2, Pentium 4, MIPS R10K, HP PA 8500 ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.17
Superscalar (SS) και Superpipelined Επεξεργαστές Τι είναι το Superscalar? q Common instructions (arithmetic, load/store, conditional branch) can be initiated and executed independently q Equally applicable to RISC & CISC q In practice usually RISC Γιατί Superscalar? q Most operations are on scalar quantities (see RISC notes) q Improve these operations to get an overall improvement Τι είναι το Superpipelined? q Many pipeline stages need less than half a clock cycle q Double internal clock speed gets two tasks per external clock cycle q Superscalar allows parallel fetch-execute ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.18
Superscalar Execution Πως δουλεύει το SS ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.19
Γενική Οργάνωση Επεξεργαστή Superscalar ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.20
Superpipelined Επεξεργαστές qαύξηση του βάθους της διασωλήνωσης με σκοπό την αύξηση της συχνότητας (more instructions in flight at one time) Όσο πιο ψηλός ο δείχτης (degree) του superpipelining, τόσο πιο πολύ forwarding/hazard hardware χρειάζεται, τόσο πιο πολύ latch overhead (i.e., the pipeline latch accounts for a larger and larger percentage of the clock cycle time), και τόσο πιο πολύ το clock skew (i.e., because of faster and faster clocks) Superpipelined vs Superscalar q Superpipelined: πιο μεγάλη καθυστέρηση εντολών (instruction latency) από τους SS των οποίων η απόδοση εξαρτάται περισσότερο από τα true dependencies (δεδομένων και ελέγχου). q Superscalar: είναι πιο ευάλωτοι σε συγκρούσεις δεδομένων στα εκτελεστικά συστήματα (resource conflicts) αλλά αυτό διορθώνεται με hardware (και σωστό σχεδιασμό!) ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.21
Superscalar v Superpipeline Base 4-stage pipeline machine, clock cycle τ Superpipelined 8- stage machine, clock cycle τ =τ/2 τ 2-way superscalar machine, clock cycle τ τ = τ/2 ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.22
Instruction vs Machine Parallelism qinstruction-level parallelism (ILP) ενός προγράμματος Ο μέσος αριθμός εντολών σε ένα πρόγραμμα που ο επεξεργαστής ίσως να μπορεί να εκτελέσει παράλληλα Συνήθως αποτέλεσμα των true (data) dependencies και των procedural (control) dependencies, σε σχέση με τον αριθμό των υπόλοιπων εντολών qdata-level parallelism (DLP) DO I = 1 TO 100 A[I] = A[I] + 1 CONTINUE qmachine parallelism ενός επεξεργαστή η ικανότητα ενός επεξεργαστή να εκμεταλλεύεται το ILP ενός προγράμματος Determined by the number of instructions that can be fetched and executed at the same time qγια ψηλότερη απόδοση, χρειαζόμαστε ILP και machine parallelism ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.23
Multiple-Issue Datapath Responsibilities qχειριζόμαστε με συνδυασμό hardware και software fixes, τα όρια που αφορούν: Storage (data) dependencies αλλιώς data hazards (δηλαδή την ποσότητα φυσικής μνήμης (καταχωρητές, μνήμη, κ.λ.π.) - Limitation more severe in a SS/VLIW processor due to (usually) low ILP Procedural dependencies δηλαδή control hazards - Σαν πιο πάνω, αλλά πολύ πιο αρνητικά στην απόδοση - Χρήση dynamic branch prediction για αντιμετώπιση του ILP Resource conflicts αλλιώς structural hazards - Ένας SS/VLIW έχει πολύ πιο μεγάλες πιθανότητες για συγκρούσεις στα εκτελεστικά συστήματα - Τα functional units πρέπει να καθορίζουν και τις εισόδους τους αλλά και τα αποτελέσματα τους (arbitrate for result buses and register-file write ports) - Οι συγκρούσεις στα εκτελεστικά συστήματα αποφεύγονται με την αύξηση στην ποσότητα των εκτελεστικών συστημάτων (π.χ. με διπλασιασμό) ή με διασωλήνωση των συστημάτων ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.24
Multiple-issue Processors: Instruction Issue and Completion Policies qinstruction-issue αρχή της εκτέλεσης εντολής Instruction lookahead ικανότητα να φέρνει, να αποκωδικοποιεί και να εκδίδει εντολές πέραν της εντολής που εκτελείται (fetch, decode and issue instructions beyond the current instruction) qinstruction-completion συμπλήρωση εκτέλεσης Processor lookahead ικανότητα να εκτελεί εντολές που εκδόθηκαν πέραν της εντολής που εκτελείται (complete issued instructions beyond the current instruction) qinstruction-commit γράψιμο των αποτελεσμάτων στο Register File ή το D$ cache (i.e., change the machine state) In-order issue with in-order completion In-order issue with out-of-order completion Out-of-order issue with out-of-order completion Out-of-order issue with out-of-order completion and in-order commit ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.25
Control Hazards qwhen the flow of instruction addresses is not what the pipeline expects; incurred by change of flow instructions Conditional branches (beq, bne) Unconditional branches (j) qpossible solutions Stall Move decision point earlier in the pipeline Predict Delay decision (requires compiler support) qcontrol hazards occur less frequently than data hazards; there is nothing as effective against control hazards as forwarding is for data hazards ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.26
Branch Prediction q Resolve branch hazards by assuming a given outcome and proceeding without waiting to see the actual branch outcome 1. Predict not taken always predict branches will not be taken, continue to fetch from the sequential instruction stream, only when branch is taken does the pipeline stall If taken, flush instructions in the pipeline after the branch - in,, and if branch logic in MEM three stalls - in if branch logic in one stall ensure that those flushed instructions haven t changed machine state automatic in the MIPS pipeline since machine state changing operations are at the tail end of the pipeline (MemWrite or RegWrite) restart the pipeline at the branch destination ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.27
Branch Prediction, con t q Resolve branch hazards by statically assuming a given outcome and proceeding 2. Predict taken always predict branches will be taken Predict taken always incurs a stall (if branch destination hardware has been moved to the stage) q As the branch penalty increases (for deeper pipelines), a simple static prediction scheme will hurt performance q With more hardware, possible to try to predict branch behavior dynamically during program execution 3. Dynamic branch prediction predict branches at runtime using run-time information ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.28
3 Generic Data Hazards: RAW, WAR, WAW qread After Write (RAW) Instr J tries to read operand before Instr I writes it I: add r1,r2,r3 J: sub r4,r1,r3 qcaused by a Dependence (in compiler nomenclature). This hazard results from an actual need for communication. qforwarding handles many, but not all, RAW dependencies in 5 stage MIPS pipeline ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.29
3 Generic Data Hazards: RAW, WAR, WAW qwrite After Read (WAR) Instr J writes operand before Instr I reads it I: sub r4,r1,r3 J: add r1,r2,r3 K: mul r6,r1,r7 qcalled an anti-dependence by compiler writers. This results from reuse of the name r1. qcan t happen in MIPS 5 stage pipeline because: All instructions take 5 stages, and Reads are always in stage 2, and Register Writes must be in stage 5 ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.30
3 Generic Data Hazards: RAW, WAR, WAW qwrite After Write (WAW) Instr J writes operand before Instr I writes it. I: sub r1,r4,r3 J: add r1,r2,r3 K: mul r6,r1,r7 qcalled an output dependence by compiler writers This also results from the reuse of name r1. qcan t happen in MIPS 5 stage pipeline because: All instructions take 5 stages, and Register Writes must be in stage 5 qcan see WAR and WAW in more complicated pipes ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.31
Multiple-issue Processors: Instruction Issue and Completion Policies qinstruction-issue αρχή της εκτέλεσης εντολής Instruction lookahead ικανότητα να φέρνει, να αποκωδικοποιεί και να εκδίδει εντολές πέραν της εντολής που εκτελείται (fetch, decode and issue instructions beyond the current instruction) qinstruction-completion συμπλήρωση εκτέλεσης Processor lookahead ικανότητα να εκτελεί εντολές που εκδόθηκαν πέραν της εντολής που εκτελείται (complete issued instructions beyond the current instruction) qinstruction-commit γράψιμο των αποτελεσμάτων στο Register File ή το D$ cache (i.e., change the machine state) In-order issue with in-order completion In-order issue with out-of-order completion Out-of-order issue with out-of-order completion Out-of-order issue with out-of-order completion and in-order commit ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.32
In-Order Issue with In-Order Completion qτο πιο απλό πράγμα είναι φυσικά η έκδοση, εκτέλεση και συμπλήρωση εντολών με την φυσική τους σειρά (i.e., in program order) qπαράδειγμα: Assume a pipelined processor that can fetch and decode two instructions per cycle, that has three functional units (a single cycle adder, a single cycle shifter, and a two cycle multiplier), and that can complete (and write back) two results per cycle And an instruction sequence with the following characteristics I1 needs two execute cycles (a multiply) I2 I3 I4 needs the same function unit as I3 I5 needs data value produced by I4 I6 needs the same function unit as I5 ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.33
In-Order Issue, In-Order Completion Example I n s t r. O r d e r I1 I2 I3 I4 I5 I1 two execute cycles I2 I3 I4 same function unit as I3 I5 data value produced by I4 I6 same function unit as I5 I6 In parallel can Fetch/decode 2 Commit 2 ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.34
In-Order Issue, In-Order Completion Example I n s t r. O r d e r I1 I2 I3 I4 I5 I6 In parallel can Fetch/decode 2 Commit 2 I1 two execute cycles I2 I3 I4 same function unit as I3 I5 data value produced by I4 I6 same function unit as I5 need forwarding hardware 8 cycles in total ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.35
In-Order Issue with Out-of-Order Completion qμε συμπλήρωση out-of-order, μια εντολή που εκδόθηκε μετά από μια άλλη, μπορεί να συμπληρωθεί πριν την προπορευμένη σε φυσική σειρά εντολή Out-of-order completion χρησιμοποιήται και σε single-issue pipelined processors για βελτίωση της απόδοσης πράξεων με μεγάλη καθυστέρηση (latency), όπως τη διαίρεση qόταν χρησιμοποιούμε out-of-order completion, η έκδοση εντολών γίνεται stalled όταν: υπάρχει σύγκρουση πόρων (resource conflict) όταν μια εντολή που είναι έτοιμη για έκδοση χρειάζεται δεδομένα που θα παράγει μια εντολή που ακόμη δεν έχει συμπληρωθεί (true data dependency RAW) ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.36
IOI-OOC Example I n s t r. O r d e r I1 I2 I3 I4 I5 I1 two execute cycles I2 I3 I4 same function unit as I3 I5 data value produced by I4 I6 same function unit as I5 I6 ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.37
IOI-OOC Example I n s t r. O r d e r I1 I2 I3 I4 I5 I1 two execute cycles I2 I3 I4 same function unit as I3 I5 data value produced by I4 I6 same function unit as I5 7 cycles in total I6 ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.38
Χειρισμός των Output Dependencies q Υπάρχει ακόμη μια περίπτωση που η έκδοση μιας εντολής σταματάει (stalls) με IOI-OOC. Ας υποθέσουμε: I1 writes to R3 I2 writes to R3 I5 reads R3 Εάν η εντολή I1 γράψει μετά την εντολή I2 στον καταχωρητή R3, τότε η εντολή I5 θα διαβάσει λάθος τιμή για τον R3 Η I2 έχει ένα output dependency με την I1 write after write (WAW) Η έκδοση της I2 πρέπει να καθυστερήσει (stalled) αν το αποτέλεσμά της δύναται να επαναγραφεί από μια προηγούμενη, στη σειρά έκδοσης, (πχ. η I1) εντολή που χρειάζεται περισσότερο χρόνο για να ολοκληρωθεί το stall γίνεται πριν την έκδοση της εντολής (instruction issue) qενώ το IOI-OOC εξυπακούει καλύτερη απόδοση, χρειάζεται περισσότερο έλεγχο για εξαρτήσεις και ως αποτέλεσμα, κατάλληλο υλικό για έλεγχο εξαρτήσεων. Έλεγχος εξαρήσων για read after write (RAW) και write after write (WAW) ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.39
Out-of-Order Issue with Out-of-Order Completion q Στο in-order issue, ο επεξεργαστής σταματά την αποκωδικοποίηση εντολών όταν μια εντολή έτοιμη για εκτέλεση έχει είτε resource conflict είτε data dependency με μια εντολή που ήδη εκδόθηκε, αλλά που δεν συμπληρώθηκε. Ο επεξεργαστής δεν είναι ικανός να δει πέραν της εντολής της σύγκρουσης/εξάρτησης, παρά το γεγονός ότι δύναται να υπάρχουν πιο κάτω εντολές που δεν έχουν σύγκρουση/εξάρτηση και, επομένως, να μπορούν να εκδοθούν. q Στο out-of-order issue, εντολές μεταγενέστερες της εντολής με τη σύγκρουση/εξάρτηση μπορούν να εκδοθούν και να αποκωδικοποίηθούν (fetch and decode) Αποθηκεύονται σε ένα instruction buffer (όσο έχει χώρο φυσικά) και σημείωνονται/καταχώρούνται στις εντολές στο buffer που δεν έχουν συγκρούσεις/εξαρτήσεις Οι σημειωμένες εντολές εκδίδονται από το buffer χωρίς αναφορά στην φυσική τους σειρά στο πρόγραμμα. Χρήση instruction window ( = μέγεθος instruction buffer). ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.40
OOI-OOC Example I n s t r. O r d e r I1 I2 I3 I4 I5 I1 two execute cycles I2 I3 I4 same function unit as I3 I5 data value produced by I4 I6 same function unit as I5 I6 7 cycles in total ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.41
Anti-dependencies q Me OOI επίσης έχουμε να αντιμετωπίσουμε data antidependencies όταν μια εντολή που εκτελείται σε μεταγενέστερο στάδιο αλλά συμπληρώνεται πιο γρήγορα, παράγει ένα data value που καταστρέφει ένα data value το οποίο χρησιμοποιείται από μια εντολή που κανονικά εκτελείται πριν, αλλά εκδίδεται μετά: R3 := R3 * R5 R4 := R3 + 1 R3 := R5 + 1 True data dependency Output dependency Antidependency qο περιορισμός είναι παρόμοιος με τα true data dependencies, αλλά αντίστροφος ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.42
Dependencies Επανάληψη q Τρία data dependencies: True data dependencies (read before write) Anti-dependencies (write before read) storage conflicts Output dependencies (write before write) εμφανίζονται με την χρήση των registers (ή άλλα storage locations) q True dependencies αντιπροσωπεύουν την ροή δεδομένων και την ροή του προγράμματος q Anti- και output dependencies δημιουργούνται εξαιτίας του περιορισμένου αριθμού καταχωρητών και εξυπακούει ότι το πρόγραμμα χρησημοποιεί τoυς ίδιους καταχωρητές για διαφορετικούς υπολογισμούς q Όταν οι εντολές εκδίδονται out-of-order, η σειρά συναλλαγών μεταξύ καταχωρητών και δεδομένων σπάζει, και τα δεδομένα συγκρούονται για τους καταχωρητές (conflict for registers) ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.43
Storage Conflicts και Register Renaming q Τα Storage conflicts μειώνονται (ή αποφεύγονται) με αύξηση των καταχωρητών ή με αντιγραφή της προβληματικής τοποθεσίας Επιπρόσθετοι καταχωρητές χρησιμοποιούνται για να λύσουν το πρόβλημα - Με δυναμικό τρόπο από το υλικό σε επεξεργαστές SS q Register renaming Ο επεξεργαστής μετονομάζει το αρχικό register identifier στην εντολή σε ένα καινούριο και αχρησιμοποίητο register (κάποιο που δεν χρησιμποποιήται σε κάποια από τις εντολές που μπορεί να δει) R3 := R3 * R5 R4 := R3 + 1 R3 := R5 + 1 R3b := R3a * R5a R4a := R3b + 1 R3c := R5a + 1 The hardware that does renaming assigns a replacement register from a pool of free registers and releases it back to the pool when its value is superseded and there are no outstanding references to it ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.44
Review: Extracting More Performance qto achieve high performance, need both machine parallelism and instruction level parallelism (ILP) by Superpipelining Static multiple-issue (VLIW) Dynamic multiple-issue (superscalar) qa processor s instruction issue and completion policies impact available ILP In-order issue with in-order completion In-order issue with out-of-order completion - Creates output dependencies (write before write) Out-of-order issue with out-of-order completion - Creates antidependency (write before read) Out-of-order issue with out-of-order completion and in-order commit qregister renaming can solve these storage dependencies ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.45
Speedup Measurements qh βελτίωση της απόδοσης του SS επεξεργαστή είναι - Assumes scalar and superscalar machines have the same IC & CR # scalar cycles speedup = s n = -------------------------------- # superscalar cycles qγια μέτρηση του μέσου όρου βελτίωσης της απόδοσης, χρησιμοποιούμε n Arithmetic mean AM = 1/n S s i i = 1 n Harmonic mean HM = n / ( S 1/s i ) i = 1 - assigns a larger weighting to the programs with the smallest speedup : two programs with same scalar cycles, with a SS speedup of 2 for program1 and 25 for program2 - AM = - HM = ½ * (2 + 25) = 13.5 2 / (.5 +.04) = 2 /.54 = 3.7 ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.46
Maximum (θεωρητική) SS βελτίωση απόδοσης qη μέγιστη βελτίωση απόδοσης σύστημα παραλληλισμού ( ideal machine parallelism) (ignoring resource conflicts, storage dependencies, and procedural dependencies) HM of 5.4 is the highest average speedup for these benchmarks that can be achieved even with ideal machine parallelism! 12 10 From Johnson, 1992 Speedup 8 6 4 2 0 5diff ccom doduc gnuchess irsim linpack simple troff twolf ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.47
The Post-RISC Architecture ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.48
Post-RISC characteristics q Out-of-order execution (Existed 20 years ago on IBM and CDC) Innovative for single-chip Branch history bits q Precise interrupts q Fetch/Flow Prediction q More caching Instruction cache becomes CPU scratch space q Register renaming First in IBM 360/91 FPU q Traditional RISC DEC Alpha 21164 Sun UltraSPARC-1 q (partially) Post-RISC PowerPC 604 MIPS R10000 HP PA-8000 Intel Pentium Pro DEC Alpha 21264 HAL SPARC64 ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.49
ΕΠΟΜΕΝΗ ΔΙΑΛΕΞΗ ΚΑΙ ΚΑΤ ΟΙΚΟΝ ΜΕΛΕΤΗ q ΕΠΟΜΕΝΗ ΕΝΟΤΗΤΑ Δυναμικός Παραλληλισμός Επιπέδου Εντολών -- Superscalar Επεξεργαστές q ΚΑΤ ΟΙΚΟΝ ΜΕΛΕΤΗ Κεφάλαιο 6 Patterson&Hennessy (από το βιβλίο του ΗΜΥ212) Κεφάλαιο 2 του βιβλίου σας ΗΜΥ312 Δ16 - Παραλληλισμός εντολών και εισαγωγή στον SimpleScalar.50