Δραστηριότητα 6
Έστω ότι έχουμε δύο αρχεία: το second1.s και το second2.s, τα οποία περιέχουν τα αντίστοιχα προγράμματα:
Στο πρόγραμμα second1.s προκύπτει κίνδυνος δεδομένων RAW επειδή στις εντολές LW r1,$DATA(r0) και SUB r3,r1,#2 η SUB χρειάζεται την τιμή του r1 στο στάδιο ID, ενώ η LW βρίσκεται στο στάδιο MEM. Ο κίνδυνος αντιμετωπίζεται με προώθηση από το στάδιο MEM της LW στο στάδιο EX της SUB.
Ο κώδικας του second1.s Ο κώδικας του second2.s .data
.word 4,4
.text
main: LW r1,$DATA(r0)
LW r2,$DATA +4(r0)
SUB r3,r1,#2
BNEZ r3,L1
ADD r1,r0,r0
L1: SUB r3,r2,#2
BNEZ r3,L2
ADD r1,r0,r0
L2: SUB r3,r1,r2.data
.word 4,4
.text
main: LW r1,$DATA(r0)
LW r2,$DATA +4(r0)
SUB r3,r1,#4
BNEZ r3,L1
ADD r1,r0,r0
L1: SUB r3,r2,#4
BNEZ r3,L2
ADD r2,r0,r0
L2: SUB r3,r1,r2
· Να προσδιορίσετε τους κινδύνους που προκύπτουν κατά την εκτέλεση των προγραμμάτων και να προτείνετε τρόπους αντιμετώπισης των κινδύνων.
· Να εκτελέσετε τα προγράμματα χρησιμοποιώντας το λογισμικό προσομοίωσης του DLX, Windlx, το οποίο παρατίθεται στην ιστοσελίδα:
· Να εκτελέσετε των κώδικα του παραδείγματος χρησιμοποιώντας το λογισμικό προσομοίωσης του DLX, Windlx, το οποίο παρατίθεται στην ιστοσελίδα:
http://www.gup.uni-linz.ac.at/downloads/ti3/windlx
· Να συγκρίνετε την απάντηση που δώσατε με τα αποτελέσματα από την εκτέλεση των προγραμμάτων από τον προσομοιωτή Windlx.
· Για περισσότερες λεπτομέρειες καλό θα ήταν να συμβουλευτείτε το παράρτημα Α: «Εργαλεία Προσομοίωσης του DLX».
Απάντηση δραστηριότητας 6
Από την εκτέλεση του προγράμματος second1.s παρατηρούμε:
Οι τιμές των r1, r2 είναι τέτοιες ώστε να ακολουθούνται και οι δύο διακλαδώσεις. Οι εντολές ADD δεν εκτελούνται ποτέ.
Έχουμε δύο καθυστερήσεις ενός κύκλου λόγω των εντολών διακλάδωσης:
BNEZ r3,L1 και BNEZ r3,L2
για κάθε φορά που εκτελείται η ακολουθία εντολών.
Από την εκτέλεση του προγράμματος second2.s παρατηρούμε:
Στο second2.s δεν ακολουθείται καμία από τις δύο συνθήκες διακλάδωσης. Γι' αυτό το λόγο και οι καθυστερήσεις συνολικά είναι δύο λιγότερες.