Πίσω

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

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

LW R24, 0(R16)
LW R25, 4(R16)
SLT R8, R25, R24

· Να περιγράψετε την εκτέλεση των εντολών.
· Να εντοπίσετε που προκύπτουν κίνδυνοι δεδομένων.
· Να προτείνεται τρόπους αντιμετώπισης των κινδύνων δεδομένων και να αιτιολογήσετε την απάντησή σας.


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

   Οι κίνδυνοι δεδομένων που προκύπτουν είναι οι ακόλουθοι:

1ος: Ο πρώτος πηγαίος τελεστέος της εντολής SLT εξαρτάται από το αποτέλεσμα της δεύτερης εντολής LW.
2ος: Ο δεύτερος πηγαίος τελεστέος της εντολής SLT εξαρτάται από το αποτέλεσμα της πρώτης εντολής LW.

Για την αντιμετώπιση του 1ου κινδύνου δεν μπορούμε να υλοποιήσουμε την τεχνική της προώθησης γιατί θα έπρεπε να έχουμε προώθηση σε αρνητικό χρόνο. Επίσης ο μεταγλωττιστής δεν μπορεί να προγραμματίσει τη σωλήνωση γιατί οι εντολές αλληλεξαρτώνται. Επομένως θα χρησιμοποιήσουμε το κλείδωμα της σωλήνωσης.
Έτσι προκύπτει η εξής ακολουθία κώδικα:

Κύλοι ρολογιού             1ος   2ος    3ος    4ος      5ος       6ος    7ος    8ος
LW  R24,0(16)               IF    ID    EX    MEM   WB
LW  R25, 4(16)                      IF     ID      EX    MEM   WB
SLT  R8, R25, R24                         IF      ID       stall    EX     MEM    WB

Η πρώτη εντολή LW παίρνει την τιμή του καταχωρητή R24 από το πεδίο .MDR του καταχωρητή σωλήνωσης MEM/WB στο τέλος του 4ου κύκλου ρολογιού. Η δεύτερη εντολή LW παίρνει την τιμή του καταχωρητή R25, από το πεδίο .MDR του καταχωρητή σωλήνωσης MEM/WB, στο τέλος του 5ου κύκλου ρολογιού. Η εντολή SLT χρειάζεται την τιμή του καταχωρητή R25 στον 5ο κύκλο ρολογιού, στην αρχή του σταδίου EX. 'Ομως το αποτέλεσμα, δεν μπορεί να προωθηθεί από τον καταχωρητή σωλήνωσης MEM/WB της 2ης εντολής LW προς τα πίσω, στο στάδιο EX της εντολής SLT. Γι' αυτό η εντολή SLT πρέπει να καθυστερήσει, προκειμένου πάρει τη σωστή τιμή. Γι΄ αυτό κλειδώνουμε τη σωλήνωση για έναν κύκλο ρολογιού.
Στον 6ο κύκλο ρολογιού, η εντολή SLT βρίσκεται στο στάδιο EX. Σε αυτό το στάδιο, γενικά για όλες τις εντολές, στην ALU δημιουργείται η διεύθυνση του τελεστέου, η οποία τοποθετείται στο πεδίο .ALUoutput, του καταχωρητή σωλήνωσης EX/MEM δηλαδή στο πεδίο EX/MEM.ALUoutput. Στο στάδιο MEM διαβάζεται η τιμή του τελεστέου από τη διεύθυνση, η οποία(διεύθυνση) βρίσκεται στο πεδίο MEM/WB.MDR
Συνεπώς, η εντολή SLT παίρνει την τιμή του καταχωρητή R25 από το αρχείο καταχωρητών στο δεύτερο μισό του 6ου κύκλου ρολογιού, όπου έχει προλάβει και το έχει γράψει στο πρώτο μισό του ίδιου κύκλου η δεύτερη εντολή LW. Η εντολή SLT παίρνει την τιμή του καταχωρητή R24, για την κάτω είσοδο της ALU, από το αρχείο καταχωρητών, όπου την έχει γράψει η πρώτη εντολή LW από τον προηγούμενο κύκλο ρολογιού.