Παράλειψη περιήγησης

Διακοπές

Διακοπές

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

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

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

Προτεραιότητα διακοπών

Συνήθως ένας μικροεπεξεργαστής έχει περισσότερες από μια περιφερειακές συσκευές γι’ αυτό διαθέτει περισσότερες από μια εισόδους διακοπής. Επίσης πολλές συσκευές μπορούν να είναι συνδεδεμένες σε μια κοινή γραμμή διακοπής. Οι πολλές είσοδοι διακοπής σε συνδυασμό με τις πολλαπλές συσκευές καθιστούν απαραίτητο τον καθορισμό προτεραιότητας για την περίπτωση που περισσότερες από μια συσκευές ζητήσουν ταυτόχρονα εξυπηρέτηση. Η προτεραιότητα καθορίζεται από το σχεδιαστή του μικροεπεξεργαστή και συνήθως δε μπορεί να μεταβληθεί.

Ενεργοποίηση και απενεργοποίηση μηχανισμού διακοπών

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

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

Πολυεπεξεργασία και Εξυπηρέτηση διακοπών

Ένας μικροεπεξεργαστής είναι δυνατό να εκτελεί ταυτόχρονα περισσότερα από ένα προγράμματα. Με τον όρο ταυτόχρονα δεν εννοούμε ότι τα δυο ή περισσότερα προγράμματα εκτελούνται από το μικροεπεξεργαστή την ίδια
χρονική στιγμή, αλλά βρίσκονται στη μνήμη και ο μικροεπεξεργαστής μπορεί να επιλέγει να εκτελεί πότε το ένα, πότε το άλλο, ανάλογα με τις ανάγκες του μικροϋπολογιστικού συστήματος. Ας θεωρήσουμε για παράδειγμα ένα μικροϋπολογιστικό σύστημα που έχει δυο προγράμματα στη μνήμη, τα οποία ας ονομάσουμε Α και Β. Αρχικά, ξεκινάει η εκτέλεση του προγράμματος Α. Σε κάποιο σημείο κατά τη διάρκεια εκτέλεσης του προγράμματος Α, είναι απαραίτητο να
εκτελεστεί το πρόγραμμα Β. Αυτή η μεταφορά του ελέγχου στο πρόγραμμα Β απαιτεί ο μετρητής προγράμματος να φορτωθεί με τη διεύθυνση έναρξης του προγράμματος Β. Αν μετά την ολοκλήρωση της εκτέλεσης του προγράμματος Β το πρόγραμμα Α είναι αναγκασμένο να ξαναρχίσει από την αρχή, τα αποτελέσματα που είχαν υπολογισθεί πριν τη διακοπή θα χαθούν. Έτσι, μπορούμε να συμπεράνουμε ότι όταν η εκτέλεση ενός προγράμματος διακόπτεται για να συνεχιστεί αργότερα έχει ιδιαίτερη σημασία να αποθηκεύσουμε την κατάσταση του μικροεπεξεργαστή. Η κατάσταση του μικροεπεξεργαστή είναι το σύνολο της πληροφορίας που περιγράφει τη φάση στην οποία βρίσκεται ένας μικροεπεξεργαστής. Έτσι, αν τη στιγμή της διακοπής του προγράμματος Α η κατάσταση του μικροεπεξεργαστή σωθεί (και αργότερα αποκατασταθεί), η επεξεργασία γυρνά στο πρόγραμμα Α χωρίς να χαθούν τα αποτελέσματα της προηγούμενης επεξεργασίας. Μερικές από τις πληροφορίες που περιλαμβάνει η κατάσταση του μικροεπεξεργαστή είναι τα περιεχόμενα του μετρητή προγράμματος, του συσσωρευτή, του καταχωρητή κατάστασης και των καταχωρητών γενικού σκοπού. Η διακοπή ενός προγράμματος δεν είναι τόσο σπάνια όσο πιθανό να φαντάζεται κανείς. Για παράδειγμα, με την εκτέλεση μιας εντολής κλήσης υπορουτίνας ή από ένα σήμα που προέρχεται από εξωτερική συσκευή η σειριακή επεξεργασία διακόπτεται. Η εντολή κλήσης υπορουτίνας προκαλεί μια διακλάδωση από ένα μέρος προγράμματος σε άλλο, την υπορουτίνα. Μια εξωτερική συσκευή μπορεί να απαιτήσει εξυπηρέτηση προκαλώντας (πχ. με μια διακοπή υλικού) μια διακλάδωση σε προκαθορισμένη θέση. Η θέση μνήμης στην οποία γίνεται η διακλάδωση είναι η θέση έναρξης της υπορουτίνας εξυπηρέτησης της συσκευής που προκάλεσε τη διακοπή. Η αποθήκευση της κατάστασης του μικροεπεξεργαστή πραγματοποιείται με τη βοήθεια της στοίβας. Η στοίβα (stack) είναι μια δομή αποθήκευσης στην οποία ο μικροεπεξεργαστής αποθηκεύει τα περιεχόμενα των καταχωρητών του κατά την κλήση υπορουτινών και διακοπών. Η στοίβα αποτελείται από ένα σύνολο θέσεων στη μνήμη RAM. Για να κρατάμε τη διεύθυνση μιας θέσης μέσα στη στοίβα είναι απαραίτητος ένας δείκτης στοίβας (stack pointer). Ο δείκτης αυτός είναι σχεδιασμένος με τέτοιο τρόπο ώστε τα δεδομένα να διαβάζονται από τη στοίβα με την αντίστροφη σειρά από εκείνη
με την οποία γράφτηκαν. 

Διαδικασία εξυπηρέτησης διακοπής

Συνοψίζοντας, μπορούμε να πούμε ότι η διαδικασία εξυπηρέτησης μιας διακοπής αποτελείται από τα ακόλουθα βήματα:

  1. ολοκληρώνεται η εντολή την οποία εκτελούσε ο μικροεπεξεργαστής
  2. απενεργοποιούνται όλες οι διακοπές
  3. σώζεται στη στοίβα η κατάσταση του μικροεπεξεργαστή (συνήθως σαν κατάσταση σώζεται ο απαριθμητής προγράμματος και ο καταχωρητής κατάστασης)
  4. εκτελείται η υπορουτίνα εξυπηρέτησης διακοπής
  5. ανακτάται η κατάσταση του μικροεπεξεργαστή από τη στοίβα και επιστρέφεται ο έλεγχος στο πρόγραμμα στην επόμενη εντολή από εκείνη που είχε τελευταία εκτελεστεί.

Άσκηση

Εξηγήστε ποια είναι η διαδικασία εξυπηρέτησης μιας συσκευής Ι/Ο όταν στείλει σήμα διακοπής στον μ/Ε.

Άσκηση

Ερώτηση

Ποιο από τα παρακάτω αποτελεί πλεονέκτημα της χρήσης διακοπών για την εξυπηρέτηση περιφερειακών συσκευών;

Απαντήσεις

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

Χάρη στις διακοπές ο μ/Ε μπορεί να εκτελεί ταυτόχρονα περισσότερα από ένα προγράμματα (multitasking).

Όλες οι ανωτέρω επιλογές αποτελούν πλεονέκτημα της χρήσης διακοπών.

Ανατροφοδότηση

Άσκηση

Ερώτηση

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

Απαντήσεις

μπορούμε να παρεμποδίζουμε κάποιες από τις εισόδους διακοπών με τη χρήση μάσκας

δεν μπορούμε να παρεμποδίζουμε καμία από τις εισόδους διακοπών

δεν μπορούμε να παρεμποδίζουμε επιλεκτικά κάποιες εισόδους διακοπών, παρά μόνο να τις απενεργοποιήσουμε όλες μαζί

Ανατροφοδότηση

Άσκηση

Ερώτηση

Είναι αναγκαίος ο καθορισμός προτεραιότητας διακοπών σε ένα μικροεπεξεργαστή, όταν υπάρχει κοινή γραμμή διακοπής για περισσότερες από μια συσκευές Ι/Ο;

Απαντήσεις

Είναι αναγκαίος, γιατί σε περίπτωση που περισσότερες από μία συσκευές Ι/Ο ζητήσουν ταυτόχρονα εξυπηρέτηση, θα υπάρχει μια προκαθορισμένη σειρά στην εκτέλεση των υπορουτίνων εξυπηρέτησής τους.

Δεν είναι αναγκαίος, καθώς όλες οι ρουτίνες εξυπηρέτησης των συσκευών Ι/Ο εκτελούνται με τη σειρά.

Δεν είναι αναγκαίος, αφού δεν έχει σημασία με ποια σειρά ζητούνται οι διακοπές και με ποια σειρά εκτελούνται οι ρουτίνες εξυπηρέτησής τους.

Ανατροφοδότηση

Άσκηση

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

Ενεργοποίηση JavaScript


(c) Αμπατζόγλου Γιάννης, MSc  Ηλεκτρονικός Μηχανικός, καθηγητής ΠΕ84

Αδειοδοτημένο υπό τους όρους Creative Commons Αναφορά Δημιουργού 4.0

Δημιουργήθηκε με το eXeLearning (Νέο παράθυρο)