Η καταγραφή αποτελεσμάτων σε πίνακα, είναι μία τεχνική που επιτρέπει στις εντολές να εκτελούνται εκτός σειράς όταν υπάρχουν επαρκείς πόροι και δεν υπάρχουν εξαρτήσεις δεδομένων. Ο πίνακας αποτελεσμάτων χρησιμοποιήθηκε για πρώτη φορά στον υπολογιστή CDC 6600 από όπου και η τεχνική πήρε το όνομά της.
Στόχος της τεχνικής είναι η διατήρηση του ρυθμού εκτέλεσης μιας εντολής ανά κύκλο ρολογιού, όταν δεν υπάρχουν κατασκευαστικοί κίνδυνοι. Αυτό μπορεί να γίνει με την εκτέλεση μιας εντολής που δεν εξαρτάται από καμιά τρέχουσα ή καθυστερημένη εντολή, όσο το δυνατόν νωρίτερα.
Ο πίνακας αποτελεσμάτων αναλαμβάνει τη διευθέτηση και εκτέλεση της εντολής καθώς και την ανίχνευση όλων των κινδύνων. Κάθε εντολή διέρχεται μέσα από τον πίνακα αποτελεσμάτων, όπου καταχωρούνται οι εξαρτήσεις δεδομένων. Επίσης καθορίζει πότε η εντολή μπορεί να διαβάσει τους τελεστέους της και να αρχίσει την εκτέλεση. Εάν ο πίνακας αποτελεσμάτων αποφασίσει ότι η εντολή δεν μπορεί να εκτελεστεί, τότε, παρακολουθώντας κάθε αλλαγή στο υλικό, αποφασίζει πότε η εντολή θα μπορέσει να εκτελεστεί. Επιπλέον, ο πίνακας ελέγχει πότε μια εντολή μπορεί να γράψει το αποτέλεσμά της στον καταχωρητή προορισμού. Τέλος επιτρέπει σε πολλαπλές εντολές να βρίσκονται ταυτόχρονα στο στάδιο εκτέλεσης EX, εφόσον εφαρμόζουμε εκτέλεση εκτός σειράς. Αυτό μπορεί να επιτευχθεί είτε με πολλαπλές λειτουργικές μονάδες, είτε με σωληνωμένες λειτουργικές μονάδες ή και με συνδυασμό τους. Θα υποθέσουμε ότι ο επεξεργαστής έχει πολλαπλές λειτουργικές μονάδες.
Έχουμε δύο είδη επεξεργαστών, τον CDC 6600 και τον DLX. Και οι δύο είναι κατασκευασμένοι σύμφωνα με την αρχιτεκτονική φόρτωσης-αποθήκευσης. Έτσι, οι τεχνικές που χρησιμοποιούν είναι σχεδόν ταυτόσημες.Οι λειτουργικές μονάδες που χρησιμοποιούν οι δύο αυτοί επεξεργαστές για την υλοποίηση του δυναμικού προγραμματισμού απεικονίζονται στο σχήμα 2.4.1.
Υπολογιστής | Λειτουργικές μονάδες |
---|---|
CDC6600 | 4 FP: 2 mult, 1 add, 1 div 7 μονάδες μνήμης: 5 load, 2 store 7 μονάδες ακεραίων: add,shift, logical, κλπ. |
DLX | 4 FP: 2 mult, 1 add, 1 div 1 μονάδα ακεραίων: integer |
Σχήμα 2.4.1 – Οι λειτουργικές μονάδες των CDC6600 και DLX για την υλοποίηση του δυναμικού προγραμματισμού.
Κάθε εντολή κατά την εκτέλεση της ακολουθεί τέσσερα βήματα, που αντικαθιστούν τα ID, EX και WB στάδια στη βασική DLX σωλήνωση:
Όταν οι πηγαίοι τελεστέοι είναι διαθέσιμοι, ο πίνακας αποτελεσμάτων επιτρέπει στη λειτουργική μονάδα να προχωρήσει στην ανάγνωση των τελεστέων από τους καταχωρητές και να αρχίσει την εκτέλεση. Ο πίνακας επιλύει δυναμικά τους RAW κινδύνους και ίσως τότε οι εντολές να εκτελεστούν εκτός σειράς.
Τα βήματα ένα και δύο αντικαθιστούν το ID στάδιο της απλής DLX σωλήνωσης.
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 5
Σχήμα 2.4.2 – Η εκτέλεση των εντολών με τη χρήση της τεχνικής του πίνακα αποτελεσμάτων. ΔΡΑΣΤΗΡΙΟΤΗΤΑ 6
Εντολές προς ολοκλήρωση ονομάζονται οι εντολές που είναι έτοιμες να γράψουν το αποτέλεσμά τους κατά το στάδιο εγγραφής αποτελέσματος.
Μία εντολή προς ολοκλήρωση δεν μπορεί να γράψει το αποτέλεσμα της όταν:
Εάν ο WAR κίνδυνος δεν υπάρχει ή έχει εξαλειφθεί, τότε ο πίνακας αποτελεσμάτων επιτρέπει στη λειτουργική μονάδα να αποθηκεύσει το αποτέλεσμά της στον καταχωρητή προορισμού.
Το βήμα εγγραφής αποτελέσματος αντικαθιστά το WB στάδιο της απλής DLX σωλήνωσης.
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 7
Στο παρακάτω πίνακα παρουσιάζονται οι απαιτούμενοι έλεγχοι και ενέργειες για κάθε βήμα κατά την εκτέλεση μιας εντολής.
Το FU συμβολίζει τη λειτουργική μονάδα που χρησιμοποιείται από την εντολή.Ο καταχωρητής D είναι ο καταχωρητής προορισμού, ενώ οι S1 και S2 είναι οι πηγαίοι καταχωρητές. Η Op είναι η λειτουργία που θα γίνει. Όταν η εγγραφή με όνομα Fj χρησιμοποιείται από τη λειτουργική μονάδα FU χρησιμοποιούμε το συμβολισμό Fj(FU). Η Result(D) είναι η τιμή του πεδίου αποτελέσματος καταχωρητή για τον καταχωρητή D. Η προσπάθεια εγγραφής αποτελέσματος αποτυγχάνει όταν υπάρχει ένας WAR κίνδυνος. Ο συμβολισμός Ri αφορά το όνομα του καταχωρητή Ri και όχι το περιεχόμενό του. Για απλότητα υποθέτουμε ότι όλες οι ενέργειες γίνονται σε ένα κύκλο ρολογιού.
Ο πίνακας αποτελεσμάτων αξιοποιεί το διαθέσιμο βαθμό της παραλληλίας σε επίπεδο εντολής, με σκοπό να μειώσει τις καθυστερήσεις που προκύπτουν από τις εξαρτήσεις δεδομένων. Στη προσπάθεια εξάλειψης των καθυστερήσεων, ο πίνακας περιορίζεται από ορισμένους παράγοντες :
1. Το διαθέσιμο βαθμό παραλληλίας μεταξύ των εντολών.Ο δεύτερος και ο τρίτος παράγοντας μπορούν να αντιμετωπιστούν αυξάνοντας το μέγεθος του πίνακα αποτελεσμάτων και το πλήθος των λειτουργικών μονάδων. Αυτές όμως οι αλλαγές, αυξάνουν το κόστος και επηρεάζουν τη διάρκεια του κύκλου. Οι WAW και WAR κίνδυνοι είναι περισσότερο σημαντικοί σε δυναμικά προγραμματισμένους επεξεργαστές, επειδή στη σωλήνωση εμφανίζονται περισσότερες εξαρτήσεις ονομάτων. Οι WAW κίνδυνοι είναι επίσης σημαντικοί στη περίπτωση που χρησιμοποιούμε δυναμικό προγραμματισμό με σχήμα πρόβλεψης διακλάδωσης, το οποίο επιτρέπει πολλαπλές επαναλήψεις ενός βρόχου να επικαλύπτονται.
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 8
|
|