Πίσω

Παράδειγμα 3:


ΔΡΑΣΤΗΡΙΟΤΗΤΑ


Έστω το ακόλουθο πρόγραμμα:
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 κύκλους ρολογιού.