1 EPIC Νάνου Σπυριδούλα Α.Μ. 379. 2 Explicitly Parallel Instruction Computing Ένα νέο στυλ αρχιτεκτονικής που σκοπό έχει: Τη δυνατότητα υψηλότερου επιπέδου.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΙΕΡΓΑΣΙΩΝ
Advertisements

7.3.8 Μεταφραστές Ελληνογαλλική Σχολή Καλαμαρί - Τίκβα Χριστίνα.
Εισαγωγή στις Τεχνολογίες της Πληροφορικής και των Επικοινωνιών
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Δεύτερο.
Το υλικο του Υπολογιστη
Αρχιτεκτονική Υπολογιστών Γλώσσες Μηχανής
Κεφάλαιο 1ο: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΤΩΝ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
Τι είναι ο υπολογιστής; Τι είναι ο προγραμματισμός
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
Λογισμικο συστηματοσ Κεφάλαιο 4ο
Η ΕΚΤΕΛΕΣΗ ΠΡΟΓΡΑΜΜΑΤΟΣ ΧΡΗΣΤΗ ΑΠ’ ΤΟΝ Η/Υ ΤΟΜΕΑΣ ΤΕΧΝΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Δ.ΙΕΚ ΠΑΤΡΑΣ.
Σχεδίαση αλγορίθμων (2ο μέρος)
Διαχείριση μνήμης Υπόβαθρο Εναλλαγή Συνεχής κατανομή Σελιδοποίηση
Κεφ.1 Εισαγωγη στην εννοια του Αλγοριθμου και στον Προγραμματισμο
1 Οργάνωση και Αρχιτεκτονική Υπολογιστών Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση και Αρχιτεκτονική.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Memory Cloaking & Bypassing Εργασία στο μάθημα: Προηγμένες Αρχιτεκτονικές Υπολογιστών Κατσαρής Αριστοτέλης Μ473 Τσαγκάρης Γιώργος Μ479.
1 Οργάνωση και Αρχιτεκτονική Υπολογιστών Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση και Αρχιτεκτονική.
© Ασκήσεις στα Προηγμένα Θέματα Αρχιτεκτονικής Υπολογιστών ακ. έτος Νεκτάριος Κοζύρης Νίκος Αναστόπουλος
Επικοινωνία μεταξύ Διεργασιών και Σύνδρομες Διεργασίες Interprocess Communication and Concurrent Processes.
Για τη διεκπεραίωση ενός προβλήματος πρέπει να ακολουθηθεί η εξής διαδικασία:  να γραφεί ο αλγόριθμος να συνταχθεί το πρόγραμμα σε γλώσσα υψηλού επιπέδου.
Μοντέλα - Αλγόριθμοι – Ταξινόμηση Advanced Data Indexing (Προηγμένη ευρετηρίαση δεδομένων)
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τρίτο Συστήματα.
Multi-threading Κορομηνάς Κωνσταντίνος – Μ437 Χατζηανδρέου Ελένη - Μ400 Χήνου Διονυσία – Μ364.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων.
Σύγχρονες Προκλήσεις. Εισαγωγή Οι CMP είναι πια πραγματικότητα – Intel Core 2, Quad, Nehalem – IBM Power5, Power6 – Sun Niagara, Niagara2, Rock –
Κεφάλαιο 10 – Υποπρογράμματα
Μικροεπεξεργαστές Λειτουργία - Εξέλιξη
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Δεύτερο.
Implicitly Multithreaded Processors Νίκος Ιωάννου EΠΛ605 Παρουσίαση άρθρου “IMT processors”
Προγραμματισμός Γιατι γραφουμε προγραμματα (προηγ. διαλεξη)
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τρίτο Συστήματα.
© Processor-Memory (DRAM) Διαφορά επίδοσης Performance
1 Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τέταρτο Οι κίνδυνοι της.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 11: Βελτιστοποίηση Ενδιάμεσου Κώδικα Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα.
ΚΕΦΑΛΑΙΟ Τι είναι αλγόριθμος
ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Syntax Directed Translation and alpha Language.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Δεύτερο.
Εφαρμογές Υπολογιστών Ά Λυκείου Κεφ. 4 Λογισμικό Συστήματος
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Πρώτο Αρχιτεκτονική.
Κεφάλαιο 3 Τύποι Δεδομένων - Τελεστές. Πρωτογενείς τύποι δεδομένων: int, float, double, chars ΤύποςΌνομαΜέγεθος byte 8-bit signed, short 16-bit.
ΠΑΡΑΔΕΙΓΜΑ: ΤΑ ΕΠΙΠΕΔΑ ΥΛΙΚΟΥ – ΛΟΓΙΣΜΙΚΟΥ ΣΕ ΕΝΑΝ ΥΠΟΛΟΓΙΣΤΗ.
Διαχείριση Πόρων (1/10) Εισαγωγή στην Πληροφορκή 1 Στα πρώτα χρόνια των υπολογιστών, όπου μόνο ένα πρόγραμμα είχε τη δυνατότητα να βρίσκεται στην κύρια.
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
Δυναμικός Κατακερματισμός
Χειρισμός Χρόνου και Μεθοδολογίες Προσομοίωσης
ΑΛΓΟΡΙΘΜΟΣ ΠΡΟΒΛΗΜΑ ΑΛΓΟΡΙΘΜΟΣ ΛΥΣΗ
Αρχιτεκτονική Η/Υ ΙΙ Ενότητα #6: Σύγχρονοι Επεξεργαστές
ΧΡΟΝΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΩΝ
Κατηγορίες και Προδιαγραφές Λογισμικού Η/Υ (Software)
Single-cyle υλοποίηση:
Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ
Κεφάλαιο 7: Διαδικτύωση-Internet Μάθημα 7.9: Δρομολόγηση
Activity Diagrams.
Εισαγωγή στη VHDL 5/8/2018 Εισαγωγή στη VHDL.
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
Θέματα Φεβρουαρίου
Single-cyle υλοποίηση:
Ο ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΗΣ MIPS R10000
Αρχιτεκτονική ΙΑ-64 Προηγμένες Αρχιτεκτονικές Υπολογιστών
Single-cyle υλοποίηση:
Single-cyle υλοποίηση:
Εξαιρέσεις [Exceptions]
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
Μεταγράφημα παρουσίασης:

1 EPIC Νάνου Σπυριδούλα Α.Μ. 379

2 Explicitly Parallel Instruction Computing Ένα νέο στυλ αρχιτεκτονικής που σκοπό έχει: Τη δυνατότητα υψηλότερου επιπέδου εκτέλεσης εντολών παράλληλα (higher levels of instruction- level parallelism). Τη μείωση της αύξησης της πολυπλοκότητας του υλικού (hardware). Τη μη επαναγραφή εφαρμογών, αλγορίθμων ή επαναμεταγλώττιση του προγράμματος.

3 ILP (Instruction-level parallelism) Συστήματα που βασίζονται σε ILP τεχνική χρησιμοποιούν προγράμματα που είναι γραμμένα σε γλώσσες υψηλού επιπέδου για ακολουθιακούς επεξεργαστές. Με την βοήθεια τεχνικών του μεταγλωττιστή (compiler) και του υλικού (hardware) εκμεταλλεύονται την δυνατότητα παράλληλης εκτέλεσης εντολών. Επίτευξη υψηλής απόδοσης του συστήματος χωρίς τροποποίηση κώδικα.

4 ILP Επεξεργαστές Οι δύο πιο σημαντικοί ILP επεξεργαστές είναι: Superscalar processor Very long instruction word (VLIW)

5 Superscalar processors Επεξεργαστές για ακολουθιακές αρχιτεκτονικές όπου το πρόγραμμα δεν έχει την δυνατότητα να μεταβιβάσει πληροφορίες που αφορούν στην παράλληλη εκτέλεση εντολών. Το υλικό (hardware) είναι υπεύθυνο για την δημιουργία του πλάνου εκτέλεσης των εντολών (POE - plan of execution) έτσι ώστε να εκμεταλλευτεί τυχόν παραλληλισμό. Το υλικό σχεδιάζει το POE δυναμικά λαμβάνοντας υπόψη τους παράγοντες που καθορίζονται μόνο κατά την εκτέλεση του προγράμματός (at runtime). Αύξηση της πολυπλοκότητας του επεξεργαστή.

6 VLIW-Very long instruction word Ο μεταγλωττιστής (compiler) αναγνωρίζει στοιχεία παραλληλισμού στο πρόγραμμα και τα μεταβιβάζει στο υλικό (hardware). Καθορίζει εντολές που δεν έχουν εξαρτήσεις από άλλες έτσι ώστε το υλικό να προχωρήσει στην εκτέλεσή τους μέσα στον ίδιο κύκλο χωρίς να προβεί σε επιπλέον ελέγχους. Ο μεταγλωττιστής σχεδιάζει το πλάνο εκτέλεσης (POE) στατικά (at compile time) με πλήρη γνώση του επεξεργαστή ώστε να δημιουργήσει την επιθυμητή εγγραφή εκτέλεσης (ROE – record of execution). Μεταβιβάζει το POE στο υλικό το οποίο είναι υπεύθυνο για την εκτέλεσή του. Με απλό υλικό επιτυγχάνουμε υψηλό επίπεδο ILP.

7 EPIC ISA (Instruction set architecture) Παρέχει μια φιλοσοφία για το πώς μπορούν να φτιαχτούν ILP επεξεργαστές, μαζί με ένα σύνολο αρχιτεκτονικών χαρακτηριστικών που υποστηρίζουν αυτή την φιλοσοφία. Αποτελεί εξέλιξη των VLIW επεξεργαστών, έχοντας ταυτόχρονα υιοθετήσει κάποια από τα χαρακτηριστικά των superscalar επεξεργαστών. Συνδυάζει την στατική δημιουργία του POE του VLIW με την εκμετάλλευση δυναμικών παραγόντων του superscalar. Ο πρώτος διαθέσιμος επεξεργαστής στο εμπόριο που ακολουθεί την EPIC ISA φιλοσοφία είναι ο IA-64 της Intel. Θα επικεντρωθούμε στην EPIC φιλοσοφία όπως αυτή διαμορφώθηκε από το HPL-PD (Hewlett-Packard Laboratories PlayDoh).

8 EPIC philosophy Η EPIC φιλοσοφία έχει τρεις βασικές αρχές: Ο μεταγλωττιστής (compiler) παίζει τον κύριο ρόλο στο σχεδιασμό του πλάνου εκτέλεσης των εντολών (POE). Η αρχιτεκτονική αυτή παρέχει μηχανισμούς που βοηθούν τον μεταγλωττιστή να εκμεταλλευτεί ILP στατιστικά. Η αρχιτεκτονική αυτή παρέχει μηχανισμούς που μεταβιβάζουν το πλάνο εκτέλεσης που έχει δημιουργήσει ο μεταγλωττιστής στο υλικό (hardware).

9 Σχεδιασμός του POE κατά την μεταγλώττιση (at compile time) Οι EPIC επεξεργαστές παρέχουν μηχανισμούς που βοηθάνε τον μεταγλωττιστή στο σχεδιασμό του πλάνου εκτέλεσης των εντολών (POE) κατά την μεταγλώττιση. Η δημιουργία του POE έχει σαν στόχο την ανακατάταξη της σειράς εκτέλεσης των εντολών ώστε να εκμεταλλευτεί τυχόν παραλληλισμό από την εφαρμογή και από τους διαθέσιμους πόρους του υλικού, μειώνοντας έτσι το χρόνο εκτέλεσης του προγράμματος. Η συμπεριφορά ενός EPIC επεξεργαστή κατά την εκτέλεση εντολών θα πρέπει να είναι προβλέψιμη και ελεγχόμενη από τον μεταγλωττιστή.

10 Δυνατότητα του μεταγλωττιστή να εκμεταλλευτεί στατιστικά Πρόβλημα κατά την δημιουργία του POE: Συγκεκριμένοι τύποι πληροφοριών που επηρεάζουν τη δομή του ROE είναι γνωστοί μόνο κατά την εκτέλεση του προγράμματος (π.χ. Εντολές διακλάδωσης – conditional branches, aliasing). Επίλυση : Ο μεταγλωττιστής έχει την δυνατότητα κάτω από τέτοιες συνθήκες να επιλέξει με βάση στατιστικών ποια είναι η πιο πιθανή ακολουθία εντολών για την δημιουργία του POE (π.χ branch prediction). Σε περίπτωση λανθασμένης πρόβλεψης οι εντολές που έχουν εκτελεστεί ακυρώνονται. Προβλήματα που μπορεί να δημιουργηθούν επιλύονται με χρήση αμφιλεγόμενων (speculative) εντολών και δεδομένων.

11 Μεταβίβαση του POE στο υλικό Η EPIC αρχιτεκτονική παρέχει μηχανισμούς με τους οποίους ο μεταγλωττιστής μπορεί να μεταδώσει στο υλικό πληροφορίες που αφορούν στο πότε θα εκτελεστεί κάθε εντολή, ποιες θα εκτελεστούν παράλληλα, ποιους πόρους θα χρησιμοποιήσουν. Είναι υπεύθυνος για την μετάδοση στο υλικό κρίσιμων πληροφοριών σε συγκεκριμένες χρονικές στιγμές (π.χ. Υπολογισμός επόμενης διεύθυνσης από εντολή διακλάδωσης, πότε πρέπει να ξεκινήσει να φέρνει εντολές από αυτήν την διεύθυνση). Ο μεταγλωττιστής διαχειρίζεται την ιεραρχία των cache μνημών μέσω πληροφοριών που προστίθενται στο POE.

12 Αρχιτεκτονικά χαρακτηριστικά που υποστηρίζουν την EPIC Στατικός προγραμματισμός. Αντιμετώπιση του προβλήματος των διακλαδώσεων. Αντιμετώπιση των προβλημάτων της μνήμης.

13 Στατικός προγραμματισμός Έχουμε δύο σημαντικούς τύπους εντολών: Η MultiOp εντολή καθορίζει πολλαπλές λειτουργίες οι οποίες μπορούν να τεθούν προς εκτέλεση παράλληλα. Το υλικό δεν ελέγχει για εξαρτήσεις πάνω σε MultiOp εντολές. Μία MultiOp εντολή τίθεται προς εκτέλεση σε κάθε κύκλο εικονικού χρόνου (virtual time). Χαρακτηρίζουμε σαν UAL (unit-assumed-latency) μία λειτουργία η οποία υπολογίζεται ότι θα έχει καθυστέρηση ενός κύκλου ενώ η NUAL (nonunit- assumed-latency) χρειάζεται πάνω από ένα κύκλο για να ολοκληρωθεί.

14 Αντιμετώπιση του προβλήματος των διακλαδώσεων Διαχωρισμός της εντολής διακλάδωσης σε υπολειτουργίες. Υποστήριξη ελαχιστοποίησης των διακλαδώσεων. Βελτιωμένη υποστήριξη στατικής κίνησης λειτουργιών ανάμεσα σε πολλαπλές διακλαδώσεις. Η EPIC αρχιτεκτονική επιτυγχάνει μέσω στατικού σχεδιασμού καλύτερη επικάλυψη ανάμεσα σε επεξεργασία εντολών διακλάδωσης και άλλων υπολογισμών. Αυτό το καταφέρνει μέσω μηχανισμών που διευκολύνουν τις εξής τρεις λειτουργίες:

15 Διαχωρισμός της εντολής διακλάδωσης σε υπολειτουργίες Οι EPIC διακλαδώσεις διαχωρίζονται σε τρεις λειτουργίες: Προετοιμασία διακλάδωσης (a prepare-to-branch), η οποία υπολογίζει την διεύθυνση στόχου της διακλάδωσης. Σύγκριση (a compare), η οποία υπολογίζει την συνθήκη διακλάδωσης. Πραγματική διακλάδωση (an actual branch), η οποία καθορίζει το πότε θα γίνει η μεταφορά του ελέγχου στο αποτέλεσμα της διακλάδωσης. Ο μεταγλωττιστής προγραμματίζει τις δύο πρώτες λειτουργίες προτού φτάσει στην ίδια την εντολή διακλάδωσης με σκοπό να παρέχει εγκαίρως πληροφορίες στο υλικό. Το υλικό μπορεί να εκτελεί εντολές speculatively.

16 Υποστήριξη ελαχιστοποίησης των διακλαδώσεων Η ελαχιστοποίηση των διακλαδώσεων επιτυγχάνεται χρησιμοποιώντας predicated execution μέσω μίας τεχνικής του μεταγλωττιστή γνωστή ως if-conversion. Οι λειτουργίες εκτελούνται υπό συνθήκη, βασισμένες σε μία Boolean μεταβλητή, a predicate, η οποία σχετίζεται με το βασικό μπλοκ που περιλαμβάνει την λειτουργία. Κατά την εκτέλεση των συγκρίσεων υπολογίζονται τα predicates και παίρνουν τιμή true αν θα φτάσει ο έλεγχος μέχρι το συγκεκριμένο μπλοκ εντολών αλλιώς false. Μία λειτουργία που φυλάσσεται από ένα predicate ολοκληρώνεται κανονικά αν αυτό είναι true αλλιώς ακυρώνονται όλες οι ενέργειές της όταν γίνει false. Ο if-converted κώδικας δεν περιέχει διακλαδώσεις.

17 Παράδειγμα if-conversion CMP BR OP1OP2 CMP OP1OP2 BR (a) (b) Use of predicated execution to perform if-conversion. (a) In this if-then-else construct, each gold block represents a basic block. Black arrows represent the flow of control, and orange arrows represent data dependences. (b) If-conversion eliminates the branch and produces just one basic block contains operations guarded by the appropriate predicates.

18 Βελτιωμένη υποστήριξη στατικής κίνησης λειτουργιών ανάμεσα σε πολλαπλές διακλαδώσεις Η EPIC αρχιτεκτονική παρέχει ένα ακόμα χαρακτηριστικό που αυξάνει την μετακίνηση εντολών ανάμεσα σε διακλαδώσεις: control speculation. Στο παρακάτω σχήμα (a) περιέχονται δύο βασικά μπλοκ εντολών. H τεχνική του Control speculation φαίνεται στο (b) κατά την οποία η λειτουργία OP1 έχει μεταφερθεί από το δεύτερο βασικό μπλοκ στο πρώτο ώστε να μειωθούν οι εξαρτήσεις των εντολών στον γράφο του προγράμματος. Το σύμβολο * στην λειτουργία OP1 υποδεικνύει ότι εκτελείται speculatively. Όταν μία speculative λειτουργία προκαλέσει μία εξαίρεση (exception) δεν την αναφέρει αλλά επισυνάπτεται σε αυτήν και μόνο όταν μία non- speculative λειτουργία την χρησιμοποιήσει θα γίνει η αναφορά στο λάθος.

19 Παράδειγμα μεταφοράς κώδικα ανάμεσα σε μία ή περισσότερες διακλαδώσεις CMP BR OP1 (a) Example of code motion above one or more branches. (a) The original code consists of two sequential basic blocks, colored gold. OP1 moves above the branch using either (b) control speculation or (c) predication. (d) The use of fully resolved predicates yields code without control dependences among branches as well as between branches and other operations. The absence of these control dependences yields a multibranch code region that has the greatest scheduling freedom. OP2 pb CMP BR OP1* (b) OP2 CMP BR OP1 OP2 pb pf (c)(d) CMP 1 CMP 2 CMP3 BR pb 1 pb 2 pb 3 pf 1 pf 2 pf 3 pf 0

20 Πολλαπλές διακλαδώσεις Με βάση το παραπάνω σχήμα βλέπουμε πώς υλοποιείται η μεταφορά εντολών χρησιμοποιώντας predicates σε μία διακλάδωση (c) ή στην περίπτωση που έχουμε πολλαπλές διακλαδώσεις (d). Ο μεταγλωττιστής έχει τη δυνατότητα να βάλει στην σειρά εντολές συγκρίσεων που υπολογίζουν predicates δημιουργώντας έτσι ένα full resolved predicate (FRP). Χρησιμοποιώντας FRPs μετατρέπουμε τις εξαρτήσεις από μια ακολουθία διακλαδώσεων σε εξαρτήσεις μιας ακολουθίας από συγκρίσεις.

21 Αντιμετώπιση προβλημάτων της μνήμης Ο χρόνος πρόσβασης στην μνήμη αυξάνεται συγκριτικά με την γρηγορότερη μείωση της περιόδου του ρολογιού του επεξεργαστή. Οι cache μνήμες χρησιμοποιούνται για την μείωση των καθυστερήσεων που προκαλούνται από προσβάσεις στην μνήμη. Η EPIC αρχιτεκτονική παρέχει μηχανισμούς που επιτρέπει στον μεταγλωττιστή να ελέγχει τις μεταφορές δεδομένων ανάμεσα στις διάφορες ιεραρχίες cache μνημών. Οι Load λειτουργίες συνοδεύονται από source cache specifier, το οποίο χρησιμοποιεί ο μεταγλωττιστής για να ενημερώσει το υλικό για το πού μπορεί να βρίσκονται τα δεδομένα μέσα στην ιεραρχία των cache μνημών και εμμέσως να προβλεφτούν ποιες θα είναι οι καθυστερήσεις.

22 Αντιμετώπιση προβλημάτων της μνήμης Οι Load και Store λειτουργίες συνοδεύονται επίσης από target cache specifier, το οποίο χρησιμοποιεί ο μεταγλωττιστής για να υποδείξει στο υλικό πού πρέπει να τοποθετηθούν δεδομένα για να χρησιμοποιηθούν στην συνέχεια από λειτουργίες της μνήμης. Η χρήση data speculation επιτρέπει στον μεταγλωττιστή να παράγει προγράμματα τα οποία υποθέτουν ότι μία load εντολή δεν επικαλύπτεται από μία ακόλουθη store ακόμα και αν υπάρχει μια μικρή πιθανότητα να συμβαίνει αυτό, δηλ. να αναφέρονται στην ίδια περιοχή μνήμης (aliasing). Μία load εντολή διασπάται σε δύο λειτουργίες: data- speculative load και data-verifying load. Ο μεταγλωττιστής προγραμματίζει μια load εντολή πριν από πιθανές store εντολές που μπορεί να προκαλούν aliasing.

23 Συνέχεια Στη συνέχεια προγραμματίζει έλεγχο της εντολής (data-verifying load) και με την βοήθεια του υλικού ανιχνεύει για τυχόν aliasing. Αν δεν βρεθεί aliasing η λειτουργία data-verifying load δεν προβαίνει σε καμία ενέργεια αλλιώς επαναεκτελεί την load λειτουργία και καθυστερεί τον επεξεργαστή με εισαγωγή stalls.