Κεφάλαιο2 | Ενότητα2 | Ερωτήσεις επισκόπησης | Επόμενο | Προηγούμενο | Λεξικό όρων



Λειτουργίες που υποστηρίζουν οι υπολογιστές RISC & CISC.
 

CISC = Complex Instruction Set Computers : Οι υπολογιστές αυτοί χαρακτηρίζονται από ένα σύνολο πολύπλοκων εντολών. Χαρακτηριστικό παράδειγμα τέτοιας μηχανής είναι ο VAX.

RISC = Reduced Instruction Set Computers : Οι υπολογιστές αυτοί χαρακτηρίζονται από ένα σύνολο εντολών με καθορισμένο μέγεθος. Χαρακτηριστικό παράδειγμα τέτοιας μηχανής είναι DLX.Όλοι οι υπολογιστές που δημιουργήθηκαν μετά το 1985, ανήκουν στην κατηγορία των RISC υπολογιστών.

Στόχος των υπολογιστών CISC: Οι ισχυροί τρόποι διευθυνσιοδότησης, οι ισχυρές εντολές και η αποδοτική κωδικοποίηση εντολών, οδήγησαν σε απλούς μεταγλωττιστές και πυκνότητα κώδικα.

Στόχος των υπολογιστών RISC: Οι απλές εντολές, οι απλοί τρόποι διευθυνσιοδότησης, το καθορισμένο μήκος εντολών και ο μεγάλος αριθμός καταχωρητών οδήγησαν σε υψηλή απόδοση χρησιμοποιώντας σωληνώσεις και σε απλή κατασκευή υλικού.

Οι λειτουργίες που υποστηρίζονται από τους περισσότερους υπολογιστές είναι :

Μεταφορά δεδομένων

Αριθμητικές και λογικές εντολές

Εντολές ελέγχου ροής εκτέλεσης του προγράμματος

         Κλήσεις διαδικασιών και επιστροφές

Κινητής υποδιαστολής
 
 

Μεταφορά δεδομένων

Οι εντολές μετακίνησης σε έναν υπολογιστή CISC μεταφέρουν δεδομένα μεταξύ δύο οποιονδήποτε διευθυνσιοδοτημένων περιοχών, ενώ σε έναν υπολογιστή RISC η μεταφορά δεδομένων γίνεται μόνο μεταξύ καταχωρητών και μνήμης.

ΔΡΑΣΤΗΡΙΟΤΗΤΑ 3

Μεταξύ ποιων περιοχών μεταφέρονται τα δεδομένα στις εντολές μετακίνησης σε έναν υπολογιστή CISC;Στην περίπτωση που δυσκολεύεστε να απαντήσετε, κρίνεται σκόπιμο να ανατρέξετε στην 1η υποενότητα «Κατηγορίες εντολών».

ΑΠΑΝΤΗΣΗ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ 3


Στους υπολογιστές 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 καταχωρητές σε/από ακέραιους καταχωρητές

Παραδείγματα
 

ΔΡΑΣΤΗΡΙΟΤΗΤΑ 4

Να εξηγήσετε αναλυτικά τον τρόπο με τον οποίο εκτελείται κάθε μία από τις εντολές των παραδειγμάτων. Προσπαθήστε να απαντήσετε στην ερώτηση χωρίς να κοιτάτε την επεξήγηση με τους συμβολισμούς.


Για τον VAX :
 
   Τύπος εντολής/ κωδικός πράξης   Σημασία εντολής
Μεταφορά δεδομένων Μετακίνηση δεδομένων (* είναι ο τύπος δεδομενων)
1.   MOV* 1. Μετακίνηση μεταξύ δύο τελεστέων
2.   MOVZB* 2. Μετακίνηση ενός byte σε μισή λέξη ή λέξη, επεκτείνοντάς το με μηδενικά
3.   MOVA* 3. Μετακίνηση της 32-bits διεύθυνσης ενός τελεστέου
4.   PUSH* 4. Ώθηση τελεστέου στην στοίβα

ΔΡΑΣΤΗΡΙΟΤΗΤΑ 5

Ποια είναι η λειτουργία της παρακάτω εντολής του VAX:

MOVB 150(R1), (R2)

αν [R1] = 50 και [R2]=300;
(Το Β στην εντολή σημαίνει πως το δεδομένο που θα μετακινηθεί είναι μεγέθους 1 byte.)

ΑΠΑΝΤΗΣΗ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ 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

Έστω η παρακάτω εντολή φόρτωσης του DLX: LW R1,50(R2).
* Αν το περιεχόμενο του καταχωρητή R2 είναι 100, ποιο θα είναι το αποτέλεσμα μετά την εκτέλεση της εντολής;
* Να εκτελέσετε την παραπάνω εντολή, χρησιμοποιώντας το λογισμικό που βρίσκεται στην ιστοσελίδα:

http://hermes.di.uoa.gr/DLXSim/instruction/instr.html
* Να συγκρίνετε το αποτέλεσμα με την απάντηση που δώσατε.

ΑΠΑΝΤΗΣΗ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ 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

* Να περιγράψετε την εκτέλεση της εντολής του DLX: ADDI R1, R2, #28.
* Ποιο θα είναι το αποτέλεσμα αν το περιεχόμενο του καταχωρητή R2 είναι 122;
* Να εκτελέσετε την παραπάνω εντολή, χρησιμοποιώντας το λογισμικό που βρίσκεται στην ιστοσελίδα:

* Να συγκρίνετε το αποτέλεσμα με την απάντηση που δώσατε.

ΑΠΑΝΤΗΣΗ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ 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

Να εξηγήσετε τη λειτουργία της παρακάτω εντολής του υπολογιστή VAX;

ADDL3 W 200(R3), R2, R1
(Το γράμμα L που βρίσκεται στον κωδικό λειτουργίας δηλώνει ότι η πηγαίοι τελεστέοι στους οποίους θα εκτελεστεί η εντολή είναι μεγέθους 2 bytes.)

ΑΠΑΝΤΗΣΗ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ 8



 

Εντολές ελέγχου ροής εκτέλεσης του προγράμματος

   Οι εντολές μεταπήδησης σε έναν υπολογιστή 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 χρησιμοποιώντας συμβολισμούς:

BEQZ R4, name
Στην περίπτωση που δυσκολεύεστε, κρίνεται σκόπιμο να επαναλάβετε την ανάγνωση των εντολών ελέγχου του DLX και των παραδειγμάτων.

ΑΠΑΝΤΗΣΗ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ 9


Για τον 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
CVTD2F, CTD2I
CVTI2F, CVTI2D
 

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 αριθμών κινητής υποδιαστολής (απλής ακρίβειας)