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

Αρχιτεκτονικές συνόλου εντολών

   Πριν από την εκτέλεση ενός προγράμματος, το πρόγραμμα και τα δεδομένα του μεταφέρονται στην κύρια μνήμη. Κάθε θέση μνήμης χαρακτηρίζεται από τη διεύθυνσή της, μέσω της οποίας ο επεξεργαστής και τα προγράμματα μπορούν να αναφέρονται στο περιεχόμενο μιας θέσης μνήμης. Το περιεχόμενο μιας θέσης μνήμης μπορεί να είναι είτε η εντολή ενός προγράμματος, είτε τα δεδομένα που χρειάζονται για την εκτέλεση της εντολής.
                                                                      
Σχήμα 2.1.1 – Η θέση μνήμης χαρακτηρίζεται από τη διεύθυνση και το περιεχόμενό της. Το περιεχόμενο μπορεί να είναι εντολή ή τα δεδομένα εντολής.


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

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

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


Με ποιο τρόπο «καταλαβαίνει» η ΚΜΕ ότι το περιεχόμενο μιας θέσεις μνήμης είναι εντολή ή δεδομένα, έτσι ώστε να προχωρήσει στην εκτέλεση της εντολής;
Η ΚΜΕ περιέχει έναν καταχωρητή ειδικής χρήσης που ονομάζεται απαριθμητής προγράμματος (program counter - PC) και ο οποίος κρατάει τη διεύθυνση της επόμενης εντολής που πρόκειται να εκτελεστεί και αυξάνεται κάθε φορά που εκτελείται μια εντολή. Στην περίπτωση που η διεύθυνση μιας θέσης της κύριας μνήμης είναι το περιεχόμενο του PC, τότε η ΚΜΕ «καταλαβαίνει» πως το περιεχόμενο της θέσης μνήμης είναι η εντολή που πρόκειται να εκτελεστεί. Στην περίπτωση που η διεύθυνση της θέσης μνήμης δεν προσδιορίζεται από τον PC αλλά από κάποιο πεδίο της εντολής, ή δημιουργείται κατά την εκτέλεση της εντολής, τότε η ΚΜΕ «καταλαβαίνει» πως το περιεχόμενο της θέσης μνήμης είναι τα δεδομένα και όχι η ίδια η εντολή.

Μια θέση στην κύρια μνήμη μπορεί να περιέχει μια κωδικοποιημένη εντολή. Σε αυτή την περίπτωση, το ένα τμήμα της εντολής καθορίζει την λειτουργία που πρόκειται να εκτελεστεί, δηλαδή τον τελεστή και ονομάζεται πεδίο κωδικού λειτουργίας. Τα άλλα τμήματα της εντολής καθορίζουν πληροφορίες για τη διεύθυνση των τελεστέων, ή ακόμα και τους ίδιους τους τελεστέους. Κάθε τμήμα της εντολής ονομάζεται πεδίο. Στο παράδειγμα που ακολουθεί απεικονίζεται μια εντολή με 4 πεδία.

Παράδειγμα:

ADD R1 R2 R3
  πεδίο κωδικού  
  λειτουργίας  
  τελεστέος 1     τελεστέος 2     τελεστέος 3  

Η εντολή αποτελείται από το πεδίο κωδικού λειτουργίας και από άλλα 3 πεδία τα οποία είναι: τελεστέος 1 (R1), τελεστέος 2 (R2) και τελεστέος 3 (R3) αντίστοιχα. Το πεδίο του κωδικού λειτουργίας καθορίζει τον τελεστή, δηλαδή τη λειτουργία που πρόκειται να εκτελεστεί. Στο παράδειγμα αυτό, ο τελεστής είναι το ADD και η λειτουργία που πρόκειται να εκτελεστεί είναι η πρόσθεση. Το κάθε ένα από τα άλλα τρία πεδία μπορεί να περιέχει πληροφορίες για τη διεύθυνση των τελεστέων ή τις τιμές των τελεστέων. Κατά την εκτέλεση της εντολής αυτής, γίνεται πρόσθεση των τιμών των τελεστέων R1 και R2 και το αποτέλεσμα αποθηκεύεται στον R3. Σε αυτή την περίπτωση οι R1 και R2 ονομάζονται πηγαίοι τελεστέοι, επειδή αυτοί δίνουν τις αρχικές τιμές στις οποίες πρόκειται να εκτελεστεί η πρόσθεση και ο R3 ονομάζεται τελεστέος προορισμού, λόγω του ότι σε αυτόν θα αποθηκευτεί το αποτέλεσμα.

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

Σε όλους τους υπολογιστές είναι διαφορετικά τα πεδία της εντολής (ή το πεδίο, στην περίπτωση που το πεδίο με τον τελεστέο είναι ένα) που περιέχουν πληροφορίες για τη διεύθυνση ή τις τιμές των τελεστέων. Επομένως το κριτήριο που χρησιμοποιείται για την κατάταξη της εκάστοτε αρχιτεκτονικής που χρησιμοποιούν οι υπολογιστές, είναι ο τρόπος με τον οποίο γίνεται η προσπέλαση των τελεστέων. Ο τρόπος με τον οποίο προσδιορίζεται η διεύθυνση ή η τιμή των τελεστέων μπορεί να γίνει με δύο διαφορετικούς τρόπους: η διεύθυνση ή η τιμή του τελεστέου να υπονοείται (υπονοούμενος-implicit) ή να είναι σαφώς καθορισμένη (σαφής-explicit). Όσον αφορά στον τρόπο αποθήκευσης και προσπέλασης των πληροφοριών για τη διεύθυνση ή την τιμή των τελεστέων, οι κύριες αρχιτεκτονικές είναι:
·η στοίβα,
·ο συσσωρευτής και
·δύο κατηγορίες αρχιτεκτονικών με καταχωρητές γενικής χρήσης: Καταχωρητή–μνήμης και Καταχωρητή-καταχωρητή.

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



Παράδειγμα :
Με ποιον τρόπο θα εμφανιστεί η σειρά του κώδικα C = A + B στις αρχιτεκτονικές Καταχωρητή-μνήμης και Καταχωρητή-καταχωρητή αντίστοιχα; (Υποθέτουμε ότι οι διευθύνσεις των τελεστέων Α, Β και C βρίσκονται στην κύρια μνήμη και οι τιμές των Α και Β δεν μπορούν να καταστραφούν).

   Ο ακόλουθος πίνακας δείχνει τον τρόπο με τον οποίο εκτελείται η εντολή.
 
Καταχωρητή-μνήμης Καταχωρητή-καταχωρητή
Φόρτωσε R1,A
(η διεύθυνση του Α βρίσκεται στη μνήμη,
από όπου βρίσκεται η τιμή του Α
και φορτώνεται στον καταχωρητή R1)
Φόρτωσε R1,A
(η διεύθυνση του Α βρίσκεται στη μνήμη,
από όπου βρίσκεται η τιμή του Α
και φορτώνεται στον καταχωρητή R1)
Πρόσθεσε R1,Β
(η διεύθυνση του B βρίσκεται στη μνήμη,
από όπου βρίσκεται η τιμή του B
και προστίθεται στον καταχωρητή R1)
Φόρτωσε R2,Β
(η διεύθυνση του Β βρίσκεται στη μνήμη,
από όπου βρίσκεται η τιμή του Β
και φορτώνεται στον καταχωρητή R2)
Αποθήκευσε C, R1
(η διεύθυνση του C βρίσκεται στη μνήμη,
όπου φορτώνεται το περιεχόμενο του
καταχωρητή R1)
Πρόσθεσε R3, R1, R2
(γίνεται η πρόσθεση των περιεχομένων των
καταχωρητών R1 και R2 και το αποτέλεσμα
αποθηκεύεται στον καταχωρητή R3)
Αποθήκευσε C, R3
(η διεύθυνση του C βρίσκεται στη μνήμη,
όπου φορτώνεται το περιεχόμενο
του καταχωρητή R3)


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

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


Ανάλογα με τον τρόπο προσπέλασης των τελεστέων και την αρχιτεκτονική που χρησιμοποιείται σε κάθε υπολογιστή, έχουμε:

Αρχιτεκτονική
Προσδιορισμός τελεστέων
Επεξήγηση
Στοίβας
Υπονοούμενος
Οι τελεστέοι ωθούνται στην κορυφή της στοίβας, εκτελείται η εντολή και γίνεται εξαγωγή του αποτελέσματος από τη στοίβα. Η διεύθυνση της κορυφής της στοίβας προσδιορίζεται από το δείκτη της στοίβας.
Συσσωρευτή
(Motorolla 68000)
Υπονοούμενος
Η διεύθυνση του τελεστέου προορισμού υπονοείται ότι είναι η διεύθυνση του συσσωρευτή, ενώ οι διευθύνσεις των πηγαίων τελεστέων προσδιορίζονται.
Καταχωρητή / Καταχωρητή ή φόρτωσης-αποθήκευσης
(DLX)
Σαφής
Οι τελεστέοι προσπελαύνονται από τη μνήμη μόνο μέσω των εντολών φόρτωσης και αποθήκευσης και αποθηκεύονται προσωρινά σε κάποιον καταχωρητή, για την εκτέλεση της εντολής.
Καταχωρητή / Μνήμης
(MIPS)
Σαφής
Η προσπέλαση των τελεστέων γίνεται κατ' ευθείαν από τη μνήμη.