Πίσω

Δραστηριότητα 6

   Έστω η εξής σειρά εντολών:

DIV F0, F2, F4
ADDF F10, F10, F8
SUBF F12, F12. F14

Θεωρείστε δεδομένο ότι:
· Οι εντολές ADDF και SUBF τελειώνουν πιο γρήγορα από την εντολή DIVF, δηλαδή διαρκούν λιγότερους κύκλους ρολογιού.
· Η εντολή ADDF τελειώνει και η DIVF έχει μια αριθμητική διακοπή στο στάδιο EX της σωλήνωσης.

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


Απάντηση δραστηριότητας 6

   Οι δυνατές λύσης διαχείρισης της διακοπής που προκύπτει είναι:

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

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

3. Μπορούμε να διατηρήσουμε αρκετή πληροφορία ώστε οι ρουτίνες διαχείρισης παγίδων να δημιουργήσουν μία διακοπή ακριβείας: το λογισμικό τελειώνει όλες τις εντολές οι οποίες προηγούνται αυτής που τελείωσε (ADDF). Αυτή η λύση είναι αρκετά πολύπλοκη και απλοποιείται μόνο στην περίπτωση που έχουμε δύο εντολές FP να εκτελούνται.

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