Στην κλασσική pipeline για να πάει στο στάδιο ID μια εντολή νομίζω πως πρέπει να μπορεί να διαβάσει τους regs που θέλει.
Ετσι για παράδειγμα το πρώτο load δε μπορεί να ολοκληρώσει to ID αν δε κανει WB η παραπάνω ADD. Επίσης, ετσι όπως το λεει στην εκφώνηση δηλαδή 2 κύκλους stall σε περίπτωση data hazard θα περίμενα τα stall να εξυπηρετουν στο να τελειωσει πρώτα η απο πάνω ADD για να μπορεί να κάνει ID η LOAD. Στο παράδειγμα που έστειλες η load κανει ID μολις κάνει EX και η ADD , αλλά στο 1ο θέμα λεει δεν υποστηρίζεται forwarding. Πιστεύω πως θα έπρεπε να είναι κάπως έτσι
https://prnt.sc/u7h9fx με την εξαίρεση πως το δικό μας load επειδή έχει την απο πάνω add θα πρέπει να φάει 2 stalls αναμεσα απο Fetch και ID και το branch αλλα 2 stall ( γιατι ετσι λεει η εκφώνηση ανεξάρτητα απο hazard ) μετα το EX + αυτά που έχει γτ δε μπορεί να δει τον R4.
Το branch overhead μου βγαίνει 6 κύκλοι δλδ 2 + 2 stalls + τα ID EX . Για τον dynamic predictor συμφωνω πως δε θα χάσουμε κύκλο.
Εν τέλει δηλαδή το load/store να έχει stall μονο αν πρέπει να περιμένει κάποιον και το branch πάντα?