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

Κατασκευαστικοί Κίνδυνοι

 

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


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

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

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


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

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

  

ΣΧΗΜΑ 1.3.1. Μια μηχανή με μόνο μία θύρα μνήμης θα δημιουργεί μια σύγκρουση οποτεδήποτε λαμβάνει χώρα μία αναφορά στη μνήμη. Η εντολή LOAD χρησιμοποιεί τη μνήμη για πρόσβαση σε δεδομένα και την ίδια στιγμή η Εντολή 3, του παραδείγματός μας, θέλει να κάνει ανάκληση μιας εντολής από τη μνήμη.

 

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

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

ΑΠΑΝΤΗΣΗ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ 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 IFIDEXMEMWB
Εντολή I+1  IFIDEXMEMWB
Εντολή I+2   IFIDEXMEMWB
Εντολή I+3   stallIFIDEXMEMWB
Εντολή I+4       IFIDEXMEMWB
Εντολή I+5        IFIDEXMEM
Εντολή I+6         IFIDEX

 

ΣΧΗΜΑ 1.3.3 Μια σωλήνωση καθυστερεί λόγω κατασκευαστικού κίνδύνου, όπως για παράδειγμα μία εντολή φόρτωσης με μια θύρα μνήμης. Όπως φαίνεται εδώ, η εντολή φόρτωσης παίρνει έναν κύκλο από την εντολή I+3, προκαλώντας την καθυστέρηση της σωλήνωσης - καμία εντολή δεν αρχίζει στον 4ο κύκλο ρολογιού ( που κανονικά θα άρχιζε η εντολή I+3). Επειδή η εντολή που ανακαλείται(δηλαδή η Ι+3) καθυστερεί, όλες οι άλλες εντολές στη σωλήνωση πριν την καθυστερημένη εντολή μπορούν να συνεχίσουν κανονικά. Ο κύκλος καθυστέρησης θα συνεχίσει να περνά μέσα στη σωλήνωση, έτσι ώστε καμία εντολή να μην ολοκληρωθεί στον 8ο κύκλο ρολογιού.

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

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

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


ΠΑΡΑΔΕΙΓΜΑ : Υποθέστε ότι οι εντολές με αναφορά στη μνήμη δεδομένων αποτελούν το 40% του συνόλου των εντολών, και το ιδανικό CPI του σωληνωμένου υπολογιστή αγνοώντας τον κατασκευαστικό κίνδυνο, είναι 1. Θεωρήστε ότι ο υπολογιστής με κατασκευαστικό κίνδυνο έχει ρυθμό ρολογιού 1.05 φορές μεγαλύτερο από το ρυθμό ρολογιού του υπολογιστή χωρίς κίνδυνο. Αδιαφορώντας για άλλες απώλειες της απόδοσης είναι η σωλήνωση με ή χωρίς κατασκευαστικό κίνδυνο ταχύτερη και κατά πόσο;

 

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

Μέσος χρόνος εκτέλεσης εντολών = CPI * Διάρκεια κύκλου ρολογιού(α)

Όταν δεν υπάρχουν καθυστερήσεις δηλαδή CPI=1 η (α) γίνεται:

Μέσος χρόνος εκτέλεσης εντολών = Διάρκεια κύκλου ρολογιού (β)

Επίσης για τον υπολογιστή με τον κατασκευαστικό κίνδυνο έχουμε με τη βοήθεια του τύπου (2) από τη θεωρία η (α) γίνεται:

Μέσος χρόνος εκτέλεσης εντολών = CPI * Διάρκεια κύκλου ρολογιού =

= (1+0.4*1)* (Διάρκεια κύκλου ρολογιού / 1.05) =

= 1.3 * Διάρκεια κύκλου ρολογιού

Συμπεραίνουμε έτσι ότι ο υπολογιστής με κατασκευαστικό κίνδυνο είναι

1.3 φορές πιο αργός.