Πίσω

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


Προγραμματισμός Σωλήνωσης


Με το παρακάτω παράδειγμα θα προσπαθήσουμε να αναδείξουμε τα προβλήματα που προκύπτουν από τον προγραμματισμό της σωλήνωσης.

Έστω το ακόλουθο πρόγραμμα:
main:
1. lw  r3,0(r7)
2. lw  r4,0(r7)
3. add  r1,r3,r4
4. lw  r5,0(r7)
5. lw  r6,0(r7)
6. add  r2,r5,r6

Παρατηρούμε ότι προκύπτουν κίνδυνοι δεδομένων στις εντολές 3 και 6.




Η εκτέλεση ολοκληρώνεται σε 13 κύκλους ρολογιού.



Επειδή ο Windlx δε μπορεί να κάνει προγραμματισμό της σωλήνωσης, τροποποιούμε τον προηγούμενο κώδικα ως εξής:

main:
1. lw  r3,0(r7)
2. lw  r4,0(r7)
3. lw  r5,0(r7)
4. lw  r6,0(r7)
5. add  r1,r3,r4
6. add  r2,r5,r6


Τώρα η εκτέλεση των εντολών γίνεται ως εξής:



H εκτέλεση των εντολών ολοκληρώνεται μόνο σε 11 κύκλους ρολογιού.



Δηλαδή, έχουμε κέρδος 2 κύκλων ρολογιού μόνο από τον προγραμματισμό της σωλήνωσης.