Λειτουργίες
που υποστηρίζουν οι υπολογιστές RISC & CISC.
CISC = Complex Instruction Set Computers : Οι υπολογιστές αυτοί χαρακτηρίζονται από ένα σύνολο πολύπλοκων εντολών. Χαρακτηριστικό παράδειγμα τέτοιας μηχανής είναι ο VAX.
RISC = Reduced Instruction Set Computers : Οι υπολογιστές αυτοί χαρακτηρίζονται από ένα σύνολο εντολών με καθορισμένο μέγεθος. Χαρακτηριστικό παράδειγμα τέτοιας μηχανής είναι DLX.Όλοι οι υπολογιστές που δημιουργήθηκαν μετά το 1985, ανήκουν στην κατηγορία των RISC υπολογιστών.
Στόχος των υπολογιστών CISC: Οι ισχυροί τρόποι διευθυνσιοδότησης, οι ισχυρές εντολές και η αποδοτική κωδικοποίηση εντολών, οδήγησαν σε απλούς μεταγλωττιστές και πυκνότητα κώδικα.
Στόχος των υπολογιστών RISC: Οι απλές εντολές, οι απλοί τρόποι διευθυνσιοδότησης, το καθορισμένο μήκος εντολών και ο μεγάλος αριθμός καταχωρητών οδήγησαν σε υψηλή απόδοση χρησιμοποιώντας σωληνώσεις και σε απλή κατασκευή υλικού.
Οι λειτουργίες που υποστηρίζονται από τους περισσότερους υπολογιστές είναι :
Αριθμητικές και λογικές εντολές
Εντολές ελέγχου ροής εκτέλεσης του προγράμματος
Κλήσεις διαδικασιών και επιστροφές
Οι εντολές μετακίνησης
σε έναν υπολογιστή CISC μεταφέρουν
δεδομένα μεταξύ δύο οποιονδήποτε διευθυνσιοδοτημένων περιοχών, ενώ σε έναν
υπολογιστή
RISC
η μεταφορά δεδομένων
γίνεται μόνο μεταξύ καταχωρητών και μνήμης.
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 3
Μεταξύ ποιων περιοχών μεταφέρονται τα δεδομένα στις εντολές μετακίνησης σε έναν υπολογιστή CISC;Στην περίπτωση που δυσκολεύεστε να απαντήσετε, κρίνεται σκόπιμο να ανατρέξετε στην 1η υποενότητα «Κατηγορίες εντολών».
Στους υπολογιστές CISC (VAX) μπορεί να γίνει μετακίνηση δεδομένων από μία διεύθυνση μνήμης σε μια άλλη χρησιμοποιώντας μόνο μία εντολή. Αντιθέτως, στους υπολογιστές RISC (DLX) χρειάζεται μια σειρά εντολών για τη μετακίνηση αυτή.
Εξαίρεση των υπολογιστών CISC όσον αφορά στη μεταφορά δεδομένων, αποτελεί μια ειδική εντολή μετακίνησης MOVA(Move Address) στον VAX, η οποία μετακινεί την 32-bit διεύθυνση του τελεστέου αντί των δεδομένων.
Παρακάτω παρουσιάζουμε δύο πίνακες με εντολές μεταφοράς δεδομένων σε έναν υπολογιστή DLX και σε έναν υπολογιστή VAX.
Για τον DLX :
Τύπος εντολής/ κωδικός πράξης | Σημασία εντολής |
---|---|
Μεταφορά δεδομένων | Μετακίνηση δεδομένων μεταξύ καταχωρητή και μνήμης, ή μεταξύ του ακεραίων και FP ή ειδικών καταχωρητών. |
1. LB, LW, LH | 1. Φόρτωση byte (Load Byte), φόρτωση λέξης (Load Word), φόρτωση μισής λέξης (Load Half word) |
2. LΒU, LHU | 2. Φόρτωση byte χωρίς πρόσημο (Load Byte Unsigned), φόρτωση μισής λέξης χωρίς πρόσημο (Load Half word Unsigned) |
3. LF, LD | 3. Φόρτωση SP κινητής υποδιαστολής, φόρτωση DP κινητής υποδιαστολής |
4. SB, SW, SH | 4. Aποθήκευση byte (Store Byte), αποθήκευση λέξης (Store Word), αποθήκευση μισής λέξης (Store Half word) |
5. SF, SD | 5. Αποθήκευση SP κινητής υποδιαστολής, αποθήκευση DP κινητής υποδιαστολής |
6. MOVI2S, MOVS2I | 6. Μετακίνηση από /σε GPR* σε /από έναν καταχωρητή ειδικής χρήσης |
7. MOVF, MOVD | 7. Αντιγραφή ενός FP καταχωρητή ή ενός ζεύγους GP σε άλλον καταχωρητή ή ζεύγος |
8. MOVFP2I, MOVI2FP | 8. Μετακίνηση 32 bits από/σε FP καταχωρητές σε/από ακέραιους καταχωρητές |
Για τον VAX :
Τύπος εντολής/ κωδικός πράξης | Σημασία εντολής |
---|---|
Μεταφορά δεδομένων | Μετακίνηση δεδομένων (* είναι ο τύπος δεδομενων) |
1. MOV* | 1. Μετακίνηση μεταξύ δύο τελεστέων |
2. MOVZB* | 2. Μετακίνηση ενός byte σε μισή λέξη ή λέξη, επεκτείνοντάς το με μηδενικά |
3. MOVA* | 3. Μετακίνηση της 32-bits διεύθυνσης ενός τελεστέου |
4. PUSH* | 4. Ώθηση τελεστέου στην στοίβα |
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 5
Παράδειγμα
Έστω ότι θέλουμε να μετακινήσουμε την τιμή 53 στον καταχωρητή R2.
α) Με ποιον τρόπο μπορεί να επιτευχθεί αυτό, χρησιμοποιώντας τον υπολογιστή VAX;
β) Με ποιον τρόπο μπορεί να επιτευχθεί αυτό, χρησιμοποιώντας τον υπολογιστή DLX;
Απάντηση:
α) Η εντολή που χρησιμοποιούμε στον VAX είναι:
MOVB I #53,R2
Το
σύμβολο I
χρησιμοποιείται για να δηλώσει το μέγεθος του απευθείας τελεστέου. Στη
θέση του γράμματος Ι μπορεί να υπάρχει ένα από τα παρακάτω γράμματα :
Β : τελεστέος μεγέθους 1 byte
W : τελεστέος
μεγέθους 2 bytes
L : τελεστέος
μεγέθους 4 bytes
β) Η εντολή που χρησιμοποιούμε στον DLX είναι:
LB R2,#53
Παρατηρούμε ότι σε έναν υπολογιστή VAX o τελεστέος προορισμού βρίσκεται στο τέλος, ενώ σε έναν υπολογιστή DLX βρίσκεται αμέσως μετά το όνομα της εντολής.
Μετά
την εκτέλεση της εντολής ο καταχωρητής R2 περιέχει
την τιμή 53. ΔΡΑΣΤΗΡΙΟΤΗΤΑ 6
Αριθμητικές και λογικές εντολές:
Οι αριθμητικές λειτουργίες των υπολογιστών CISC διαφέρουν σε δύο σημεία με αυτές των υπολογιστών RISC:
Α. Ο τύπος δεδομένων στις πρώτες δηλώνεται στον κωδικό της εντολής. Έτσι οι ADDB, ADDW και ADDL λειτουργούν πάνω σε 8-bit, 16-bit και 32-bit δεδομένα μνήμης ή καταχωρητών. Στους υπολογιστές RISC όμως μια εντολή ADD λειτουργεί σε ολόκληρο τον 32-bit καταχωρητή.
Β. Με στόχο την μείωση του μεγέθους του κώδικα, στους υπολογιστές CISC
η
εντολή ADD προσδιορίζει τον αριθμό
των τελεστέων, ενώ στους υπολογιστές RISC το πλήθος των τελεστέων που προσδιορίζονται
είναι πάντα τρία.
Παρακάτω παρουσιάζουμε
δύο πίνακες με αριθμητικές και λογικές λειτουργίες ενός υπολογιστή DLX
και ενός υπολογιστή VAX.
Για τον DLX :
Τύπος εντολής/ κωδικός πράξης | Σημασία εντολής |
Αριθμητικές/λογικές
1. ADD, ADDI, ADDU, ADDUI 2. SUB, SUBI, SUBU, SUBUI
3. MULT, MULTU, DIV, DIVU
4. AND, ANDI 5. OR, ORI, XOR, XORI 6. LHI
7. SLL, SRL, SRA, SLLI, SRLI, SRAI
8. S_, S_I |
Πράξεις
σε ακέραια ή λογικά δεδομένα σε καταχωρητές γενικής χρήσης. Προσημασμένη
αριθμητική Παγίδα και υπερχείλιση.
1. Πρόσθεση, απευθείας πρόσθεση( όλα τα απευθείας είναι 16 bits) με πρόσημο και χωρίς. 2. Αφαίρεση, απευθείας αφαίρεση προσημασμένη και μη. 3. Πολλαπλασιασμός και διαίρεση,
προσημασμένα και μη. Οι τελεστέοι πρέπει να βρίσκονται σε καταχωρητές
κινητής υποδιαστολής. Όλες οι πράξεις παίρνουν και δίνουν τιμές 32-bit.
4. And, απευθείας and. 5. Or, απευθείας or, αποκλειστικό or, απευθείας αποκλειστικό or. 6. Απευθείας φόρτωση του high-φορτώνει τα δύο πιο σημαντικά bits ενός καταχωρητή με απευθείας δεδομένο. 7. Ολισθήσεις : απευθείας (S_I) και μεταβλητή (S_) μορφή. Οι ολισθήσεις είναι αριστερές λογικές, δεξιές λογικές, δεξιές αριθμητικές. 8. Η συνθήκη: "_" μπορεί να είναι LT,GT, LE, GE, EQ, NE |
Παράδειγμα 1
Παράδειγμα 2
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 7
Για τον VAX:
1. ADD*
2. CMP*
3. TST*
4. ASH*
5. CLR*
6. CVTB* 1 .Πρόσθεση με 2 ή 3 τελεστέους
2. Σύγκριση και καθορισμός
του κώδικα συνθήκης
3. Σύγκριση με το 0 και καθορισμός
του κώδικα συνθήκης
4. Αριθμητική ολίσθηση
5. Καθαρισμός
6. Προέκταση προσήμου byte
στο
μέγεθος του τύπου δεδομένων Η
εντολή ADDW3 LOC1,LOC2,R2 του
VAX
προσθέτει
τα δεδομένα (2 bytes το καθένα, λόγω
του γράμματος
W στο όνομα της εντολής)
που βρίσκονται στις θέσεις μνήμης LOC1 και
LOC2
και
τοποθετεί το αποτέλεσμα στον καταχωρητή R2. Παρατηρούμε ότι τόσο ο τύπος
των τελεστέων (W - 16 bits) όσο και το πλήθος των τελεστέων (3) δηλώνονται
δίπλα στο όνομα της εντολής.
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 8
* Να περιγράψετε την εκτέλεση της εντολής του DLX: ADDI R1, R2, #28.
* Ποιο θα είναι το αποτέλεσμα αν το περιεχόμενο του καταχωρητή R2 είναι 122;
* Να εκτελέσετε την παραπάνω εντολή, χρησιμοποιώντας το λογισμικό που βρίσκεται στην ιστοσελίδα:
* Να συγκρίνετε το αποτέλεσμα με την απάντηση που δώσατε.
Τύπος
εντολής/ κωδικός πράξης
Σημασία
εντολής
Αριθμητικές/λογικές
Πράξεις
σε ακέραια ή λογικά δεδομένα(το * είναι ο τύπος δεδομένων)
Εντολές ελέγχου ροής εκτέλεσης του προγράμματος
Οι εντολές μεταπήδησης σε έναν υπολογιστή RISC έχουν δύο τρόπους να προσδιορίζουν την διεύθυνση στόχου διακλάδωσης :
Α. Η πρόσθεση μιας 26-bit προσημασμένης μετατόπισης(offset) στον PC, προσδιορίζει τη διεύθυνση στόχου.
Β. Ο προσδιορισμός ενός καταχωρητή που περιέχει την διεύθυνση στόχου.
Στους υπολογιστές RISC χρησιμοποιείται ο καταχωρητής R31 για την αποθήκευση της διεύθυνσης της εντολής που ακολουθεί την εντολή μεταπήδησης. Όλες οι διακλαδώσεις είναι με συνθήκη και η διεύθυνση του στόχου διακλάδωσης υπολογίζεται προσθέτοντας μια 16-bit προσημασμένη μετατόπιση (offset) στον PC. Σε αντίθεση με τους υπολογιστές RISC, στους υπολογιστές CISC υπάρχουν και διακλαδώσεις χωρίς συνθήκη, των οποίων το όνομα καθορίζεται από το μέγεθος της PC-σχετικής μετατόπισης (displacement). Για παράδειγμα η BRB (Brunch Byte) έχει μια 8-bit μετατόπιση.
Παρακάτω παρουσιάζουμε δύο πίνακες με εντολές ελέγχου σε έναν υπολογιστή DLX και σε έναν υπολογιστή VAX.
Για τον DLX :
Τύπος εντολής/ κωδικός πράξης | Σημασία εντολής |
Έλεγχος
1. BEQZ, BNEZ
2. J, JR
3. J, JALR
4. TRAP
5. RFE |
Υπό
συνθήκη διακλαδώσεις και μεταπηδήσεις. PC-σχετικές ή μέσω καταχωρητών
1. Διακλάδωση αν το περιεχόμενο του καταχωρητή είναι ίσο/άνισο με το μηδέν. 16-bit offset από PC+4 2. Μεταπηδήσεις : 26-bit offset από PC+4 (J) ή στόχος σε καταχωρητή (JR). 3. Μεταπήδηση και σύνδεση : σώσε PC+4 στον R31,στόχος είναι PC-σχετικός(JAL) ή ένας καταχωρητής (JALR). 4. Μεταφορά στο λειτουργικό σύστημα σε ένα διάνυσμα διεύθυνσης 5. Επιστροφή στον χρησιμοποιούμενο κώδικα από μία εξαίρεση. Επαναφύλαξη του Τρόπου του χρήστη. |
Παραδείγματα
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 9
Να εξηγήσετε τη λειτουργία της παρακάτω εντολής του υπολογιστή DLX χρησιμοποιώντας συμβολισμούς:
Για τον VAX :
Τύπος εντολής/ κωδικός πράξης | Σημασία εντολής |
1. BEQL, BNEQ
2. BLEQ, BGEQ
3. BRB, BRW
4. JMP
5. AOBLEQ
6. CASE_
|
1.
Διακλάδωση αν είναι ίσο/άνισο
2. Διακλάδωση αν είναι μικρότερο
από ...
3. Διακλάδωση χωρίς συνθήκη με μια 8-bits ή 16-bits διεύθυνση 4. Μεταπήδηση χρησιμοποιώντας έναν οποιονδήποτε τρόπο διευθυνσιοδότησης για να καθοριστεί ο στόχος 5. Πρόσθεσε ένα στον τελεστέο : Διακλάδωση αν το αποτέλεσμα είναι μικρότερο ή ίσο του δεύτερου τελεστέου 6. Μεταπήδηση βασισμένη στον επιλογέα case. |
Κλήσεις διαδικασιών και επιστροφές
Για την κλήση διαδικασιών και για την επιστροφή απ' αυτές οι υπολογιστές CISC χρησιμοποιούν ένα σύνολο από δείκτες. Ο δείκτης στοίβας (SP) χρησιμοποιείται και στους υπολογιστές RISC και δείχνει στην αρχή της στοίβας. Ο δείκτης παραμέτρων (AP) δείχνει στη βάση της λίστας μεταβλητών ή παραμέτρων στην μνήμη, που χρησιμοποιούνται από την διαδικασία. Ο δείκτης πλαισίου (FP) δείχνει στη βάση της λίστας των τοπικών μεταβλητών της διαδικασίας, που βρίσκονται στη μνήμη.
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 10
Παρακάτω παρουσιάζουμε έναν πίνακα με κλήσεις διαδικασιών και επιστροφές απ' αυτές σε έναν υπολογιστή VAX. Οι αντίστοιχες εντολές για κλήσεις και επιστροφές διαδικασιών του DLX βρίσκονται στον πίνακα εντολών ελέγχου.
Για τον VAX :
Τύπος εντολής/ κωδικός πράξης | Σημασία εντολής |
1. CALLS
2. CALLG
3. JSB
4. RET |
1.
Κλήση διαδικασίας με παραμέτρους στην στοίβα
2. Κλήση διαδικασιών με λίστα παραμέτρων τύπου FORTRAN 3. Μεταπήδηση σε υπορουτίνα, σώζοντας την διεύθυνση επιστροφής(στους υπολογιστές RISC η αντίστοιχη εντολή είναι JAL) 4. Επιστροφή από κλήση διαδικασίας |
Εξηγήστε την εντολή CALLS #n,PROC του VAX.
Η εντολή
αυτή περιέχει δύο τελεστέους. Ο πρώτος (n) καθορίζει
το πλήθος των 32-bit παραμέτρων, που
έχουν προηγουμένως τοποθετηθεί στην στοίβα. Ο δεύτερος (PROC) είναι
η διεύθυνση της διαδικασίας που θα κληθεί.
Και τα δύο είδη υπολογιστών υποστηρίζουν πράξεις σε τελεστέους κινητής υποδιαστολής.
Παρακάτω παρουσιάζουμε δύο πίνακες με εντολές για δεδομένα κινητής υποδιαστολής σε έναν υπολογιστή DLX και σε έναν υπολογιστή VAX.
Για τον DLX :
Τύπος εντολής/ κωδικός πράξης | Σημασία εντολής |
Κινητής
υποδιαστολής
1. ADDD, ADDF
2. SUBD, SUBF
3. MULTD, MULTF
4. DIVD, DIVF
5. CVTF2D, CVTF2I
6. _D, _F |
Πράξεις
μεταξύ κλασματικών αριθμών
1. Πρόσθεση αριθμών κινητής υποδιαστολής απλής/διπλής ακρίβειας 2. Αφαίρεση αριθμών κινητής υποδιαστολής απλής/διπλής ακρίβειας 3. Πολλαπλασιασμός αριθμών κινητής υποδιαστολής απλής/διπλής ακρίβειας 4. Διαίρεση αριθμών κινητής
υποδιαστολής απλής/διπλής ακρίβειας
5. Εντολές μετατροπής : CVTX2y μετατρέπει από τον τύπο x στον τύπο y, όπου x και y είναι I (ακέραιος), D (διπλής ακρίβειας), ή F (απλής ακρίβειας). Και οι δύο τελεστέοι είναι FPRs. 6. Συγκρίσεις κλασματικών αριθμών : "_" = LT, GT, LE, GE, EQ, NE. Θέτει bit στον FP καταχωρητή κατάστασης. |
Για τον VAX :
Τύπος εντολής/ κωδικός πράξης | Σημασία εντολής |
1. ADDD_
2. SUBD_
3. MULTF_
|
1.
Πρόσθεση 64-bit αριθμών κινητής υποδιαστολής
(διπλής ακρίβειας)
2. Αφαίρεση 64-bit αριθμών κινητής υποδιαστολής (διπλής ακρίβειας) 3. Πολ/μος 32-bit αριθμών κινητής υποδιαστολής (απλής ακρίβειας) |