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

Επιπλοκές συνόλου εντολών

   Η εγγύηση ότι μια εντολή θα ολοκληρωθεί ονομάζεται δέσμευση.
Στον υπολογιστή DLX, όλες οι εντολές στη σωλήνωση είναι δεσμευμένες όταν φτάσουν στο τέλος του σταδίου MEM (ή στην αρχή του σταδίου WB) και καμία εντολή δεν ενημερώνει την κατάσταση πριν από αυτό το στάδιο. Έτσι οι διακοπές ακριβείας είναι άμεσες.

Σε μερικές μηχανές, υπάρχουν εντολές που αλλάζουν την κατάσταση στη μέση της εκτέλεσης, προτού η εντολή και οι προηγούμενές της έχουν εγγυημένη την ολοκλήρωσή τους.

Παράδειγμα

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

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

· Θυμάστε τους τρόπους διευθυνσιοδότησης αυτοαύξησης του υπολογιστή VAX; Να αναφέρετε τους δύο αυτούς τρόπους, τον τρόπο με τον οποίο συμβολίζονται, καθώς επίσης και τη σημασία τους.
· Να περιγράψετε τι θα συμβεί αν εκτελεστεί η παρακάτω εντολή του υπολογιστή VAX: CLRL (R9)+
· Για περισσότερες λεπτομέρειες καλό θα ήταν να ανατρέξετε στις σημειώσεις του μαθήματος «Αρχιτεκτονική Υπολογιστών Ι» και συγκεκριμένα στο 2ο κεφάλαιο: «Αρχιτεκτονικές Συνόλου Εντολών».

 

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



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

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

Παράδειγμα

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

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

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

Τέλος δεν πρέπει να παραλήψουμε να αναφερθούμε στις εντολές πολλαπλών κύκλων. Έστω ότι έχουμε την ακόλουθη ροή εντολών του υπολογιστή VAX:
MOVL R1, R2
ADDL3 42 (R1) , 56 (R1) + , @ (R1)
SUBL2 R2 , R3
MOVC3 @ (R1) [R2] , 74 (R2) , R3

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

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

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

 

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