[Advcomparch] forwarding??
Nikos Anastopoulos
anastop at cslab.ece.ntua.gr
Fri May 30 13:27:33 EEST 2008
>Αν έχουμε εκτέλεση μιας εντολής μονάδας ακεραίων στον κύκλο K τότε
>γίνεται ή όχι να έχουμε στον ιδιο κύκλο Load/Store ή εντολή στην FPU
>με διαφορετικά ορίσματα ?
>Εννοώ, να έχουμε στην αλλαγή του loop απο το 1ο στο 2ο, ταυτόχρονη
>χρησιμοποίηση του EX στον ίδιο κύκλο απο τη τελευταία εντολή του 1ου
>loop και την πρώτη εντολή του 2oυ loop.
Στις αρχιτεκτονικές που υποστηρίζουν δυναμική εκτέλεση εντολών (π.χ. με
Tomasulo) δεν έχεις πρόβλημα αν 2 εντολές βρίσκονται ταυτόχρονα στο ΕΧ,
αρκεί
φυσικά να μην χρησιμοποιούν την ίδια δομική μονάδα, οπότε θα είχες
structural
hazard.
>Όταν έχουμε stall το εννούμε με την έννοια που το είχαμε δει στο
>pipeline στην Αρχιτεκτονική Υπολογιστών του 5ου εξαμήνου, δηλ. όταν
>έχουμε stall, καθυστερεί (stallarei) κάποιο απο τα στάδια του pipeline
>στις επόμενες εντολές ;
>Δηλαδή π.χ. αν σε μία εντολή έχω stall στον cycle 5 στο στάδιο IS
>αυτό σημαίνει οτι στην αμέσως επόμενη εντολή op2 δεν θα μπορώ στον
>cycle 5 να κάνω IF ή ID ;
Το αν καθυστερούν ή όχι οι επόμενες εντολές εξαρτάται πού γίνεται το stall.
Αν γίνει στο "in-order" μέρος του pipeline, όπως γίνεται στο IS στο
παράδειγμα
που αναφέρεις, τότε οι επόμενες εντολές θα stall-άρουν επειδή το issue των
εντολών γίνεται in-order (και διότι επιπλέον έχεις single-issue επεξεργαστή
οπότε δεν μπορείς να κάνεις >1 εντολές issue στον ίδιο κύκλο).
Αν γίνει στο "out-of-order" μέρος του pipeline, όπου οι εντολές έχουν
κατανεμηθεί σε διαφορετικά res. stations, τότε το stall-άρισμα κάποιας
εντολής i δε θα επηρεάσει όλη την ακολουθία εντολών που έπονται στη σειρά
προγράμματος, αλλά κατά βάση τις εξαρτώμενες από την i εντολές.
>Όταν λέτε ότι στο CDB μπορεί να γράφει το αποτέλεσμα της κάθε φορά
μόνο μια
>εντολή εννοείτε μόνο για το στάδιο Write Result (WB);
>Δηλαδή αν στον ίδιο κύκλο μια εντολή Β γίνεται issue και μια εντολή Α
είναι
>στο WB και πρέπει και οι δυο να γράψουν στο CDB θα stall-άρει η Β;
Στο CDB γράφουν οι εντολές μόνο κατά το στάδιο WB. Θα έχεις stall λόγω
conflict στο CDB, αν για παράδειγμα τύχει οι Α και Β να ολοκληρώσουν την
εκτέλεσή τους στον ίδιο κύκλο, οπότε στον επόμενο κύκλο θα πρέπει να
γράψουν
το αποτέλεσμά τους στο CDB. Εκεί κάνεις τη σύμβαση ότι π.χ. η
μεταγενέστερη σε
σειρά προγράμματος θα πρέπει να stall-άρει μέχρι να γίνει διαθέσιμο το CDB
στον επόμενο κύκλο.
N.
--
Nikos Anastopoulos, PhD Candidate
National Technical University of Athens (NTUA)
School of Electrical and Computer Engineering
Computing Systems Laboratory
e-mail: anastop at cslab.ece.ntua.gr
Tel: +30-210-7722279
More information about the Advcomparch
mailing list