Καλησπέρα,
πολύ καλή ερώτηση. Γενικά, οι εικόνες του hardware που υλοποιεί τον αλγόριθμο Tomasulo (στο βιβλίο σας και τις διαφάνειες) δείχνουν ότι το πέρασμα του αποτέλεσματος ενός FU γίνεται από το ίδιο το FU πάνω στο CDB. Προφανώς λοιπόν αν εκείνη τη στιγμή το CDB δεν είναι ελεύθερο το FU θα πρέπει να stall-άρει προκειμένου να διατηρήσει το αποτέλεσμα και να το μεταδώσει σε μια επόμενη χρονική στιγμή.
Αυτό όμως δε σημαίνει (όπως νομίζω συζητήθηκε και στο μάθημα) ότι στην πραγματικότητα δεν μπορούν να υπάρχουν κάποιοι buffers μεταξύ των FUs και του CDB έτσι ώστε να διασφαλιστεί η χρήση των FUs από (κάποιο περιορισμένο προφανώς αριθμό από) επόμενες εντολές.
Γενικά αυτό δεν είναι κάτι περίεργο που δεν έχετε ξαναδεί. Σε άλλες ασκήσεις έχουμε δει ας πούμε ένα FU να κάνει σε ένα κύκλο το WR του αποτελέσματος της εντολής που μόλις ολοκληρώθηκε και ταυτόχρονα στον ίδιο κύκλο να ξεκινάει και το execution της επόμενης εντολής στο ίδιο FU. Προφανώς για να μπορεί να υλοποιηθεί αυτό στο hardware απαιτείται κάποιο buffering ή τέλος πάντων κάποια απεμπλοκή της εγγραφής του αποτελέσματος στο CDB από το υπόλοιπο FU που εκτελεί τις εντολές.
Στη συγκεκριμένη λύση έχει γίνει λοιπόν αυτή η υπόθεση (για λόγους απλότητας), ότι δηλαδή υπάρχει κάποιος buffer που κρατάει το αποτέλεσμα από το FU μέχρι να ελευθερωθεί το CDB. Από εκεί και πέρα όμως, αν κάποιος στο παράδειγμα που αναφέρεται, stall-αρε το FU και εξηγούσε στο σχόλιο ποιο είναι το πρόβλημα, η λύση είναι απόλυτα αποδεκτή.
Κ.
On 06/28/2011 08:20 PM, George Marinellis wrote:
Καλησπέρα, Εμένα η ερώτησή μου είναι πάνω στο εξής. Υποθέτουμε τις εξής τρεις εντολές και οι οποίες δρομολογούνται με τον ακόλουθο τροπο στον αλγ Τomasulo(Σεπτ-2010) _ΟP_ IS EX WR CMT ADDI R2, R2, #8 || 17 18 20 27 || CDB conflict ADDI R1, R1, #1 ||18 19 21 28 || CDB conflict SUBI R5, R5, #1 ||19 20 23 29 ||CDB conflict
Με ένα non-pipelined int FU.Στον κύκλο 18 ολοκληρώνεται η πρώτη ADDI όμως δεν μπορεί να κάνει broadcast.Συνεπώς η εντολή δεν stall-αρει μες το FU??Πως εισέρχεται στην ίδια-μονάδα η επόμενη εντολή.??
Advcomparch mailing list Advcomparch@lists.cslab.ece.ntua.gr http://lists.cslab.ece.ntua.gr/mailman/listinfo/advcomparch