Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική
Κώδικας μηχανής (E) Ο επεξεργαστής μπορεί να εκτελέσει το αρχιτεκτονικό σύνολο εντολών (instruction set architecture) Οι εντολές είναι κωδικοποιημένες με 0,1 όπως και τα δεδομένα π.χ. 00000010001100100100000000100000 για την αρχ. MIPS σημαίνει πρόσθεσε τους αριθμούς στους καταχωρητές με τα ονόματα s1 s2 και γράψε το αποτέλεσμα στον καταχωρητή t1 Συμβολική γλώσσα (assembly) πιο εύκολη για ανθρώπους add $t1, $s1, $s2 Απαιτείται μετάφραση από το συμβολομεταφραστή (assembler) 2
Καταχωρητές - μεταβλητές Οι εντολές μιας γλώσσας είναι στην ουσία τα «ρήματα» της γλώσσας Υπάρχουν όμως και τα «ουσιαστικά» πάνω στα οποία δρούν οι εντολές σταθερές, μεταβλητές, ειδικά ονόματα, και (κύρια) μνήμη είδη δεδομένων και κωδικοποίηση. π.χ. ακέραιοι δυαδικοί,... Οι μεταβλητές κρατούν τιμές δεδομένων και μπορούν να αλλάξουν Σε επίπεδο αρχιτεκτονικής και κάτω λέγονται καταχωρητές (registers) αν είναι «μέσα» στη μηχανή και θέσεις μνήμης αν είναι «έξω» Τα ειδικά ονόματα είναι ειδικοί καταχωρητές με ιδιαίτερες ιδιότητες 3
Ειδικοί καταχωρητές Γενικά διαφέρουν ανάλογα με την ISA του επεξεργαστή Όλοι όμως έχουν το μετρητή προγράμματος (program counter PC ή, μερικές φορές, instruction pointer IP) δίχνει τη διεύθυνση μνήμης που βρίσκεται η (επόμενη) εντολή που θα εκτελέσει μια διεργασία στις περισσότερες ISA δεν είναι άμεσα προσπελάσιμος, αλλά αλλάζει όταν εκτελούνται εντολές διακλάδωσης (επαναλήψεις, κλήσεις και επιστροφές υπορουτινών,...) Συχνά υπάρχει ένας καταχωρητής που κρατάει πληροφορίες σχετικές με το τελευταίο αποτέλεσμα αν ήταν 0, θετικός αριθμός, έγινε υπερχείλιση,... 4
Είδη εντολών μηχανής Γενικά υπάρχουν τα παρακάτω είδη εντολών Αριθμητικές, λογικές πράξεις Προσπέλαση μνήμης Διακλαδώσεις Κλησεις υπορουτινών Άλλες εντολές Πολλές παραλλαγές συνδιασμός πράξεων δεδομένων με προσπέλαση μνήμης (σε CISC επεξεργαστές) Οι πράξεις είναι γενικά διμελείς, οπότε γενικά χρειάζονται 3 καταχωρητές: δύο για ανάγνωση και ενας για εγγραφή Υπάρχουν μηχανές όπου υποχρεωτικά ένας από τους καταχωρητές ανάγνωσης χρησιμοποιείται για να γράψει το αποτέλεσμα 5
Εντολές σε δεδομένα Πρόσθεση, αφαίρεση, ολίσθηση, λογικές μάσκες,... Μπορεί να υπάρχουν παραλλαγές για θετικούς ακέραιους, προσημασμένους ακέραιους και αριθμούς κινητής υποδιαστολής ή με σταθερά για μία από τις πηγές Η μορφή των εντολών είναι συνήθως: ΠΡΑΞΗ ΠΗΓΗ1 ΠΗΓΗ2 ΠΡΟΟΡΙΣΜΟΣ Για παράδειγμα: add R1, R2, R3 6
Προσπέλαση μνήμης Μεταφορά δεδομένων από τη μνήμη σε ένα καταχωρητή ή το αντίστροφο Η μεταφορά από τη μνήμη λέγεται φόρτωση load Η μεταφορά προς τη μνήμη λέγεται αποθήκευση store Υπάρχουν πολλές παραλλαγές είδος (μέγεθος) δεδομένων που μεταφέρεται: byte, 16,32,64 bit Πως προσδιορίζεται η διεύθυνση μνήμης; Αγγλικός όρος: addressing mode η πλήρης διεύθυνση δίνεται από την εντολή η διεύθυνση προσδιορίζεται από ένα καταχωρητή η διεύθυνση προσδιορίζεται από μια πρόσθεση καταχωρητή με σταθερά ή άλλον καταχωρητή 7
Διακλαδώσεις Γενικά δεν υπάρχουν εντολές επανάληψης ή εκτέλεσης υπό συνθήκη σε γλώσσα μηχανής Υλοποιούνται με εντολές διακλάδωσης (υπό συνθήκη ή χωρίς): Βxx <target> αν <συνθήκη> πήγαινε στη διεύθυνση Χ JUMP <target> πήγαινε στη διεύθυνση Χ Οι συνθήκες είναι γενικά απλές συγκρίσεις που περιλαμβάνονται στην εντολή διακλάδωσης ή η σύγκριση έχει γίνει με προηγούμενη εντολή και η εντολή διακλαδωσης εξετάζει το αποτέλεσμα 8
Διακλαδώσεις - μετάφραση if <cond> { code1 } else { code2 } code3 εντολές για υπολογισμό της (αντίθετης) cond Bxx διεύθυνση else μετάφραση code1 JUMP διεύθυνση «συνέχεια» else: μετάφραση code2 συνέχεια: μετάφραση code3 9
Επαναλήψεις- μετάφραση while <cond> { code1 } code2 επανάληψη: εντολές για υπολογισμό της cond Bxx διεύθυνση «έξω» μετάφραση code1 JUMP διεύθυνση επανάληψη έξω: μετάφραση code2 10
Κλήσεις υπορουτινών Μπορούν να γίνουν με απλές εντολές JUMP αλλά είναι δύσκολο να γίνουν αναδρομές κτλ. Μορφή: CALL διεύθυνση υπορουτίνας Η εκτέλεση συνεχίζει στην διεύθυνση υπορουτίνας, και η διεύθυνση της επόμενης από την CALL εντολής αποθηκεύεται σε ένα καταχωρητή (ή στη μνήμη) για να μπορεί να γίνει αναδρομή πρέπει να αποθηκευτεί στη μνήμη Μερικοί επεξεργαστές διευκολύνουν και το πέρασμα παραμέτρων Γενικά υπάρχει κάποια σύμβαση που ορίζει ποιούς καταχωρητές η υπορουτίνα μπορεί να αλλάξει και ποιούς όχι 11
Περισσότερα για προγραμματισμό σε γλώσσα μηχανής στα μαθήματα: Αρχιτεκτονική Υπολογιστών Προγραμματισμός Συστημάτων Μεταφραστές 12
Σχεδίαση datapath Με βάση τις διαθέσιμες εντολές μπορεί να σχεδιαστεί το datapath του επεξεργαστή Συστατικά Αριθμητική Λογική μονάδα Αρχείο καταχωρητών Program Counter 13
Απλουστευμένο datapath αρτηρία μνήμης 14
Μικροπρογραμματισμός Ο έλεγχος μπορεί να είναι «πλήρως καλωδιωμένος» (hardwired) ή μικρο-προγραμματιζόμενος Hardwired: υλοποιεί όλες τις εντολές της ΙSA απευθείας Μικρο-προγραμματιζόμενος: κάθε εντολή ISA ερμηνεύεται: μετατρέπεται σε μια σειρά από εσωτερικές μικροεντολές που εκτελούνται απευθείας κάθε εντολή ISA αντιστοιχεί σε μια «υπορουτίνα» μικροεντολών 15
Δομή σύγχρονων υπολογιστών Αρχιτεκτονικό συνόλο εντολών (Instruction Set Architecture ISA) είναι το τυπικό όριο μεταξύ υλικού και λογισμικού Η μικρο-αρχιτεκτονική ορίζει όμως τι είναι πράγματι κατασκευασμένο μια αρχιτεκτονική μπορεί να έχει πολλές διαφορετικές υλοποιήσεις 16
Μικροαρχιτεκτονική Το (φυσικό χειροπιαστό) υλικό της μηχανής αυτό που είναι κάτω από τον ανεμιστήρα, μέσα στο Ο.Κ.! Αποτελείται από λογικές πύλες και σύρματα Στην πραγματικότητα η περιπλοκότητα είναι τόσο μεγάλη που υπάρχει ιεράρχηση και σε αυτό το επίπεδο αριθμητικές-λογικές μονάδες, ολισθητές, πολυπλέκτες,... Εκτελεί εντολές (μηχανής) που φέρνει από τη μνήμη το πρόγραμμα είναι αποθηκευμένο στη μνήμη Περισσότερα σε μαθήματα ψηφιακής σχεδίασης και VLSI 17
RISC, CISC (E) Οι υπολογιστές τύπου RISC είναι γενικά hardwired π.χ. ARM (~όλα τα κινητά τηλέφωνα), PowerPC (Sony PS3) Οι CISC είναι μικροπρογραμματιζόμενοι Intel από τον Pentium και μετά Θεωρητικά οι hardwired είναι ταχύτεροι, αλλά η Intel μπόρεσε να μεταφράσει τις περίπλοκες εντολές της αρχιτεκτονικής με αποδοτικό τρόπο οι απλές, συχνές, εντολές αντιστοιχούν σε λίγες μικροεντολές οι πολύπλοκες θέλουν πολλές μικροεντολές, αλλά είναι σπάνιες 18