Κεφάλαιο 1
|Ενότητα 3
|Ερωτήσεις
επισκόπησης |
Επόμενο
|Προηγούμενο
|Λεξικό όρων
Οι κατασκευαστικοί κίνδυνοι προκαλούνται όταν δύο στάδια δύο διαφορετικών εντολών, που βρίσκονται μέσα στη σωλήνωση, χρειάζονται τον ίδιο πόρο (κύκλωμα) του υπολογιστή στον ίδιο κύκλο ρολογιού.
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 3
Αν μία ακολουθία εντολών συναντήσει κατασκευαστικό κίνδυνο τότε η σωλήνωση θα καθυστερήσει μια από τις εντολές, μέχρι τη στιγμή που ο ζητούμενος πόρος θα είναι διαθέσιμος. Αυτού του είδους οι καθυστερήσεις θα προκαλέσουν αύξηση του CPI(κύκλοι ρολογιού ανά εντολή), μεταβάλλοντάς το από την ιδανική τιμή του, η οποία συνήθως είναι 1.
Υπάρχουν υπολογιστές που μοιράζονται μια μοναδική μνήμη για δεδομένα και εντολές. Αν
ένα στάδιο μιας εντολής κάνει αναφορά στη μνήμη (π.χ. η εντολή load), θα έρθει σε σύγκρουση με κάποιο στάδιο μιας επόμενης εντολής, το οποίο κάνει αναφορά στην μνήμη για ανάκληση εντολής (παρατηρήστε το Σχήμα 1.3.1).
ΣΧΗΜΑ 1.3.1. Μια μηχανή με μόνο μία θύρα μνήμης θα δημιουργεί μια σύγκρουση οποτεδήποτε λαμβάνει χώρα μία αναφορά στη μνήμη. Η εντολή LOAD χρησιμοποιεί τη μνήμη για πρόσβαση σε δεδομένα και την ίδια στιγμή η Εντολή 3, του παραδείγματός μας, θέλει να κάνει ανάκληση μιας εντολής από τη μνήμη.
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 4
ΑΠΑΝΤΗΣΗ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ 4 Στο Σχήμα 1.3.2 βλέπουμε πως είναι το μονοπάτι δεδομένων της σωλήνωσης, η οποία καθυστερεί κατά ένα κύκλο ρολογιού.
ΣΧΗΜΑ 1.3.2. Ο κατασκευαστικός κίνδυνος προκαλεί την εισαγωγή φυσαλίδων σωλήνωσης. Το αποτέλεσμα είναι ότι καμία εντολή δε θα ολοκληρωθεί κατά τη διάρκεια του 8ου κύκλου ρολογιού, όταν η Εντολή 3 φυσιολογικά θα είχε ολοκληρωθεί . Η Εντολή 1 θεωρείται ότι δεν είναι φόρτωση ή αποθήκευση, διαφορετικά, η Εντολή 3 δεν μπορεί να αρχίσει την εκτέλεσή της.
Επειδή μια καθυστέρηση κινείται μέσα στη σωλήνωση καταλαμβάνοντας χώρο, χωρίς όμως να πραγματοποιεί κάποια χρήσιμη εργασία, ονομάζουμε την καθυστέρηση φυσαλίδα. Στο Σχήμα 1.3.3 παρουσιάζουμε το Σχήμα 1.3.2 ξανασχεδιασμένο με μια απλούστερη και πιο κατανοητή μορφή.
Αριθμός Εντολής | Κύκλοι ρολογιού | |||||||||
1ος | 2ος | 3ος | 4ος | 5ος | 6ος | 7ος | 8ος | 9ος | 10ος | |
Εντολή φόρτωσης LOAD | IF | ID | EX | MEM | WB | |||||
Εντολή I+1 | IF | ID | EX | MEM | WB | |||||
Εντολή I+2 | IF | ID | EX | MEM | WB | |||||
Εντολή I+3 | stall | IF | ID | EX | MEM | WB | ||||
Εντολή I+4 | IF | ID | EX | MEM | WB | |||||
Εντολή I+5 | IF | ID | EX | MEM | ||||||
Εντολή I+6 | IF | ID | EX |
ΣΧΗΜΑ 1.3.3 Μια σωλήνωση καθυστερεί λόγω κατασκευαστικού κίνδύνου, όπως για παράδειγμα μία εντολή φόρτωσης με μια θύρα μνήμης. Όπως φαίνεται εδώ, η εντολή φόρτωσης παίρνει έναν κύκλο από την εντολή I+3, προκαλώντας την καθυστέρηση της σωλήνωσης - καμία εντολή δεν αρχίζει στον 4ο κύκλο ρολογιού ( που κανονικά θα άρχιζε η εντολή I+3). Επειδή η εντολή που ανακαλείται(δηλαδή η Ι+3) καθυστερεί, όλες οι άλλες εντολές στη σωλήνωση πριν την καθυστερημένη εντολή μπορούν να συνεχίσουν κανονικά. Ο κύκλος καθυστέρησης θα συνεχίσει να περνά μέσα στη σωλήνωση, έτσι ώστε καμία εντολή να μην ολοκληρωθεί στον 8ο κύκλο ρολογιού.
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 5
ΠΑΡΑΔΕΙΓΜΑ :
Υποθέστε ότι οι εντολές με αναφορά στη μνήμη δεδομένων αποτελούν το 40% του συνόλου των εντολών, και το ιδανικό CPI του σωληνωμένου υπολογιστή αγνοώντας τον κατασκευαστικό κίνδυνο, είναι 1. Θεωρήστε ότι ο υπολογιστής με κατασκευαστικό κίνδυνο έχει ρυθμό ρολογιού 1.05 φορές μεγαλύτερο από το ρυθμό ρολογιού του υπολογιστή χωρίς κίνδυνο. Αδιαφορώντας για άλλες απώλειες της απόδοσης είναι η σωλήνωση με ή χωρίς κατασκευαστικό κίνδυνο ταχύτερη και κατά πόσο;
Ο μέσος χρόνος εκτέλεσης εντολών για τους δύο υπολογιστές είναι:
Μέσος χρόνος εκτέλεσης εντολών = CPI * Διάρκεια κύκλου ρολογιού
(α) Όταν δεν υπάρχουν καθυστερήσεις δηλαδή CPI=1 η (α) γίνεται: Μέσος χρόνος εκτέλεσης εντολών = Διάρκεια κύκλου ρολογιού (β) Επίσης για τον υπολογιστή με τον κατασκευαστικό κίνδυνο έχουμε με τη βοήθεια του τύπου (2) από τη θεωρία η (α) γίνεται: Μέσος χρόνος εκτέλεσης εντολών = CPI * Διάρκεια κύκλου ρολογιού = = (1+0.4*1)* (Διάρκεια κύκλου ρολογιού / 1.05) == 1.3 * Διάρκεια κύκλου ρολογιού
Συμπεραίνουμε έτσι ότι ο υπολογιστής με κατασκευαστικό κίνδυνο είναι
1.3 φορές πιο αργός.