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.