Αρχιτεκτονική ΙΑ-64 Προηγμένες Αρχιτεκτονικές Υπολογιστών Χειμερινό Εξάμηνο 6 Νοεμβρίου 2001 Ορέστης Τελέλης Βασίλης Στούμπος telelis@di.uoa.gr stoumpos@di.uoa.gr M-368 M-365
Προηγμένες Αρχιτεκτονικες Υπολογιστών Εισαγωγή Πρόταση Intel και Hewlett-Packard. Σχεδιασμός με δυνατότητες μελλοντικών επεκτάσεων. Στόχος η αγορά μικροεπεξεργαστών γενικής χρήσης Πλήρης 64-bit διευθυνσιοδότηση. Έμφαση σε ILP. 6 Νοεμβρίου 2001 Προηγμένες Αρχιτεκτονικες Υπολογιστών
Προηγμένες Αρχιτεκτονικες Υπολογιστών Γενικοί καταχωρητές 128 καταχωρητές γενικής χρήσης. Επιπλέον bit ένδειξης εξαίρεσης αναφοράς. Deferred exception token. NaT (Not a Thing). 128 GR’s r0 . r31 r32 r127 static stacked/ rotating 64+1bits 6 Νοεμβρίου 2001 Προηγμένες Αρχιτεκτονικες Υπολογιστών
Καταχωρητές Κινητής Υποδιαστολής και Εφαρμογής 128 καταχωρητές κινητής υποδιαστολής. 128 καταχωρητές εφαρμογής. Application Register. 64 FR’s 128 AR’s f0 . f31 f32 f127 ar0 . ar31 ar32 ar127 rotating 82 bits 64 bits 6 Νοεμβρίου 2001 Προηγμένες Αρχιτεκτονικες Υπολογιστών
Καταχωρητές Κατηγορημάτων και Διακλάδωσης 64 καταχωρητές κατηγορημάτων. Predicate Register. 64 καταχωρητές διακλάδωσης. 128 PR’s 8 BR’s p0 . p15 p16 p63 b0 . b6 b7 rotating 64 bits 1 bit 6 Νοεμβρίου 2001 Προηγμένες Αρχιτεκτονικες Υπολογιστών
Προηγμένες Αρχιτεκτονικες Υπολογιστών Εντολή Μηχανής Κωδικός εντολής μήκους 14 bits. 7 bits για την διευθυνσιοδότηση καταχωρητών. 6 bits για την διευθυνσιοδότηση καταχωρητών PR. Μήκος εντολής: 14 + 3*7 + 6 = 41 bits. Op 14 bits instruction Register 1 Register 3 Register 2 Predicate 7 bits 6 bits 41 bits 6 Νοεμβρίου 2001 Προηγμένες Αρχιτεκτονικες Υπολογιστών
Ομάδα Εκτελέσιμων Εντολών (instruction bundle) Χρήση bundle 128 bits. Χρήση του template για οδηγίες εκτέλεσης. Γενικά ένα bundle εκτελείται παράλληλα. Κληρονομιά από το EPIC. Μέγεθος bundle 128 bits. bundle Instruction 1 Instruction 3 Instruction 2 Template 41 bits 5 bits 128 bits 6 Νοεμβρίου 2001 Προηγμένες Αρχιτεκτονικες Υπολογιστών
Αρχιτεκτονική Μονάδας Πράξεων Κινητής Υποδιαστολής IEEE/ANSI 754 double extended floating point 82 bits μήκος καταχωρητή. 2 bit για ειδικές βελτιώσεις FMAC εντολή: round(A*B+C). ΧΜΑ εντολή: A*B+C. A,B,C σαν 64-bits ακέραιοι. Και άλλοι τύποι. Πράξεις πάνω σε 32-bit, 64-bit και 80-bit. Ταυτόχρονη εκτέλεση 2 πράξεων 32-bit. 6 Νοεμβρίου 2001 Προηγμένες Αρχιτεκτονικες Υπολογιστών
Προβλήματα με την Εικονική Μνήμη 32 bits διευθυνσιοδοτούν 4GB. 64 bits διευθυνσιοδοτούν 16 δισεκατομμύρια GB. Για μέγεθος σελίδας 4KB: Πίνακας σελίδων για 32-bit με ένα εκατομμύριο εγγραφές. Πίνακας σελίδων για 64-bit με τέσσερα δισεκατομμύρια περισσότερες εγγραφές. 6 Νοεμβρίου 2001 Προηγμένες Αρχιτεκτονικες Υπολογιστών
Εικονική Μνήμη Region Registers 3-bit search VRN VPN 24-bit search 63 61 60 Virtual Region Number Virtual Page Number Offset rr0 … rr1 Region ID 3-bit search VRN … VPN rr7 … 24-bit search Region ID Key VPN Rights Physical Page Number Protection Key Registers Translation Look-aside Buffer (TLB) pk0 Key Rights pk1 … … pk2 … … PPN 24-bit search … … PPN Offset 6 Νοεμβρίου 2001 Προηγμένες Αρχιτεκτονικες Υπολογιστών
Προηγμένες Αρχιτεκτονικες Υπολογιστών Φιλοσοφία Σχεδίασης Διαχωρισμός βελτιστοποιήσεων στον μεταγλωττιστή και στον επεξεργαστή. Ξεκάθαρη ανάθεση διαδικασιών βελτιστοποίησης. Μικρό βάρος στους μεταγλωττιστές. 6 Νοεμβρίου 2001 Προηγμένες Αρχιτεκτονικες Υπολογιστών
Σημασιολογία Εκτέλεσης Σειριακή σειρά εκτέλεσης. Βελτιστοποιήσεις με αλλαγές στη σειρά εντολών. Διατήρηση σειριακής σημασιολογίας. Παράλληλη εκτέλεση. Σύνολα εντολών δηλώνονται ως εκτελούμενα παράλληλα. Instruction groups. 6 Νοεμβρίου 2001 Προηγμένες Αρχιτεκτονικες Υπολογιστών
Παραλληλισμός Ελέγχου Ροής cmp.ne p1 = r0,r0 add t = -5,b cmp.eq.or p1 = 0,a jump if p1 cmp.ge.or p1 = 0,t cmp.ne.or p1 = c,d tbit.or p1 = 1,f,1 jump mov r3 = 8 Εκφράσεις υπό συνθήκη if ((a==b) || (b<=5) || (c!=d) || (f&0x2)) { r3 = 8; } cmp.ne p1 = r0,r0 add t = -5,b;; cmp.eq.or p1 = 0,a cmp.ge.or p1 = 0,t cmp.ne.or p1 = c,d tbit.or p1 = 1,f,1;; (p1) mov r3 = 8 6 Νοεμβρίου 2001 Προηγμένες Αρχιτεκτονικες Υπολογιστών
Παραλληλισμός Ελέγχου Ροής με Πολλούς Στόχους Πολλαπλές επιλογές if ( a == b) { . . . } else if (c != 4) { } else if (d < e) { } // fall through code cmp.eq p1,p2 = r1,r2 cmp.ne p2,p4 = 4,r5 cmp.lt p5,p6 = r8,r9;; (p1) br.cond label1 (p3) br.cond label2 (p5) br.call b4 = label3;; // fall through code 6 Νοεμβρίου 2001 Προηγμένες Αρχιτεκτονικες Υπολογιστών
Κατηγορήματα Εκτέλεσης (predication) Εξάλειψη διακλαδώσεων if (r1 == r2) { r9 = r10 – r11; } else { r5 = r6 + r7; } cmp.eq p1,p2 = r1,r2;; (p1) sub r9 = r10,r11 (p2) add r5 = r16,r7;; 6 Νοεμβρίου 2001 Προηγμένες Αρχιτεκτονικες Υπολογιστών
Χρονοπρογραμματισμός και Υποθέσεις Scheduling and speculations. Αναδιάταξη κώδικα. Σε μεγάλα συνεχόμενα τμήματα κώδικα υπάρχουν ευκαιρίες παραλληλισμού. Υποθετικές εντολές. Εντολές των οποίων το αποτέλεσμα μπορεί να μην χρησιμοποιηθεί. Διατήρηση Σημασιολογίας 6 Νοεμβρίου 2001 Προηγμένες Αρχιτεκτονικες Υπολογιστών
Προηγμένες Αρχιτεκτονικες Υπολογιστών Υποθετικά Διαβάσματα (linked lists) σημασι- ολογία; instrA instrB . . . branch ld8 r1=[r2] use r1 speculative load speculation check Εξαιρέσεις (exceptions) φράγμα ld8.s r1=[r2] use r1 instrA instrB . . . branch check.s 6 Νοεμβρίου 2001 Προηγμένες Αρχιτεκτονικες Υπολογιστών
Προηγμένες Αρχιτεκτονικες Υπολογιστών Πρόωρα Διαβάσματα (C pointers) σημασι- ολογία; instrA instrB . . . store ld8 r1=[r2] use r1 advanced load load check Εξαιρέσεις (exceptions) γράψιμο ld8.a r1=[r2] use r1 instrA instrB . . . store check.a 6 Νοεμβρίου 2001 Προηγμένες Αρχιτεκτονικες Υπολογιστών
Προηγμένες Αρχιτεκτονικες Υπολογιστών ALAT Advanced Load Access Table. Πίνακας Πρόωρων Διαβασμάτων. Λειτουργεί όπως η cache. Περιέχει: Καταχωρητή. Διεύθυνση μνήμης. Μέγεθος πρόσβασης. 6 Νοεμβρίου 2001 Προηγμένες Αρχιτεκτονικες Υπολογιστών
Προηγμένες Αρχιτεκτονικες Υπολογιστών Λειτουργία ALAT Εισαγωγή στον πίνακα για κάθε πρόωρο διάβασμα. Σε κάθε γράψιμο αφαιρούνται οι συγκρουόμενες εγγραφές. Ο έλεγχος chk.a πρέπει να βρει την αντίστοιχη εγγραφή. Διόρθωση κατά περίσταση fix-up κώδικας. 6 Νοεμβρίου 2001 Προηγμένες Αρχιτεκτονικες Υπολογιστών
Προηγμένες Αρχιτεκτονικες Υπολογιστών Μοντέλο Καταχωρητών Register File. 128 γενικοί καταχωρητές. 32 στατικοί – RISC αρχιτεκτονική. 96 σε στοίβα – μετονομασία μέσω λογισμικού. Χρήση alloc. 6 Νοεμβρίου 2001 Προηγμένες Αρχιτεκτονικες Υπολογιστών
Προηγμένες Αρχιτεκτονικες Υπολογιστών Κλήση Μεθόδου Out Local r32 r41 r43 r42 br.ret br.call Out Local r32 r39 r42 r40 Out r34 r32 Out Local r32 r39 r42 r40 alloc 10,2 6 Νοεμβρίου 2001 Προηγμένες Αρχιτεκτονικες Υπολογιστών
Σωλήνωση σε Επίπεδο Εφαρμογής Application pipelining. Όμοια με την hardware σωλήνωση σε περίπτωση βρόχου. Προβλήματα: Χειρισμός μετρητή βρόχου. Μετονομασία καταχωρητών. Αρχικοποίηση και τερματισμός. «Ξεδίπλωμα» βρόχων. 6 Νοεμβρίου 2001 Προηγμένες Αρχιτεκτονικες Υπολογιστών