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

Βασικά βήματα εκτέλεσης μίας εντολής από τον επεξεργαστή του VAX

Η κατασκευή του υπολογιστή VAX έχει στηριχθεί στον PDP-11.Επομένως, ο τρόπος εκτέλεσης των εντολών στον υπολογιστή VAX, είναι ανάλογος με τον τρόπο που εκτελούνται οι εντολές στον PDP-11. Στη συνέχεια θα αναφερθούμε στον τρόπο με τον οποίο εκτελούνται οι εντολές στον υπολογιστή VAX.
Για την εκτέλεση μιας εντολής στον υπολογιστή VAX,αν η εντολή αποθηκεύεται σε μια θέση μνήμης, χρειάζεται να γίνουν οι παρακάτω λειτουργίες στην ΚΜΕ:

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

Οι δύο πρώτες λειτουργίες υλοποιούνται με τα παρακάτω βήματα.

  1. Η ανάκληση της εντολής εκτελείται, φορτώνοντας το περιεχόμενο του PC στον MAR και στέλνοντας μια αίτηση για διάβασμα στη μνήμη. Κατά τη διάρκεια αναμονής για απόκριση από τη μνήμη, ο PC αυξάνεται κατά 1, θέτοντας μία από τις εισόδους της ALU (τον καταχωρητή Υ) σε 1 και την άλλη είσοδο της ALU (την αρτηρία της ΚΜΕ) στην παρούσα τιμή του PC. Ταυτόχρονα, η μονάδα ελέγχου ελέγχει το σήμα ελέγχου Add.
  2. Η τιμή που προκύπτει, μεταφέρεται από τον καταχωρητή Z, στον απαριθμητή προγράμματος.
  3. Η λέξη που ανακαλέστηκε από τη μνήμη και βρίσκεται στον MDR, φορτώνεται στον IR (καταχωρητή εντολών).

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

Ανάκληση λέξης από τη μνήμη. Ανάκληση του περιεχομένου που βρίσκεται σε δεδομένη θέση μνήμης και φόρτωση αυτού σε καταχωρητή της ΚΜΕ. (Ανάγνωση)
Εγγραφή λέξης στη μνήμη. Αποθήκευση μιας λέξης δεδομένων από την ΚΜΕ, σε μία δεδομένη θέση μνήμης. (Εγγραφή)
Μεταφορά περιεχομένου από έναν καταχωρητή σε έναν άλλο. Μεταφορά μιας λέξης δεδομένων από έναν καταχωρητή της ΚΜΕ σε έναν άλλο, ή στην ALU.
Eκτέλεση μιας αριθμητικής ή λογικής εντολής και αποθήκευση του αποτελέσματος σε έναν καταχωρητή της ΚΜΕ.
Εκτέλεση μιας εντολής μεταπήδησης ή εντολής διακλάδωσης.

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

Κατά την εκτέλεση μιας εντολής, με ποιον τρόπο η ΚΜΕ καταλαβαίνει πότε αυτό που διαβάζει από τη μνήμη είναι εντολή ή είναι τα δεδομένα μιας εντολής;

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

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

Ανάκληση λέξης από τη μνήμη

Εγγραφή λέξης στη μνήμη

Μεταφορά περιεχομένου από έναν καταχωρητή σε έναν άλλο

Εκτέλεση μιας αριθμητικής ή λογικής εντολής

Εκτέλεση μιας εντολής μεταπήδησης
 

Ανάκληση λέξης από τη μνήμη

Για την ανάκληση μιας λέξης από τη μνήμη, η ΚΜΕ πρέπει να προσδιορίσει τη διεύθυνση μνήμης όπου είναι αποθηκευμένη η λέξη και να κάνει αίτηση για Ανάγνωση. Συνεπώς, για την εκτέλεση της εντολής, η ΚΜΕ μεταφέρει τη διεύθυνση της λέξης, στον καταχωρητή διευθύνσεων μνήμης (MAR), από όπου μέσω της αρτηρίας μεταφέρεται στην κύρια μνήμη. Εν τω μεταξύ, η ΚΜΕ χρησιμοποιεί τις γραμμές ελέγχου της αρτηρίας μνήμης και ενεργοποιεί τα κατάλληλα σήματα ελέγχου, για να προσδιορίσει τη λειτουργία Ανάγνωσης. Μετά την αίτηση για Ανάγνωση, η ΚΜΕ περιμένει ένα σήμα ελέγχου από τη μνήμη, το οποίο καθορίζει αν η λειτουργία της Ανάγνωσης έχει ολοκληρωθεί. Μόλις αυτό το σήμα ελέγχου πάρει την τιμή 1, σημαίνει πως η λειτουργία Ανάγνωσης έχει ολοκληρωθεί και τα δεδομένα πηγαίνουν στον MDR και μέσω της αρτηρίας, στον καταχωρητή προορισμού.
Σαν παράδειγμα, ας υποθέσουμε πως η διεύθυνση στην οποία πρόκειται να γίνει προσπέλαση, βρίσκεται στον καταχωρητή R1 και πως τα δεδομένα από τη μνήμη πρόκειται να φορτωθούν στον καταχωρητή R2. Η εκτέλεση της εντολής επιτυγχάνεται με την ακόλουθη σειρά βημάτων (τα τρία πρώτα βήματα για την εκτέλεση της εντολής, στα οποία γίνεται η ανάκληση της εντολής και η αύξηση του PC, έχουν ήδη περιγραφεί παραπάνω):

4. MAR ¬ [R1]

5. Ανάγνωση (ενεργοποίηση των γραμμών ελέγχου της αρτηρίας μνήμης, έτσι ώστε να προσδιοριστεί η λειτουργία Ανάγνωσης)

6. Αναμονή μέχρι να ολοκληρωθεί η Ανάγνωση

7. R2 ¬ [MDR]

Όι αντίστοιχες εντολές στον υπολογιστή DLX είναι οί εντολές LW, LF, LD, ανάλογα με τον τύπο των δεδομένων.

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



Εγγραφή λέξης στη μνήμη

Η διαδικασία για την εγγραφή μιας λέξης σε μια δεδομένη θέση μνήμης έχει ως εξής. Αφού η διεύθυνση αποθηκευτεί στον καταχωρητή MAR, η λέξη δεδομένων η οποία πρόκειται να εγγραφεί, αποθηκεύεται στον MDR μέσω της αρτηρίας, πριν ή ταυτόχρονα με την ενεργοποίηση των σημάτων ελέγχου Εγγραφής. Αν υποθέσουμε πως η λέξη δεδομένων που πρόκειται να αποθηκευτεί στη μνήμη βρίσκεται στον καταχωρητή R2 και πως η διεύθυνση μνήμης βρίσκεται στον καταχωρητή R1, η λειτουργία Εγγραφής έχει την εξής ακολουθία βημάτων:

4. MAR ¬ [R1]

5. MDR ¬ [R2], Εγγραφή

6. Αναμονή μέχρι να ολοκληρωθεί η Ανάγνωση

Μεταφορά περιεχομένου από έναν καταχωρητή σε έναν άλλο

Για τη μεταφορά του περιεχομένου του καταχωρητή R1 στον καταχωρητή R4, γίνεται μεταφορά του περιεχομένου του καταχωρητή R1 στην αρτηρία της ΚΜΕ και μέσω της αρτηρίας, μεταφέρεται το περιεχόμενο αυτό στον καταχωρητή R4. Τα βήματα για την εκτέλεση της παραπάνω εντολής είναι:

4. [R1] ¬ αρτηρία

5. αρτηρία¬ R4

Η εντολή για τη μεταφορά δεδομένων από τον καταχωρητή R1 στον καταχωρητή R4, στον υπολογιστή VAX είναι η MOV R1, R4.


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

Έστω ότι θέλουμε να εκτελέσουμε μιας εντολή πρόσθεσης του περιεχομένου των καταχωρητών R1 και R2 και να αποθηκεύσουμε το αποτέλεσμα στον καταχωρητή R3.
Για την εκτέλεση μιας πρόσθεσης, το περιεχόμενο των δύο καταχωρητών που πρόκειται να προστεθεί, πρέπει να είναι διαθέσιμο στις δύο εισόδους της ALU ταυτόχρονα. Για να επιτευχθεί αυτό, χρησιμοποιείται ο καταχωρητής Υ. Τα βήματα για την εκτέλεση της παραπάνω εντολής είναι:

4. Το περιεχόμενο του καταχωρητή R1 μεταφέρεται στον καταχωρητή Υ, από όπου μεταφέρεται στην πρώτη είσοδο (Α) της ALU.

5. Το περιεχόμενο του καταχωρητή R2 μεταφέρεται στην αρτηρία και μέσω αυτής, στη δεύτερη είσοδο (Β) της ALU. Ενεργοποιείται το σήμα ελέγχου Add και γίνεται η πρόσθεση των περιεχομένων των δύο εισόδων της ALU (Α και Β). Το αποτέλεσμα αποθηκεύεται στην έξοδο της ALU, που είναι ο καταχωρητής Ζ.

6. Το περιεχόμενο του καταχωρητή Ζ μεταφέρεται μέσω της αρτηρίας στον καταχωρητή προορισμού, R3.

Επομένως τα βήματα για την εκτέλεση της εντολής είναι:

4. [R1] ¬ Y

5. [R2] ¬ αρτηρία
    Ενεργοποίηση του σήματος ελέγχου Add

6. [Ζ] ¬ αρτηρία
    Αρτηρία ¬ R3

Η αντίστοιχη εντολή στον υπολογιστή DLX είναι η ADD R3, R1, R2, ενώ στον υπολογιστή VAX είναι η ADDW3 R1, R2, R3.

2η περίπτωση: Πρόσθεση του περιεχομένου ενός καταχωρητή με το περιεχόμενο μιας θέσης μνήμης

Έστω η εντολή "Πρόσθεσε στον καταχωρητή R1 το περιεχόμενο που υπάρχουν στη διεύθυνση μνήμης LOC". Ας θεωρήσουμε πως η διεύθυνση LOC δίνεται με απόλυτο τρόπο διευθυνσιοδότησης, δηλαδή είναι τμήμα της ίδιας της εντολής. Για την εκτέλεση της εντολής, χρειάζεται να γίνουν τα παρακάτω βήματα:

4. Tο πεδίο διεύθυνσης του IR, το οποίο περιέχει τη διεύθυνση LOC, μεταφέρεται στον MAR και ενεργοποιείται το σήμα ελέγχου ανάγνωσης.

5. Το περιεχόμενο του καταχωρητή R1 μεταφέρεται στον καταχωρητή Υ.

6. Όταν εκτελεστεί η ανάγνωση, ο τελεστέος της μνήμης βρίσκεται στον MDR. Από τον MDR μεταφέρεται στην ALU μέσω της αρτηρίας και ενεργοποιείται το σήμα ελέγχου Add και εκτελείται η πρόσθεση. Το αποτέλεσμα μεταφέρεται στον καταχωρητή Ζ.

7. Το αποτέλεσμα μεταφέρεται μέσω της αρτηρίας, από τον καταχωρητή Ζ, στον καταχωρητή R1.

Επομένως τα βήματα για την εκτέλεση της εντολής είναι:

4. Πεδίο διεύθυνσης του IR ¬ MAR, Ανάγνωση

5. [R1] ¬ Y, Αναμονή μέχρι να ολοκληρωθεί η ανάγνωση

6. [MDR] ¬ αρτηρία
    Ενεργοποίηση του σήματος ελέγχου

7. [Z] ¬ αρτηρία
    Αρτηρία ¬ R1

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

Μπορείτε να εξηγήσετε την εκτέλεση της παρακάτω εντολής του υπολογιστή VAX : ADDW3 LOC1, LOC2, R1;

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



Εκτέλεση μιας εντολής μεταπήδησης

Στις εντολές μεταπήδησης γίνεται αντικατάσταση του περιεχομένου του απαριθμητή προγράμματος, από το στόχο διακλάδωσης, ο οποίος είναι η διεύθυνση της εντολής στην οποία γίνεται η διακλάδωση. Για να βρεθεί ο στόχος διακλάδωσης, γίνεται πρόσθεση ενός πεδίου offset X, το οποίο περιέχεται στο πεδίο διευθύνσεων της εντολής διακλάδωσης, με την ενημερωμένη τιμή του απαριθμητή προγράμματος. Τα επιμέρους βήματα για την εκτέλεση της εντολής μεταπήδησης, είναι τα εξής:

4. Το περιεχόμενο του PC μεταφέρεται στον καταχωρητή Υ, δηλαδή στην πρώτη είσοδο (A) της ALU.

5. Το offset X (το πεδίο διευθύνσεων του IR), μεταφέρεται στην αρτηρία, δηλαδή στη δεύτερη είσοδο της ALU. Στη συνέχεια εκτελείται η πρόσθεση και το αποτέλεσμα καταχωρείται στον καταχωρητή Ζ.

6. Το αποτέλεσμα, το οποίο είναι ο στόχος διακλάδωσης, πηγαίνει από την έξοδο του καταχωρητή Ζ, μέσω της αρτηρίας, στον PC.

Επομένως, τα βήματα εκτέλεσης της εντολής είναι:

4. PC ¬ Y

5. Offset X ¬ αρτηρία
    Ενεργοποίηση του σήματος ελέγχου Add

6. [Z] ¬ αρτηρία
    αρτηρία ¬ PC

Η εντολή μεταπήδησης στον υπολογιστή VAX είναι η JMP, για όλους τους τρόπους διευθυνσιοδότησης για τον καθορισμό του στόχου διακλάδωσης. Οι αντίστοιχες εντολές στον υπολογιστή DLX είναι οι J, JR, JALR, ανάλογα με τον τρόπο με τον οποίο υπολογίζεται ο στόχος διακλάδωσης.

Είναι σημαντικό να αναφέρουμε πως ο PC αυξάνεται κατά τη φάση ανάκλησης της εντολής, πριν ακόμα προσδιοριστεί ο τύπος της εντολής. Έτσι, όταν το offset X προστίθεται στο περιεχόμενο του PC (βήματα 4 και 5), το περιεχόμενο του PC έχει ενημερωθεί έτσι ώστε να δείχνει την εντολή που ακολουθεί μετά την εντολή διακλάδωσης στο πρόγραμμα. Επομένως, η διαφορά ανάμεσα στο στόχο διακλάδωσης και τη διεύθυνση που βρίσκεται αμέσως μετά την εντολή διακλάδωσης, είναι το offset X. Αν για παράδειγμα, ο στόχος διακλάδωσης βρίσκεται στη θέση 1000 και λόγω της εντολής διακλάδωσης πρέπει να πάει στη θέση 1050, η τιμή του Χ είναι το 49.

Ας θεωρήσουμε τώρα την περίπτωση της εντολής διακλάδωσης με συνθήκη. Η μόνη διαφορά με τις εντολές μεταπήδησης, είναι ότι στην εκτέλεση της εντολής, χρειάζεται να εξεταστεί η κατάσταση των κωδικών κατάστασης (condition codes), πριν φορτωθεί η νέα τιμή στον απαριθμητή προγράμματος. Για παράδειγμα, εάν κατά τη διάρκεια αποκωδικοποίησης της εντολής, το περιεχόμενο του IR δείξει ότι η εντολή είναι εντολή αρνητικής διακλάδωσης (Branch on Negative - BRN), το βήμα 4 αντικαθίσταται από:

4. Το περιεχόμενο του PC μεταφέρεται στον καταχωρητή Υ και γίνεται η πρώτη είσοδος (Α) της ALU, στην περίπτωση που χρειάζεται να υπολογιστεί ο στόχος διακλάδωσης. Εν τω μεταξύ, γίνεται έλεγχος στο ψηφίο του κωδικού κατάστασης που προσδιορίζει αν ο αριθμός είναι αρνητικός (Ν bit). Εάν αυτό είναι ίσο με 0, τότε ολοκληρώνεται η εκτέλεση της εντολής. Εάν όμως είναι 1, εκτελούνται τα βήματα 4 και 5 έτσι ώστε να ολοκληρωθεί η λειτουργία της διακλάδωσης.