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

Σύνολο εντολών του DLX

O DLX υποστηρίζει τέσσερις κατηγορίες εντολών:

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

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

Εντολές ελέγχου (Διακλαδώσεις με συνθήκη και μεταπηδήσεις)

Πράξεις μεταξύ κλασματικών αριθμών (κινητής υποδιαστολής)
 
 

Εντολές μεταφοράς δεδομένων

Δεν μπορεί να γίνει μεταφορά δεδομένων από μια θέση μνήμης σε κάποια άλλη με μια μόνο εντολή. Σε αυτή την περίπτωση είναι απαραίτητη η χρήση ενός καταχωρητή για την προσωρινή αποθήκευση των δεδομένων που θα πάρουμε από τη θέση μνήμης.

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

Για ποιο λόγο δεν είναι εφικτή η μεταφορά δεδομένων από μια θέση μνήμης σε μια άλλη στον υπολογιστή DLX; Στην περίπτωση που δυσκολεύεστε να απαντήσετε στην ερώτηση, καλό θα ήταν να ανατρέξετε στην 2η ενότητα και συγκεκριμένα στην υποενότητα «Λειτουργίες που υποστηρίζουν οι υπολογιστές RISC και CISC».


Παράδειγμα

Ποια είναι η λειτουργία της παρακάτω εντολής φόρτωσης του DLX;
                                       LBU R1,40(R3) (Load Byte Unsigned)

  Η εντολή αυτή χρησιμοποιείται για να φορτωθεί ένα byte σε ένα 32-bit καταχωρητή R1 και τα υπόλοιπα 24 bits του καταχωρητή να γεμίσουν με μηδενικά (unsigned). Μπορούμε να περιγράψουμε την εντολή σε μια συμβολική γλώσσα ως εξής:

            Regs[R1]¬ 32 024 ## MEM[40+Regs[R3]]

Το 024 σημαίνει ότι δημιουργείται ένα πεδίο μεγέθους 24 bits που περιέχει μόνο μηδενικά. Στη συνέχεια συνδέεται στο πεδίο αυτό το byte που βρίσκεται στη θέση μνήμης η διεύθυνση της οποίας υπολογίζεται προσθέτοντας το περιεχόμενο του καταχωρητή R3 με την τιμή 40 (MEM[40+Regs[R3]]), για την εύρεση δηλαδή της διεύθυνσης της μνήμης που βρίσκεται ο πηγαίος τελεστέος χρησιμοποιείται ο τρόπος διευθυνσιοδότησης με μετατόπιση.  Η σύνδεση αυτή συμβολίζεται με το σύμβολο ##.

Παράδειγμα

Ποια η λειτουργία της παρακάτω εντολής αποθήκευσης του DLX;

                        SH 502(R2),R3 (Store Half word)


  Χρησιμοποιώντας διευθυνσιοδότηση με μετατόπιση μπορεί να υπολογιστεί η διεύθυνση μνήμης στην οποία θα αποθηκευτούν τα δύο λιγότερο σημαντικά bytes του καταχωρητή R3. Η διεύθυνση μνήμης υπολογίζεται από το άθροισμα του περιεχομένου του καταχωρητή R2 με την τιμή 502. Μπορούμε να περιγράψουμε την εντολή σε μια συμβολική γλώσσα ως εξής:

            MEM[502+Regs[R2]] ¬ 16 Regs[R3]16..31

To σύμβολο ¬ 16 σημαίνει ότι μεταφέρονται 16 bits στη μνήμη και το σύμβολο Regs[R3]16..31 σημαίνει ότι παίρνουμε τα δύο λιγότερο σημαντικά bytes (lower half) του καταχωρητή R3.

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

Να εξηγήσετε τον τρόπο με τον οποίο εκτελούνται οι παρακάτω εντολές του υπολογιστή DLX, χρησιμοποιώντας συμβολισμούς.
Εντολή
Όνομα εντολής
LW R1,30(R2) Φόρτωση λέξης
LW R1, 1000(R0) Φόρτωση λέξης
LB R1, 40(R3) Φόρτωση byte
LBU R1,40(R3) Φόρτωση μη προσημασμένου byte
LH R1, 40(R3) Φόρτωση μισής λέξης
LF F0, 50(R3) Φόρτωση μεταβλητής κινητής υποδιαστολής
LD F0, 50(R2) Φόρτωση διπλής λέξης
SW 500(R4), R3 Αποθήκευση λέξης
SF 40(R3), F0 Αποθήκευση μεταβλητής κινητής υποδιαστολής
SD 40(R3), F0 Αποθήκευση διπλής λέξης
SH 502(R2), R3 Αποθήκευσης μισής λέξης
SB 41(R3), R2 Αποθήκευση byte

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



 


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

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

Αριθμητικές και λογικές πράξεις (πρόσθεση, αφαίρεση, AND, OR, XOR, συγκρίσεις, ολισθήσεις). Ένας πηγαίος τελεστέος μπορεί να είναι απευθείας δεδομένο των 16 bits με επέκταση προσήμου. Η λειτουργία LHI (Load High Immediate ), φορτώνει στο πάνω μισό ενός καταχωρητή την απευθείας τιμή που δίνεται, ενώ τοποθετεί 0 στο κάτω μισό.

Εντολές σύγκρισης (=, Ή , <, > , £ , ³ ). Τοποθετούν 1 ή 0 στον καταχωρητή προορισμού ανάλογα με το αποτέλεσμα της σύγκρισης. Οι κωδικοί των εντολών είναι set-equal, set-not-equal, set-less-than κ.ο.κ.
 

Παράδειγμα

Ποια είναι η σημασία της παρακάτω λογικής εντολής του DLX;

                                    SLT R1,R2,R3 (Set Less Than)
 

Με την εντολή αυτή συγκρίνονται τα περιεχόμενα του R2 και R3 και ο καταχωρητής R1 παίρνει την τιμή 1 ή την τιμή 0, ανάλογα με το αποτέλεσμα της σύγκρισης. Έτσι αν το περιεχόμενο του R2 είναι μικρότερο απ' αυτό του R3 τότε ο καταχωρητής R1 τίθεται 1, διαφορετικά τίθεται 0. Μπορούμε να περιγράψουμε την εντολή αυτή σε συμβολική γλώσσα ως εξής :

                    If (Regs[R2] < Regs[R3])
                           Regs[R1] ¬ 1
                        else
                           Regs[R1] ¬ 0

Παράδειγμα

Ποια είναι η σημασία της παρακάτω λογικής εντολής του DLX;

                                    SGTI R1,R2,#50 (Set Greater Than Immediate)

Παρατηρώντας ότι στον κωδικό της εντολής υπάρχει το γράμμα Ι που δηλώνει ότι ένας πηγαίος τελεστέος είναι απευθείας δεδομένο (στο παράδειγμά μας είναι η τιμή 50). Με την εντολή αυτή συγκρίνονται τo περιεχόμενo του R2 με την τιμή 50 και ο καταχωρητής R1 παίρνει την τιμή 1 ή την τιμή 0, ανάλογα με το αποτέλεσμα της σύγκρισης. Έτσι αν το περιεχόμενο του R2 είναι μεγαλύτερο από την τιμή 50 τότε ο καταχωρητής R1 τίθεται 1, διαφορετικά τίθεται 0. Μπορούμε να περιγράψουμε την εντολή αυτή σε συμβολική γλώσσα ως εξής :

                    If (Regs[R2] > 50)
                           Regs[R1] ¬ 1
                        else
                           Regs[R1] ¬ 0

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

Να εξηγήσετε τον τρόπο με τον οποίο εκτελούνται οι παρακάτω εντολές του υπολογιστή DLX, χρησιμοποιώντας συμβολισμούς.
Εντολή
Όνομα εντολής
ADD R1, R2, R3 Πρόσθεση
ADDI R1, R2, #3 Απευθείας πρόσθεση
LHI R1, #42 Απευθείας φόρτωση στα δύο πιο σημαντικά bytes
SLLI R1, R2, #5 Απευθείας αριστερή λογική ολίσθηση
STL R1, R2, R3 Θέσε μικρότερο από (set less than)

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



Εντολές ελέγχου (Διακλαδώσεις με συνθήκη και μεταπηδήσεις)

   Τα είδη των μεταπηδήσεων είναι δύο: Απλή μεταπήδηση
Μεταπήδηση με σύνδεσμο, όπου η διεύθυνση της επόμενης εντολής τοποθετείται στον R31.
  Οι διακλαδώσεις είναι όλες υπό συνθήκη. Η συνθήκη διακλάδωσης ελέγχει αν το περιεχόμενο του πηγαίου καταχωρητή είναι ίσο ή διάφορο του μηδενός. Οι εντολές αυτές είναι: BNEZ (Branch if Not Equal Zero) και BEZ (Branch if Equal Zero).
 

Παράδειγμα

Ποια η λειτουργία της παρακάτω εντολής ελέγχου ροής προγράμματος του DLX;

                        JALR R2 (Jump And Link Register)

Η εντολή αυτή είναι μια εντολή μεταπήδησης με σύνδεσμο. Η διεύθυνση της επόμενης εντολής τοποθετείται στον καταχωρητή R31, ενώ η διεύθυνση του στόχου είναι το περιεχόμενο του καταχωρητή R2. Μπορούμε να περιγράψουμε την εντολή αυτή σε μια συμβολική γλώσσα ως εξής :

                Regs[R31] ¬ PC + 4;
                PC ¬ Regs[R2]

Παράδειγμα

Ποια η λειτουργία της παρακάτω εντολής ελέγχου ροής προγράμματος του DLX;

                        BEZ R2, name (Branch if Equal Zero)
                 το name συμβολίζει μια διεύθυνση μνήμης

Η εντολή αυτή είναι μια εντολή διακλάδωση. Αν το περιεχόμενο του καταχωρητή R2 είναι ίσο με το 0 τότε στον απαριθμητή προγράμματος (PC) φορτώνεται το name, με άλλα λόγια η επόμενη εντολή που θα εκτελεστεί είναι η εντολή που βρίσκεται στη διεύθυνση μνήμης name. Μπορούμε να περιγράψουμε την εντολή αυτή σε μια συμβολική γλώσσα ως εξής :

                If   (Regs[R2] = 0)
                   then
                     PC ¬ name;

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

Να εξηγήσετε τον τρόπο με τον οποίο εκτελούνται οι παρακάτω εντολές του υπολογιστή DLX, χρησιμοποιώντας συμβολισμούς.
Εντολή
Όνομα εντολής
J name Μεταπήδηση
JAL name Μεταπήδηση και σύνδεση
JALR R2 Μεταπήδηση και σύνδεση καταχωρητή
JR R3 Μεταπήδηση καταχωρητή
BEQZ R4, name Διακλάδωση ίση με μηδέν
BNEZ R4, name Διακλάδωση άνιση με μηδέν

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



 


Πράξεις μεταξύ κλασματικών αριθμών (κινητής υποδιαστολής)

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

  • MOVD, MOVF : μετακινούν το περιεχόμενο ενός καταχωρητή κινητής υποδιαστολής απλής ή διπλής ακρίβειας αντίστοιχα σε έναν καταχωρητή του ίδιου τύπου.
  • MOVFP2I, MOVI2FP : μετακινούν δεδομένα ανάμεσα σε έναν καταχωρητή κινητής υποδιαστολής απλής ακρίβειας και σε έναν καταχωρητή ακεραίου.
  • ADDD, ADDF, SUBD, SUBF, MULTD, MULTF, DIVD, DIVF : προσθέτουν, αφαιρούν, πολλαπλασιάζουν και διαιρούν αριθμούς κινητής υποδιαστολής απλής και διπλής ακρίβειας αντίστοιχα.

   Παρακάτω, παρουσιάζεται ο συγκεντρωτικός πίνακας που περιλαμβάνει όλους του τύπους εντολών του DLX καθώς και τη σημασία της κάθε εντολής.
 
Τύπος εντολής/ κωδικός πράξης Σημασία εντολής
Μεταφορές δεδομένων
 
 
 

LB, LBU, SB

LH, LHU, SH

LW, SW

LF, LD, SF, SD
 
 
 

MOVI2S, MOVS2I

MOVF, MOVD
 
 

MOVFP2I, MOVI2FP

Μετακίνηση δεδομένων μεταξύ καταχωρητών και μνήμης, ή μεταξύ του ακεραίου και FP ή ειδικούς καταχωρητές. Μόνος τρόπος διευθυνσιοδότησης είναι με μετατόπιση (16-bit μετατόπιση + περιεχόμενα ενός καταχωρητή γενικής χρήσης).
 

Φόρτωση byte, φόρτωση byte χωρίς πρόσημο, αποθήκευση byte

Φόρτωση μισής λέξης, φόρτωση μισής λέξης χωρίς πρόσημο αποθήκευση μισής λέξης.

Φόρτωση λέξης, αποθήκευση λέξης (σε/από καταχωρητη ακεραίων)

Φόρτωση καταχωρητή κινητής υποδιαστολής απλής ακρίβειας, φόρτωση καταχωρητή κινητής υποδιαστολής διπλής ακρίβειας, αποθήκευση καταχωρητή κινητής υποδιαστολής απλής ακρίβειας, αποθήκευση καταχωρητή κινητής υποδιαστολής διπλής ακρίβειας
 
 

Μετακίνηση από/σε καταχωρητή γενικής χρήσης σε/από έναν ειδικό καταχωρητή

Αντιγραφή του περιεχομένου ενός  καταχωρητή κινητής υποδιαστολής ή ενός ζεύγους καταχωρητών γενικής χρήσης σε άλλον καταχωρητή ή ζεύγος
 

Μετακίνηση 32 bits από/σε  καταχωρητές κινητής υποδιαστολής σε/από ακέραιους καταχωρητές

Αριθμητικές/λογικές
 

ADD, ADDI, ADDU, ADDUI

SUB, SUBI, SUBU, SUBUI

MULT, MULTU, DIV, DIVU
 

AND, ANDI

OR, ORI, XOR, XORI

LHI

SLL, SRL, SRA, SLLI, SRLI, SRAI

S_, S_I

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

Πρόσθεση, απευθείας πρόσθεση (όλα τα απευθείας δεδομένα είναι 16 bits) με πρόσημο και χωρίς.

Αφαίρεση, απευθείας αφαίρεση προσημασμένη και μη.

Πολλαπλασιασμός και διαίρεση, προσημασμένα και μη. Οι τελεστέοι πρέπει να βρίσκονται σε καταχωρητές κινητής υποδιαστολής. Όλες οι πράξεις παίρνουν και δίνουν τιμές 32-bitς.

And, απευθείας and.

Or, απευθείας or, αποκλειστικό or, απευθείας αποκλειστικό or.

 Φόρτωση στα  δύο πιο σημαντικά bytes ενός καταχωρητή μια απευθείας τιμή των 16 bits.

Ολισθήσεις : απευθείας (S_I) και μεταβλητή (S_) μορφή. Οι ολισθήσεις είναι αριστερές λογικές, δεξιές λογικές, δεξιές αριθμητικές.

Η συνθήκη: "_" μπορεί να είναι LT,GT, LE, GE, EQ, NE

Έλεγχος

BEQZ, BNEZ

J, JR

JAL, JALR

TRAP

RFE

Υπό συνθήκη διακλαδώσεις και μεταπηδήσεις. PC-σχετικές ή μέσω καταχωρητών

Διακλάδωση αν το περιεχόμενο του καταχωρητή  είναι ίσο/άνισο με το μηδέν. 16-bit offset από PC+4

Μεταπηδήσεις : 26-bit offset από PC+4 (J) ή στόχος σε καταχωρητή (JR).

Μεταπήδηση και σύνδεση : σώσε PC+4 στον R31,στόχος είναι PC-σχετικός(JAL) ή ένας καταχωρητής (JALR).

Μεταφορά στο λειτουργικό σύστημα σε ένα διάνυσμα διεύθυνσης

Επιστροφή στον χρησιμοποιούμενο κώδικα από μία εξαίρεση. Επαναφύλαξη του Τρόπου του χρήστη.

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

ADDD, ADDF

SUBD, SUBF

MULTD, MULTF

DIVD, DIVF
 

CVTF2D, CVTF2I
CVTD2F, CTD2I
CVTI2F, CVTI2D
 
 

FP πράξεις σε DP και SP τύπους

Πρόσθεση κλασματικών αριθμών

Αφαίρεση κλασματικών αριθμών

Πολλαπλασιασμός κλασματικών αριθμών

Διαίρεση κλασματικών αριθμών
 

Εντολές μετατροπής : CVTX2y μετατρέπει από τον τύπο x στον τύπο y, όπου x και y είναι I (ακέραιος), D (διπλής ακρίβειας), ή F (απλής ακρίβειας). Και οι δύο Τελεστέοι βρίσκονται σε καταχωρητές κινητής υποδιαστολής 

Θα πιστεύετε ίσως, ότι μία αρχιτεκτονική σαν αυτή του DLX με απλούς τύπους εντολών, απλούς τρόπους διευθυνσιοδότησης, και απλές πράξεις, θα ήταν αργή κυρίως επειδή θα έπρεπε να εκτελέσει περισσότερες εντολές (αντί για λιγότερες και πιο πολύπλοκες). Για να δοθεί απάντηση στο ερώτημα αυτό, χρειάστηκε να συγκρίνουμε έναν υπολογιστή που μοιάζει με τον DLX (επιλέχτηκε ο MIPS M2000) με κάποιον άλλο με πολυπλοκότερη αρχιτεκτονική συνόλου εντολών (επιλέχτηκε ο VAX 8700). Όπως αποδείχθηκε, ο MIPS εκτελούσε σχεδόν τις διπλάσιες εντολές σε σχέση με τον VAX, ενώ ο CPI για τον VAX ήταν περίπου έξι φορές μεγαλύτερος από ότι αυτός για τον MIPS. Το τελικό συμπέρασμα ήταν ότι ο MIPS Μ2000 είχε περίπου τρεις φορές μεγαλύτερη απόδοση από αυτήν του VAX 8700. Αυτό συμβαίνει γιατί οι υπολογιστές όπως ο DLX επιτρέπουν σε διαφορετικά τμήματα διαφορετικών εντολών να εκτελούνται ταυτόχρονα (σωλήνωση).