Πίσω

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

   Έστω το τμήμα κώδικα:

DIVD F0 , F2 , F4
ADDD F10 , F0 , F8
SUBD F8 , F8 , F14

Μπορείτε να περιγράψετε την εκτέλεση των εντολών του κώδικα και να προσδιορίσετε τους κινδύνους που προκύπτουν;


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

   Παρατηρούμε ότι υπάρχει αντι-εξάρτηση μεταξύ των εντολών SUBD και ADDD. Πράγματι, η εντολή SUBD εκτελεί εγγραφή στον καταχωρητή F8 από τον οποίο διαβάζει η εντολή ADDD που εκτελείται πρώτη. Εάν όμως η σωλήνωση εκτελέσει την εντολή SUBD πριν την εντολή ADDD, τότε θα παραβιαστεί η αντι-εξάρτηση και θα έχουμε λανθασμένη εκτέλεση, αφού η εντολή SUBD θα έχει γράψει στον καταχωρητή F8 πριν η εντολή ADDD διαβάσει από αυτόν. Σε αυτή την περίπτωση προκαλείται WAR κίνδυνος. Επιπλέον, για να αποφύγουμε την παραβίαση των εξαρτήσεων εξόδου, πρέπει να ανιχνεύσουμε τους WAW κινδύνους.