<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">Καλημέρα,<br><br>στην διαφάνεια 8/46 του dynamic scheduling με speculation λέει:<br>...κατά το ooo execution εκτελούμε εντολές οι οποίες εξαρτώνται από το αποτέλεσμα της εντολής διακλάδωσης. Αν η πρόβλεψη δεν επαληθευθεί, θα πρέπει να κάνουμε rollback στο σημείο όπου κάναμε την πρόβλεψη, διότι οι εντολές στο λανθασμένο predicted path έχουν ήδη εκτελεστεί...Λύση: in-order completion<br>(κατόπιν εισάγεται η έννοια του ROB κτλ)<br><br>Το ερώτημα μου είναι το εξής: <br>Με δεδομένο ότι ΔΕΝ έχουμε speculation, ROB, commit στάδιο κτλ (όπως δηλ στο
 πρώτο ερώτημα της άσκησης) δεν είμαστε υποχρεωμένοι να ΜΗΝ προχωρήσουμε σε execution εντολής που ανήκει σε επόμενο basic block? Δηλ, δεν πρέπει πρώτα να γίνει resolve η branch εντολή και μετά να γίνει execute η επόμενη εντολή? Ή τουλάχιστον να μην κάνει η επόμενη εντολή write result προτού επαληθευθεί ότι το branch prediction ήταν το σωστό.<br>(βλ. σελ 105 της 4ης έκδοσης του βιβλίου στα αγγλικά)<br><br>Η ερώτηση γίνεται με αφορμή τον κύκλο 23 της λύσης της περσινής άσκησης, όπου παραβιάζεται το παραπάνω. Εκτός κι αν θεωρείται δεκτή μία ενδεικτική υλοποίηση που θα είχε
 πρόβλημα σε λάθος prediction.<br><br>Αν παρανόησα κάτι, ελπίζω να μην μπέρδεψα κανέναν.<br><br><br></td></tr></table><br>



      <hr size=1><font size=-1 face=Arial> 
Χρησιμοποιείτε Yahoo!<br> 
Βαρεθήκατε τα ενοχλητικά μηνύ ματα (spam); Το Yahoo! Mail διαθέτει την καλύτερη δυνατή προστασία κατά των ενοχλητικών μηνυμάτων <br> 
<a href="http://login.yahoo.com/config/mail?.intl=gr">http://login.yahoo.com/config/mail?.intl=gr</a> </font>