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

Σχετικά έγγραφα
ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I

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

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

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

CS425 Computer Systems Architecture

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Instruction Execution Times

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(Branch Prediction Mechanisms)

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

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

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

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

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

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

Pipelined Datapath, Hazards and Forwarding

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

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

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

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

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

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

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

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

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

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

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

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

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

Block Ciphers Modes. Ramki Thurimella

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

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

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

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

CS-425 Mid-term exam

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CMOS Technology for Computer Architects

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

Αρχιτεκτονική Επεξεργαστών Ψ.Ε.Σ

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

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

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

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

Ασκήσεις στα Προηγμένα Θέματα Αρχιτεκτονικής Υπολογιστών

derivation of the Laplacian from rectangular to spherical coordinates

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

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

ΕΘΝΙKΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Ονοματεπώνυμο: ΑΜ:

Transcript:

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