Πίσω
Παράδειγμα 3:
ΔΡΑΣΤΗΡΙΟΤΗΤΑ
- Να εκτελέσετε το πρόγραμμα του παραδείγματος χρησιμοποιώντας τον προσομοιωτή WinDLX.
- Να συγκρίνετε τα αποτελέσματά σας με την απάντηση του παραδείγματος 2.
Έστω το ακόλουθο πρόγραμμα:
main:
|
| 1.
| add
| r1,r2,r3
|
| 2.
| sub
| r4,r5,r1
|
| 3.
| and
| r6,r1,r7
|
| 4.
| or
| r8,r1,r9
|
| 5.
| xor
| r10,r1,r11
|
Tο πρόγραμμα υπάρχει στην ενότητα 1.4 και η μελέτη του με τον Windlx απέδωσε τα ακόλουθα αποτελέσματα.
A) Χωρίς προώθηση:
(Με κόκκινο βέλος σημειώνεται η μη ανεπιτυχής προσφορά της τιμής του r1)
B) Με προώθηση:
(Με πράσινα βέλη σημειώνονται οι επιτυχημένες προωθήσεις της τιμής του r1)
Γ) Με καθυστέρηση:
Στο ακόλουθο πρόγραμμα παρουσιάζονται κίνδυνοι δεδομένων μεταξύ των εντολών 1, 2 και 3.
main:
|
| 1.
| lw
| r1,0(r2)
|
| 2.
| sub
| r14,r1,#4
|
| 3.
| and
| r6,r1,r7
|
| 4.
| or
| r8,r1,r9
|
Εδώ η εισαγωγή καθυστέρησης είναι αναπόφευκτη
και η διαδικασία ολοκληρώνεται σε 11 κύκλους ρολογιού.
Δ) Με προώθηση της σωλήνωσης:
έχουμε μόνο 1 κύκλο καθυστέρησης
αφού η τιμή του r1 προωθείται στην εντολή 2
Η διαδικασία ολοκληρώνεται τώρα σε 9 κύκλους ρολογιού. Έχουμε δηλαδή, κέρδος 2 κύκλους ρολογιού.