Πίσω
Παράδειγμα 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 κύκλων ρολογιού μόνο από τον προγραμματισμό της σωλήνωσης.