ΑΡΧΙΤΕΚΤΟΝΙΚΗ & ΟΡΓΑΝΩΣΗ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 10 ΟΜΑΔΕΣ ΕΝΤΟΛΩΝ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ & ΛΕΙΤΟΥΡΓΙΕΣ
Τι είναι μία ομάδα / σύνολο εντολών (Instruction Set); Η πλήρης συλλογή λειτουργιών /πράξεων που μπορεί να κατανοηθεί και να υλοποιηθεί από μία ΚΜΕ (CPU) Όριο από όπου ο σχεδιαστής και ο προγραμματιστής του υπολογιστικού συστήματος «βλέπουν» την ίδια μηχανή Παρέχει όλη την πληροφορία για τις δυνατότητες της μηχανής κρύβοντας τις λεπτομέρειες της υλοποίησης της Από τα κύρια μέρη της αρχιτεκτονικής του συστήματος. 2
Χαρακτηριστικά ομάδας εντολών Κύρια χαρακτηριστικά μίας ομάδας εντολών: Είδη λειτουργιών και πράξεων (μετακίνηση δεδομένων, αριθμητικές / λογικές πράξεις ...) Μορφή εντολών (αριθμός τελεστέων, πεδία εντολής...) Μορφή δεδομένων (αναπαράσταση δεδομένων, λέξη, διπλή λέξη ...) Αριθμός καταχωρητών Τρόποι διευθυνσιοδότησης Οι εντολές συνήθως αναπαρίστανται με κώδικες σε συμβολική γλώσσα (assembly) ADD R1, R2, R3; Πρόσθεσε τα δεδομένα των καταχωρητών R1, R2 και αποθήκευσε το αποτέλεσμα στον R3 (R3< – R1 + R2 Σε χαμηλότερο επίπεδο μετατρέπονται σε δυαδική μορφή Γένεση των καταλλήλων σημάτων στην ΚΜΕ 2
Η ομάδα εντολών από την πλευρά του σχεδιαστή του συστήματος Από τη πλευρά του σχεδιαστή η ομάδα εντολών καθορίζει τις απαιτήσεις της ΚΜΕ Αν υπάρχει εντολή πρόσθεσης πρέπει να υπάρχει και το αντίστοιχο κύκλωμα στη ΚΜΕ Αν απαιτείται μία συγκεκριμένη μεταφορά δεδομένων από τη μνήμη τότε αυτή πρέπει να υποστηρίζεται με κατάλληλα κυκλώματα 2
Η ομάδα εντολών από την πλευρά του χρήστη του συστήματος Από την πλευρά του χρήστη (προγραμματιστή) καθορίζει τις λειτουργίες που μπορεί να επιτελέσει η μηχανή Με βάση το σύνολο εντολών ο χρήστης μπορεί (ή δε μπορεί) να εκτελέσει άμεσα μία λειτουργία Αν το σύνολο εντολών δεν περιλαμβάνει εντολή πολλαπλασιασμού τότε αυτός πρέπει να υλοποιηθεί με κατάλληλο αλγόριθμο (routine) προσθέσεων και ολισθήσεων 2
Επιπτώσεις επιλογής ομάδας εντολών Οι αποφάσεις για το σύνολο εντολών της μηχανής έχουν καθοριστική επίδραση όσον αφορά την ΚΜΕ και το υλικό γενικότερα Ταχύτητα – Υλοποίηση πράξης με μία εντολή (αν υποστηρίζεται) ή με πολλές εντολές (αν δεν υποστηρίζεται) => αύξηση (μείωση) της απόδοσης Επιφάνεια – Αύξηση του πλήθους των εντολών απαιτεί (κατά κανόνα) περισσότερα κυκλώματα => αύξηση της επιφάνειας Πολυπλοκότητα – Ομάδες με πολύπλοκες εντολές συνεπάγονται πολύπλοκους κυκλωματικούς σχεδιασμούς και πολύπλοκους μεταγλωττιστές (RISC vs CISC) Κόστος 2
Στοιχεία μιας εντολής Κάθε εντολή πρέπει να παρέχει όλη την πληροφορία που χρειάζεται η ΚΜΕ για την εκτέλεση της Κώδικας Λειτουργίας (Opcode) Καθορίζει τη λειτουργία πράξη που θα εκτελεστεί. Κάθε φορά που προσκομίζεται η εντολή αποκωδικοποιείται ο κώδικας λειτουργίας Κάθε εντολή εκτελεί μία συγκεκριμένη λειτουργία και επομένως έχει ένα μοναδικό κώδικα λειτουργίας Αναφορά τελεστέου πηγής Είσοδοι της λειτουργίας / πράξης Αναφορά τελεστέου προορισμού Αποθήκευση αποτελέσματος Αναφορά επόμενης εντολής Καθορίζει την επόμενη εντολή που θα εκτελεστεί 3
Διάγραμμα καταστάσεων κύκλου εντολής
Αναπαράσταση εντολής Στην πράξη μία εντολή είναι μία συλλογή από δυαδικά ψηφία Κάθε εντολή έχει μία μοναδιαία τοποθέτηση των ψηφίων της για να ξεχωρίζει από τις υπόλοιπες Κατά την εκτέλεση τα ψηφία του πεδίου opcode αποκωδικοποιούνται και εκτελείται η εντολή Τα ψηφία ομαδοποιούνται σε πεδία όπου το κάθε πεδίο καθορίζει τα στοιχεία της εντολής opcode, τελεστέοι πηγής και προορισμού Ευκολία αποκωδικοποίησης Για ευκολία χρησιμοποιείται μια συμβολική αναπαράσταση (assembly language) π.χ. ADD, SUB, LOAD Οι τελεστέοι μπορούν να αναπαρασταθούν επίσης κατά τον ίδιο τρόπο ADD A,B 5
Μορφή απλής εντολής
Που είναι αποθηκευμένοι οι τελεστέοι; Κύρια μνήμη (ή εικονική μνήμη) Με χρήση κατάλληλων τρόπων διευθυνσιοδότησης καθορίζεται η διεύθυνση και προσκομίζεται από τη μνήμη η τιμή του τελεστέου (Κεφ. 11) Παρόμοια και για τον τελεστέο προορισμού (αποθήκευση αποτελέσματος) Καταχωρητές της ΚΜΕ Χρήση των εσωτερικών καταχωρητών της ΚΜΕ για διάβασμα τιμών και αποθήκευση αποτελεσμάτων Συσκευές εισόδου /εξόδου Καθορισμός της διεύθυνσης του Ι/Ο (I/O με απεικόνιση μνήμης, απομονωμένο Ι/Ο) 4
Τύποι εντολής (1/2) Επεξεργασίας δεδομένων Εκτέλεση αριθμητικών πράξεων (ADD, SUB, ADC, SBB,…) Εκτέλεση λογικών (Boolean) πράξεων (AND, OR, XOR, SHIFT,…) Μεταφορά /αποθήκευση δεδομένων (στην κύρια μνήμη) Μεταφορά δεδομένων από/προς τη μνήμη (MOV, LOAD, STORE,…) 6
Τύποι εντολής (2/2) Ελέγχου ροής προγράμματος Εντολές διακλάδωση υπό συνθήκη (JC, JNC, JZ, …) Εντολές άλματος (JUMP) Κλήση ρουτίνας (CALL) Επιστροφής από ρουτίνα (RETURN) Μετακίνησης δεδομένων (I/O) Παρόμοιο με τις εντολές μνήμης 6
Αριθμός διευθύνσεων (α) 3 διευθύνσεις Τελεστέος 1, Τελεστέος 2, Προορισμός a = b + c; ΑDD A, B, C ; A B+C Χρειάζεται μεγάλες λέξεις εντολής για να συμπεριλάβει όλα τα πεδία Αύξηση απαιτήσεων μνήμης Υψηλές απαιτήσεις ρυθμού μεταφοράς δεδομένων 7
Αριθμός διευθύνσεων (β) 2 διευθύνσεις Μία διεύθυνση χρησιμοποιείται για την πηγή και τον προορισμό a = a + b ADD A, B; A A+B Μειώνει το μήκος της εντολής Απαιτεί επιπλέον εντολές Προσωρινή αποθήκευση ενδιάμεσων αποτελεσμάτων a=b+c MOV A, B ; A B ADD A, C; A A+C=B+C 8
Αριθμός διευθύνσεων (γ) 1 διεύθυνση Η δεύτερη διεύθυνση υπονοείται Συνήθως είναι ένας καταχωρητής (συσσωρευτής) Συνηθιζόταν στους αρχικούς επεξεργαστές 9
Αριθμός διευθύνσεων (δ) 0 (μηδέν) διεύθυνση Όλες οι διευθύνσεις υπονοούνται Χρησιμοποιείται σωρός e.g. push a push b add pop c c = a + b 10
Προγράμματα εκτέλεσης του Υ=(Α-Β)/(C+D*E) Εντολή Σχόλιο SUB Y,A,B Y←A-B MPY T,D,E T ←D×E ADD T,T,C T ←T+C DIV Y,Y,T Y ←Y÷T (α) εντολές τριών διευθύνσεων Εντολή Σχόλιο LOAD D AC←D MPY E AC←AC×E ADD C AC←AC+C STOR Y Y←AC LOAD A AC←A SUB B AC←AC-B DIV Y AC←AC÷Y STOR Y Y←AC (α) εντολές μιας διεύθυνσης Εντολή Σχόλιο MOV Y,A Y←A SUB Y,B Y←Y-B MOV T,D T←D MPY T,E T ←T×E ADD T,C T ←T+C DIV Y,T Y ←Y÷T (α) εντολές δύο διευθύνσεων
Πόσα πεδία διευθύνσων χρειάζονται ; Περισσότερες διευθύνσεις Πολυπλοκότερες εντολές (powerful?) Περισσότεροι καταχωρητές Οι πράξεις μεταξύ των καταχωρητών είναι γρηγορότερες Λιγότερες εντολές ανά πρόγραμμα Λιγότερες διευθύνσεις Λιγότερο πολύπλοκες εντολές (powerful?) Περισσότερες εντολές ανά πρόγραμμα Γρηγορότερη προσκόμιση/εκτέλεση εντολών 11
Σχεδιαστικές αποφάσεις (1) Ρεπερτόριο εντολών Πόσες λειτουργίες; Τι μπορούν να κάνουν; Πόσο πολύπλοκες είναι; Τύποι δεδομένων Μήκος δεδομένων Αναπαράσταση δεδομένων Μορφές εντολών Μήκος του πεδίου του opcode. Καθορίζει το πλήθος των εντολών Αριθμός διευθύνσεων 12
Σχεδιαστικές αποφάσεις (2) Καταχωρητές Αριθμός διαθέσιμων καταχωρητών της ΚΜΕ Ποιες λειτουργίες μπορούν να πραγματοποιηθούν σε ποιους καταχωρητές; Τρόποι διευθυνσιοδότησης Καθορισμός της διεύθυνσης του τελεστέου (Κεφ. 11) RISC έναντι CISC 13
Τύποι τελεστέων Διευθύνσεις Αριθμοί Χαρακτήρες Λογικά δεδομένα Αναπαράσταση (2’s complement, signed, unsigned) Ακέραιοι/κινητής υποδιαστολής Δυναμική περιοχή – Εξαρτάται από το μέγεθος της λέξης δεδομένων Εύρος τιμών, ακρίβεια Χαρακτήρες ASCII κλπ. Λογικά δεδομένα Ψηφία από σημαίες 14
Τύποι δεδομένων στον Pentium 17
Τύποι λειτουργιών /πράξεων Μεταφοράς δεδομένων Αριθμητικοί Λογικοί Μετατροπής Εισόδου/Εξόδου (I/O) Μεταφοράς ελέγχου 18
Λειτουργίες μεταφοράς δεδομένων Ορισμοί Πηγή (καταχωρητής, μνήμη, σωρός) Προορισμός (καταχωρητής, μνήμη, σωρός) Ποσότητα δεδομένων Μπορεί να υπάρχουν διαφορετικές εντολές για διαφορετικές μετακινήσεις π.χ. IBM 390 Ή μία εντολή και διαφορετικές διευθύνσεις π.χ. VAX 19
Αριθμητικές λειτουργίες Πρόσθεση, αφαίρεση, πολλαπλασιασμός, διαίρεση Συνήθως, λόγω πολυπλοκότητας του κυκλώματος η διαίρεση μπορεί να μην υποστηρίζεται Προσημασμένος ακέραιος Κινητής υποδιαστολής; Συνήθως υποστηρίζεται από ειδικό κύκλωμα (μαθηματικό συνεπεξεργαστή) Μπορεί να περιλαμβάνουν Αύξηση (a++); a=a+1 Μείωση (a--); a=a-1 Συμπλήρωμα (-a) 20
Λογικές λειτουργίες και λειτουργίες μετατροπής Λειτουργίες σε επίπεδο ψηφίων (Bitwise) AND, OR, NOT Δυαδικό σε δεκαδικό 21
Λογική ολίσθηση Τα ψηφία μετατοπίζονται δεξιά ή αριστερά Στο ένα άκρο το ψηφίο που βγαίνει έξω από τη λέξη χάνεται, στο άλλο άκρο εισάγεται ένα 0 Χρησιμοποιούνται για την απομόνωση ψηφίων με χρήση μάσκας Αντιστοιχεί σε πολλαπλασιασμό /διαίρεση μη προσημασμένων αριθμών
Λογική ολίσθηση Έστω ότι θέλουμε να μεταδώσουμε χαρακτήρες δεδομένων σε μία Ι/Ο συσκευή (1 χαρακτ. τη φορά). Έστω οτι η λέξη έχει μήκος 8 ψηφία Αριστερός χαρακτήρας 1. Φορτώνουμε τη λέξη σε ένα καταχωρητή 2. AND με το 1111000. Μάσκα στο δεξία χαρακτήρα 3. Ολίσθηση δεξιά 4 φορές. Ο αριστερός χαρακτήρας μεταφέρθηκε στο δεξιό μισό του καταχωρητή 4. Μεταφορά δεδομένων σε Ι/Ο Παρόμοια και για το δεξιό χαρακτήρα
Αριθμητική ολίσθηση Τα ψηφία μετατοπίζονται δεξιά ή αριστερά. Τα δεδομένα μεταχειρίζονται σαν ακέραιοι αριθμοί με πρόσημο Το πρόσημο διατηρείται πάντοτε Υλοποίηση πολλαπλασιασμών /διαιρέσεων με δυνάμεις του 2 για αριθμούς που αναπαριστανται σε 2’s complement ΠΡΟΣΟΧΗ. Γίνεται περικοπή των περιττών αριθμών
Περιστροφή
Αριθμητική και λογική ολίσθηση
Λειτουργίες εισόδου/εξόδου Μπορεί να είναι συγκεκριμένες εντολές Μπορεί να γίνουν χρησιμοποιώντας εντολές μετακίνησης δεδομένων (memory mapped) Μπορεί να εκτελεστούν από ξεχωριστό ελεγκτή (DMA) 23
Μεταφορά του ελέγχου Διακλάδωση Υπερπήδηση Κλήση ρουτίνας call π.χ. διακλάδωση στο x εάν το αποτέλεσμα είναι μηδέν. JZ xxxx (address) Υπερπήδηση π.χ. αύξησε και υπερπήδησε εάν μηδέν ISZ Register1 Branch xxxx ADD A Κλήση ρουτίνας call Call διακοπής 25
Εντολή διακλάδωσης
Φωλιασμένες διαδικασίες από Calls
Τοποθέτηση Σωρού στη μνήμη Μια περιοχή μνήμης με δομή LIFO
Φωλιασμένες διαδικασίες από Calls
Χρήση σωρού
Ταξινόμηση των Bytes (παράδειγμα) Αποθήκευση του αριθμού 12345678 Διεύθυνση Τιμή (1) Τιμή(2) 184 12 78 185 34 56 186 56 34 186 78 12 δηλ. διαβάζεται από πάνω προς τα κάτω ή ανάποδα; 28
Ονομασία ταξινόμησης των Byte Το πρόβλημα καλείται Endian Big-endian: το περισσότερο σημαντικό byte στη μικρότερη διεύθυνση Little-endian: το λιγότερο σημαντικό byte στη μικρότερη διεύθυνση 29
Δομές Μικρού και μεγάλου άκρου
Εναλλακτική όψη χάρτη μνήμης
Σύγκριση μικρού – μεγάλου άκρου Πλεονεκτήματα μεγάλου άκρου Ταξινόμηση – ταχύτερη σύγκριση Οι τιμές αποτυπώνονται από τα αριστερά προς τα δεξιά Τακτική σειρά –πρώτο το σημαντικότερο byte