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

Υπερβαθμωτή έκδοση του DLX επεξεργαστή

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

Ο υπερβαθμωτός επεξεργαστής έχει δυνατότητα δυναμικής διευθέτησης των εντολών.

Παράδειγμα

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

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

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

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

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

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

 

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



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

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

 

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



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

Υπάρχει άλλη μια δυσκολία που περιορίζει την αποτελεσματικότητα της υπερβαθμωτής σωλήνωσης:

  • Το αποτέλεσμα μιας εντολής φόρτωσης δεν μπορεί να χρησιμοποιηθεί στον ίδιο κύκλο ρολογιού ή στον επόμενο.

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

Παράδειγμα

Ας δούμε πώς προγραμματίζεται στην υπερβαθμωτή σωλήνωση ο παρακάτω βρόχος:

loop: LD F0, 0(R1) ; F0 = στοιχείο πίνακα
ADDD F4, F0, F2 ; πρόσθεση με το βαθμωτό μέγεθος του F2
SD 0(R1), F4 ; αποθήκευση του αποτελέσματος
SUBI R1, R1, #8 ; μείωση δείκτη 8 bytes (για κάθε DW)
BNEZ R1, loop ; διακλάδωση R1!= μηδέν

Απάντηση:
Για να προγραμματίσουμε το βρόχο χωρίς καθυστερήσεις, χρειάζεται να αναπτύξουμε το βρόχο ώστε να φτιάξουμε πέντε αντίγραφα του κυρίου μέρους του. Μετά την ανάπτυξη, ο βρόχος θα περιέχει πέντε αντίγραφα των εντολών LD, ADDD και SD και ένα αντίγραφο των εντολών SUBI και BNEZ. Ο ανεπτυγμένος και προγραμματισμένος βρόχος φαίνεται στον παρακάτω πίνακα.



Κάθε μία από τις πέντε εντολές ADDD διευθετείται μαζί με μια εντολή LD ή με μία εντολή SD, αλλά στη δεύτερη στήλη δεν υπάρχουν αρκετές εντολές κινητής υποδιαστολής ώστε να κρατήσουν γεμάτη τη σωλήνωση. Ο ανεπτυγμένος και προγραμματισμένος βρόχος στην υπερβαθμωτή σωλήνωση θα εκτελεστεί σε 12 κύκλους ρολογιού για κάθε επανάληψή του ή σε 2.4 κύκλους ρολογιού για κάθε ένα από τα πέντε αντίγραφα του βρόχου, σε αντίθεση με τον προγραμματισμένο και ανεπτυγμένο βρόχο στη συνηθισμένη DLX σωλήνωση όπου εκτελείται σε 16 κύκλους ρολογιού για κάθε επανάληψή του ή σε 3.2 κύκλους ρολογιού για κάθε ένα από τα πέντε αντίγραφα του βρόχου. Η απόδοση του επεξεργαστή περιορίζεται από την ισορροπία μεταξύ των υπολογισμών που αναφέρονται σε πράξεις ακεραίων ή κινητής υποδιαστολής.

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