ΗΜΥ 312 -- ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΑΛΕΞΗ 18: Στατικός Παραλληλισμός Εντολών VLIW Επεξεργαστές Διδάσκων: Χάρης Θεοχαρίδης Αναπληρωτής Καθηγητής, ΗΜΜΥ (ttheocharides@ucy.ac.cy) [Προσαρμογή από Computer Architecture, Computer Organization and Design, Patterson & Hennessy, 2005 ]
Επεξεργαστές Πολλαπλής Έκδοσης qdynamic multiple-issue processors (aka superscalar) Οι αποφάσεις για το ποιες εντολές θα εκτελεστούν παράλληλα (2-8 εντολές) λαμβάνονται δυναμικά με σημαντική υποβοήθεια από το υλικό Π.χ., IBM Power 2, Pentium 4, MIPS R10K, HP PA 8500 IBM qstatic 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
ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισμός Επιπέδου Εντολών.3 Ερωτήματα... qποια χαρακτηριστικά προγραμμάτων και επεξεργαστών περιορίζουν την παράλληλη εκτέλεση πολλαπλών εντολών; qπώς μεταφράζονται τα προγράμματα σε υλικό; qμπορεί μια ικανότητα του προγράμματος να περιορίσει την απόδοση; Αν ναι, πότε;
Ας θυμηθούμε από το Pipelining qpipeline 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
Περιορισμός των 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
ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισμός Επιπέδου Εντολών.6 Επανάληψη Περιορισμός του 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!
Παράδειγμα: Παραλληλισμός στους βρόγχους (Loop-level parallelism) ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισμός Επιπέδου Εντολών.7 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 Επεξεργαστές Στατικός Παραλληλισμός Επιπέδου Εντολών.8 Μεγιστοποίηση του ILP μειώνοντας τα hazards qαφού οι εξαρτήσεις δεδομένων περιορίζουν το ILP που μπορούμε να χρησιμοποιήσουμε, εστιάζουμε την προσοχή μας στο πώς θα ξεπεράσουμε τις εξαρτήσεις, όπου είναι δυνατό. qμια εξάρτηση μπορεί να ξεπεραστεί με 2 τρόπους: Διατηρώντας την εξάρτηση αλλά αποφεύγοντας το hazard Εξαλείφωντας την εξάρτηση αλλάζοντας τον κώδικα qστους superscalar επεξεργαστές είδαμε πώς αυτό επιτυγχάνεται με δυναμικό τρόπο, με χρήση υλικού, καθώς ο κώδικας εισέρχεται στον επεξεργαστή για εκτέλεση. Πως;... qείδαμε όμως πως αυξάνει την πολυπλοκότητα του υλικού!
Αποφεύγοντας τις εξαρτήσεις ονομάτων καταχωρητών (name dependences) ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισμός Επιπέδου Εντολών.9 qαφού μια εξάρτηση ονόματος δεν είναι πραγματική εξάρτηση (δεδομένων) μπορούμε να μετονομάσουμε τους εξαρτώμενους καταχωρητές (και τοποθεσίες μνήμης) και να εκτελέσουμε παράλληλα τις εντολές! Μετονόμαση Καταχωρητών! (Register Renaming) Η μετονόμαση καταχωρητών είναι ευκολότερη (σε σχέση με άλλες εξαρτήσεις δεδομένων στη μνήμη) και μπορεί να γίνει είτε με δυνάμικό τρόπο (superscalar) είτε με στατικό τρόπο (VLIW)
ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισμός Επιπέδου Εντολών.10 Κίνδυνοι Δεδομένων (Data hazards) qένα hazard δημιουργείται όταν υπάρχει εξάρτηση μεταξύ εντολών και είναι τόσο κοντά οι εντολές ώστε ο παραλληλισμός που επιφέρεται (π.χ. με χρήση pipeline ή/και πολλαπλή έκδοση εντολών) θα αλλάξει τη σειρά πρόσβασης στα απαιτούμενα δεδομένα Επομένως, πρέπει να διατηρηθεί το γνωστό program order δηλ., η σειρά εκτέλεσης των των εντολών πρέπε να «διατηρηθεί» η ίδια με αυτή της ακολουθιακής σειράς εκτέλεσης Στόχος είναι να γίνει εκμετάλευση παραλληλισμού διατηρώντας τη σειρά του προγράμματος, μόνο όταν μια αλλαγή στη σειρά επιρεάζει το αποτέλεσμα του προγράμματος Η ανίχνευση και αποφυγή κινδύνων διασφαλίζει την αναγκαία διατήρηση της σειρά εκτέλεσης του προγράμματος
ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισμός Επιπέδου Εντολών.11 Κατηγορίες 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
Κατηγορίες 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
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 qunfortunately, the benefits of dynamic scheduling are gained at the cost of a significant increase in hardware complexity!!! ΠΟΛΥΠΛΟΚΟΤΗΤΑ! ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισμός Επιπέδου Εντολών.13
ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισμός Επιπέδου Εντολών.14 Εξαρτήσεις Ελέγχου (Control dependencies) q Μια εξάρτηση ελέγχου καθορίζει τη σειρά εκτέλεσης μιας εντολης i σε σχέση με μια εντολή branch έτσι ώστε η i να εκτελεστεί στη σωστή σειρά του προγράμματος q e.g. S1; q if P2 { } S3; η S1 δεν μπορεί να εκτελεστεί «υπό τον έλεγχο» της P2, ούτε η S3 να «ξεφύγει από τον έλεγχο» της P2. Η εξάρτηση δεν παύει να διατηρείται Πιθανόν να εκτελεστούν εντολές αγνοώντας την εξάρτηση, μόνο αν αυτό δεν αλλάζει την τελική ορθότητα του προγράμματος (à speculation) 2 σημαντικοί παράγοντες κρίσιμοι για τη διατήρηση της ορθότητας του προγράμματος: συμπεριφορά εξαιρέσεων (exception behavior) και ροή δεδομένων (data flow) Γίνεται με πρόβλεψη branch (prediction) Διατηρείται η εκτέλεση εφόσον είναι σωστή Διορθώνεται εφόσον ήταν λάθος η πρόβλεψη
ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισμός Επιπέδου Εντολών.15 Scheduling to minimize hazards qa dynamically-scheduled processor (superscalar) attempts to avoid stalls in the presence of dependences. qin contrast, static scheduling by the compiler (VLIW) tries to minimize stalls by separating dependent instructions to avoid hazards. qμεταφορά ελέγχου από το υλικό στο λογισμικό και εξ ανάγκης στον προγραμματιστή και στην τεχνολογία του προγράμματος μετάφρασης... Καλό, ή κακό;
ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισμός Επιπέδου Εντολών.16 History of VLIW Processors qstarted with (horizontal) microprogramming Very wide microinstructions used to directly generate control signals in single-issue processors (e.g., IBM 360 series) qvliw for multi-issue processors first appeared in the Multiflow and Cydrome (in the early 1980 s) qcurrent commercial VLIW processors Intel I-64 (EPIC: Itanium and Itanium 2) Transmeta Crusoe Lucent/Motorola StarCore ADI TigerSHARC Infineon (Siemens) Carmel
IA-64 ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισμός Επιπέδου Εντολών.17
ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισμός Επιπέδου Εντολών.18 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 Γενική Οργάνωση 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). qthe principle behind VLIW is similar to that of parallel computing execute multiple instructions/operations in one clock cycle.
ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισμός Επιπέδου Εντολών.22 Διαχείριση Εντολών 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 Very Long Instruction Word VLIW qassume 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 qmachine 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 Οργάνωση Εντολών Για Εκτέλεση 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 Το MIPS VLIW (2-issue) Datapath Add Add 4 ALU Instruction Memory Register File PC qno 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 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 qloop 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 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 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 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
Predication ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισμός Επιπέδου Εντολών.37
ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισμός Επιπέδου Εντολών.38 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 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 Where are we heading? qvliw Περιορίζεται από τον προγραμματιστή και τον μεταγλωττιστή qsuperscalar Περιορίζεται από την πολυπλοκότητα και τον προγραμματιστή qπώς διαχειριζόμαστε λοιπόν αυτά τα προβλήματα? qυπάρχει τρόπος να έχουμε παραλληλισμό ΚΑΙ ταυτόχρονα απλότητα, απόδοση και λογική κατανάλωση ενέργειας?
Multi-Threaded CPUs ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισμός Επιπέδου Εντολών.43
Or Multi-Core (and Multi-Threaded) CPUs? ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισμός Επιπέδου Εντολών.44
ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισμός Επιπέδου Εντολών.45 Multi-Core Processors Emergence of Multicore Processor(2000 s) Limits of improvement of single core Turn over of the idea that improve the MP technology Put execution cores in one die Exploits increased feature-size and density Increases functional units per chip (spatial efficiency) Limits energy consumption per operation Constrains growth in processor complexity
ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισμός Επιπέδου Εντολών.46 Multi-Core Computer A multi-core processor is a processing system composed of two or more independent cores (or CPUs). The cores are typically integrated onto a single integrated circuit die (known as a chip multiprocessor or CMP), or they may be integrated onto multiple dies in a single chip package. A many-core processor is one in which the number of cores is large enough that traditional multi-processor techniques are no longer efficient - this threshold is somewhere in the range of several tens of cores - and likely requires a network on chip.
ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισμός Επιπέδου Εντολών.47 Multi-Core Computer qdual-core processor contains two independent microprocessors. qa dual core set-up is somewhat comparable to having multiple, separate processors installed in the same computer, but because the two processors are actually plugged into the same socket, the connection between them is faster. Ideally, a dual core processor is nearly twice as powerful as a single core processor. In practice, performance gains are said to be about fifty percent: a dual core processor is likely to be about one-and-a-half times as powerful as a single core processor.
CMP benefits qwith a shared on-chip cache memory, communication events can be reduced to just a handful of processor cycles. qtherefore with low latencies, communication delays have a much smaller impact on overall performance. qthreads can also be much smaller and still be effective. qautomatic parallelization more feasible. qcores will be shared with a wide range of other applications dynamically. qload can no longer be considered symmetric across the cores. qcores will likely not be asymmetric as accelerators become common for scientific hardware. qsource code will often be unavailable, preventing compilation against the specific hardware configuration. ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισμός Επιπέδου Εντολών.48
ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισμός Επιπέδου Εντολών.49 several threads The cores run in parallel (like on a uniprocessor) several threads several threads several threads c o r e c o r e c o r e c o r e 1 2 3 4
ΗΜΥ312 Δ18 VLIW Επεξεργαστές Στατικός Παραλληλισμός Επιπέδου Εντολών.50 Programming and O/S qprogrammers must use threads or processes. qspread the workload across multiple cores. qwrite parallel algorithms. qos will map threads/processes to core qmost major OS support multi-core today. qos perceives each core as a separate processor. qos scheduler maps threads/processes to different cores.