Πίσω

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

   Έστω το παρακάτω τμήμα κώδικα ακολουθίας εντολών:

LW R1, 0 ( R2 )
SUB R4, R1, R5
AND R6, R1, R7
OR R8, R1, R9


· Μπορείτε να σχεδιάσετε τη δίοδο δεδομένων της σωλήνωσης με προώθηση, για την εκτέλεση των εντολών; Αν όχι, να μελετήσετε την ενότητα 4 «Κίνδυνοι δεδομένων».
· Να προσδιορίσετε τα σημεία στα οποία μπορεί να παρουσιαστεί κίνδυνος δεδομένων.
· Θεωρείτε πως οι κίνδυνοι που προκύπτουν μπορούν να αντιμετωπιστούν με την τεχνική της προώθησης;


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

  



   Στο σχήμα απεικονίζεται η δίοδος δεδομένων της σωλήνωσης με προώθηση. Η εντολή LW δεν έχει δεδομένα μέχρι το τέλος του 4ου κύκλου ρολογιού (δηλαδή τον κύκλο MEM), ενώ η εντολή SUB χρειάζεται δεδομένα από την αρχή αυτού του κύκλου ρολογιού. Στην περίπτωση αυτή, ο κίνδυνος δεδομένων που προέρχεται από τη χρήση του αποτελέσματος μίας εντολής φόρτωσης δεν μπορεί να απαλειφθεί πλήρως με απλό υλικό. Στο σχήμα φαίνεται ότι ένα τέτοιο μονοπάτι προώθησης θα έπρεπε να λειτουργεί ανάστροφα στο χρόνο. Κάτι τέτοιο όμως δεν είναι ακόμα εφικτό. Μπορούμε να προχωρήσουμε το αποτέλεσμα κατευθείαν στην ALU για την εντολή AND, η οποία αρχίζει 2 κύκλους ρολογιού μετά τη φόρτωση. Η εντολή OR δεν αντιμετωπίζει κανένα πρόβλημα γιατί δέχεται την τιμή μέσω του αρχείου καταχωρητών. Συμπερασματικά μπορούμε να πούμε πως εντολή φόρτωσης μπορεί να προωθήσει τα αποτελέσματα της στις εντολές AND και OR, αλλά όχι στη SUB, αφού κάτι τέτοιο θα σήμαινε προώθηση του αποτελέσματος σε αρνητικό χρόνο.