[Advcomparch] ID/IS Register

Konstantinos Nikas knikas at cslab.ece.ntua.gr
Thu Jul 2 01:43:32 EEST 2009


Καλησπέρα,

η παρατήρηση που κάνεις είσαι σωστή. Υπάρχει άλλωστε και σχετικό σχόλιο 
στις διαφάνειες που αναφέρεις (έγινε αντίστοιχη αναφορά και στο 
τελευταίο μάθημα όπου παρουστιάστηκαν οι λύσεις).

Δηλαδή, από τη στιγμή που μια εντολή δεν μπορεί να γίνει issue για 
κάποιο λόγο (δεν υπάρχει άδειο RS, είναι γεμάτος ο ROB, κτλ) και το 
issue είναι ΠΑΝΤΑ in-order, τότε δεν μπορούμε να κάνουμε issue τις 
επόμενες εντολές. Σε παλιότερες ερωτήσεις στη λίστα, είχαμε πει για το 
ίδιο θέμα ότι μια πρακτική λύση σε αυτό το πρόβλημα είναι το stall του 
μηχανήματος, το οποίο σημαίνει ότι δεν φέρνω πια άλλες εντολές και τα 
IF, ID, IS μένουν σταθέρα μέχρι να τελειώσει το stall.

Στη συγκεκριμένη λύση (όπως αναφέρει και το σχόλιο της διαφάνειας) έχει 
υποτεθεί η ύπαρξη ιδανικών "άπειρων" buffers μεταξύ ID και IS, στους 
οποίους αποθηκεύονται οι εντολές που έχουν γίνει decoded και περιμένουν 
να γίνουν issued. Αυτό σημαίνει, ότι αν μια εντολή κολλήσει και δεν 
μπορεί να γίνει issued, ο επεξεργαστής μπορεί να συνεχίσει να κάνει IF 
και ID χωρίς να χάνει εντολές, τις οποίες και θα κάνει κανονικά issue 
in-order όταν προχωρήσει η εντολή που έχει κολλήσει.

Επαναλαμβάνω ότι και οι 2 λύσεις είναι θεωρητικά σωστές. Η λύση των 
buffers είναι ιδανική και η λύση του stall πρακτική.

Κ.

Μιχάλης Βήχος wrote:
> Είναι πολύ πιθανό να μην έχω κατανοήσει και πολύ καλά το αντικείμενο 
> και η ερώτηση μου μου να μη στέκει...
> Διαβάζοντας όμως τις λύσεις που ανέβηκαν για την άσκηση 3 μου 
> δημιουργήθηκε η εξής απορία:
>  
> Στην εκτέλεση του αλγόριθμου χωρίς ROB στο κύκλο 15 ξεκινά το IS της 
> εντολής DIV.D F6 F2 F4. Φυσικά το στάδιο δε μπορεί να ολοκληρωθεί 
> άμεσα καθώς δεν υπάρχει ελέυθερος RS. Τελικά το IS στάδιο της εντολής 
> ολοκληρόνεται στον κύκλο 21. Εντομεταξύ, στο διάστημα 15-22 
> εκτελούνται τα στάδια IF και ID για 7 εντολές. Τέλος στον κύκλο 23 
> γίνεται το IS στάδιο της εντολής που είχε ολοκληρώσει το ID στάδιο 8 
> κύκλους πριν και είχε "επικαλυφθεί" απο άλλες 7 εντολές. Αυτό που θέλω 
> να πώ, είναι ότι για να δουλέψει κάτι τέτοιο θα πρέπει ανάμεσα στα 
> στάδια ID και IS να υπάρχουν 7 Register Files ώστε να περιμένουν όλες 
> αυτές οι εντολές που έχουν ολοκληρώσει το ID (κάτι που αναιρεί όλη τη 
> προηγούμενη λογική της εκτέλεσης). Μήπως θα ήταν πιο σωστό, όταν το 
> στάδιο IS μίας εντολής δε μπορεί να ολοκληρωθεί, να περιμένουν και όλα 
> τα προηγούμενα στάδια; Έχω καταλάβει κάτι λάθος;
>
> Windows LiveT: Keep your life in sync. Check it out! 
> <http://windowslive.com/explore?ocid=TXT_TAGLM_WL_t1_allup_explore_012009> 
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Advcomparch mailing list
> Advcomparch at lists.cslab.ece.ntua.gr
> http://lists.cslab.ece.ntua.gr/mailman/listinfo/advcomparch
>   




More information about the Advcomparch mailing list