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

Διακοπές στον υπολογιστή MIPS

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

Το λειτουργικό σύστημα πρέπει να γνωρίζει την αιτία της διακοπής, εκτός από την εντολή η οποία την προκάλεσε. Για να βρεθεί η αιτία που προκάλεσε τη διακοπή, ο υπολογιστής MIPS χρησιμοποιεί έναν καταχωρητή κατάστασης (τον καταχωρητή αιτίας), ο οποίος διατηρεί το πεδίο που καθορίζει την αιτία της διακοπής.

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

Επίσης, πρέπει να προσθέσουμε δύο σήματα ελέγχου για να γίνει η εγγραφή στον EPC και στον καταχωρητή αιτίας. Τα σήματα αυτά είναι το EPCWrite και το CauseWrite αντίστοιχα. Επιπλέον, πρέπει να προσθέσουμε ένα σήμα ελέγχου του ενός bit, το IntCause, το οποίο καθορίζει το λιγότερο σημαντικό ψηφίο του καταχωρητή αιτίας.
Τέλος, πρέπει να γνωρίζουμε τον τρόπο με τον οποίο γίνεται η εγγραφή της διεύθυνσης της διακοπής, στον PC. Ας υποθέσουμε πως η διεύθυνση είναι 01000000 00000000 00000000 00000000two. Τη δεδομένη στιγμή, το περιεχόμενο του PC προέρχεται από την έξοδο του πολυπλέκτη (ο πολυπλέκτης έχει τρεις εισόδους) και ελέγχεται από το σήμα των 2 bit, PCSource (σχήμα 3.2.33). Μπορούμε να αντικαταστήσουμε τον πολυπλέκτη αυτό, με έναν πολυπλέκτη τεσσάρων εισόδων, με την επιπλέον είσοδο συνδεδεμένη με τη σταθερή τιμή 01000000 00000000 00000000 00000000two. Το σήμα PCWrite παίρνει την τιμή 11 για να επιλέξει την τιμή 01000000 00000000 00000000 00000000two, η οποία θα εγγραφεί στον PC.

Επειδή γίνεται αύξηση στο περιεχόμενο του PC κατά τη διάρκεια του πρώτου κύκλου ρολογιού, δε μπορεί να γίνει εγγραφή του περιεχομένου του PC στον EPC, αφού το περιεχόμενο του PC θα είναι η διεύθυνση της εντολής αυξημένη κατά 4. Έτσι χρησιμοποιούμε την ALU για να αφαιρέσουμε το 4 από την τιμή του PC και για την εγγραφή του αποτελέσματος στον EPC. Αυτό δεν απαιτεί επιπλέον σήματα ή γραμμές ελέγχου, αφού χρησιμοποιείται η ALU για την αφαίρεση και η σταθερά 4 είναι ήδη είσοδος της ALU. Επομένως συνδέουμε την είσοδο της εγγραφής δεδομένων του EPC, με την έξοδο της ALU. Με αυτές τις προσθήκες αυτές, μπορούν να πραγματοποιηθούν οι διακοπές, χρησιμοποιώντας τη μηχανή πεπερασμένων καταστάσεων του σχήματος 3.5.2.

Σχήμα 3.5.2 - Η μηχανή πεπερασμένων καταστάσεων τεσσάρων καταστάσεων η οποία διαχειρίζεται τις διακοπές. Ο καταχωρητής αιτίας (καταστάσεις 10 και 11), παίρνει τη διεύθυνση της εντολής στην οποία συνέβη η διακοπή και την αποστέλλει στον EPC (κατάσταση 12). Στη συνέχεια το περιεχόμενο του PC αντικαθίσταται από τη διεύθυνση της εντολής (κατάσταση 13). Κάθε μία από τις καταστάσεις 10 και 11, παριστάνει το αρχικό σημείο στο οποίο συνέβη η διακοπή. Η λειτουργία αυτών των καταστάσεων είναι να θέσει την είσοδο του καταχωρητή αιτίας και να προκαλέσει την εγγραφή στον καταχωρητή αυτό. Στην κατάσταση 12, χρησιμοποιούμε την ALU για να υπολογίσουμε την τιμή PC – 4. Η πρώτη είσοδος της ALU είναι το περιεχόμενο του PC και η δεύτερη είσοδος της ALU είναι το ψηφίο 4 (το οποίο επιλέγεται από το ALUSelB = 01). Η ALU εκτελεί αφαίρεση (ALUOp = 01) και γίνεται εγγραφή του αποτελέσματος στον EPC (EPCWrite). Στη συνέχεια γίνεται εγγραφή του της διεύθυνσης που συνέβη η διακοπή, στον PC. Αυτό γίνεται ενεργοποιώντας τα σήματα ελέγχου στην κατάσταση 13.