[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