ΗΜΥ 312 -- ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΑΛΕΞΗ 18: Στατικός Παραλληλισμός Εντολών VLIW Επεξεργαστές Διδάσκουσα: ΜΑΡΙΑ Κ. ΜΙΧΑΗΛ Επίκουρη Καθηγήτρια, ΗΜΜΥ (mmichael@ucy.ac.cy) [Προσαρµογή από Computer Architecture, Computer Organization and Design, Patterson & Hennessy, 2005 ] Επεξεργαστές Πολλαπλής Έκδοσης q Dynamic multiple-issue processors (aka superscalar) Οι αποφάσεις για το ποιες εντολές θα εκτελεστούν παράλληλα (2-8 εντολές) λαµβάνονται δυναµικά µε σηµαντική υποβοήθεια από το υλικό Π.χ., IBM Power 2, Pentium 4, MIPS R10K, HP PA 8500 IBM q Static multiple-issue processors (aka VLIW) Οι αποφάσεις για το ποιες εντολές θα εκτελεστούν παράλληλα λαµβάνονται στατικά κατά τη διάρκεια της µεταγλώττισης Π.χ., Intel Itanium και Itanium 2 για IA-64 ISA EPIC (Explicit Parallel Instruction Computer) - Οµάδες ( bundles ) των 128-bit περιέχουν 3 εντολές, η κάθε µια µε 41 bits + 5 bit template field (καθορίζει το FU της εντολής) - 5 µονάδες εκτέλεσης (FUs) -- IntALU, MMedia, DMem, FPALU, Branch - Υποστήριξη για speculation και predication ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.2 1
Ερωτήµατα... q Ποια χαρακτηριστικά προγραµµάτων και επεξεργαστών περιορίζουν την παράλληλη εκτέλεση πολλαπλών εντολών; q Πώς µεταφράζονται τα προγράµµατα σε υλικό; q Μπορεί µια ικανότητα του προγράµµατος να περιορίσει την απόδοση; Αν ναι, πότε; ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.3 Ας θυµηθούµε από το Pipelining q Pipeline CPI = Ideal pipeline CPI + Structural Stalls + Data Hazard Stalls + Control Stalls Ideal pipeline CPI: measure of the maximum performance attainable by the implementation Structural hazards: HW cannot support this combination of instructions Data hazards: Instruction depends on result of prior instruction still in the pipeline Control hazards: Caused by delay between the fetching of instructions and decisions about changes in control flow (branches and jumps) q Για αύξηση των instructions/cycle (IPC) χρειαζόµαστε να συνγκεντρώσουµε την προσοχή µας στα stalls ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.4 2
Περιορισµός των Stalls και τεχνικές επίλυσης Superscalar VLIW Technique Dynamic scheduling Dynamic branch prediction Issuing multiple instructions per cycle Speculation Dynamic memory disambiguation Loop unrolling Basic compiler pipeline scheduling Compiler dependence analysis Software pipelining and trace scheduling Compiler speculation Reduces Data hazard stalls Control stalls Ideal CPI Data and control stalls Data hazard stalls involving memory Control hazard stalls Data hazard stalls Ideal CPI and data hazard stalls Ideal CPI and data hazard stalls Ideal CPI, data and control stalls ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.5 Επανάληψη Περιορισµός του ILP q Ο βαθµός παραλληλισµού που περιέχεται σε ένα basic block (= συνεχές ακολουθία εντολών χωρίς branches, εκτός στην είσοδο/έξοδο της ακολουθίας) είναι περιορισµένη. q Η τυπική συχνότητα των dynamic branches είναι συνήθως µεταξύ 15% και 25% µεταξύ 4 και 7 εντολές εκτελούνται µεταξύ δυο συζευγµένων διακλαδώσεων (branch pairs these instructions are likely to depend upon each other, and thus the overlap we can exploit within a basic block is typically less than the average block size) q Για σηµαντική βελτίωση της απόδοσης, πρέπει να εκµεταλλευτούµε παραλληλισµό επιπέδου εντολών µεταξύ πολλαπλών basic blocks! ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.6 3
Παράδειγµα: Παραλληλισµός στους βρόγχους (Loop-level parallelism) q Το Loop-level parallelism βελτιώνει τον διαθέσιµο βαθµό παραλληλισµού µεταξύ των επαναλήψεων ενός βρόγχου. q Στον κώδικα:!for (i=1; i<1000; i++)!!!!x[i] = x[i] + y[i];! Όλες οι επαναλήψεις µπορούν να εκτελεστούν παράλληλα, παρόλο που το ILP µεταξύ εντολών που ανήκουν στην ίδια επανάληψη είναι πολύ περιορισµένο! q Κάνουµε unrolling loops για µετατροπή του loop-level parallelism σε instruction-level parallelism (ILP). ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.7 Μεγιστοποίηση του ILP µειώνοντας τα hazards q Αφού οι εξαρτήσεις δεδοµένων περιορίζουν το ILP που µπορούµε να χρησιµοποιήσουµε, εστιάζουµε την προσοχή µας στο πώς θα ξεπεράσουµε τις εξαρτήσεις, όπου είναι δυνατό. q Μια εξάρτηση µπορεί να ξεπεραστεί µε 2 τρόπους: Διατηρώντας την εξάρτηση αλλά αποφεύγοντας το hazard Εξαλείφωντας την εξάρτηση αλλάζοντας τον κώδικα q Στους superscalar επεξεργαστές είδαµε πώς αυτό επιτυγχάνεται µε δυναµικό τρόπο, µε χρήση υλικού, καθώς ο κώδικας εισέρχεται στον επεξεργαστή για εκτέλεση. Πως;... q Είδαµε όµως πως αυξάνει την πολυπλοκότητα του υλικού! ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.8 4
Αποφεύγοντας τις εξαρτήσεις ονοµάτων καταχωρητών (name dependences) q Αφού µια εξάρτηση ονόµατος δεν είναι πραγµατική εξάρτηση (δεδοµένων) µπορούµε να µετονοµάσουµε τους εξαρτώµενους καταχωρητές (και τοποθεσίες µνήµης) και να εκτελέσουµε παράλληλα τις εντολές! Μετονόµαση Καταχωρητών! (Register Renaming) Η µετονόµαση καταχωρητών είναι ευκολότερη (σε σχέση µε άλλες εξαρτήσεις δεδοµένων στη µνήµη) και µπορεί να γίνει είτε µε δυνάµικό τρόπο (superscalar) είτε µε στατικό τρόπο (VLIW) ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.9 Κίνδυνοι Δεδοµένων (Data hazards) q Ένα hazard δηµιουργείται όταν υπάρχει εξάρτηση µεταξύ εντολών και είναι τόσο κοντά οι εντολές ώστε ο παραλληλισµός που επιφέρεται (π.χ. µε χρήση pipeline ή/και πολλαπλή έκδοση εντολών) θα αλλάξει τη σειρά πρόσβασης στα απαιτούµενα δεδοµένα Εποµένως, πρέπει να διατηρηθεί το γνωστό program order δηλ., η σειρά εκτέλεσης των των εντολών πρέπε να «διατηρηθεί» η ίδια µε αυτή της ακολουθιακής σειράς εκτέλεσης Στόχος είναι να γίνει εκµετάλευση παραλληλισµού διατηρώντας τη σειρά του προγράµµατος, µόνο όταν µια αλλαγή στη σειρά επιρεάζει το αποτέλεσµα του προγράµµατος Η ανίχνευση και αποφυγή κινδύνων διασφαλίζει την αναγκαία διατήρηση της σειρά εκτέλεσης του προγράµµατος ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.10 5
Κατηγορίες data hazards q Τρεις κατηγορίες data hazards, ανάλογα µε την σειρά εγγραφής και ανάγνωσης Συνηθίζεται τα hazards να ονοµάζονται βάσει της σειράς που πρέπει να διατηρηθεί. q Ας θεωρήσουµε 2 εντολές i και j, µε την i να έρχεται πριν την j στη σειρά του προγράµµατος. Οι πιθανοί κίνδυνοι είναι: RAW (read after write) η j προσπαθεί να διαβάσει πριν γράψει η i. Αυτός είναι ο πιο κοινός κίνδυνος και αντιστοιχεί σε πραγµατική εξάρτηση δεδοµένων (true data dependence). e.g. LD!R4, 0(R0) ADD!R1, R3, R4!!!!!!!! ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.11 Κατηγορίες data hazards WAW (write after write) η j προσπαθεί να γράψει πριν την i. - Ο κίνδυνος αυτός αντιστοιχεί σε εξάρτηση εξόδου (output dependence). - Συµβαίνει σε pipelines που µπορούν να γράψουν σε περισσότερα από 1 στάδια ή επιτρέπουν εκτέλεση εκτός σειράς (out-of order execution). - Δεν ισχύει σε απλά, στατικά 5-stage pipelines (MIPS) όπου η εγγραφή γίνεται στο 5 στάδιο (WB). WAR (write after read) η j προσπαθεί να γράψει πριν διαβάσει η i. - Προκύπτει από antidependence. - Δεν µπορεί να συµβεί σε pipelines µε στατική έκδοση όταν η ανάγνωση γίνεται πριν την εγγραφή (π.χ. MIPS). - Δύναται να συµβεί όταν κάποια εντολή γράφει στην αρχή του pipeline και κάποια άλλη διαβάζει στο τέλος ή σε εκτέλεση εντολών εκτως σειράς. q Σηµειώστε ότι το RAR (read after read) δεν είναι κίνδυνος! ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.12 6
Εξαρτήσεις Ελέγχου (Control dependencies) q Μια εξάρτηση ελέγχου καθορίζει τη σειρά εκτέλεσης µιας εντολης i σε σχέση µε µια εντολή branch έτσι ώστε η i να εκτελεστεί στη σωστή σειρά του προγράµµατος q e.g. S1;!!! if P2 {!!!! S3;!!!!}! q η S1 δεν µπορεί να εκτελεστεί «υπό τον έλεγχο» της P2, ούτε η S3 να «ξεφύγει από τον έλεγχο» της P2. ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.13 Τι συµβαίνει αν αγνοηθεί η εξάρτηση ελέγχου; q Η εξάρτηση δεν παύει να διατηρείται Πιθανόν να εκτελεστούν εντολές αγνοώντας την εξάρτηση, µόνο αν αυτό δεν αλλάζει την τελική ορθότητα του προγράµµατος (à speculation) q 2 σηµαντικοί παράγοντες κρίσιµοι για τη διατήρηση της ορθότητας του προγράµµατος: συµπεριφορά εξαιρέσεων (exception behavior) και ροή δεδοµένων (data flow) q Γίνεται µε πρόβλεψη branch (prediction) Διατηρείται η εκτέλεση εφόσον είναι σωστή Διορθώνεται εφόσον ήταν λάθος η πρόβλεψη ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.14 7
Overcoming data hazards with dynamic scheduling q Simple statically scheduled pipelines fetch instructions and issue them unless stalled due to some data dependence that cannot be hidden by forwarding Once stalled, no further instructions are fetched or issued until the dependence is cleared q In dynamic scheduling the hardware rearranges instruction execution to reduce stalls while maintaining data flow and exception behaviour This technique allows us to handle dependences that are unknown at compile time (e.g. a memory reference) and allows code that was compiled with one pipeline in mind to be efficiently executed on a different pipeline q Unfortunately, the benefits of dynamic scheduling are gained at the cost of a significant increase in hardware complexity!!! ΠΟΛΥΠΛΟΚΟΤΗΤΑ! ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.15 Scheduling to minimize hazards q A dynamically-scheduled processor (superscalar) attempts to avoid stalls in the presence of dependences. q In contrast, static scheduling by the compiler (VLIW) tries to minimize stalls by separating dependent instructions to avoid hazards. q Μεταφορά ελέγχου από το υλικό στο λογισµικό και εξ ανάγκης στον προγραµµατιστή και στην τεχνολογία του προγράµµατος µετάφρασης... Καλό, ή κακό; ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.16 8
History of VLIW Processors q Started with (horizontal) microprogramming Very wide microinstructions used to directly generate control signals in single-issue processors (e.g., IBM 360 series) q VLIW for multi-issue processors first appeared in the Multiflow and Cydrome (in the early 1980 s) q Current commercial VLIW processors Intel I-64 (EPIC: Itanium and Itanium 2) Transmeta Crusoe Lucent/Motorola StarCore ADI TigerSHARC Infineon (Siemens) Carmel ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.17 IA-64 ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.18 9
Static Multiple Issue Machines (VLIW) q Οι επεξεργαστές στατικής πολλαπλής έκδοσης εντολών (aka VLIW) χρησιµοποιούν τον µεταγλωττιστή για να αποφασίσουν για το ποιες εντολές θα εκδοθούν και θα εκτελεστούν παράλληλα. Issue packet the set of instructions that are bundled together and issued in one clock cycle think of it as one large instruction with multiple operations The mix of instructions in the packet (bundle) is usually restricted a single instruction with several predefined fields The compiler does static branch prediction and code scheduling to reduce (control) or eliminate (data) hazards q Οι επεξεργαστές VLIW s έχουν Multiple functional units (like SS processors) Multi-ported register files (again like SS processors) Wide program bus ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.19 Very Long Instruction Word VLIW - Κίνητρο q Hardware complexity and scalability are two major issues that question the validity of the Super Scalar machines. q Consider the following cases: The instruction issue logic of PA-8000 (A four issue Super Scalar machine with 56 instruction queue entries) occupies 20% of the die area. As the issue width increases the need for register renaming, complexity of bypassing, forwarding, and interlocks increases dramatically. q Increasing hardware complexity pays back lesser dividends: Performance of a 200MHZ MIPS R5000 (a single issue machine) on SPEC95 is about 70% of a 200MHZ MIPS R10000 (a four issue machine). ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.20 10
Γενική Οργάνωση q Βασική οργάνωση αρχιτεκτονικής VLIW Original Source Code Parallel Machine Code Hardware Compiler More Resources ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.21 Διαχειρισµός Εντολών q Very Long Instruction Word (VLIW) design takes advantage of instruction parallelism to reduce number of instructions by packing several independent instructions into a very long instruction. q VLIW arranges all executable operations in one word simultaneously many statically scheduled, tightly coupled, fine-grained operations execute in parallel within a single instruction stream. q Naturally, the more densely the operations can be compacted, the better the performance (lower number of long instructions). q The principle behind VLIW is similar to that of parallel computing execute multiple instructions/ operations in one clock cycle. ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.22 11
Διαχειρισµός Εντολών q During compaction, NOOPs can be used for operations that can not be used. q To compact instructions, software must be able to detect independent operations. q A VLIW instruction might include two integer operations, two floating point operations, two memory reference operations, and a branch operation. q The compacting compiler takes ordinary sequential code and compresses it into very long instruction words through unrolling loops and trace scheduling scheme. ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.23 Αρχιτεκτονική VLIW Λειτουργία FP Add FP Mult. Int. ALU Branch Load/ Store Instruction Issue Unit FP Add FP Mult. Int. ALU Branch Load/ Store Register File q This architecture allows any functional unit to access any registered data. This implies too many ports to fully connect the register file to all functional units. q More realistic solution, partitions register file into banks and allows a subset of functional units to have exclusive access to each register bank. ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.24 12
Very Long Instruction Word VLIW q Assume the following FORTRAN code and a corresponding machine code: C = (A * 2 + B * 3) * 2 * i, Α, Β, C are FP Q = (C + A + B) - 4 * (i + j) i, j are Integer q Machine code: 1) LD A 2) LD B 3) t 1 = A * 2 4) t 2 = B * 3 5) t 3 = t 1 + t 2 6) LD i 7) t 4 = 2 * i 8) C = t 4 * t 3 9) ST C 10) LD j 11) t 5 = i + j 12) t 6 = 4 * t 5 13) t 7 = A + B 14) t 8 = C + t 7 15) Q = t 8 - t 6 16) ST Q ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.25 Task Flow Graph Διάγραµµα Εργασιών q Check dependencies q A node is placed at the highest possible level, along with other nodes with no dependencies q Once the DFG is created, how can it be used? à Determine instruction bundles, given the underlying VLIW architecture. à Determine lower bound on number of CPU cycles to execute the program for any VLIW organization. How? 1 5 8 2 6 3 13 4 7 11 9 14 15 16 12 10 ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.26 13
Οργάνωση Εντολών Για Εκτέλεση Assume the following VLIW organization: LD0 LD1 INT0 INT1 FP0 FP1 BRANCH LD A LD B LD I LD J A * 2 B * 3 2 * I I + J t 1 + t 2 A + B 4 * t 5 t 4 * t 3 ST C C + t 7 t 8 t 6 ST Q If you could add 1 more FU, which type would aid in increasing the performance for this case? ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.27 Παράδειγµα: Ένας VLIW MIPS q Υποθέστε ένα 2-issue MIPS µε δέσµη 2 εντολών 64 bits ALU Op (R format) or Branch (I format) Load or Store (I format) q Οι εντολές µεταφέρονται, αποκωδικοποιούνται και εκδίδονται σε ζεύγη. Αν κάποια από τις 2 εντολές δεν µπορούν να χρησιµοποιηθούν τότε µπαίνει noop q Χρειαζόµαστε 4 read ports και 2 write ports και ένα διαφορετικό memory address adder ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.28 14
Το MIPS VLIW (2-issue) Datapath Add Add 4 ALU Instruction Memory Register File PC q No hazard hardware (so no load use allowed) (i.e. load and an instruction following the load s value) Write Addr Write Data Sign Extend Sign Extend Add Data Memory ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.29 Παράδειγµα Προγραµµατισµού Κώδικα (Scheduling) q Ας υποθέσουµε τον ακόλουθο κώδικα (loop) lp: lw $t0,0($s1) # $t0=array element addu $t0,$t0,$s2 # add scalar in $s2 sw $t0,0($s1) # store result addi $s1,$s1,-4 # decrement pointer bne $s1,$0,lp # branch if $s1!= 0 q Πρέπει να κάνουµε schedule τις εντολές κατά τρόπο αποφυγής pipeline stalls Οι εντολές στην ίδια δέσµη (bundle) πρέπει να είναι ανεξάρτητες Πρέπει να καθυστερήσουµε τις εντολές που χρησιµοποιούν µεταβλητές που φορτώνονται από τις load κατά ένα κύκλο Στο παράδειγµα έχουµε τις δυο πρώτες εντολές που έχουν συζευγµένο load (load use), ενώ στις άλλες έχουµε data dependencies Ας υποθέσουµε ότι τα branches προβλέπονται αλάνθαστα ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.30 15
The Scheduled Code (Not Unrolled) ALU or branch Data transfer CC lp: lw $t0,0($s1) 1 addi $s1,$s1,-4 2 addu $t0,$t0,$s2 3 bne $s1,$0,lp sw $t0,4($s1) 4 q Τέσσερις κύκλοι ρολογιού για εκτέλεση 5 εντολών για CPI of 0.8 (versus the best case of 0.5) IPC of 1.25 (versus the best case of 2.0) NOOPS don t count towards performance!! ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.31 Loop Unrolling Ανοίγοντας το Loop q Loop unrolling δηµιουργούνται πολλαπλά αντίγραφα του loop body και εντολές από διαφορετικά επαναλήψεις γίνονται scheduled µαζί à τρόπος βελτίωσης του ILP ενός προγράµµατος q Εφαρµόζουµε το loop unrolling (4 φορές στο παράδειγµά µας) και ακολούθως κάνουµε schedule τον νέο κώδικα Eliminate unnecessary loop overhead instructions Schedule so as to avoid load use hazards q Κατά την διάρκεια του unrolling, το compiler εφαρµόζει register renaming για απάλειψη όλων των εξαρτήσεων δεδοµένων που δεν είναι true dependencies ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.32 16
Unrolled Code Example lp: lw $t0,0($s1) # $t0=array element lw $t1,-4($s1) # $t1=array element lw $t2,-8($s1) # $t2=array element lw $t3,-12($s1) # $t3=array element addu $t0,$t0,$s2 # add scalar in $s2 addu $t1,$t1,$s2 # add scalar in $s2 addu $t2,$t2,$s2 # add scalar in $s2 addu $t3,$t3,$s2 # add scalar in $s2 sw $t0,0($s1) # store result sw $t1,-4($s1) # store result sw $t2,-8($s1) # store result sw $t3,-12($s1) # store result addi $s1,$s1,-16 # decrement pointer bne $s1,$0,lp # branch if $s1!= 0 ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.33 The Scheduled Code (Unrolled) ALU or branch Data transfer CC lp: addi $s1,$s1,-16 lw $t0,0($s1) 1 lw $t1,12($s1) 2 addu $t0,$t0,$s2 lw $t2,8($s1) 3 addu $t1,$t1,$s2 lw $t3,4($s1) 4 addu $t2,$t2,$s2 sw $t0,16($s1) 5 addu $t3,$t3,$s2 sw $t1,12($s1) 6 sw $t2,8($s1) 7 bne $s1,$0,lp sw $t3,4($s1) 8 q Οκτώ κύκλοι ρολογιού για εκτέλεση 14 εντολών για CPI of 0.57 (versus the best case of 0.5) IPC of 1.8 (versus the best case of 2.0) ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.34 17
Speculation Υποθετική Εκτέλεση Εντολών q Το Speculation χρησιµοποιείται για εκτέλεση µελλοντικών εντολών που (µπορεί) να εξαρτώνται από το αποτέλεσµα της speculated εντολής q Κάνουµε speculate στο αποτέλεσµα ενός conditional branch (branch prediction) q Κάνουµε επίσης speculate ότι ένα store (του οποίου δεν ξέρουµε το address) που προπορεύεται ενός load δεν αναφέρεται στο ίδιο address, αφήνοντας το load να γίνει scheduled πριν το store (load speculation) ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.35 Πώς γίνεται q Πρέπει να έχουµε µηχανισµούς (hardware and/ or software) για Έλεγχο πρόβλεψης (σωστό / λάθος) Επανόρθωση τυχόν λανθασµένης πρόβλεψης - Στο VLIW processor, το compiler µπορεί να προσθέσει επιπλέον εντολές που ελέγχουν την ακρίβεια της πρόβλεψης όπως και διαδικασία επανόρθωσης q Αγνοούµε ή/και αποθηκεύουµε εξαιρέσεις (exceptions) που δηµιουργούνται από εντολές που εκτελεστήκαν µε speculation µέχρι την διαπίστωση ότι έπρεπε όντως να εκτελεστούν ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.36 18
Predication q Το Predication χρησιµοποιείται για απάλειψη των branches κάνοντας την εκτέλεση µιας εντολής εξαρτώµενη σε ένα predicate, π.χ., if (p) {statement 1} else {statement 2} θα µεταφραζόταν κανονικά µε δυο branches. Με το predication θα µεταφραστεί σαν (p) statement 1 (~p) statement 2 q Η χρήση της συνθήκης(condition) δείχνει ότι η εντολή θα γίνει commit µόνο όταν η συνθήκη εξακριβωθεί αληθινή (only if condition is true) q Το Predication χρησιµοποιείται και για speculation και για αφαίρεση των branches ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.37 Predication ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.38 19
Compiler Support for VLIW Processors q Ο µεταγλωττιστής «πακετάρει» οµάδες ανεξάρτητων εντολών στην δέσµη (bundle) Πιθανή αναδιάταξη του κώδικα και trace scheduling q Ο µεταφραστής χρησιµοποιεί loop unrolling για αύξηση του ILP q Χρησιµοποιεί επίσης register renaming για επίλυση name dependencies και εξασφαλιζει ότι δεν υπάρχουν «load use» hazards ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.39 Compiler Support for VLIW Processors (cont) q Ενώ οι Superscalars χρησιµοποιούν dynamic prediction, οι VLIWs εξαρτώνται κυρίως από τον µεταγλωττιστή για (branch) prediction Loop unrolling reduces the number of conditional branches Predication eliminates if-the-else branch structures by replacing them with predicated instructions q Ο µεταγλωττιστής προβλέπει αναφορές στα memory banks για να βοηθήσει στην ελαχιστοποίηση των memory bank conflicts ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.40 20
VLIW Πλεονεκτήµατα & Μειονεκτήµατα (σε σχέση µε SS) q Πλεονεκτήµατα Πιό απλό υλικό (συνήθως µε λιγότερες απαιτήσεις σε power) Δυνητικά µε µεγαλύτερες δυνατότητες επέκτασης (scalability) - Επιτρέπει περισσότερες εντολές ανά δέσµη (µε επιπρόσθετα FUs) q Μειονεκτήµατα Πολυπλοκότητα προγραµµατισµού/µεταγλωττιστή και αύξηση χρόνου µεταγλώττισης - Ειδικά για µεγάλα pipelines κιαι latencies Κλείδωµα πράξεων (lock step operation) σε περίπτωση κινδύνου (hazard) όλες οι µελλοντικές εκδόσεις εντολών καθυστερούν (stall) µέχρι την επίλυση του κινδύνου (και εποµένως υπάρχει η ανάγκη για predication) Object (binary) code incompatibility ο µεταγλωττιστής είναι ΜΟΝΟ για ένα συγκεκριµένο επεξεργαστή Αύξηση πλάτους διαδρόµου δεδοµένων και µνήµης Code bloat Μεγέθυνση συνόλου κώδικα! ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.41 CISC vs RISC vs SS vs VLIW CISC RISC Superscalar VLIW Instr size variable size fixed size fixed size fixed size (but large) Instr format Registers Memory reference Key Issues Instruction flow variable format few, some special embedded in many instr s decode complexity fixed format fixed format fixed format many GP GP and rename (RUU) many, many GP load/store load/store load/store data forwarding, hazards hardware dependency resolution (compiler) code scheduling IF ID EX M WB IF ID EX M WB IF ID EX M WB IF ID EX M WB EX M WB IF ID EX M WB IF ID EX M WB IF ID EX M WB IF ID EX M WB IF ID EX M WB EX M WB ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισµός Επιπέδου Εντολών.42 21