ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ ΟΡΓΑΝΩΣΗ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Ι Γ. Τσιατούχας 2 ο Κεφάλαιο ιάρθρωση 1. Οργάνωση της 2. εντολών 3. Παραλληλία στο επίπεδο των εντολών 4. Γραμμές διοχέτευσης 5. Παραλληλία στο επίπεδο των επεξεργαστών 2 1
Οργάνωση Υπολογιστή Κεντρική Επεξεργασίας Central Processing Unit () Αριθµητική Λογική () Συσκευές Εισόδου/Εξόδου Καταχωρητές Κύρια ίσκος Εκτυπωτής Τυπική οργάνωση υπολογιστή βασισµένου σε δίαυλο ή Αρτηρία (Bus) 3 Ο ΕΠΕΞΕΡΓΑΣΤΗΣ 4 2
Οργάνωση της Καταχωρητές Α Β Καταχωρητές Εισόδου Εισόδου Εξόδου Τυπική οργάνωση του τµήµατος διαδροµής δεδοµένων (data path) µιας κατά von Neumann 5 Προγραµµάτων 1. Ο υπολογιστής εκτελεί προγράµµατα που συνθέτονται από εντολές σε γλώσσα µηχανής. 2. Ένα πρόγραµµα προς εκτέλεση είναι αποθηκευµένο στην κύρια µνήµησεσυνεχόµενες θέσεις. 3. Η έχει έναν καταχωρητή ειδικού σκοπού που µας λέει σε ποια θέση µνήµης βρίσκεται η επόµενη εντολή. Ονοµάζεται µετρητής προγράµµατος (program counter ). 4. Υπάρχει επίσης και ένας δεύτερος καταχωρητής ειδικού σκοπού στον οποίο κρατείται η τρέχουσα ρχ εντολή που εκτελείται. Ονοµάζεταιµ καταχωρητής (instruction register ). 5. Άλλοι πιθανοί καταχωρητές ειδικού σκοπού: α) καταχωρητής δεδοµένων (data register ), β) καταχωρητής διευθύνσεων (address register ), γ) συσσωρευτής (accumulator ). 6 3
Εντολών Ο υπολογιστής ακολουθεί την επόµενη ατέρµονη διαδικασία: 1. Προσκόµιση (fetch) της από τη µνήµη (τη διεύθυνση µνήµης την οποία υποδεικνύει ο µετρητής προγράµµατος ) στον καταχωρητή εντολών. 2. Μεταβολή του ώστε να δείχνει στην επόµενη θέση στη µνήµη. 3. Αποκωδικοποίηση (decode) της ώστε να προσδιοριστεί ο τύπος της. 4. Προσκόµιση δεδοµένων (τελούµενων operands) που ενδεχόµενα χρειάζεται η εντολή από την κύρια µνήµη ή τους καταχωρητές. 5. (execute) της. 6. Αποθήκευση (store) αποτελέσµατος. 7. Επιστροφή στο 1 ο βήµα για την εκτέλεση της επόµενης. 7 Έλεγχος Μια Απλή Σή ήµατα Υπολογισµός Συσσωρευτής ιευθύνσεων (Address Bus) ή 8192 (2 13 ) (Data Bus) εδοµένων Κωδικός (Opcode) Εντολή εδοµένα ιεύθυνση ς 8 4
Start Ακολουθία Μικρολειτουργιών Active? READ M +1 (OP) Fetch Cycle Stop = Accumulator = Memory address register = Memory data register (OP) = Opcode field of (A) = Address field of = Instruction register = Program Counter M = Main memory SHIFT RSHIFT 111 Execute Cycle COMP? 110 LOAD? STORE? ADD? AND? JUMP? JUMPZ? 000 001 010 011 100 101 (A) (A) (A) (A) = 0? READ M READ M READ M WRITE M + ^ (A) (A) 9 Απλό Πρόγραµµα προς Συµβολική Γλώσσα Γλώσσα Μηχανής Λειτουργία 000 010 Κωδικός Εντολής (Opcode) 16 bits ιεύθυνση ς (Memory Address) Φόρτωση του πρώτου τελούµενου από τη θέση µνήµης Α στον. Φόρτωση του δεύτερου τελούµενου από τη θέση µνήµης Β στον. Πρόσθεσή του µε το τελούµενο στον και εγγραφή του αποτελέσµατος στον. 001 Μεταφορά και αποθήκευση του αποτελέσµατος από τον στη θέση µνήµης C. 10 5
Προσκόµιση και LOAD Start Active? Stop SHIFT RSHIFT READ M +1 (OP) Fetch Cycle READ M M 111 Execute Cycle COMP? 110 LOAD? STORE? ADD? AND? JUMP? JUMPZ? 000 001 010 011 100 101 (A) (A) (A) (A) = 0? READ M READ M READ M WRITE M + ^ (A) (A) 11 Προσκόµιση-Αποκωδικοποίηση LOAD Έλεγχος 000 Σή ήµατα 000 8192 12 6
Έλεγχος LOAD 1/2 000 Σή ήµατα 000 8192 13 Έλεγχος LOAD 2/2 000 Σή ήµατα 0000001000001011 0000001000001011 8192 14 7
Προσκόµιση και ADD Start Active? Stop SHIFT RSHIFT READ M +1 (OP) Fetch Cycle 111 Execute Cycle COMP? 110 LOAD? STORE? ADD? AND? JUMP? JUMPZ? 000 001 010 011 100 101 (A) (A) (A) (A) = 0? READ M READ M READ M WRITE M + ^ (A) (A) 15 Προσκόµιση-Αποκωδικοποίηση ADD Έλεγχος 010 Σή ήµατα 0000001000001011 010 8192 16 8
Έλεγχος ADD 1/3 010 Σή ήµατα 0000001000001011 010 8192 17 Έλεγχος ADD 2/3 010 Σή ήµατα 0000001000001011 0000001000000100 8192 18 9
Έλεγχος ADD 3/3 010 Σή ήµατα 0000010000001111 0000001000000100 8192 19 Προσκόµιση και STORE Start Active? Stop SHIFT RSHIFT READ M +1 (OP) Fetch Cycle WRITE M M 111 Execute Cycle COMP? 110 LOAD? STORE? ADD? AND? JUMP? JUMPZ? 000 001 010 011 100 101 (A) (A) (A) (A) = 0? READ M READ M READ M WRITE M + ^ (A) (A) 20 10
Προσκόµιση-Αποκωδικοποίηση STORE Έλεγχος 001 Σή ήµατα 0000010000001111 001 8192 21 Έλεγχος 0000000000100 STORE 1/2 001 Σή ήµατα 0000010000001111 001 8192 22 11
Έλεγχος 0000000000100 STORE 2/2 001 Σή ήµατα 0000010000001111 0000010000001111 8192 RESULT C 23 Σύνολο Εντολών Αρχικά οι εντολές της γλώσσας µηχανής ήταν σχετικά λίγες και η επίβλεψη των λειτουργιών του επεξεργαστή γίνονταν κατ ευθείαν από το υλικό µε κατάλληλη µονάδα ελέγχου. Στην πορεία προστέθηκαν νέες, πιο πολύπλοκες εντολές µε αποτέλεσµα ναυπάρχουνεκατοντάδεςεντολές! Επακόλουθο, η υψηλή πολυπλοκότητα (κόστος) του υλικού που θα αναλάµβανε την απευθείας εκτέλεση αυτών των εντολών. Λύση, ηχρήσηερµηνευτή (interpreter) Wilkes (1951) - που εκτελείται από το υλικό, µικροπρογραµµατισµός: οερµηνευτής αποθηκεύεται µόνιµα σεrom µνήµες ελέγχου µέσα στον επεξεργαστή λαµβάνει τις εντολές της γλώσσας µηχανής και τις µετατρέπει σε απλές εντολές (µικροεντολές) που εκτελούνται απευθείας από το υλικό. 24 12
Αρχιτεκτονικές CISC και RISC Υπολογιστές µε εκτεταµένα σύνολα εντολών ονοµάστηκαν CISC (Complex Instruction Set Computers υπολογιστές σύνθετου συνόλου εντολών). Ενσωµάτωναν εξαιρετικά πολύπλοκες/σύνθετες εντολές, οι οποίες στην πράξη δεν αξιοποιούνταν από τους compilers. Ως εναλλακτική παρουσιάστηκαν (1980) υπολογιστές µε περιορισµένο σύνολο εντολών (RISC Reduced Instruction Set Computers): χρήση µερικών δεκάδων εντολών πολύ απλές εντολές υλοποίηση απευθείας από το υλικό (χωρίς µικροπρόγραµµα) υψηλή ταχύτητα 1 εντολή σε έναν CISC εκτελούνταν από πολλές αλλά γρήγορες εντολές σε έναν RISC Εµφάνιση υβριδικών σχηµάτων κυρίως για την υποστήριξη της προς τα πίσω συµβατότητας. David Patterson 25 Αρχές Σχεδιασµού Υπολογιστών Οι συχνότερες σε χρήση εντολές πρέπει να εκτελούνται απευθείας από το υλικό χωρίς µικροπρογραµµατισµό. Ζητούµενο η αύξηση της απόδοσης ενός υπολογιστή. Χρησιµοποιούµενη µετρική για την εκτίµηση της απόδοσης είναι ο αριθµός των υποβαλλόµενων εντολών ανά δευτερόλεπτο (Million Instructions per Second - MIPS). Αποτελεσµατική λύση η παραλληλία! Εύκολη αποκωδικοποίηση των εντολών. Μόνοδύοεντολές, αυτές της φόρτωσης (LOAD) και της αποθήκευσης (STORE), χρησιµοποιούνται για την προσπέλαση της µνήµης (καθώς η καθυστέρηση στην προσπέλαση της µνήµης είναι µεγάλη και απρόβλεπτη). Ενσωµάτωση πολλών καταχωρητών στον επεξεργαστή. 26 13
Παραλληλία Για τη βελτίωση της απόδοσης µια κλασσική τακτική είναι η αύξηση της συχνότητας του ρολογιού. Υπάρχουν όµως σηµαντικοί περιορισµοί προς αυτή την κατεύθυνση (κυρίως από την πλευρά της τεχνολογίας). Η παραλληλία είναι η τεχνική που έχει κερδίσει έδαφος στην προσπάθεια αύξησης της απόδοσης. Με την παραλληλία πολλαπλές ενέργειες γίνονται ταυτόχρονα. Υπάρχουν δύο γενικές µορφές παραλληλίας: παραλληλία σε επίπεδο (εκτέλεση πολλών εντολών ταυτόχρονα, π.χ. διοχέτευση) παραλληλία σε επίπεδο επεξεργαστών (χρήση πολλαπλών επεξεργαστών) 27 CLK Τυπική Λειτουργία χωρίς ιοχέτευση IF ID OF EX WB D 0 Q 0 D 1 D 2 D D 4 D 5 Q αποκωδικοποίησης 3 5 προσκόµισης προσκόµισης εκτέλεσης εγγραφής τελεστέων αποτελέσµα- τος Καταχω ωρητής Καταχω ωρητής Εν ντολές 1η 2η 3η 1ος IF ID OF EX WB 2ος IF ID OF EX WB IF Κύκλοι Ρολογιού CLK Η διάρκεια του κύκλου ρολογιού καθορίζεται από τη συχνότητα λειτουργίας (σχέση αντίστροφης αναλογίας). 28 14
CLK ιοχέτευση 1/2 Παραλληλία στο επίπεδο IF ID OF EX WB Καταχω ωρητής Καταχω ωρητής D 0 Q 0 D 1 Q 1 D 2 Q Q 3 D 4 Q 4 D 5 Q αποκωδικοποίησης 2 D 3 5 προσκόµισης προσκόµισης εκτέλεσης εγγραφής τελεστέων αποτελέσµα- τος Καταχω ωρητής Καταχω ωρητής Καταχω ωρητής Καταχω ωρητής Εν ντολές 1η 2η 3η 4η 1ος 2ος 3ος 4ος 5ος 6ος 7ος 8ος IF ID OF EX WB IF ID OF EX WB IF ID OF EX WB IF ID OF EX WB Κύκλοι Ρολογιού CLK 5η IF ID OF EX Υποδιαίρεση των εντολών σε πολλαπλά µέρη έτσι ώστε κάθε µέρος να το χειρίζεται ένα αφιερωµένο για αυτό το σκοπό τµήµα του υλικού (στάδιο stage), ενώ τα µέρη αυτά µπορούν να εκτελούνται ταυτόχρονα (γραµµή διοχέτευσης pipeline). 29 ιοχέτευση 2/2 Παραλληλία στο επίπεδο Π.χ.: Έστω µηχανή µε χρόνο κύκλου ρολογιού 2ns και γραµµή διοχέτευσης 5 σταδίων. Για να εκτελεστεί µια εντολή απαιτούνται 5 2ns = 10ns (λανθάνων χρόνος latency). Η απόδοση της µηχανής δεν είναι 100 MIPS αλλά 500 MIPS καθώς µετά τα πρώτα 10ns θα έχουµε την ολοκλήρωση µιας κάθε 2ns. Εν ντολές 1η 2η 3η 4η 1ος 2ος 3ος 4ος 5ος 6ος 7ος 8ος IF ID OF EX WB IF ID OF EX WB IF ID OF EX WB IF ID OF EX WB Κύκλοι Ρολογιού 5η IF ID OF EX Γενικά, σε µηχανή µε χρόνο κύκλου ρολογιού Τ ns και γραµµή διοχέτευσης k σταδίων, ο λανθάνων χρόνος είναι kt ns και η απόδοση 1000/Τ MIPS (εύρος ζώνης επεξεργαστή). 30 15
Καταχωρ ρητής Πολλαπλές Γραµµές ιοχέτευσης Παραλληλία στο επίπεδο S1 S2 S3 S4 S5 προσκόµισης εντολών Κ αποκωδικοποίησης αποκωδικοποίησης Κ προσκόµισης τελεστέων προσκόµισης τελεστέων Κ εκτέλεσης εκτέλεσης Κ εγγραφής αποτελέσµατος εγγραφής αποτελέσµατος Κ Ο επεξεργαστής Pentium είχε 2 γραµµές διοχέτευσης των 5 σταδίων. την u που εκτελούσε οποιαδήποτε εντολή την v που εκτελούσε µόνο απλές εντολές ακεραίων Αν έρχονταν προς εκτέλεση ζεύγος από συµβατές εντολές, τότε διοχετεύονται και οι δύο σε διαφορετικές γραµµές διοχέτευσης αλλιώς εκτελούνταν µόνο η εντολή στη u γραµµή διοχέτευσης. Ουσιαστικά, µόνο κατάλληλοι µεταφραστές µπορούσαν να αξιοποιήσουν αποδοτικά την αρχιτεκτονική! Μειονεκτήµατα: 1)Κόστος υλικού. 2)Προβλήµατα από τις συγκρούσεις µεταξύ των σταδίων και τις εξαρτήσεις µεταξύ των εντολών. 31 Υπερβαθµωτοί Επεξεργαστές Παραλληλία στο επίπεδο προσκόµισης Εντολής αποκωδικοποίησης προσκόµισης τελεστέων εγγραφής αποτελέσµατος κινητής Υποδιαστολής Οι υπερβαθµωτοί (superscalar) επεξεργαστές χρησιµοποιούν µία γραµµή διοχέτευσης αλλά ενσωµατώνουν πολλές λειτουργικές µονάδες (π.χ. Pentium II). 32 16
Παραλληλία: Επίπεδο Επεξεργαστών Παραδοσιακά η επίτευξη υψηλών επιδόσεων στηρίζονταν σε µεγάλο βαθµό στην αύξηση της συχνότητας λειτουργίας, ηοποίαµε τησειρά της τροφοδοτούνταν από την εξέλιξη της τεχνολογίας (µείωση των διαστάσεων των τρανζίστορ). Ταυτόχρονα αυτή η εξέλιξη επέτρεψε την τοποθέτηση (ολοκλήρωση) µερικών δις τρανζίστορ σε ένα τσιπ. Οσυνδυασµός υψηλών συχνοτήτων και υψηλής ολοκλήρωσης αύξησε δραµατικά την κατανάλωση ισχύος µε αποτέλεσµα να προκύψουν σοβαρά προβλήµατα µε τηθερµότητα. Ως λύση επιλέχθηκε η παραλληλία µε τη χρήση πολλών επεξεργαστών και ταυτόχρονη αναστολή κλιµάκωσης της συχνότητας λειτουργίας. 33 Επεξεργαστές Πίνακα ροµολόγηση εντολών Επεξεργαστής 8 8 πλέγµα επεξεργαστών Οι επεξεργαστές πινάκων (array processors) αποτελούνται από µεγάλο αριθµό παρόµοιων επεξεργαστών οι οποίοι εκτελούν την ίδια ακολουθία εντολών σε διαφορετικά σύνολα δεδοµένων. 34 17
Πολυεπεξεργαστές Τοπικές Μνήµες ιαµοιραζόµενη ιαµοιραζόµενη Αρτηρία Αρτηρία Πολυεπεξεργαστική µονάδα µε διαµοιραζόµενη µνήµη Πολυεπεξεργαστική µονάδα µε τοπική µνήµη ανά επεξεργαστή 35 18