Πίσω

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

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

 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

   · Παρατηρούμε πως προκύπτουν κίνδυνοι δεδομένων στις δύο εντολές add, οι οποίες χρειάζονται τις τιμές των καταχωρητών πριν την ολοκλήρωση των εντολών lw.

· Για να αποφευχθούν οι κίνδυνοι δεδομένων, τροποποιούμε τον κώδικα ως εξής:

 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