Η αποτελεσματικότητα της τεχνικής καθυστέρησης διακλάδωσης εξαρτάται κατά ένα μέρος από το αν έχουμε προβλέψει σωστά ποιο δρόμο θα ακολουθήσει η σωλήνωση. Η δυνατότητα πρόβλεψης μιας διακλάδωσης σε χρόνο μεταγλωττιστή βοηθάει στον προγραμματισμό κινδύνων δεδομένων. Έστω ότι έχουμε τον παρακάτω κώδικα:
|
LW
|
R1, |
0 (R2)
|
|
|
SUB
|
R1, |
R1, |
R3 |
|
BEQZ
|
R1, |
L |
|
|
OR |
R4, |
R5, |
R6 |
|
.....
|
|
|
|
L:
|
ADD |
R7, |
R8, |
R9 |
Η εξάρτηση των εντολών SUB και BEQZ από την εντολή LW σημαίνει ότι θα χρειαστεί μια καθυστέρηση μετά από την LW.
Έστω ότι γνωρίζουμε ότι αυτή η διακλάδωση ακολουθείται σχεδόν πάντα και ότι η τιμή του R7 δε χρειαζόταν στην εντολή η οποία βρίσκεται μεταξύ της εντολής διακλάδωσης και του στόχου διακλάδωσης. Τότε θα μπορούσαμε να αυξήσουμε την ταχύτητα του προγράμματος μετακινώντας την εντολή ADD R7 , R8 , R9 στη θέση μετά την εντολή LW.
- Αν υποθέσουμε ότι γνωρίζουμε πως η διακλάδωση ακολουθείται σπάνια και ότι η τιμή του R4 δε χρειαζόταν στο μονοπάτι που ακολουθείται τότε θα μπορούσαμε να μετακινήσουμε την εντολή OR στη θέση μετά την εντολή LW.
- Επιπρόσθετα μπορούμε επίσης να χρησιμοποιήσουμε τις παραπάνω πληροφορίες για να προγραμματίσουμε καλύτερα την καθυστέρηση διακλάδωσης, αφού ο τρόπος προγραμματισμού της καθυστέρησης εξαρτάται από τη γνώση της συμπεριφοράς της διακλάδωσης.
Για να καταφέρουμε να εφαρμόσουμε αυτές τις βελτιώσεις, χρειάζεται να προβλέψουμε στατικά τη διακλάδωση κατά το χρόνο μεταγλώττισης του προγράμματος. Υπάρχουν δυο βασικές μέθοδοι που μπορούμε να χρησιμοποιήσουμε για να προβλέψουμε στατικά τις διακλαδώσεις.
- Να εξετάσουμε τη συμπεριφορά του προγράμματος και να χρησιμοποιήσουμε τις πληροφορίες που έχουμε συλλέξει από τις προηγούμενες φορές που έχουμε τρέξει το πρόγραμμα.
- Να προβλέψουμε με βάση την κατεύθυνση διακλάδωσης, διαλέγοντας ως επιλεγμένες τις διακλαδώσεις προώθησης και ως μη επιλεγμένες τις διακλαδώσεις οπισθοδρόμησης.
Σχήμα 1.6.9 Το ποσοστό λανθασμένης πρόβλεψης για τη μέθοδο της πρόβλεψης με βάση πληροφορίες από προηγούμενα τρεξίματα ποικίλει, αλλά γενικά είναι καλύτερο για προγράμματα FP που έχουν μέσο ποσοστό λανθασμένης πρόβλεψης 9% με μία παρέκκλιση του 4% σε σχέση με τα προγράμματα ακεραίων για τα οποία το μέσο ποσοστό είναι 15% με παρέκκλιση της τάξης του 5%.Οι πραγματικές επιδόσεις εξαρτώνται και από την ακρίβεια της πρόβλεψης και από τη συχνότητα της διακλάδωσης ,που ποικίλει από 3% έως 24%.
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 8