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

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

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

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

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

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

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

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

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

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

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

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

Instruction Execution Times

CS425 Computer Systems Architecture

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(Branch Prediction Mechanisms)

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

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

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

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

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

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

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

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

Block Ciphers Modes. Ramki Thurimella

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

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

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

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

CMOS Technology for Computer Architects

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

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

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

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

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

Pipelined Datapath, Hazards and Forwarding

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

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

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

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

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Απόδοση ΚΜΕ. (Μέτρηση και τεχνικές βελτίωσης απόδοσης)

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

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

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

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

Assalamu `alaikum wr. wb.

i Throughput: Ο ρυθμός ολοκλήρωσης έργου σε συγκεκριμένο χρόνο

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

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

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

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

CS-425 Mid-term exam

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

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

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

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

HOMEWORK 4 = G. In order to plot the stress versus the stretch we define a normalized stretch:

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

Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου. Ενδέκατη (11 η ) δίωρη διάλεξη.

Capacitors - Capacitance, Charge and Potential Difference

[1] P Q. Fig. 3.1

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Εργαστήριο 10: Επίδοση Επεξεργαστών, CPI. Μανόλης Γ.Η. Κατεβαίνης

Phys460.nb Solution for the t-dependent Schrodinger s equation How did we find the solution? (not required)

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

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

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 18: Διαδικασία Σχεδίασης Ψηφιακών Συστηµάτων - Επανάληψη

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

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

Main source: "Discrete-time systems and computer control" by Α. ΣΚΟΔΡΑΣ ΨΗΦΙΑΚΟΣ ΕΛΕΓΧΟΣ ΔΙΑΛΕΞΗ 4 ΔΙΑΦΑΝΕΙΑ 1

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

derivation of the Laplacian from rectangular to spherical coordinates

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

Elements of Information Theory

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

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

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

ΘΕΜΑ PROJECT COMPILER FLAGS ΤΡΑΧΑΝΗΣ ΔΗΜΗΤΡΗΣ 6108 ΤΡΑΧΑΝΗΣ ΓΕΩΡΓΙΟΣ 5789

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΟΛΙΤΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΤΟΜΕΑΣ ΥΔΡΑΥΛΙΚΗΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΙΚΗΣ ΤΕΧΝΙΚΗΣ. Ειδική διάλεξη 2: Εισαγωγή στον κώδικα της εργασίας

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

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

Physical DB Design. B-Trees Index files can become quite large for large main files Indices on index files are possible.

Transcript:

ΗΜΥ 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.