Δραστηριότητα 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 από τον προηγούμενο κύκλο ρολογιού.