Δραστηριότητα 5
Έστω το παρακάτω τμήμα κώδικα:
· Παρατηρούμε πως προκύπτουν κίνδυνοι δεδομένων στις δύο εντολές add, οι οποίες χρειάζονται τις τιμές των καταχωρητών πριν την ολοκλήρωση των εντολών lw.
main: lw r3,0(r7)
lw r4,0(r7)
add r1,r3,r4
lw r5,0(r7)
lw r6,0(r7)
add r2,r5,r6
· Μπορείτε να εντοπίσετε σε ποιες εντολές του προγράμματος προκύπτουν κίνδυνοι δεδομένων;
· Να τροποποιήσετε κατάλληλα τον κώδικα έτσι ώστε να μειωθούν οι καθυστερήσεις κατά την εκτέλεση του προγράμματος.
· Να εκτελέσετε των κώδικα του παραδείγματος χρησιμοποιώντας το λογισμικό προσομοίωσης του DLX, Windlx, το οποίο παρατίθεται στις ιστοσελίδες:
http://www.gup.uni-linz.ac.at/downloads/ti3/windlx
http://www.mkp.com/pub/dlx
· Να συγκρίνετε την απάντησή σας με τα αποτελέσματα από την εκτέλεση του προγράμματος από τον προσομοιωτή Wndlx.
· Για περισσότερες λεπτομέρειες καλό θα ήταν να συμβουλευόσασταν το παράρτημα Α: «Εργαλεία Προσομοίωσης του DLX».
Απάντηση δραστηριότητας 5
· Για να αποφευχθούν οι κίνδυνοι δεδομένων, τροποποιούμε τον κώδικα ως εξής:
main: lw r3,0(r7)
lw r4,0(r7)
lw r5,0(r7)
lw r6,0(r7)
add r1,r3,r4
add r2,r5,r6